Система программирования Турбо паскаль 7.0

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


В Турбо Паскале различают два вида условных операторов: короткий и полный.

                  Короткий условный оператор

Общий вид

записи:

           IF <логическое выражение> THEN <P>;

 где P – любой оператор.

Работа оператора

Сначала вычисляется логическое выражение (ЛВ), и если оно имеет значение TRUE, то выполняется оператор P, стоящий за служебным словом THEN. В противном случае оператор P игнорируется.

Графическая интерпретация оператора

В блок-схемах короткому условному оператору соответствует структура ЕСЛИ – ТО.

Замечание. По определению в конструкцию короткого условного оператора может входить только один оператор P. Если по заданному условию необходимо выполнить несколько операторов, то их заключают в операторные скобки BEGIN ... END, образуя таким образом единый составной оператор. Тогда запись оператора с использованием операторных скобок имеет следующий вид:

IF <логическое выражение> THEN

 begin



       <оператор 1>;

       ………………

       <оператор n>;

end;

Пример

Переменной y присвоить минимальное значение из трех различных чисел, т.е. y = min (a, b, c).

Блок-схема

                                   

                                   Программа

                  Program P;

                  Var

                        a, b, c, y: real;

                 Begin

                writeln (‘Введите числа a, b, c’);

                read (a, b, c);

                y := a;

                if b<y then y := b;

                if c<y then y := c;

                writeln (‘y =’, y:6:2);

                 End.

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

Общий вид

записи:

IF <логическое выражение> THEN  P1  ELSE  P2;


 где P1, P2 – любые операторы.
Работа оператора
Вычисляется логическое выражение, и если оно имеет значение TRUE, то выполняется оператор P1, стоящий после служебного слова THEN. В противном случае выполняется оператор P2, стоящий после служебного слова ELSE .
Графическая интерпретация оператора
В блок-схемах полному условному оператору соответствует структура ЕСЛИ – ТО – ИНАЧЕ.
Замечание. Операторы P1 и P2 входят в конструкцию полного условного оператора как единственные. Если возникает необходимость выполнить в ветвях несколько операторов, то их заключают в операторные скобки BEGIN…..END. Вид записи условного оператора в этом случае следующий.
         IF <логическое выражение> THEN
              begin
                  <оператор 1>;
                   ……………...                        P1
                  <оператор n>;
               end
         ELSE
             begin
                   <оператор 1>;
                   ……………...                        P2
                   <оператор m>;
               end;
Пример1. Вычислить значение переменной у по одной из двух ветвей:
             y =

Блок-схема
                                  Программа
                              Program P_1;
                              Var
                                  x, y: real;
                              Begin
                                  writeln (‘Введите число x’);
                                  read (x);
                                  if x>0 then y := ln(x) else y := exp(x);
                                  writeln (‘y =’ , y:6:2);
                              End.
Пример 2. Вычислить корни полного квадратного уравнения    ax2+bx+c=0. В программе предусмотреть проверку дискриминанта на знак. Если дискриминант окажется отрицательным, то вывести сообщение “Корни мнимые”.


                                  Программа
                        Program P_2;
                        Var
                            a, b, c, d, x1, x2: real;
                        Begin
                            writeln(‘Введите коэффициенты уравнения’);
                                    read (a, b, c);
                            d := b*b – 4*a*c;
                            if d<0 then
                                writeln (‘Корни мнимые’)
                            else
                                begin
                                   x1 := (-b + sqrt(d)) / (2*a);
                                   x2 := (-b -  sqrt(d)) / (2*a);
                                   writeln(‘x1=’, x1:5:2, ‘ x2=’, x2:5:2);
                                end;
                        End.
       Вложенные структуры условных операторов
Структура называется вложенной, если после служебных слов THEN и ELSE используются вновь условные операторы. Число вложений может быть произвольным. При этом справедливо следующее правило: служебное слово ELSE всегда относится к ближайшему выше слову THEN. Для удобства чтения вложенных структур рекомендуется при программировании избегать по-возможности запись вложенного условного оператора после слова THEN.
Пример. Вычислить значение y по одной из трех ветвей:
 
При решении данной задачи возможны варианты программирования без использования вложенной структуры и с вложенной структурой.
Вариант 1.
(Без использования вложенной структуры).
                                      Блок-схема
                                                     Программа
                        Program P_V1;


                        Var
                             x, y: real;
                        Begin
                            writeln(‘ Введите число x’);
                           read(x);
                            if x>=1 then y := sqrt(x)/2;
                           if (x>0) and (x<1) then y := exp(1/3*ln(x))/3;
                            if x<= 0 then y := exp(1/4*ln(abs(x)))/4;
                            writeln(‘y =’, y:6:2);
                        End.
Вариант 2. ( Использование вложенной структуры).
                                Блок-схема
                              
                                   Программа
                        Program P_V2;
                        Var
                             x, y: real;
                        Begin
                             writeln(‘Введите число x’);
                              read(x);
                                 if x>=1 then
                           y := sqrt(x)/2
                             else
                                      if x>0 then
                                    y := exp(1/3*ln(x))/3
                                   else
                                    y := exp(1/4*ln(abs(x)))/4;
                             writeln(‘y =’, y:6:2);
                        End.

Содержание раздела