Следующая тема, которая входит в основы программирования – это типы данных, переменные и константы. Почти всегда первые темы в изучении любого курса – это в большинстве теория и скукотища. Так уж складывается, что чтобы начать писать более-менее интересные программы, надо освоить некие азы и получить базовые знания. Я, конечно, постараюсь покороче и поинтересней раскрыть тему этой статьи, но наберитесь терпения. В этой статье мы разберёмся с тем, что же такое типы данных и зачем они нам понадобятся в программировании, а также узнаем о переменных и константах.
Типы данных. Сначала отвечу “зачем” существуют типы данных. Смотрите, допустим нам надо написать программу, которая выводит на экран данные о возрасте, весе и росте человека. Но, чтобы программа могла обращаться к этим данным, их надо хранить где-то в оперативной памяти компьютера, а уже потом “попросить” показать их. Вот для этого нам и нужны типы данных – чтобы компилятор “понял” сколько памяти надо выделить для данных и что в этой памяти будет храниться (целое число (возраст), вещественное (вес и рост), символы и .т.д.).
Типы данных можно разбить на три группы: числовые, символьные и логические. Для обозначения типов данных используются специальные зарезервированные (ключевые) слова. Ниже мы их рассмотрим и укажем сколько памяти для них выделяется и какие данные они могут хранить.
Числовые типы данных: для хранения целых чисел (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 обозначают разные переменные.
Хотите уделить больше времени обучению – посмотрите видео-уроки!
О константах изложено в этом видео:
Если у вас остались вопросы или что-то не получилось, пишите в комментариях. Обязательно рассмотрите дополнительные задачи и решения по этой теме.
Точнее 1000000000000001 на 1111111111111110
С помощю какого типа или как можо записать это число в кубе 49999982000001620
Ни с каким стандартным типом C++ это сделать нельзя (это никому не нужно).
Но это можно сделать с строчным представлением (char[], string) числа, предварительно определив для такого типа арифметические операции: +, -, x, / и т.д.
Для вычислений не ограниченной точности (длины) существуют специальные сторонние пакеты-библиотеки.
Ввел все правильно, но когда даю команду Ctr+F5, то сама программа появляется на миллисекунду и тут же закрывается, подскажите, что я сделал не так.
З.Ы: Хотя в эту миллисекунду успеваю увидеть, что появляется, что должно….
перед return 0; напиши system(“pause”);
Для начала введи библиотеку #include , а потом в самом конце, перед return 0; введи _getch(); и прога не будет закрываться автоматом.
а какая разница между типами данных int и long????
Размер, длина.
И как следствие – максимальные значения, которые можно хранить в переменных таких типов.
Каким типом данных записывать буквы ?
Пример :
Введите свое имя .. ?
(Ввел свое имя)
Здравствуйте , ..
Буквы – char.
Слово, строка – массив char, char[]. Или string.
Но!
Если вас интересуют русскоязычные буквы/слова (или китайские, арабские … отличные от английских), то тип букв должен быть wchar_t, а строки – wchar_t[] или wstring.
Помоги пожалуйста, почему обязательно inBox , это имя переменной int, я ввёл специально basket , указывает на ошибку basket, но почему всё вроде по правилам?
Переменная inBox определена как целое число, в её записи (в тексте программы, или при вводе с клавиатуры при выполнении) могут встречаться только символы цифр от 0 до 9. Появление любого другого символа будет расценено как ошибка связанная с нарушением типа inBox.
Sorry ,разобрался, всё пока с яблоками понятно ….
сделал как указано в примере
вышло куча ошибок
1. Если “вышло куча ошибок” – значит вовсе не “как указано в примере”.
2. А когда “куча ошибок”, то нужно сюда скопировать текст хотя бы 1-2-х основных ошибок, чтобы получить помощь и подсказку … экстрасенсы здесь разошлись по временным отпускам без денежного содержания.