Оператор условия if-else
При программировании обыденной является ситуация, когда требуются некоторое действие в ответ на сложившиеся условия (например, если получены неверные исходные данные от пользователя, то выдать сообщение об ошибке и выйти из программы). В таких случаях в программах на C++ может использоваться сокращенная запись оператора условия с отсутствующим блоком else. Общая форма такой записи. Если на момент… Читать ещё >
Оператор условия if-else (реферат, курсовая, диплом, контрольная)
Лабораторная Работа На тему: «Оператор условия if-else»
1. Назначение и синтаксис
Оператор условия if-else служит для выбора направления работы программы в зависимости от условий, сложившихся в данной точке программы на момент ее выполнения.
Общая форма записи условного оператора
if (<�условие>)
{
<�блок операторов 1>;
}
else
{
<�блок операторов 2>;
}
Если на момент выполнения <�условие> истинно, программа передает управление <�блоку операторов 1> и, далее, первому оператору за пределами конструкции if-else. При этом <�блок операторов 2> не выполняется. Иначе, если <�условие> ложно, выполняется <�блок операторов 2>, а <�блок операторов 1> пропускается. Соответствующая блок-схема
Фигурные скобки в синтаксисе оператора if-else используются для выделения в тексте блоков 1 и 2. Старайтесь располагать закрывающую скобку под открывающей для улучшения читаемости программного кода. Для этой же цели текст внутри фигурных скобок необходимо смещать вправо на несколько позиций.
В качестве условия в операторах if-else могут использоваться любые логические выражения, принимающие значения «истинно» или «ложно» (true — false). Ниже приведена таблица с указанием простейших операций сравнения целых и вещественных чисел
операция | знак операции | пример записи на C/С++ | |
больше | > | A > B | |
меньше | < | C < 2 | |
больше либо равно | >= | k >= 0 | |
меньше либо равно | <= | i <= 10 | |
равно | == | x == y | |
не равно | ≠ | D≠ 0 | |
Пример 1. Требуется написать программу, переводящую температуру по шкале Цельсия TC (°С) в температуру по Кельвину TK (К). Значение TC вводится пользователем с клавиатуры.
Решение. Используем известную формулу преобразования — TK = TC — T0, где T0 = -273 °С — температура абсолютного нуля. Будем считать введенное TC некорректным, если оно меньше T0.
// - Kelvin vs Celsius ;
#pragma hdrstop
#include // для потокового В/В
#include // для консольного В/В (getch)
#pragma argsused
int main (int argc, char* argv[])
{
float T0 = -273; // объявляем и инициализируем T0
float Tc, Tk; // объявляем вещественные Tc и Tk
cout<<�" Vvedite Tc ="; // выводим приглашение
cin>>Tc; // запрашиваем Tc
if (Tc<T0) // проверяем условие Tc
{
cout<<�" Tc < T0!"; // условие истинно, выводим на
} // экран сообщение об ошибке
else
{
Tk = Tc-T0; // условие ложно, рассчитываем
cout << «Tk =» << Tk; // Tk и выводим на экран
}
getch (); // задержка до нажатия на клавишу
return 0; // завершение программы
}
// ;
Наберите приведенный выше код, откомпилируйте его и запустите программу на выполнение. Исследуйте результаты работы при различных значениях TC.
2. Сокращенные варианты записи
При программировании обыденной является ситуация, когда требуются некоторое действие в ответ на сложившиеся условия (например, если получены неверные исходные данные от пользователя, то выдать сообщение об ошибке и выйти из программы). В таких случаях в программах на C++ может использоваться сокращенная запись оператора условия с отсутствующим блоком else. Общая форма такой записи
if (<�условие>)
{
<�блок операторов>;
}
Здесь в случае истинности условия управление передается блоку операторов в фигурных скобках. В случае ложности условия этот блок пропускается. Соответствующая блок-схема отличается от предыдущей отсутствием одного «плеча»
Другой вариант сокращения применяется в случае, когда какой-либо из блоков if или else состоит только из одного оператора. В этом случае допускается отсутствие фигурных скобок, ограничивающих этот блок.
if (<�условие>)
оператор 1;
else
оператор 2;
Здесь в качестве операторов 1 и 2 могут быть не только простые однострочные арифметические действия или операторы ввода-вывода, но и сложные многострочные конструкции, например другие (вложенные) операторы условия или операторы цикла, которые будут рассмотрены ниже.
3. Вложенные операторы
Операторы условия могут быть вложенными друг в друга, в соответствии с тем программным алгоритмом, который они реализуют. Допускается произвольная степень их «вложенности».
Если один оператор if-else вложен в другой, то первый оператор входит во второй полностью, а не только какой-либо одной своей частью if или else. Недопустимым является частичное перекрывание между собой их отдельных блоков.
A) правильная запись if (a<=b) { if (x!=0) cout<<" x≠0«; else { x = 1; y = 0; } } else { a = b; cout< } | Б) ошибочная запись if (a<=b) { if (x!=0) cout<<" x≠0«; else { // начало else x = 1; y = 0; } else { } // конец else a = b; cout< } | |
В приведенном примере один из операторов (выделен полужирным шрифтом) вложен в другой. Запись Б) является ошибочной в силу того, что блок else внутреннего оператора условия частично пересекается с обоими блоками if и else внешнего оператора.
Пример 2. Пользователь вводит с клавиатуры три целых числа a, b, c. Необходимо вывести на экран наибольшее из этих чисел.
Решение. Один из возможных алгоритмов решения этой задачи показан на следующей блок-схеме.
Схема может быть реализована программно с помощью вложенных операторов if-else
// - Выбор наибольшего из 3 чисел ;
#pragma hdrstop
#include
#include
#pragma argsused
int main (int argc, char* argv[])
{
float a, b, c; // объявляем три переменные
cout<< «Vvedite a -«; // вводим значения a, b, c
cin>>a;
cout<< «Vvedite b -«;
cin>>b;
cout<< «Vvedite c -«;
cin>>c;
if (a>b) // если a > b
if (a>c) // и если a > c
логическая операция | знак в С++ | наименование знака | |
И | && | двойной амперсанд | |
ИЛИ | || | двойная вертикальная черта | |
НЕ | ~ | тильда | |
В частности, выражение «a < b < c» сформулируем как «a меньше b, и b меньше c». На С++ это будет записано как (a
if ((a
{
… … …;
}
Пример 3. На пустой шахматной доске в позиции (n, m) находится белая пешка, в позиции (k, l) — черный слон. Здесь первая координата есть номер столбца шахматной доски, вторая — номер строки (обе изменяются в диапазоне от 1 до 8). Оцените текущую ситуацию в соответствии с тремя вариантами
§ пешка находится под ударом,
§ слон находится под ударом,
§ слон и пешка в «безопасности».
Решение. Примем во внимание, что пешка может атаковать две ближайшие к себе позиции по диагонали вперед, а слон атакует обе свои диагонали полностью. Отсюда могут быть сформулированы условия
· «((k = n+1) ИЛИ (k = n1)) И (l = m+1)» — атака пешки на слона,
· «(k+l = n+m) ИЛИ (k-l = n-m)» — атака слона на пешку,
· иначе фигуры в безопасности.
// - Шахматная композиция ;
#pragma hdrstop
#include
#include
int main (int argc, char* argv[])
// ;