Объявление и инициализация переменных и констант.
Разберем немного код программы, который вы создали в первом уроке. Опишу в двух словах, ибо в дальнейших уроках все будет описано и рассказано поподробнее.
1 #include <iostream>
2 using namespace std;
3 int main()
4 {
5 cout<<”Hello World!”<<endl;
6 return 0;
7 }
В первой строчке идет подключение библиотеки. С помощью #include возможно включать в код как уже созданные файлы, так и тот код, который вы сами написали. Стоит отметить, что рукописные библиотеки подключаются через двойные кавычки, нежели заранее созданные в самом языке. Они подключаются через <…>. Конкретно тут библиотека iostream нужна для корректного определения команды cout, которая направляет данные на вывод в консоль.
Во второй строке используется так называемое пространство имен. Тема достаточно трудная, просто имейте в виду, что конкретно тут используется std для того же вывода в консоль. Можно обойтись и без подключения ее, но в таком случае придется приписывать к cout, cin и endl слева еще и std::.
Например: std::cout. И так везде. В некоторых случаях, таких как когда работы с вводом и выводом в консоль не так много.
Вот и подошли к строке int main. Любая программа ВСЕГДА начинается с этой функции. Имя ее пишется со строчной буквы. Если ее не будет, ничего не заработает. Так же сразу отмечу тут строку №6. Каждая функция всегда должна возвращать некоторое значение. Конечно, если ничего не возвращать, код работать все равно будет, но это считается дурным тоном. К тому же, при отладке программы(поиске именно логических ошибок), это может сыграть вам на пользу. После названия функции идут круглые скобки. У каждой функции они обязательно должны быть. В ней записываются аргументы, с которыми эта функция работает. Это не создание новых данных, а именно прием уже существующей информации откуда-то извне. Так как это самое начало в программе, она ничего не принимает.
Затем идут фигурные скобки {}. В них заключено тело функции. Непосредственно то, что программа, а точнее эта функция сделает. Думаю, тут ничего сложного.
Строка №5. Тут идет вывод сообщения в консоль. «Cout<<» дает компьютеру понять, что то, что идет правее команды, нужно вывести на экран. В данном случае, это строка “Hello world!”. Это выражение тут классифицируется, как набор символов, иначе говоря - строка. Так же могут выводиться переменные, значение которых может меняться в зависимости от манипуляций, и ещё многое чего сюда можно запихнуть. Последняя часть «<<endl». Это команда переносит курсор в консоли на новую строку, чтобы, например, при повторе команды с выводом “Hello world!”, эти фразы были на разных строчках.
В теле(внутри фигурных скобок { }) каждая команда отделяется от другой точкой с запятой «;». Не забывайте их ставить, иначе Studio будет ругаться)
Немного разобрали эту первую программу, а теперь поговорим о том, без чего не может работать ни одна программа. А именно – переменные. Или же, если говорить формально, типы данных.
Типы данных можно разбить на 3 группы: числовые, символьные и логические. Для обозначения типов данных используются специальные зарезервированные (ключевые) слова.
Числовые типы данных: для хранения целых чисел (0, 33, -27 и т.д.)
int (4 байта) – хранит числа в диапазоне от -2 147 483 648 до 2 147 483 647
short (2 байта) – хранит числа в диапазоне от -32 768 до 32 767
long (4 байта) – хранит числа в диапазоне от -2 147 483 648 до 2 147 483 647
Числовые типы данных: для хранения вещественных чисел (с плавающей точкой: –435.332, 54.77, 3.0)
float (4 байта) – хранит дробные числа с точностью до 7 знаков после запятой
double (8 байт) – хранит дробные числа с точностью до 15 знаков после запятой
Символьный тип: для хранения одного символа
char (1 байт) – хранит один символ. Например: ‘f’, ‘+’ или ‘4’ (как символ). Одинарные кавычки обязательны.
Типа данных для хранения строк в С++ нет. Позже мы с вами познакомимся с тем, каким образом можно хранить строки в памяти.
Логический тип:
bool (1 байт) – может принимать только два значения true (истина) и false (ложь)
Сразу стоит обратить внимание, что все зарезервированные слова под типы данных пишутся не заглавными, а строчными (маленькими) буквами. Если вы объявите тип bool, как Bool – компилятор выдаст сообщение об ошибке. В редакторе, при написании кода, все зарезервированные слова С++ подсвечиваются синим цветом (это касается всех зарезервированных слов). Так что если вы вписали тип, а слово не стало синим – проверьте правильность написания.
Переменные и константы. Их названия говорят сами за себя. И переменная и константа – это определённые области в оперативной памяти, которые имеют имя (имя задаёт программист). Только переменная может менять своё значение в ходе выполнения программы, константа же определяется один раз и изменяться уже не может.
Время, к примеру, это переменная величина. Сейчас, допустим, 3 часа дня, а через 2 часа уже будет 5 часов вечера. А вот количество часов в сутках – это уже константа.
И переменным и константам при объявлении обязательно надо присвоить имя. Существуют строгие правила, согласно которым даются имена:
1. имя переменной может содержать маленькие и большие буквы английского алфавита, цифры, и ‘_’ (нижнее подчеркивание). С нижним подчеркиванием имена читаются намного легче. Сравните amountofapples и amount_of_apples.
2. имя не может начинаться с цифры! amount_of_apples1 – можно, 1amount_of_apples – не можно ))
3. именем не может быть зарезервированное слово (int, bool …). Если вы придумали имя переменной, ввели, а его подсветило синим цветом, значит такое слово в С++ является зарезервированным. Придумайте новое имя.
4. имя переменной должно быть осмысленным (логичным тому, что будет хранить данная переменная). Т.е. вряд ли кто-то догадается, что в переменной x хранится значение количества яблок. Логичнее назвать такую переменную amount_of_apples.
Объявление и инициализация переменных и констант.
Как же можно создать переменную и указать какое значение она будет хранить? Для этого нам необходимо сначала указать тип_данных, затем дать имя переменной (придерживаясь правил рассмотренных выше), поставить знак = (означает присвоить) и указать значение. К примеру создадим переменную, которая будет хранить значение количества яблок: int amount_of_apples = 7;.
Присваивание значения переменной при её создании называется инициализацией. Желательно всегда инициализировать переменные при создании, даже если вы не знаете какое значение переменная примет в ходе работы программы. В этом случае инициализируйте её нулём: int amount_of_apples = 0;. Дело в том, что оперативная память свободной не бывает. И если вы просто создали переменную int amount_of_apples; и не присвоили ей никакого значения, она всё равно будет хранить какие-то остаточные данные от предыдущих программ. Поэтому, хотя и не является ошибкой сначала объявить переменную, а ниже присвоить ей значение, желательно присвоить значение этой переменно сразу , тем самым очистив её от “мусора”. Кстати, в MVS 2013, если вы попытаетесь вывести на экран значение не инициализированной переменной, компилятор выдаст ошибку.
Что касается констант, то значение им должно быть присвоено сразу при создании. Например, определим константу, которая будет хранить количество дней в неделе: const int daysInWeek = 7; Чтобы дать понять компилятору, что это константа, а не обычная переменная, перед типом данных обязательно использовать ключевое слово const.
Выделим основное, что необходимо запомнить:
· тип данных указывается перед именем переменной и определяет какие данные в ней будут храниться (число, символ… ) и сколько памяти необходимо под них выделить.
· имя переменной дает программист, соблюдая определённые правила (указаны выше).
· чтобы создать (объявить) переменную надо указать её тип и дать имя. Переменную желательно сразу инициализировать (присвоить значение при создании): тип имя = значение;
· чтобы объявить константу необходимо использовать ключевое слово const и обязательно сразу присвоить значение: const тип имя = значение;
· переменным можно присвоить не только определённое значение, а и результат какого-то вычисления: amount_of_apples1 = amount_of_apples2 + 33;
· объявлять переменные желательно в начале main-функции. А при необходимости еще и оставить комментарий, что они будут хранить.
· регистр букв имени имеет значение. Имена Apple и apple обозначают разные переменные.
Приведу пример кода для закрепления информации.
// Задача: Есть 2 сумки. В одной 11 яблок, во второй 44 // Создать переменные, которые будут хранить количество яблок в сумках // и одну переменную, в которую надо записать общее количество яблок. #include <iostream> using namespace std; int main() { setlocale(LC_ALL, "rus"); //создание переменных и инициализация int amount_of_apples1 = 11; int amount_of_apples2 = 44; int inBox = 0; // для записи общего количества cout << "В пустой коробке - " << inBox << endl; // вывод данных на экран cout << "В первой сумке - " << amount_of_apples1 << endl; cout << "Во второй сумке - " << amount_of_apples2 << endl; cout << endl; // еще один перевод на новую строку // подсчет общего количества яблок в коробке inBox = amount_of_apples1 + amount_of_apples2; // показ общего количества на экран cout << "Всего в коробку добавлено " << inBox << " яблок" << endl; return 0; } |
Попробуйте ввести все вручную. Как минимум, вы начнете разрабатывать моторику для быстрого написания кода, что в скором времени может вам помочь в скорости работы.
Парочка уточнений. setlocale(LC_ALL, "rus") – позволяет выводить в консоли русский язык. «//» - начало комментария до конца строки.