Скачать 1.94 Mb.
|
5. Присваивание и выражения 5.1 Краткая форма записи операторов присваивания В программах часто встречаются операторы присваивания, в которых справа стоит выражение, модифицирующее текущее значение переменной, например: number = number + 1; Переменным часто присваиваются значения, вычисленные на основе их старых значений. Поэтому в Си++ была введена краткая форма записи для подобных операторов присваивания. Любую из операций "+" (сложение), "-" (вычитание), "*" (умножение), "/" (деление) и "%" (остаток от деления нацело) можно указать в качестве префикса оператора присваивания ("=") (cм. следующую таблицу). Пример: number += 1; total -= discount; bonus *= 2; time /= rush_factor; change %= 100; amount *= count1 + count2; Эквивалентное выражение: number = number + 1; total = total - discount; bonus = bonus * 2; time = time / rush_factor; change = change % 100; amount = amount * (count1 + count2); Первый пример допускает еще более краткую запись с помощью оператора инкремента "++": number++; Оператор "++" существует и в префиксной форме: ++number; Постфиксная и префиксная форма записи имеют важное различие, которое необходимо помнить. Префиксный оператор применяется ДО вычисления остальной части выражения, а постфиксный - ПОСЛЕ. Например, посоле выполнения операторов х = 4; у = x++; переменная "x" получит значение 5, а "y" - значение 4. В случае операторов х = 4; у = ++x; обе переменные получат значение 5. Это объясняется тем, что "++x" выполняется до того, как значение "x" будет использовано в выражении, а "x++" - после. В Си++ существует аналогичный оператор декремента "-—", уменьшающий значение переменной на 1, и у него тоже есть префиксная и постфиксная форма. 26 Вообще, выражение с оператором присваивания имеет значение, равное значению левой части после выполнения присваивания. Ниже приведено выражение, соответствующее правилам Си++, которое можно использовать для проверки условия: (y = ++x) == 5 Это выражение означает следующее: "после присвоения переменной y инкре-ментированного значения x проверить, не равно ли значение y числу 5". 5.2 Логические выражения и операторы Интуитивно логические выражения наподобие "2<7", "1.2!=3.7" и "6>=9" воспринимаются человеком как утверждения, которые могут быть "истинными (true) " или "ложными (false) " (операция "!=" означает "не равно"). Допускается объединение нескольких подобных выражений в более сложное выражение с помощью логических операций "&&" ("И"), " | |" ("ИЛИ") и " !" ("НЕ") (см. таблицу).
В таблице в четвертом примере выражение истинно, поскольку приоритет операции "&&" выше, чем у " | |". Приоритет (порядок выполнения) различных операций Си++ можно узнать в учебнике или руководстве по языку Си++, а также в справочной системе Visual C++ (тема Operator Precedence). Если у вас возникают сомнения относительно приоритета операций, применяйте круглые скобки (). Применение этих скобок облегчает чтение программ. Составные логические выражения обычно применяются в качестве условий в операторах if и в циклах for. Например: if ( total_test_score >= 50 && total_test_score < 65 ) cout « "Вы прошли тест со средним результатом.\n"; У логических выражений в Си++ есть еще одно важное свойство. В Си++ истинное значение ("true") представляется в виде целого числа 1 (большинство компиляторов любое положительное число считают истинным значением), а ложное значение ("false") в виде значения 0. Это может привести к ошибкам. Например, легко напечатать "=" вместо "==". Поэтому фрагмент if ( number_of_people = 1 ) cout « "Есть только один человек.\n"; всегда будет печатать сообщение "Есть только один человек", даже если до оператора if переменная "number_of_people" была больше 1. 27 6. Сводка результатов В данной лекции довольно подробно рассматривались переменные языка Си+ У переменных всегда есть определенный тип данных. Переменные применяются для временного или постоянного хранения значений разных типов. Значения переменным можно присваивать различными способами. В выражениях для вычисления новых значений переменных можно использовать различные арифметические и логические операции. 7. Упражнения Упражнение 1 Для преобразования температуры из шкалы Цельсия в абсолютную шкалу температур (шкалу Кельвина) надо добавить к температуре по Цельсию значение 273.15. В шкалу Фаренгейта температура по Цельсию преобразуется tf =1.8 Г + 32. Напишите программу преобразования значений температуры, которая будет печатать на экране следующую таблицу: Цельсий Фаренгейт Абсолютная температура О 32.00 273.15 20 68.00 293.15 40 104.00 313.15 300 572.00 573.15 Упражнение 2 Измените программу из упражнения 1 так, чтобы она запрашивала у пользователя минимальную и максимальную температуру по Цельсию, которые должны быть в первой и последней строках таблицы. Программа также должна запросить шаг изменения температуры (на это значение должны отличаться температуры в соседних строках таблицы, в упражнении 1 шаг был равен 20-ти градусам). Перед таблицей программа должна вывести несколько строк с пояснением своих действий, а также повторить вывод на экран введенных пользователем данных. Упражнение 3 Напишите программу, которая считывает с клавиатуры символ (ch) и затем выводит одно из следующих сообщений (вместо ch должен выводиться введенный символ, а вместо ... - соответствующая прописная или строчная буква): а) если символ ch является строчной буквой - сообщение "Букве ch соответст вует прописная буква...", б) если ch является прописной буквой - сообщение "Букве ch соответствует строчная буква...", в) если ch не является буквой - сообщение "Символ ch не является буквой". Для составления необходимых условий обратитесь к расширенной таблице символов ASCII (см. п.8.3). Упражнение 4 Напишите программу для возведения произвольного числа x в положительную степень n с помощью цикла for. (Есть ли способы повышения эффективности вашей программы?) 28 8. Приложения 8.1 Служебные слова Си++ По назначению служебные слова языка Си++ можно разделить на несколько групп. Ниже перечислены эти группы и относящиеся к ним слова. Полужирным шрифтом выделены слова, назначение которых вы узнаете в данном вводном курсе. • Типы данных (определяют типы данных, которые можно хранить в памяти компьютера), char short int long (целые числа) enum (тип "перечисление") double float (вещественные числа) void struct union typedef (типы, определяемые пользователем) • Модификаторы типов данных (позволяют задать некоторые свойства хране ния данных в памяти). signed unsigned volatile register const static extern auto • Управление порядком выполнения операторов.
|
И. П. Гиривенко к т. н., доцент, зав кафедрой информатики и вычислительной... Цели: 1 продолжить знакомство с героями поэмы «Полтава»; познакомиться с изображением Полтавской битвы в поэме | И. П. Гиривенко к т. н., доцент, зав кафедрой информатики и вычислительной... ... | ||
Методические рекомендации по подготовке, оформлению, предзащите и... В. А. Усков, заместитель декана естественно-географического факультета по развитию, доцент кафедры физической географии и методики... | Проблемы коммуникации М. Е. Евсевьева (зав кафедрой, доцент А. А. Ветошкин); С. А. Борисова, директор Института международных отношений Ульяновского государственного... | ||
Программа по формированию навыков безопасного поведения на дорогах... Елена Святославовна Симакова, кандидат педагогических наук, доцент кафедры гуманитарных и естественнонаучных дисциплин Рязанского... | Программа курса по выбору «Орнитология» предназначена для студентов... Автор программы: к б н., доцент, зав кафедрой биологии и химии Марина Николаевна Харламова | ||
Российской Федерации Федеральное государственное образовательное... Петренко И. М., зав кафедрой экономической теории, д-р экон наук профессор Дулин М. П., зав кафедрой педагогики и психологии, д-р... | Рахманкулова Людмила Кузьминична, кандидат филологических наук, доцент... Автор программы: С. А. Виноградова, кандидат филологических наук, доцент, зав кафедрой английского языка и английской филологии | ||
Протокол №5 От 12 января 2012 г Заседания кафедры электроники и вычислительной... Зав кафедрой Хакимова Г. Г. сообщила, что кафедра проводит 2-й Чемпионат по цифровой схемотехнике | Лингвистические проблемы Московского государственного педагогического института иностранных языков им. М. Тореза (зав кафедрой доцент Ю. А. Денисенко); д-р... | ||
Мгпу учебно-методический комплекс дисциплины А. В. Прялухина, кандидат психологических наук, доцент, зав кафедрой психологии Российского государственного социального университета... | Рабочая программа по дисциплине «теория экономического анализа» Рецензент: к с н., доцент, зав кафедрой «Экономики и управления на предприятии и маркетинга» Пятигорского государственного гуманитарно-технологического... | ||
Рабочая программа по дисциплине «международный менеджмент» Рецензент: к с н., доцент, зав кафедрой «Экономики и управления на предприятии и маркетинга» Пятигорского государственного гуманитарно-технологического... | Методические рекомендации по написанию курсовых работ дисциплине Рецензент: к с н., доцент, зав кафедрой «Экономики и управления на предприятии и маркетинга» Пятигорского государственного гуманитарно-технологического... | ||
Учебное пособие Краснодар 2008 В. А. Оробец); кафедра паразитологии и ветсанэкспертизы Донского государственного аграрного университета (зав кафедрой, проф., к... | Рабочая программа по дисциплине «Экономика организаций (предприятий)... Рецензент: к с н., доцент, зав кафедрой «Экономики и управления на предприятии и маркетинга» Пятигорского государственного гуманитарно-технологического... |