- •Лекция 5
- •Операторы ввода информации Read, ReadLn
- •Операторы вывода Write, WriteLn
- •Форматный вывод
- •Простые операторы
- •Оператор присваивания
- •Оператор безусловного перехода Goto
- •Структурированные операторы
- •Составной оператор
- •Условный оператор If
- •Один оператор If может входить в состав другого оператора If. В таком случае
- •Условный оператор Case
- •Пример. Для 100 целых значений x рассчитать значение y.
- •Операторы цикла
- •Особенности выполнения оператора For
- •Оператор цикла Repeat…Until
- •Особенности выполнения оператора Repeat
- •Оператор While
- •Технология программирования
- •Пример.
- •Диаграммы Найси-Шнейдермана For While Repeat
- •Вложенные циклы
- •Пример.
Один оператор If может входить в состав другого оператора If. В таком случае говорят о вложенности операторов.
Формат:
If <условие> Then
If <условие> Then <оператор> Else <оператор>;
Например: If A<20 Then
If A>=15 Then WriteLn(‘А в диапазоне 15 - 20’) Else (WriteLn(‘А в диапазоне 1 - 14’);
Конструкцию со степенью вложенности более 2 – 3 лучше избегать из-за сложности их анализа.
Условный оператор Case
Оператор Case является обобщением оператора If и позволяет сделать выбор из произвольного числа имеющихся вариантов.
Формат:
Case <выражение> Of <список 1>:<оператор 1;> <список 2>:<оператор 2;> ……..
<список n>:<оператор n;> [ Else <оператор>]
End;
В этой структуре:
Выражение – выражение любого простого типа, кроме вещественного типа, значение которого вычисляется.
список 1, список 2,…, список n – константы, с которыми сравнивается значение выражения.
оператор 1, оператор 2,…, оператор n – операторы, из которых выполняется тот, с константой которого совпадает значение выражения.
оператор – оператор, который выполняется, если значение выражения не совпадает ни с одной из констант.
Ветвь оператора Else является необязательной. Если она отсутствует и значение выражения не совпадает ни с одной из перечисленных констант, весь оператор рассматривается как пустой. В отличие от оператора If перед словом Else точку с запятой можно ставить, хотя это и необязательно.
Пример. Для 100 целых значений x рассчитать значение y.
Составить два варианта программ: с помощью условного оператора if и c помощью оператора выбора Case.
С помощью оператора If
Program P4; Var x,y:integer; Begin
For x:=1 to 100 do Begin
If x mod 2 =0 then y:=2*x else y:=2+x; Writeln(x,y);
End;
End.
С помощью оператора Case
Program P4; Var x,y:integer; Begin
For x:=1 to 100 do Begin
Case x mod 2 of
0:y:=2*x;
1:y:=2+x;
end;
Writeln(x,y);
End;
End.
Операторы цикла
Оператор цикла For
Циклы позволяют многократно выполнять отдельный оператор или последовательность операторов, причем при этом нет необходимости записывать в тексте программы одинаковые операторы несколько раз.
Оператор цикла For организует выполнение одного оператора (или несколько операторов) заранее известное число раз. Оператор For может быть представлен в двух форматах:
For <параметр цикла>:=<S1> To <S2> Do <тело цикла>;
For <параметр цикла>:=<S1> DownTo <S2> Do <тело цикла>;
<параметр цикла> - переменная цикла, которая может быть целочисленного или символьного типа. Параметр цикла изменяется, увеличиваясь до конечного значения (1 формат). Параметр цикла может изменяться в противоположном направлении - убывать (2 формат);
S1 – начальное значение параметра цикла, которое она получает при первом выполнении цикла;
S2 - конечное значение параметра цикла, достигнув которое повторение цикла прекращается;
For…Do – заголовок цикла;
< тело цикла > - оно может быть простым, состоящим из одного оператора или составным оператором.
Например:
For I:=1 To 20 Do Write(‘*’);
20 раз выведется на экран в одной строке «*»
Особенности выполнения оператора For
1.Начальное и конечное значения параметра цикла должны принадлежать к одному и тому же типу данных.
2.В операторе For не допускается изменения параметра цикла на величину, отличную от единицы.
Например:
For I:=10 To 14 Do Write(I:3); {Результат выполнения - 10 11 12 13 14}
For I:=14 DownTo 10 Do Write(I:3); {Результат выполнения - 14 13 12 11 10}
3. В операторе For после Do может находиться составной оператор, в теле которого запрещены операторы, меняющие значение параметра цикла.
Например:
For I:= 1 To 10 Do Begin Rez:=A/Pi
I:=I+1; {ошибка, попытка изменить параметр цикла} End;
4.После нормального завершения оператора For значение параметра цикла равно конечному значению. Если оператор For не выполнялся, значение параметра цикла не определено.
5.Чтобы прервать выполнение оператора For досрочно, необходимо использовать
процедуру Break, которая прерывает выполнение циклов. Процедура Continue начинает новую итерацию цикла, даже если предыдущая не была завершена.
Оператор цикла Repeat…Until
Этот оператор называется циклом с постусловием, т.к. проверка условия осуществляется после каждого выполнения тела цикла.
Формат:
Repeat
<тело цикла>; Until <условие>;
Условие – выражение булевского типа. При написании условия допустимы булевские операции (And, Or, Not) и операции отношения. Операторы, заключенные между словом Repeat и Until, являются телом цикла. Вначале выполняется тело цикла, затем проверяется условие выхода из цикла. Если результат выражения –False, тело цикла выполняется еще раз, если результат – True, то происходит выход из цикла.
Особенности выполнения оператора Repeat
1.Тело цикла выполняется по крайней мере один раз, так как условие проверяется после выполнения тела цикла.
2.Тело цикла выполняется пока условие False.
3.В теле цикла может находиться произвольное число операторов без операторных скобок Begin …End.
4.По крайней мере один из операторов тела цикла должен влиять на значение условия, иначе цикл будет выполняться бесконечно.
5.Чтобы прервать выполнение оператора Repeat досрочно, необходимо использовать процедуру Break,
которая прерывает выполнение циклов. Процедура Continue начинает новую итерацию цикла, даже если предыдущая не была завершена.
Оператор While
Этот оператор называется циклом с предусловием, т.к. проверка условия осуществляется до начала очередной итерации.
Формат:
While <условие> Do <тело цикла>;
Цикл выполняется, пока условие истинно. Как только условие нарушается, выполнение цикла завершается
Особенности выполнения оператора While
1.Так как условие проверяется до начала выполнения тела цикла, цикл может ни разу не выполнится.
2.Тело цикла выполняется пока условие True.
3.По крайней мере один из операторов тела цикла должен влиять на значение условия, иначе цикл буде выполняться бесконечно.
В ряде случаев возникает необходимость в бесконечном цикле. Тогда в условии записывается константа True или условие, которое имеет значение True.
Например:
While True Do Write(‘Бесконечный цикл’); While 1=1 Do Write(‘Бесконечный цикл’);
Технология программирования
Включает пять технологических операций (этапов):
Постановка задачи.Математическое описание.
Алгоритм или Диаграммы Найси- Шнейдермана
Написание текста программы.Отладка, получение результатов.
Пример.
Постановка задачи. Найти сумму 5 целых чисел от 1 до 5. Написать программы для определения суммы с помощью трех рассмотренных операторов цикла.
Математическое описание.
