ТОП 10:

Циклические алгоритмы с известным числом повторений



Цикл – многократно повторяемая последовательность однотипных действий. Циклы бывают с заранее известным числом повторений и с неизвестным числом повторений.

Для организации цикла с известным числом повторений используют оператор цикла с параметром (оператор for). Вид оператора

for i:=m1 tо m2 do s;

Здесь i – параметр цикла целого или другого перечислимого типа, m1 и m2 – начальное и конечное значения параметра цикла, s – тело цикла из одного или нескольких операторов. Если тело цикла состоит из нескольких операторов (т.е. является составным оператором), то их объединяют операторными скобками begin и end. При выполнении оператора for повторяется тело цикла. Параметр цикла увеличивается на 1 при каждом повторе. При первом повторе i равно m1, при последнем повторе i равно m2. В теле оператора не следует применять операторы, меняющие значение параметра цикла. Наиболее часто этот оператор используется для выполнения операций с массивами.

Возможна следующая запись оператора: for i:=m1 downto m2 do s;

При этом параметр цикла уменьшается на 1 при каждом повторе.

Количество повторов цикла в операторе for будет следующим:

Оператор m1 < m2 m1 = m2 m1 > m2
for … to m 2 - m1+1 раз 1 раз Не выполняется
for … downto Не выполняется 1 раз m 1 - m2+1 раз

Пример. Вычислить 9 раз значения функции при изменении a от –1 с шагом 0,5. Вывести на экран значения аргумента и значения функции в виде таблицы.

Решение. В программе перед циклом задается начальное значение аргумента, равное минус 1. Внутри цикла проверяется возможность вычисления функции. Если вычислить функцию невозможно, на экран выводится соответствующее сообщение. В противном случае вычисляется значение функции и выводится на экран вместе со значением аргумента. В конце цикла значение аргумента увеличивается на величину шага, и таким образом при следующем выполнении цикла все действия повторяются при новом значении аргумента. Когда будет выполнено девять повторений, произойдет выход из цикла. Ниже приведён текст программы:

Uses Crt; {подключение модуля Crt}

Var {описание переменных}

a,b:real;

i:integer;

Begin {начало головной программы}

Clrscr; {очистка экрана}

Writeln('Таблица функции b=f(a)'); {вывод шапки таблицы}

Writeln('--------------------');

Writeln(' № a b ');

Writeln('--------------------');

a:=-1; {начальное значение аргумента}

for i:=1 to 9 do {начало цикла}

begin

{проверка возможности вычисления функции}

if sqr(a)-0.3<0 then {вывод сообщения}

writeln('При a = ',a:8:2,' функция не определена')

else

begin

b:=sqrt(sqr(a)-0.3); {вычисление функции}

{вывод номера точки, аргумента и функции на экран}

Writeln(i:2,' ',a:8:2, ' ',b:8:2);

end;

a:=a+0.5; {пошаговое увеличение аргумента}

end; {окончание цикла}

Writeln('--------------------'); {вывод подвала таблицы}

Readln; {ждём нажатия ENTER}

End. {окончание программы}

В теле оператора for могут находиться другие операторы for. Это позволяет строить циклы, содержащие внутренние циклы, которые называются вложенными. Ниже приведён текст программы, выводящей на экран таблицу умножения.

Uses Crt;

Var i,j:integer;

Begin

Clrscr;

Writeln('Таблица умножения'); Write(' |');

for i:=1 to 9 do write(i:6); Writeln;

for i:=1 to 60 do write('-'); Writeln;

for i:=1 to 9 do {начало цикла i}

begin

Write(i:4,' |');

For j:=1 to 9 do Write(i*j:6); { цикл j}

Writeln;

end; {конец цикла i}

Readln;

End.

Задание

Разработать программу для расчета и вывода таблицы значений функции, состоящей из n строк, в соответствии с вариантом задания, при изменении аргумента от начального и с заданным шагом Dx (см. табл.). Ввод исходных данных организовать с помощью присваивания значений переменным.

Вари ант Функция Условие a b c xn Dx n
1£x£2 x<1 x>2 -0,5   0,15
x<1,3 x=1,3 x>1,3 1,5     0,8 0,1
x<1,2 x=1,2 x>1,2 2,8 -0,3 0,05
x<1,4 x=1,4 x>1,4 1,65     0,7 0,1
x<1 x=1 1<x<2 x>2 2,3     0,2 0,2
x>a x=a x<a 2,5       0,5
bx<1 bx=1 bx>1   1,5   0,7 0,1
x>3,5 x£ 3,5       0,1
x>1 x£1 20,3     0,5 0,1
x<0,5 x=0,5 x>0,5       2,2 0,2 0,2

 

Тема 8







Последнее изменение этой страницы: 2016-04-18; Нарушение авторского права страницы

infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 34.200.218.187 (0.007 с.)