Бритуля - Богиня
Я сегодня в ударе)))
На самом деле было бы преступно закончить сегодняшний день на предыдущей лекции, потому что до сих пор все очень просто и вы заскучаете. А так как на носу Новый год и я не обещаю до этого момента продолжение, то я напишу сегодня еще одну лекцию, которая немного поднимет нас над ОЧЕНЬ тривиальным и закончу это все домашним заданием.
читать дальшеМы объединим 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. Программа выводит ответ на экран (консоль).
Удачи!
На самом деле было бы преступно закончить сегодняшний день на предыдущей лекции, потому что до сих пор все очень просто и вы заскучаете. А так как на носу Новый год и я не обещаю до этого момента продолжение, то я напишу сегодня еще одну лекцию, которая немного поднимет нас над ОЧЕНЬ тривиальным и закончу это все домашним заданием.
читать дальшеМы объединим 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. Программа выводит ответ на экран (консоль).
Удачи!
@темы: C++
Ты просто чудеснее чудесного)))
Мы с Катериной в восторге, правда))) будем учиться))))))
Хотя на Зоне есть такие, кому идея тоже понравилась)))
Так что вроде учеников прибавилось))))
З.Ы. У вас экзамены буду принимать ЛИЧНО!
и поправленная, с запятыми i5.pixs.ru/storage/4/2/0/2png_1224082_4367420.p...
Заранее извиняюсь, если буду говорить очевидные вещи, но я всегда люблю "перебдеть" более, чем "недобдеть". Когда учат меня, то я обычно прошу думать обо мне, как о последнем дибиле, потому что так я защищен от момента, когда человек не объясняет, думая, что это очевидно и он боится меня обидеть, в итоге - я остаюсь в проигрыше. Я не знаю, что для тебя очевидно, а что нет, поэтому, я скажу все.
Первый код, проблема, которая бросается в глаза - переменные, во время объявления лучше обнулять, так, как ты сделала во втором варианте. Этот факт вовсе не зависим от того, как именно ты объявляешь переменные: каждую на новой строке, или через запятую.
Теперь я бы хотел остановиться на объявлении переменных. Да, действительно, язык позволяет объявлять переменные через запятую или каждую - с новой строки. Какой способ выбрать? Я поступаю так: как правило, я объявляю каждую с новой строки, за исключением тех случаев, когда у меня есть переменные, которые, по-сути, выполняют одну и туже функцию. То есть... допустим, у тебя в коде есть 2 цикла. Я бы конечно не стал сейчас цеплять циклы, так как в лекциях мы еще не дошли до них, но я знаю, что у тебя есть знания php и поэтому, понятие цикла для тебя не в новинку.
Итак: есть 2 цикла, по первому "бежит" переменная int i, а по второму - переменная int j. Это тот случай, когда я в коде объявлю их через запятую. Как отделить один случай от другого? Очень просто: представь, что тебе нужно возле каждой переменной написать комментарий, что она делает. Переменные, в которых комментарий совпадал бы - объявляй через запятую. Переменные, где это не так - каждую с новой строки. В дальнейшем, ты поймешь, что эта мелочь делает код намного более "интуитивно-понятным".
Теперь по коду: я не совсем понял, зачем ты объявила такие пары: input_from_user_pupils_on_one_desk и num_of_pupils_on_one_desk (и т.д.) если ты пользуешься первой только для того, чтобы получить с клавиатуры значение и сразу положить во вторую. Это - лишнее. можно объявить только num_of_pupils_on_one_desk и в нее получить с клавиатуры символ, без лишнего присвоения.
Возможен вариант, в котором ты хочешь проверить, а не ввел ли пользователь нелегальное значение (например - отрицательное) и только после этого присвоить его другой переменной (хоть мы еще не учили проверки, но на будущее). Тогда я бы объявил только одну переменную input и использовал бы ее во всех случаях. То есть:
cin >> input;
проверка
num_of_desk = input;
cin >> input;
проверка
num_of_pupils = input;
в таком ключе это более оправдано.
Это все мелочи, конечно, но именно из этих мелочей складывается умение программировать. В коде не должно быть лишних вещей, с одной стороны, но и салат делать не правильно - с другой. Например, у нас была переменная num_of_desk и на каком-то этапе она стала тебе не нужна. Ты подумаешь: зачем я буду обьявлять, допустим, переменную speed (содержащую скорость чего-то), если у меня есть ненужная num_of_desk? Я положу скорость в нее, чтобы не объявлять лишнюю переменную.
Это будет ошибкой, так как код становится нечитабелен. То есть, всегда нужно искать разумный компромисс. Это приходит с опытом. И именно поэтому я и обращаю внимание на эти вещи, чтобы этот опыт пришел. Сори, если я буду дотошным))))
А в целом - ты отлично справилась! Без шуток. Я радуюсь не меньше тебя, потому что твоя победа - это и моя победа. Мы вместе преследуем одни и те же цели))) Продолжай в том же духе и прости мою дотошность)))
Хорошо, я все запомню-запишу. Блокнотик уже есть, где все лекции планом-конспектом).
Про присвоение имени понятно, про комментарии тоже (я в школе на бейсике делала штуки))), я помню много всякой всячины))), но тут как-то иначе.
Сокращено так тогда:
i5.pixs.ru/storage/0/9/8/3png_9602035_4370098.p...
Лучше?
Хорошо, с проверками пока не ясно, но ладно. Там выходит больше-равно нулю и прочая ерунда?
А с объяснениями - наоборот! Я люблю слушать и читать что-то, о чем человек "напротив" имеет представление в теории и на практике. Очень люблю рассказы про работу поэтому профессиональные. Поэтому только рада))
Спасибо).
Да, скобки - это границы блока. Между скобками - тело блока. Блоки бывают разные. Об этом мы поговорим далее, а пока относись к этому как к "обязательному шаблону", не стоит пытаться бежать вперед паровоза.
То же самое касается проверок. Пока, представь, что ты не слышала от меня это слово. Но далее есть Лекция 7. Блоки и условия. if-else. Вот там мы поговорим и о блоках и об условиях, подробно, разжеванно и дотошно, то есть - в моем стиле))))