Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Тема 13.doc
Скачиваний:
12
Добавлен:
20.11.2019
Размер:
858.62 Кб
Скачать

13.6.2. Составной оператор

Несколько операторов, выполняемых последовательно, можно объединять в один составной оператор.

Составной оператор предусматривает выполнение входящих в него операторов – компонент в порядке их написания. Служебные слова Begin и End играют роль операторных скобок – они выделяют тело составного оператора.

С оставной оператор определяется диаграммой:

Обратите внимание на то, что раздел операторов программы представлен как один составной оператор.

Примеры составных операторов:

а)

Begin

 Write(‘Введите координаты вектора: ‘);

 Readln(a, b, c);

 Length := sqrt(a*a + b*b+ c*c);

 Write(‘длина (a,b,c) равна ‘, Length)

end

б)

Begin

 u := u*х/n;

 s := s+u

End

в) Begin writeln (‘уравнение корней не имеет’) End

13.6.3.Выбирающие операторы: условный оператор

Выбирающие операторы предназначены для выделения из составляющих их операторов – компонент одного – единственного, который и выполняется. Таким образом, выбирающие операторы реализуют управляющую алгоритмическую структуру “ветвление”. В качестве выбирающих в языке определены условный оператор и оператор варианта.

Существует две формы условного оператора:

If <условие> then < оператор >

If <условие> then < оператор > else <оператор>

Они соответствуют базовым управляющим структурам короткого и полного ветвления. Условие – это выражение типа Boolean.

С интаксическая диаграмма условного оператора имеет вид:

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

а) If a >= b then Max := a else Max := b

б) If IntFun(i) mod 3 = 0 then write(i)

в) If (a11*a22 = a12*a21) And

((a11*b2 <> a12*b1) Or

(b1*a22 <> b2*a21))

then Write(‘система решений не имеет’)

else Write(‘система имеет решения’)

г) If х <= 0

then begin

u :=х*х – 2*х + 3;

v :=1/2*х + 1

end

else begin

u :=1/3*х+2;

v :=х*х+3*х–2

end

Обратите внимание на то, что в теле условного оператора может использоваться и другой условный оператор. Это создает возможность реализовывать многозначные ветвления. Например:

If Discriminant < 0

then If LeadCoef < 0

then Write(‘Решений нет’)

else Write(‘Решения – вся числовая ось’)

else If LeadCoef < 0

then Write(‘Решения – между корнями уравнения’)

else Write(‘Решения – вне корней уравнения’)

Для устранения синтаксической двусмысленности в языке избран вариант интерпре­тации вложенных ветвлений в соот­ветствии с правилом: разделителю else соответствует ближайший предыдущий разделитель then.

13.6.4.Ветвящиеся программы. Пример.

Ветвящимися называют программы, в которых используются операторы ветвления.

Пример 1.

Program SquareEquation;

 Const Line = ‘––––––––––––––––––––––––––––‘;

 Var a, b, c, Root1, Root2: real;

 Solution: Integer;

 Discriminant: Real;

 Begin

{Ввод данных}

Write(‘Введите коэффициенты уравнения (через пробел):’);

Readln(a, b, c) ; Writeln(Line);

{Вычисления}

Discriminant := Sqr(b) – 4*a*c;

 If Discriminant < 0 then Solution := 0 { Нет корней }

Else

If Discriminant = 0 { Один корень }

then begin

Solution := 1;

Root1 := –b/a;

Writeln (‘х1= ‘ ,Root1)

end

else { Два корня } begin

Solution := 2;

Root1 := (–b + Sqrt(Discriminant))/(2*a);

Root2 := –b/a – Root1;

Writeln(‘х1= ‘, Root1, ‘ х2= ‘, Root2)

end ;

Writeln(Line);

Writeln(‘Количество решений равно: ‘, Solution)

End.