Начало
Вычислительная техника создавалась для обработки информации. Информация бывает звуковая, графическая, текстовая и т.д. Компьютер не общается на естественном нам языке. Он общается последовательностями 0 и 1. Язык программирования – это команды компьютеру, что-то выполнить, сделать. Есть языки высокого уровня и машинные языки, например. Мы изучим язык С, С++. Почему С, С++? На языке С написаны большинство операционных систем и языков программирования. Зная один язык, легко освоить другой язык.
Мы научимся давать компьютеру простые команды. Напишем первую программу, см. Листинг 1.
Листинг 1
Первая программа
1 #include<stdio.h>
2 main()
3 {
4 printf(“Привет!”);
5 }
В 1 строке мы подключаем библиотеку. В программах есть функции. В библиотеке хранятся самые употребляемые функции. Во второй строке объявляем функцию main (). Далее с 3 по 5 строку тело функции, оно взято в фигурные скобки: ‘{‘, ‘}’. В четвертой строке функция библиотеки из файла stdio.h. Эта функция выводит на экран строку с символами: “Привет!”. Все строки заключаются в двойные кавычки, например, “слова”, литералы в одинарные кавычки, например, ‘в’.
Рекомендуется выучить наизусть написание простой программы. Для того, чтобы легче выучить, следует пописать похожие простые программы, на практике быстрее учиться.
Каждый оператор заканчивается точкой с запятой, делается это для компилятора, которому объявляется, где конец одного оператора и начало другого.
Если при выполнении программы, русская кодировка выдается у вас в консоли белибердой, то возможно добавить строки 2 и 5:
Листинг 2
Первая программа
1 #include<stdio.h>
2 #include<stdlib.h>
3 main()
4 {
5 system("chcp 1251 > nul");
6 printf(“Привет!”);
7 }
Функция system заголовочного файла stdlib.h передает строку "chcp 1251 > nul" в операционную систему для выполнения. Возможны и другие настройки.
Усложним первую программу, научим компьютер обращаться к нам по имени, см. Листинг 3.
Листинг 3
Программа: “Знакомство”
1 #include<stdio.h>
2 main()
3 {
4 char b[10];
5 printf(“Привет! Как тебя зовут?\n”);
6 scanf(“%s”,&b);
7 printf(“Привет! %s”,b);
8 }
В 4 строке объявляется массив из 10 переменных символьного типа b. Переменная – это имя какого-то участка памяти. В 5 строке оператор выводит на консоль строку, формат задан, переводит на новую строку: ‘\n’ – управляющий символ, символ перевода строки. В 6 строке считывается ввод с консоли, задается формат считывания – %s, означает, что считывается строка, &b – адрес, по которому будет сохранен массив символов. В строке 7 вывод на консоль форматированной строки, %s – означает, что будет выведена строка, b – это та строка, которую выведут на экран (форматирование %s).
Задания:
Написать простой диалог: Привет! Как тебя зовут! – Как дела?
Выучить написание простой программы.
Оператор if-else
Формальный синтаксис:
if (выражение)
оператор1
else
оператор2
Напишем следующую программу с использованием оператора if-else. Пользователь вводит число, компьютер сравнивает с 10, и выводит результат на экран.
Листинг 4
Программа “Сравнение”
1 #include<stdio.h>
2 main()
3 {
4 int a;
5 printf(“Vvedite 4islo \n”);
6 scanf(“%d”,&a);
7 if(a>10)
8 printf(“%d > 10”,a);
9 else
10 printf(“%d<=10”,a);
11 }
Задания:
1. Пользователь вводит число. Компьютер сравнивает с 20 и выводит результат.
В операторе if-else есть условие, правила составления условий рассказано в алгебре логике. Рассмотрим логическое или и логическое и в С:
&& – логическое И,
|| – логическое ИЛИ.
Таблица истинности для них, смотри Таблица 1-Таблица 2.
То есть ветвь if(условие) оператор1 выполняется , если условие равно 1.
Например,
if((a>10)&&(a<20))
оператор1
Если a>10 – истинно, в Таблице 1, это 1, если a>10 – ложь, это 0.
Таблица 1
Таблица 2
Оператор switch, цикл while
Один из требований к программе, это удобство использования пользователем, поэтому напишем программу с меню, см. Листинг 5.
Строка 15, оператор break, он прерывает цикл и т.п.
Листинг 5
Программа с меню
1 #include<stdio.h>
2 main()
3 {
4 int a, d;
5 do
6 {
7 printf(" MENU \n1. Kvadrat chisla\n2. Kub chisla\n3. Vuhod\nVuberite punkt menu\n");
8 scanf("%d",&d);
9 switch(d)
10 {
11 case 1:
12 printf("Vvedite chislo\n");
13 scanf("%d",&a);
14 printf("Kvadrat chisla raven %d\n",a*a);
15 break;
16 case 2:
17 printf("Vvedite chislo\n");
18 scanf("%d",&a);
19 printf("Kub chisla raven %d\n",a*a*a);
20 break;
21 case 3:
22 break;
23 default:
24 printf("Nevernui vvod!\n\n");
25 }
26 }
27 while(d!=3);
28 }
Оператор switch используется для выбора одного из вариантов, указанных в case. Также для написания программы мы использовали цикл do-while. Цикл проверяет условие в конце.
В default мы указали случай, в котором пользователь вводит цифру, не являющуюся номером пункта меню. А что будет если пользователь введет букву. Возможно зацикливание и т.п. Чтобы этого не было. Нам необходимо предусмотреть ввод не цифр, а букв.
Листинг 6
Программа с меню
1 #include<stdio.h>
2 main()
3 {
4 int a;
5 char d;
6 do
7 {
8 printf(" MENU \n1. Kvadrat chisla\n2. Kub chisla\n3. Vuhod\nVuberite punkt menu\n");
9 scanf("%s",&d);
10 switch(d)
11 {
12 case ‘1’:
13 printf("Vvedite chislo\n");
14 scanf("%d",&a);
15 printf("Kvadrat chisla raven %d\n",a*a);
16 break;
17 case ‘2’:
18 printf("Vvedite chislo\n");
19 scanf("%d",&a);
20 printf("Kub chisla raven %d\n",a*a*a);
21 break;
22 case ‘3’:
23 break;
24 default:
25 printf("Nevernui vvod!\n\n");
26 }
27 }
28 while(d!=3);
Задания:
Спроектировать меню. Написать программу.
Оператор for
Оператор for – это оператор цикла, обобщение оператора while [4]. Оператор for:
for (int i=0; i<n; i++)
{
….
}
int i=0 – инициализация,
i<n – проверка условия,
i++ – модификация.
Каждый раз выполняется тело цикла, в конце идет модификация (в данном случае i++), поэтому цикл будет выполняться столько раз, сколько указано в условиях, если условие верно, то выполняется тело еще раз.
Задание: вычислить значение функции y=x*x-4*x при х от 100 до 200 включительно, начиная от 100 с шагом 20. Решение задачи в Листинге 7, результат решения Листинга 7 на Рисунке 1.
Листинг 7
#include<iostream>
using namespace std;
int main()
{
int y;
for(int x=100;x<=200;x=x+20)
{
y=x*x-4*x;
cout<<"y("<<x<<")="<<y<<endl;
}
}