Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция 5 демо.doc
Скачиваний:
1
Добавлен:
10.07.2019
Размер:
96.77 Кб
Скачать

Лекция 5. Операторы управления ЯП.

  • Операторы выбора: типы, синтаксис и семантика. Выбирающие операторы ЯП Паскаль.

  • Техника программирования ветвлений.

  • Операторы повторения: типы, синтаксис и семантика.

  • Техника программирования циклов.

  • Предусловия, постусловия и инварианты циклов.

  • Представление о доказательном программировании.

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

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

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

а) Begin

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

Readln(a, b, c);

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

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

End

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

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

Выбирающие операторы предназначены для выделения из составляющих их операторов - компонент одного - единственного, который и выполняется

Выбирающие операторы реализуют управляющую структуру “ветвление

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

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

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

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

Условный

оператор

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

а) 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 a >0

Then if D >0

Then Write (‘a > 0, D > 0’)

Else Write (‘a > 0, D <= 0’)

Else If D > 0

Then Write (‘a <= 0, D > 0’)

Else Write (‘a <= 0, D <= 0’)

Следующая конструкция языка, состоящая из вложенных ветвлений допускает два различных варианта синтаксического анализа.

If <усл1> then If <усл2> then <оператор1> else <оператор2>

1 Вариант:

If <усл 1>

then begin

If <усл 2> then <оператор 1> else <оператор 2>

end

2 Вариант:

If <усл 1>

then begin If <усл 2> then <оператор 1> end

else <оператор 2>

Для устранения двусмысленности в языке избран 1-ый вариант:

разделителю else соответствует ближайший предыдущий разделитель then.

Выбирающие операторы: оператор варианта

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

Селектор должен быть скалярного типа, но не вещественного. Метка – данное того же типа

Case <селектор> of

<список меток варианта> : < оператор >;

. . . . . . . . . .

< список меток варианта > : < оператор >

[else < оператор >]

end

Пример:

case DayNumber mod 7 of

2,3 : Writeln(‘Выходной день’);

4,5,6,0 : Writeln(‘Безрадостный рабочий день’);

1 : Writeln(‘Занятие по программированию’)

end;

case ch of

a’,’b’,’c’ : ch := succ(ch);

y’,’z’ : ch := pred(ch);

f’,’g’ : {пустой вариант}

else ch := pred(pred(ch)

end;

Техника программирования ветвлений.

1. Реализация дерева решений вложенными ветвлениями

If a >0

Then if D >0

Then Write (‘a > 0, D > 0’)

Else Write (‘a > 0, D <= 0’)

Else If D > 0

Then Write (‘a <= 0, D > 0’)

Else Write (‘a <= 0, D <= 0’)

2. Последовательный многоуровневый анализ условий

If Len < 158 then Size := 1

Else If Len < 164 then Size := 2 {Len >= 158}

Else If Len < 172 then Size := 3 {Len >= 164}

Else Size := 4 {Len >= 172}

4. Последовательный одноуровневый анализ условий

begin

If A mod 3 = 0 then Writeln(‘Число делится на 3’);

If A mod 5 = 0 then Writeln(‘Число делится на 5’);

If A mod 7 = 0 then Writeln(‘Число делится на 7’);

end;

5. Порядок анализа зависимых условий

If D < 0

Then Writeln (‘No Solutions’)

Else If D > 0

Then Writeln(‘Two Solutions’)

Else Writeln (‘One Solution’)

If D = 0

Then Writeln (‘One Solution’)

Else If D < 0

Then Writeln(‘No Solutions’)

Else Writeln (‘Two Solutions’)

Техника использования составных условий

Пример: требуется выяснить, является ли одно из двух чисел A, B равным нулю.

1 вариант условия: A*B = 0 2 вариант условия: (A = 0) Or (B = 0)