Оператор условия if else

СОДЕРЖАНИЕ: Лабораторная Работа На тему: Оператор условия else 1. Назначение и синтаксис Оператор условия 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 .

// – KelvinvsCelsius–

#pragmahdrstop

#include iostream.h // для потокового В/В

#include conio.h // для консольного В/В (getch)

#pragma argsused

int main (int argc, char* argv[])

{

floatT0 = -273; // объявляем и инициализируем T0

floatTc, Tk; // объявляем вещественные Tc и Tk

cout» VvediteTc=»; // выводим приглашение

cinTc; // запрашиваем Tc

if ( Tc T 0) // проверяем условие TcT0

{

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;

couta;

}

Б) ошибочная запись

if (a=b)

{

if (x!=0)

cout» x!=0»;

else

{ // начало else

x = 1;

y = 0;

}

else

{

} // конец else

a = b;

couta;

}

В приведенном примере один из операторов (выделен полужирным шрифтом) вложен в другой. Запись Б) является ошибочной в силу того, что блок else внутреннего оператора условия частично пересекается с обоими блоками if и else внешнего оператора.

Пример 2. Пользователь вводит с клавиатуры три целых числа a, b, c. Необходимо вывести на экран наибольшее из этих чисел.

Решение. Один из возможных алгоритмов решения этой задачи показан на следующей блок-схеме.

Схема может быть реализована программно с помощью вложенных операторов if-else

// – Выбор наибольшего из 3 чисел –

#pragmahdrstop

#include iostream.h

#include conio.h

#pragma argsused

int main (int argc, char* argv[])

{

float a, b, c; // объявляем три переменные

cout «Vvedite a –»; // вводимзначения a, b, c

cina;

cout «Vvedite b –»;

cinb;

cout «Vvedite c –»;

cinc;

if (ab) // если a b

if (ac) // иесли a c

cout» max = «a; // то выводим на экран a

else // иначе, т.е. если a = с

cout» max = «c; // выводим с

else // иначе, т.е. если a = b

if (bc) // и если b c

cout» max = «b; // то выводим b

else // иначе, т.е. если b = а

cout» max = «c; // выводим с

getch(); // задержка до нажатия любой клавиши

return 0;

}

// –

Разберите блок-схему этого алгоритма и его программную реализацию. Модифицируйте алгоритм и программный код для поиска наименьшего из трех чисел.

4. Составные логические выражения

Условие в операторе if-else может быть выражено не только в виде простого сравнения двух числовых значений. Например, весьма распространены двойные условия, которые в математике записываются в виде «a b c». Запись означает, что значение b лежит в диапазоне между значениями a и c. В программе такие условия должны быть переформулированы с использованием простых операций сравнения и логических операций «И», «ИЛИ», «НЕ»

логическая операция знак в С++ наименование знака
И двойной амперсанд
ИЛИ || двойная вертикальная черта
НЕ ~ тильда

В частности, выражение «a b c» сформулируем как «a меньше b, и b меньше c». На С++ это будет записано как (ab)(bc). В тексте программы соответствующий оператор будет иметь вид

if((ab)(bc))

{

… … …;

}

Пример 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 iostream.h

#include conio.h

int main (int argc, char* argv[])

{

int n, m, k, l;

cout«Koordinaty beloi peshki:«endl;

cout» vvedite n –»;

cinn;

cout» vvedite m –»;

cinm;

cout«Koordinaty chernogo slona:«endl;

cout» vvedite k –»;

cink;

cout» vvedite l –»;

cinl;

if(((k==n+1)||(k==n1))(l==m+1)) // атакован слон

coutendl «Atakovan chernyi slon!»;

else

if((k+l==n+m)||(k-l==n-m)) // атакованапешка

coutendl «Atakovana belaya peshka!»;

else // нетатаки

coutendl «Figury v bezopasnosti»;

getch();

return 0;

}

// –

Скачать архив с текстом документа