Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лабораторная работа 3(информатика).doc
Скачиваний:
5
Добавлен:
09.11.2019
Размер:
333.82 Кб
Скачать

3.3Цикл с параметром

Этот вид оператора цикла также называют циклом со счетчиком. В нем важную роль играет переменная-параметр, которая на каждом шаге цикла автоматически изменяет свое значение ровно на единицу — поэтому ее и называют счетчиком.

Инструкцию for можно реализовать двумя способами:

Вариант 1 (с увеличением счетчика):

for Счетчик := НачальноеЗначение to КонечноеЗначение do

begin

{ Инструкции }

end;

Ключевые слова for, do обозначают "для", "выполняй" соответственно. Строка, содержащая for...do, называется заголовком цикла, оператор, стоящий после do образует его тело. Очень часто тело цикла — составной оператор. Если тело цикла представлено одиночным оператором, то begin и end не пишутся.

На блок-схеме алгоритма цикл с параметром удобно обозначать следующим образом (рис. 9). Такое обозначение, правда, не совсем соответствует ГОСТу.

Рис. 9 Условное обозначение на схемах алгоритмов цикла с параметром

Инструкции между begin и end выполняются столько раз, сколько определяет выражение [(КонечноеЗначение — НачальноеЗначение) + 1].

Это соответствует всем значениям счетчика от начального до конечного включительно.

Например, выполнение цикла — фрагмента программы:

for i:=10 to 14 do write(i: 3);

выведет на экран последовательность цифр в виде:

10 11 12 13 14

Вариант 2 (с уменьшением счетчика):

for Счетчик := НачальноеЗначеиие downto КонечноеЗначение do

begin

{ Инструкции }

end;

Инструкции между begin и end выполняются столько раз, сколько определяет выражение [(НачальноеЗначение — КонечноеЗначение) + 1].

Например, выполнение цикла — фрагмента программы:

for i:=14 downto 10 do write(i: 3);

выведет на экран последовательность цифр в виде:

14 13 12 11 10

Оператор (инструкция) for используется для организации циклов с фиксированным, заранее известным или определяемым во время выполнения программы числом повторений. Переменная-счетчик должна быть порядкового типа: чаще — целочисленная, реже — символьного, логического или перечисляемого типов.

Параметр цикла for может изменяться (увеличиваться или уменьшаться) каждый раз при выполнении тела цикла только на единицу. Если нужен другой шаг изменения параметра, предпочтительнее циклы repeat и while.

Например, рассмотрим фрагмент программы, в котором предпринята попытка "обмануть" оператор for и получить изменение параметра i на 2 на каждом шаге цикла (единица прибавляется автоматически и еще одна единица прибавляется в теле цикла).

for i:= 1 to 10 do

begin

write(i:4); i := i + 1;

end;

В данном случае на экране будут выведены числа 1 3 5 7 9.

Однако настоятельно не рекомендуем пользоваться таким приемом. Стоит только немного видоизменить заголовок цикла предыдущего примера и взять в качестве конечного значения 9, а не 10: for i := 1 to 9 do, как ваша программа не сможет нормально выйти из цикла — "зациклится", так как в момент проверки условия выхода из цикла i никогда не будет равно 9 (сначала 8, а потом сразу 10).

4Пример

Составить блок-схему алгоритма и программу для вычисления и вывода на экран таблицы значений функции , где аргумент Х изменяется от начального значения (например, 1) до конечного (например, 2) с заданным шагом (например, 0,05). Параметры А и В задаются оператором ввода.

Здесь переменная xmin используется для обозначения начального значения аргумента Х, xmax - для обозначения конечного значения аргумента Х, dx - для обозначения шага, А и В - для обозначения параметров, необходимых для вычислений, X и Y - для обозначения текущего значения аргумента и текущего значения функции. Эта задача может быть решена тремя способами.

Вариант 1: Цикла с постусловием (REPEAT-UNTIL) (Рис. 10)

Рис.10. Блок-схема для цикла с постусловием .

Текст программы

program prim_1;

{программа вычислений и вывода на экран таблицы значений функции с использованием оператора REPEAT-UNTIL}

var a,b:real;

xmin,xmax,dx:real;

x,y:real;

begin

write('A=');readln(a);

write('B=');readln(b);

write('начальное значение=');readln(xmin);

write('конечное значение=');readln(xmax);

write('шаг=');readln(dx);

writeln('|___|___|');

writeln('| X | Y |');

writeln('|___|___|');

x:=xmin;

repeat

y:=A*sin(B*x)/x;

writeln('|',x:6:2,'|',y:7:2,'|');

x:=x+dx;

until x > xmax+dx/2;

writeln('|___|___|');

end.

Вариант 2: Цикла с предусловием (WHILE-DO) (Рис.11)

Текст программы

program prim_2;

{программа вычислений и вывода на экран таблицы значений функции с использованием оператора WHILE-DO}

var a,b:real;

xmin,xmax,dx:real;

x,y:real;

begin

write('A=');readln(a);

write('B=');readln(b);

write('начальное значение=');readln(xmin);

write('конечное значение=');readln(xmax);

write('шаг=');readln(dx);

writeln('|___|___|');

writeln('| X | Y |');

writeln('|___|___|');

x:=xmin;

while x < xmax+dx/2 do

begin

y:=A*sin(B*x)/x;

writeln('|',x:6:2,'|',y:7:2,'|');

x:=x+dx;

end;

writeln('|___|___|');

end.

Рис.11 Блок-схема для цикла с предусловием.

Вариант 3: Цикла с параметром (FOR-DO) (Рис.12)

Рис.12. Блок-схема для цикла с параметром.

program prim_4;

{программа вычислений и вывода на экран таблицы значений функции с использованием оператора FOR-DO}

var a,b:real;

xmin,xmax,dx:real;

x,y:real;

i,n:integer;

begin

write('A=');readln(a);

write('B=');readln(b);

write('начальное значение=');readln(xmin);

write('конечное значение=');readln(xmax);

write('шаг=');readln(dx);

writeln('|___|___|');

writeln('| X | Y |');

writeln('|___|___|');

n:=trunc((xmax-xmin)/dx)+1;

x:=xmin;

for i:=1 to n do

begin

y:=A*sin(B*x)/x;

writeln('|',x:6:2,'|',y:7:2,'|');

x:=x+dx;

end;

writeln('|___|___|');

end.