На самом деле было бы преступно закончить сегодняшний день на предыдущей лекции, потому что до сих пор все очень просто и вы заскучаете. А так как на носу Новый год и я не обещаю до этого момента продолжение, то я напишу сегодня еще одну лекцию, которая немного поднимет нас над ОЧЕНЬ тривиальным и закончу это все домашним заданием.
читать дальшеМы объединим 2 новые фишки. Я расскажу о переменных и для чего они, а так же научу получать данные с клавиатуры пользователя.
Переменные
Представим себе ситуацию, в которой нам нужно в программе запомнить какое-то число для последующей обработки. Для того, чтобы запомнить число, в языке применяются "переменные".
Переменные - это такие "ящички", в которые мы можем положить значения. Для того, чтобы создать переменную в программе (далее я буду употреблять глагол "объявить". Кому объявить? Естественно - компилятору! Мол, знай: я создаю переменную, познакомься с ней). Так вот, для того, чтобы объявить переменную нужно компилятору рассказать КАК МИНИМУМ 2 вещи: тип переменной и имя переменной.
В С++ обязательно, при объявлении переменной указать, что именно она будет хранить. Переменная, с которой мы столкнемся сегодня, имеет тип "целое число". Она объявляется так:
int num;
разберем:
int - это тип переменной "целое число", от английского "integer"
num - это имя переменной.
не забываем точку с запятой в конце!
тип переменной пишется ТОЛЬКО один раз, в момент, когда мы объявляем ее. Далее к этой переменной мы будем обращаться только по имени.
Если понятно, то я "бросаю вас в воду" и сразу же опишу программу, которая будет делать следующие вещи:
она считает количество квартир в доме, при этом она знает, что на одном этаже есть 4-ре квартиры, а всего - пять этажей.
Это задачка для первого класса и решается она так: количество квартир в доме равно: количеству квартир на этаже, умножить на количество этажей. То есть в нашем случае: 4 * 5 = 20 квартир. В конце подсчета программа выдаст результат на экран:
Отлично, разберем, что я написал:
первые три строчки - объявление переменных.
следующие 2 - присвоение переменным значения.
после этого - так же присвоение значения, но в результате подсчета, который выполнит программа.
далее - уже знакомый нам способ вывести результат на экран.
Немного замечаний:
1. Ставить пробелы между строками - необязательно. Я поставил их только для удобства чтения.
2. Обратите внимание, я даю переменным имена, из которых понятно, что они содержат. В программировании есть понятие "хороший тон программирования".
Хороший тон программирования - это набор требований, которые необязательны к исполнению, с точки зрения компилятора (программа бы скомпилировалась и работала правильно даже, если бы я назвал их "петя, вася и коля") НО!!! такое поведение ОЧЕНЬ советуется, чтобы облегчить себе отладку и сопровождение кода. Более подробно о хорошем тоне, отладке и сопровождении поговорим позже.
3. Присвоение значения переменной осуществляется так: пишем имя, после этого знак равно (=), после него значение, которое присваиваем.
Внимание! порядок ВАЖЕН!
num_of_floors = 5; // правильно
5 = num_of_floors; // НЕправильно!
4. имя переменной НЕ может содержать пробелы. Поэтому используется один из возможных трюков:
а. имя_переменной (нижнее подчеркивание)
б. ИмяПеременной (каждое новое слово с большой буквы)
в. имяПеременной (первая буква маленькая, каждое следующее слово с большой буквы)
Форма, которую выбирает программист, зависит от его личных предпочтений. В именах переменных я отдаю предпочтение первому варианту. Когда я пользуюсь вторым и третьим - я покажу позже.
Примечание: одно из требований хорошего тона - использовать английский язык. НЕ писать что-то типа "int koli4estvo_kvartir" - это выглядит некрасиво.
Примечание: некоторые программисты любят первой буквой от имени переменной обозначать тип переменной. К примеру: int i_num_of_floors. Буква "i", вначале имени говорит о том, что это int. Я не пользуюсь таким приемом, так как стараюсь давать такие имена, которые однозначно говорят сами за себя.
Примечание: в коде, который я написал выше, есть одна проблема: я объявил переменную, но не присвоил ей начальное значение. Это не страшно, если быть уверенным, что значение она получит прежде, чем я буду ею пользоваться в вычислениях. Однако! Если будет наоборот - программа поведет себя непредсказуемо! Поэтому, принято присваивать переменной начальное значение сразу. Обычно - это ноль.
Правильно бы было написать:
int num_of_floors = 0;
Итак, перепишите себе код, написанный выше и скомпилируйте. Результат должен быть следующий: на экран будет выведена строка:
"total number of flats in current building: 20".
Если вы не видите эту строку - ищите где вы допустили ошибку и невнимательно переписали.
Примечание: далее я не буду пользоваться словом "Экран". Я заменяю его на слово "Консоль". Консолью я называю нижнюю часть Эклипса, в которой мы видим то, что выводим на экран, через оператор "cout".
Получение значений с клавиатуры
Когда Тюринг изобретал компьютер, он создавал "машину, которая решит все математические задачи". Это конечно очень амбициозная цель, так как математика - это философия и язык Бога, но в арифметике компьютер помочь способен. Для того, чтобы начать решать задачи, компьютеру нужно ввести данные условия. Самый простой путь - клавиатура.
Сразу код:
Обратим внимание на новшество в коде:
cin - говорит программе: получи с клавиатуры символ
>> - разделитель (обратите внимание! он в обратную сторону от разделителя cout. Если задуматься - очень логично)))
input_from_user - имя переменной, в которую положить полученный символ
После выполнения этой строки в переменной input_from_user будет лежать число, которое ввел пользователь.
Примечание: а если пользователь введет букву? В данном коде эта ошибка не обрабатывается. О правильной обработке ошибок мы будем разговаривать ОЧЕНЬ много, так как это наиважнейшая часть программирования. НО! это будет позже. Пока мы надеемся на то, что пользователь не выкинет сюрприз)))
Примечание: первая строка cout не заканчивается привычным "endl". Я сделал это специально. Почему?
Скомпилируйте этот код и запустите. ВОЗМОЖНО в момент, когда вы захотите ввести число в консоль - оно не введется (вы не увидите его в консоле). Просто клацните по консоли мышью и попробуйте снова. После удачного ввода числа нажмите клавишу Enter.
Итог: мы научились выполнять примитивные расчеты, используя переменные и мы научились получать значения с клавиатуры. Этого пока хватит на сегодня.
Домашнее задание
В каждом значимом на мой взгляд уроке, будет домашнее задание по материалу, пройденному на лекции. Решение домашнего задания я буду выкладывать в начале следующей лекции, надеясь, что у вас будет время над ним подумать. Мое решение может отличаться от вашего и это нормально, при условии, что выполняется 2 требования:
1. Оно приводит к правильным результатам
2. Оно написано в духе "хорошего тона"
Итак:
Напишите программу, которая высчитывает количество учеников в классе.
Условия:
1. Программа получает с клавиатуры количество парт в классе.
2. Программа получает с клавиатуры количество учеников за одной партой.
3. Дано: за всеми партами сидит одинаковое количество учеников (то есть НЕ может быть ситуации, в которой за одной партой сидит 2 ученика, а за другой - только один)
4. Программа выводит ответ на экран (консоль).
Удачи!