
- •ПОСТРОЕНИЕ СТРУКТУРНЫХ СХЕМ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ
- •Пример LEK3. Вычислить сумму N элементов x, которые составляют входную последовательность (ввод). Математическая
- •Вторая форма позволяет менять значения параматра на -1.
- •Структуры оформления циклов и соответствующие СА для пр LEK3:
- •Операторы цикла
- •Оператор цикла с предусловием
- •Особенность:
- •Оператор безусловной передачи управления
- •Процедуры перехода и выхода
- •В итерационных циклах повторение цикла заканчивается при выполнении общего условия, связанного с проверкой
- •Алгоритмы обработки массивов

ПОСТРОЕНИЕ СТРУКТУРНЫХ СХЕМ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ
Циклический алгоритм - алгоритм, обеспечивающий получение решения задачи путем многократного повторения некоторой последовательности действий. Участки, которые выполняются в ходе вычислений неоднократно называются циклами.
Подготовка |
и настройка |
цикла |
Действия |
Циклич.части |
Подготовка к |
следующему |
вып. цикла |
Проверка |
Условия окон. |
цикла |
|
Начало |
|
|
Ввод N |
|
|
S=0 |
I=K,N, i |
|
I=1 |
|
|
Ввод Х |
|
|
S=S+х |
Тело |
|
цикла |
|
|
|
|
|
i=i+1 |
|
Да |
i N |
|
|
|
|
|
Ввод S |
|
|
Конец |
|
Начало N ввести
S=0
i=1, N
Ввод Х
S=S+х
Вывод S Конец
1

Пример LEK3. Вычислить сумму N элементов x, которые составляют входную последовательность (ввод). Математическая интерпретация задачи:
N |
S=S+x |
||
S x |
|||
|
|||
i 1 |
|
||
|
|
|
|
|
|
Счетный оператор цикла |
Первая форма позволяет наращивать параметр цикла на единицу (+1).
FOR <параметр цикла>:= <min значение> TO <max значение> DO <оператор>;
Для |
увеличивая к |
делать |
|
|
<параметр цикла> - это переменная целого либо любого порядкового типов; |
||
max, min значения- это конечное и начальное значения параметра цикла; |
|
||
Пример: Вычислить сумму N элементов по закону Y=1+1/2+1/3+...+1/N; |
Для |
||
реализации цикл - Y=Y+1/I; |
|
|
|
а) |
Тогда основной блок BEGIN |
|
|
|
Y:=0; |
|
|
|
FOR I:=1 TO N DO Y=Y+1/I; |
|
|
|
WRITELN('Y=',Y) |
|
|
|
END. |
|
2 |

Вторая форма позволяет менять значения параматра на -1.
FOR <параметр цикла>:= <max знач.> DOWNTO <min знач.> DO <оператор>;
Для |
|
|
|
|
|
|
|
уменьшая к |
|
делать |
||||
б) Для рассмотренного примера тело программы |
|
|
|
|||||||||||
|
|
|
|
Y:=0; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FOR I:=N DOWNTO 1 DO Y=Y+1/I; {начиная с последнего} |
||||||||||
Пример: Вычислить Y=Xn; Тогда фрагмент программы |
||||||||||||||
|
|
|
Y:=1; |
|
|
|
|
|
|
|
|
|
||
|
|
|
FOR I:=1 TO N DO Y:=Y*X; |
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Циклические |
|
|
|
||
|
|
|
|
|
|
|
|
|
алгоритмы |
|
|
|
||
а. с заданным числом |
|
|
|
|
|
|
Итерационные |
|
||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
повторений |
|
|
|
|
|
|
|
|
|
|
|
|
||
со счётчиком |
|
|
Циклы, управляемые условием |
|
|
|
|
|||||||
|
|
|
|
|
|
|
|
|
|
|||||
|
|
с предусловием |
|
|
|
с постусловием |
|
|
|
|||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3

Структуры оформления циклов и соответствующие СА для пр LEK3:
с постусловием |
с предусловием |
|
|
|
|
|
Начало |
|
|
Ввод |
|
|
N |
|
Параметр |
S=0, i=1 |
|
цикла |
|
|
Тело цикла |
i |
|
Ввод |
||
|
X |
|
Изм.парам. |
S = S+x |
|
Условие |
i=i+1, |
|
окончания |
||
I>N |
||
|
||
|
Вывод |
|
|
S |
|
|
Конец |
Условие
выполнения
Тело цикла
Изменение
параметра
Начало
Ввод
N
S=0, i=1
i N
Ввод
X
S = S+x
i=i+1
Вывод
S
Конец 4

Операторы цикла
1)счетный оператор цикла (оператор цикла с параметром);
2)оператор цикла с постусловием;
3)оператор цикла с предусловием;
Оператор цикла с постусловием
проверка условия производится после выполнения операторов тела цикла, которые должны выполниться хотя бы один раз.
REPEAT
{повторять}
<оператор1>; |
|
... |
|
<оператор N> |
|
UNTIL <условие выхода>; |
|
{до тех пор, пока} |
|
Пример: Y=1+1/2+1/3+...+1/N; Y:=Y+1/I; |
|
Y:=0; |
|
I:=1; |
|
REPEAT |
|
Y:=Y+1/I; |
|
I:=I+1 |
|
UNTIL I>N; |
5 |

Оператор цикла с предусловием
используется, когда число повторений цикла заранее не известно и действия, предусмотренные в цикле, могут вообще не выполняться.
Структура оператора:
WHILE <условие> DO <оператор>;
<Условие> - это любое логическое выражение, при котором цикл надо выполнять. <Оператор>- это произвольный оператор Турбо Паскаля, в том числе и
составной.
Пример: Y=1+1/2+1/3+...+1/N; Тело программы Y:=0; I:=1;
WHILE I <= N DO BEGIN
Y:=Y+1/I;
I:=I+1;
END;
6

Особенность:
Для x,b:REAL , условие x=b может никогда не выполниться в силу приближенного представления вещественных чисел в ПК.
Например: Вычислить y=x2 при A X< B, и шаге x=0.2
Program postusl; Var A, B, x, y: real; Begin
read (A,B); x:= A;
Repeat y:=x*x;
writeln(‘x=‘, x:5:2, ‘; y=‘, y:10:4 ); x:=x+0.2
Until x>=B; END.
нельзя Until х = В
7

Оператор безусловной передачи управления
GOTO <меткa>;
<Метка>- произвольный идентификатор
LABEL 5, m1, loop; {объявление меток}
Пример:
LABEL m1, loop; {объявление меток} BEGIN
m1: a:=b+c*d; … |
|
|
|
|
|
|
goto loop |
|
|
|
|
… |
goto m1; |
… |
|
|
|
|
|
|
|
|
|
loop:; |
|
|
|
|
|
END. |
Пример: … |
|
|
…GOTO 100 {Не верно} |
|
|
|
GOTO |
10; |
|
Begin |
|
|
... |
|
|
<опер1>; |
|
10: Begin |
|
|
100:<опер2>; |
|
|
|
<опер1>; |
|
||
|
|
|
… |
||
|
|
<опер2>; … |
|
||
|
|
|
end; |
||
|
|
end; |
|
|
|
|
|
|
|
|
|
Запрещается переход с одной альтернативы сложного оператора на другую |
|||||
(пример условный оператор if |
then |
else |
) |
Современная технология программирования основана на принципе программирования |
|
без GOTO. |
8 |

Процедуры перехода и выхода
Процедура EXIT; осуществляет выход из программного модуля – программы или подпрограммы.
Процедура HALT(Cod); останавливает выполнение программы. Cod - необязательный параметр, определяет код завершения программы. Код может быть проанализирован командой ERRORLEVEL.
Процедура BREAK; без параметров позволяет досрочно выйти из цикла, не дожидаясь выполнения условия о выходе из цикла.
Процедура CONTINUE; позволяет начать новую итерацию цикла.
Пример: Найти первое отрицательное число во входном потоке из не более 100 чисел.
Var i:Integer; x:Real;
BEGIN
For i:=1 To 100 do Begin
READ(x);
If x >= 0 Then CONTINUE; {пpи выполнении условия изменить
|
паpаметp цикла и вновь выполнить цикл} |
WriteLn('Первое отрицательное число =', x, ' i=',i); |
|
BREAK |
{выход из цикла} |
end; |
|
END. |
9 |
|

В итерационных циклах повторение цикла заканчивается при выполнении общего условия, связанного с проверкой монотонно изменяющейся величины.
S= b b |
b |
... b |
..., |
где b = const |
0<E<1 |
|||
2 |
3 |
|
|
i |
|
|
|
|
b |
|
|
b |
>E. |
Начало |
|
||
|
|
|
|
|
||||
S S i |
пока |
i |
Ввод |
|
||||
|
|
|
||||||
|
|
|
|
|
|
B, E |
|
S= ,i =1
S=S+b/i i=i+1
bi >E Да Нет
Вывод
S
Конец
(0.0001)
Начало
Ввод
B, E
S= ,i =1
b/i>E
S = S+b/i
i=i+1
Вывод S
Конец
10