Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ABC_Pascal.doc
Скачиваний:
2149
Добавлен:
30.03.2015
Размер:
1.12 Mб
Скачать

5. Программирование алгоритмов циклической структуры

5.1. Оператор счётного цикла

В языке Pascal существует три разновидности операторов цикла:

1) счетный оператор цикла (оператор цикла со счётчиком);

2) оператор цикла с предусловием;

3) оператор цикла с постусловием.

Для любого оператора цикла вход в цикл возможен только через его начало, выход осуществляется как вследствие естественного окончания цикла, так и путем выполнения оператора перехода GOTO или процедур выхода, содержащихся внутри цикла.

Счетный оператор цикла FOR реализует циклический процесс с известным числом повторений. Этот оператор имеет две формы записи. Первая форма позволяет наращивать <параметр цикла> на единицу и имеет вид

FOR <параметр_цикла> :=<min_значение> TO <max_значение>DO<оператор>;

Параметром цикла называется переменная, служащая для управления циклом. Для оператора цикла FOR в качестве <параметра_цикла> используется переменная целого либо любого порядкового типа. Здесь <min_значение> и <max_значение>  это константы (или выражения), определяющие соответственно начальное и конечное значения параметра цикла. Их типы должны быть совместимыми с типом параметра цикла.

Вторая форма позволяет уменьшать на единицу значение параметра цикла:

FOR <параметр цикла> := <max значение> DOWNTO

<min значение> DO <оператор>;

Пример. Вычислить Y = 1 + 1/2 + 1/3 + ... + 1/N.

Для вычисления в программе необходимо многократно произвести сложение по “формуле суммы” Y =Y+1/I при изменении параметра I от одного до N.

Реализация 1: Y:=0;

FOR I:=1 TO N DO Y=Y+1/I;

Реализация 2: 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;

Два других оператора цикла (с пpедусловием и постусловием) прове­ряют условия повторения или окончания цикла, но сами не изменяют значения параметра цикла. Они организуют выполнение цикла с неизвестным заранее числом повторений.

5.2. Примеры и задания для оператора цикла со счётчиком

Пример 1. Вычислить сумму членов ряда: s = 1 +1/4 +1/9+ 1/16 + ... .

Учитывая, что параметр  знаменатель числового ряда – изменяется как квадрат натурального числа, определим алгоритм решения за­дачи в виде циклической структуры (pис. 7) и напишем соответствующую программу:

PROGRAM summa;

VAR s, r: REAL;

i, N: INTEGER;

BEGIN

s:=0;

WRITELN('введите N');

READ(N);

FOR I :=1 TO N DO

begin

r := 1/sqr(i);

s := s + r;

end;

WRITELN( ' Сумма= ' , s:6:2 );

END.

Пример 2. Вычислить значения двух функций F1(x) = tg (x) и F2(x) = sin(x) в n точках, рав­номерно распределенных на ин­тер­вале a ≤ x ≤ b, где a = -π/4, b = π.

Для реализации данной задачи разработана схема алгоритма (pис. 8) иcледующая программа:

Program Lab3;

Const а = -pi/4; b = pi;

Var F1, F2, x, dx: real; {dx – шаг изменения х}

i, n: integer; {i – параметр цикла}

Begin

writeln ('введите число точек N'); read(n);

dx: = abs(b-a)/(n-1);

x:=a;

writeln (' ___________________________');

writeln ('| I | X | F1 | F2 |');

writeln ('|---|------------|------------|------------|');

for I := 1 to n do {опеpатоp цикла}

begin

F2:= sin(x);

F1:= F2/cos(x); {вычисление tg x}

writeln('|', i:3,' |', x:8:3,'|', f1:8:4,' |', f2:8:4,' |');

x

Рис. 8

:= x + dx;

end;

writeln( ' | ________________________| );.

End.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]