Теория недели 18.02 - 23.02.2013: Условный оператор

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

Условный оператор реализует «ветвление», т.е. изменяет порядок выполнения операторов в зависимости от истинности или ложности некоторого условия.
Условный оператор может иметь две формы (структуры) – полную или неполную. 
Полная форма условного оператора имеет вид:

IF  <условие> THEN <оператор1> ELSE <оператор2>;

 

Условие – это логическое выражение, которое может быть записано в операторе явно или вычислено в программе. Для записи простых условий используются операции отношения:
< (меньше), > (больше), = (равно), < = (меньше или равно), >= (больше или равно), < > (не равно).
Выполнение условного оператора начинается с вычисления значения логического выражения, записанного в условии. Если (IF) условие истинно, тогда (THEN) выполняется оператор1, иначе (ELSE) выполняется оператор2. 
Составной условный оператор воспринимается компилятором Паскаля как один оператор, поэтому перед  ELSE не ставится точка с запятой.
Для наглядности программы операторы, следующие за словами  THEN и ELSE можно писать на следующей строке.
Если по условию задачи после THEN или ELSE необходимо выполнить больше одного оператора, то тогда используют операторные скобки BEGIN…END

IF  <условие> THEN 
BEGIN
<оператор 1>;
<оператор 2>;

<оператор n>;
END
ELSE 
BEGIN
<оператор 1>;
<оператор 2>;

<оператор n>;
END;
Составим программу для задачи, записанную в начале урока.
PROGRAM  zadacha1;
VAR A,B:INTEGER; {описываем переменные А и В целыми числами}
BEGIN
WRITE(‘A=’); {Вводим с клавиатуры числа А и В}
READLN(A);
WRITE(‘B=’);
READLN(B);
WRITE (‘Большее число : ‘);
IF A>B THEN WRITELN (A) {Если A>B , то выводим на экран А, иначе выводим В}
ELSE WRITELN (B); 
END.

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

IF  <условие> THEN <оператор1>

 

Например, для решения задачи: удвоить число Х, если оно положительное, можно записать следующее условие:

IF  X>0 THEN X:=X*2;

В качестве оператора в команде ветвления может быть другой условный оператор. В этом случае получаем вложенные ветвления. Рассмотрим на примере.

Задача. Составить программу для решения квадратного уравнения ax2 + bx + c = 0.

Составим алгоритм решения задачи.

 

Программа:

PROGRAM  zadacha2;
VAR a,b,c,D,x,x1,x2:REAL; {описываем переменные}
BEGIN
WRITE(‘a=’); {Вводим с клавиатуры коэффициенты уравнения}
READLN(a);
WRITE(‘b=’);
READLN(b); 
WRITE(‘c=’);
READLN(c);
D:= b*b – 4*a*c; {Вычисляем дискриминант}
WRITE (‘Корни уравнения: ‘);
{Вычисляем корни уравнения  в зависимости от дискриминанта}
IF D>0 THEN 
BEGIN
x1:=(–b+SQRT(D))/(2*a);
x1:=(–b–SQRT(D))/(2*a);
WRITELN (‘x1= ‘,x1:5:2,’x2= ‘,x2:5:2);
END 
ELSE
IF D=0 THEN  
BEGIN
x:= –b/(2*a);
WRITELN (‘x= ‘,x:5:2); 
END
ELSE
WRITELN (‘Корней нет’);
END.

Условие может быть записано и сложным логическим выражением. В сложных логических выражениях используются логические операции: and (И), or (ИЛИ), not (НЕ). Отношения, связываемые логическими операциями, заключаются в скобки. Например, требуется определить, есть ли среди чисел a, b, c хотя бы одно равное нулю. Для этого можно составить следующий условный оператор:

IF (a=0) OR (b=0) OR (c=0) THEN WRITE(‘YES’) ELSE WRITE(‘NO’);

Также в сложном условии могут  быть использованы и мультипликативные операции:

mod – остаток от деления,  div – целая часть от деления.
Например, требуется определить, является ли число а – нечетным.

IF a MOD 2<>0 THEN WRITELN(‘YES’) ELSE WRITELN(‘NO’);

Рассмотрим задачу со сложным условием.

Задача. Написать программу, проверяющую, принадлежит ли число интервалу (0;5].

Решение. Обозначим за х число, вводимое с клавиатуры пользователем. Принадлежность числа х заданному интервалу определяется следующим условием: 0<х<=5.

PROGRAM  zadacha3;
VAR x:REAL; {описываем переменную х}
BEGIN
WRITE(‘x=’); {Вводим с клавиатуры x}
READLN(x);
{Проверяем принадлежность х заданному интервалу}
IF (x>0) and (x<=5) THEN WRITELN (‘YES’) ELSE WRITELN (“NO’); 
END.

Ссылка на презентацию: http://festival.1september.ru/articles/620081/presentation/pril.ppt

Домашнее задание: Составить программы вычисления значений выражений: