Условный оператор (if)

В разветвляющихся вычислительных процессах на некотором этапе вычислений осуществляется проверка заданного условия (в виде выражения) и выбор одной из ветвей продолжения вычислительного процесса, которых может быть две (ветви “да” и “нет”) или больше. Для реализации разветвления в программе используется условный оператор (в полной и сокращенной форме) и оператор выбора.

Полный условный оператор имеет вид:

if (условие) оператор 1

else оператор 2

где if (если), else (иначе) – ключевые слова;

условие – это выражение (не обязательно логическое), значение которого сравнивается с 0. При этом, если значение выражения не равно 0 (условие истинно), то выполняется оператор 1, а оператор 2 пропускается, иначе (выражение = 0, то есть условие ложно) выполняется оператор 2;

оператор 1, оператор 2 – одиночные или составные операторы.

Составной оператор – это группа операторов, заключенная в фигурные скобки, которая выступает как единое целое в сложных операторах (условном и операторах цикла):

{оператор;…}.

Замечание. В случае, если оператор 1 или оператор 2 одиночные, то после них ставится разделитель точка с запятой (;), а если эти операторы составные, то после закрывающей фигурной скобки (}) точка с запятой не ставится.

Пример.

а) Применение одиночных операторов.

Фрагмент схемы алгоритма: Фрагмент программы:

да

x>y if (x>y) p = x+y;

else p = x-y;

нет printf (“p = %f”, p);

p=x+y
p=x-y

 
 


вывод(p)

б) Применение составного оператора.

Фрагмент схемы алгоритма: Фрагмент программы:

да if (k)

k { p = x+y;

нет p=x+y printf (“p=%f”, p);

r=x-y }

вывод(p)
вывод(r)
else

{ r = x – y;

printf (“r=%f”, r);

}

Неполный условный оператор образуется, если отсутствует часть else условного оператора:

if (условие) оператор.

Тогда, если условие истинно (не равно 0), то выполняется оператор, иначе он пропускается, и выполняется оператор следующий за условным оператором. В схеме алгоритма это выражается отсутствием действий по ветви “нет”:

фрагмент схемы алгоритма: фрагмент программы:

да

a>b if (a>b) max=a;

нет max=a

 
 


Пример. В переменную max записать максимум из значений трех переменных a, b, c и вывести его.

Программа:

#include <stdio.h> /* функции стандартного ввода-вывода */

#include <conio.h> /* функции консольного ввода-вывода */

void main () /* главная функция */

{ float a, b, c, max; /* описание переменных */

clrscr (); /* очистка экрана */

printf (“Введите a, b, c: ”);

scanf (“%f%f%f”, &a, &b, &c); /* ввод исходных данных */

if (a>b) max = a; /* полный условный оператор */

else max = b;

if (c>max) max = c; /* неполный условный оператор */

printf (“max=%f”, max); /* вывод результата */

}

Вложенный оператор if образуется, если оператор после условия или после else также является условным оператором, причем глубина вложения не ограничена. Применение фигурных скобок во вложенных операторах позволяет правильно отразить действие алгоритма задачи. При их отсутствии действует следующее правило трактовки вложенных операторов – каждому else соответствует предыдущее свободное слово if.

Пример. Влияние фигурных скобок при использовании вложенных операторов if.

1. Программа с применением фигурных скобок:

void main ()

{ int a=2, b=7, c=3;

if (a>b)

{ if (b<c) c=b;

}

else c=a;

printf(“c=%d”, c);

}

Результат программы:

с=2.

2. Опустив фигурные скобки в операторе if, получим следующий вложенный условный оператор:

if (a>b)

if(b<c) c=b;

else c=a;

Результат в этом случае: с=3, то есть реализуется другой алгоритм.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: