Следующая тема, которая входит в основы программирования – это типы данных, переменные и константы. Почти всегда первые темы в изучении любого курса – это в большинстве теория и скукотища. Так уж складывается, что чтобы начать писать более-менее интересные программы, надо освоить некие азы и получить базовые знания. Я, конечно, постараюсь покороче и поинтересней раскрыть тему этой статьи, но наберитесь терпения. В этой статье мы разберёмся с тем, что же такое типы данных и зачем они нам понадобятся в программировании, а также узнаем о переменных и константах.
Типы данных. Сначала отвечу “зачем” существуют типы данных. Смотрите, допустим нам надо написать программу, которая выводит на экран данные о возрасте, весе и росте человека. Но, чтобы программа могла обращаться к этим данным, их надо хранить где-то в оперативной памяти компьютера, а уже потом “попросить” показать их. Вот для этого нам и нужны типы данных – чтобы компилятор “понял” сколько памяти надо выделить для данных и что в этой памяти будет храниться (целое число (возраст), вещественное (вес и рост), символы и .т.д.).
Типы данных можно разбить на три группы: числовые, символьные и логические. Для обозначения типов данных используются специальные зарезервированные (ключевые) слова. Ниже мы их рассмотрим и укажем сколько памяти для них выделяется и какие данные они могут хранить.
Числовые типы данных: для хранения целых чисел (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 часов вечера. А вот количество часов в сутках – это уже константа.
И переменным и константам при объявлении обязательно надо присвоить имя. Существуют строгие правила, согласно которым даются имена:
- имя переменной может содержать маленькие и большие буквы английского алфавита, цифры, и ‘_’ (нижнее подчеркивание). С нижним подчеркиванием имена читаются намного легче. Сравните amountofapples и amount_of_apples.
- имя не может начинаться с цифры! amount_of_apples1 – можно, 1amount_of_apples – не можно ))
- именем не может быть зарезервированное слово (int, bool …). Если вы придумали имя переменной, ввели, а его подсветило синим цветом, значит такое слово в С++ является зарезервированным. Придумайте новое имя.
- имя переменной должно быть осмысленным (логичным тому, что будет хранить данная переменная). Т.е. вряд ли кто-то догадается, что в переменной 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.
Так, пожалуй, приступим к рассмотрению нескольких примеров, чтобы понять и запомнить то, о чём мы тут говорили. Не забывайте, набирать код – практикуйтесь.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | // Задача: Есть 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; } |
В строке 15 переменной inBox присвоено значение 0, так как мы не знаем какое значение туда запишется. И в строке 17, мы показываем начальное значение на экран. Как видите, чтобы показать значение переменной на экран, достаточно обратиться к ней по имени: cout << inBox; Обратите внимание, как работает cout. С помощью оператора << , мы можем чередовать показ текста и показ значения переменной. Так мы делали в строках 17, 19, 20 и 27. В строке 24 в переменную inBox записывается сумма переменных: amount_of_apples1 + amount_of_apples2. То есть, компилятор, сначала сложит значения этих переменных, а потом запишет сумму в inBox . И чтобы убедиться, что всё посчиталось и записалось – снова выводим значение inBox на экран – строка 27. Запускаем программу (сначала Ctrl + Shift + B, если ошибок нет то далее Ctrl + F5 подробней здесь). Вот что мы увидим:
1 2 3 4 5 | В пустой коробке - 0 В первой сумке - 11 Во второй сумке - 44 Всего в коробку добавлено 55 яблок |
Выделим основное, что необходимо запомнить:
- тип данных указывается перед именем переменной и определяет какие данные в ней будут храниться (число, символ… ) и сколько памяти необходимо под них выделить.
- имя переменной дает программист, соблюдая определённые правила (указаны выше).
- чтобы создать (объявить) переменную надо указать её тип и дать имя. Переменную желательно сразу инициализировать (присвоить значение при создании): тип имя = значение;
- чтобы объявить константу необходимо использовать ключевое слово const и обязательно сразу присвоить значение: const тип имя = значение;
- переменным можно присвоить не только определённое значение, а и результат какого-то вычисления: amount_of_apples1 = amount_of_apples2 + 33;
- объявлять переменные желательно в начале main-функции. А при необходимости еще и оставить комментарий, что они будут хранить.
- регистр букв имени имеет значение. Имена Apple и apple обозначают разные переменные.
Хотите уделить больше времени обучению – посмотрите видео-уроки!
О константах изложено в этом видео:
Если у вас остались вопросы или что-то не получилось, пишите в комментариях. Обязательно рассмотрите дополнительные задачи и решения по этой теме.
‘#include ‘: skipped when looking for precompiled header use – выдает такую ошибку, как решить?
Это связано с настройками вашего проекта в VisualStudio – вы где-то удалили что-то, связанное с предкомпилированными заголовочными файлами.
Решить это проще всего:
– создать новый проект консольного приложения
– в созданных ним файлах ничего не трогать и не удалять
– вкопировать туда код из примера задачи (с этого сайта)
Спасибо огромное!
Ошибки в 12 строчке требуеться точка с запятой в 19 идентификатор не определен! Пробовал даже копировать с сайта что это может быть?
понятным языком. спасибо. очень помогает в изучении.
Известны координаты двух вершин A и C квадрата ABCD. Найти его площадь и периметр.помогите создать программу
Представляете вершины как тип complex или как struct { double x, y }.
Задаёте А и C как точки по диагонали: верх-лево + низ-право или низ-лево + верх-право.
Если это действительно квадрат (стороны равны), то длина стороны L=A.real()-C.real() (при представлении complex<double) или L=A.x-C.x (при представлении struct {…} ).
Если это прямоугольник, то всё чуть-чуть сложнее, но не много…
А дальше совсем элементарно: площадь=L*L, периметр=4*L.
Если и так не понятно, то вам сюда: https://purecodecpp.com/archives/2821
Очень доходчивые и увлекательные уроки, хотелось бы задать вопрос: будут ли уроки с графикой ( создания симуляторов, игр?).
Графика – это зависит от а). операционной системы и б). от используемых (альтернативно) графических библиотек (GTK, Qt, wxWidgets и т.п.).
Это совершенно не относится к программированию на C++.
Почему то, и _getchar_nolock(); и _getch не останавливают программу но компилятор она проходит.
Не могли бы вы, пожалуйста, подробней объяснить почему мы в 3 пункте в 1 видео мы меняем 1000000000000000 на 1111111111111110.