Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
83
Добавлен:
15.06.2014
Размер:
669.7 Кб
Скачать

ПОСТРОЕНИЕ СТРУКТУРНЫХ СХЕМ ЦИКЛИЧЕСКИХ АЛГОРИТМОВ

Циклический алгоритм - алгоритм, обеспечивающий получение решения задачи путем многократного повторения некоторой последовательности действий. Участки, которые выполняются в ходе вычислений неоднократно называются циклами.

Подготовка

и настройка

цикла

Действия

Циклич.части

Подготовка к

следующему

вып. цикла

Проверка

Условия окон.

цикла

 

Начало

 

 

Ввод 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

Соседние файлы в папке Секретные файлы Шафеевой))