
10. Организация простых циклов.
Цикл – это многократно повторяющаяся последовательность одних и тех же действий. Любой цикл характеризуется тремя стадиями:
началом цикла;
телом цикла;
концом цикла.
Начало цикла – зто условие вхождения в цикл. Цикл может никогда не наступить, если не выполняется условие вхождения в цикл.Телом цикла называют последовательность действий, которые выполняются многократно в цикле. В теле цикла может быть всего одно действие, может быть несколько действий, может не быть ни одного действия. Последнюю разновидность цикла называют пустым циклом. Пустой цикл иногда применяют, например, для задержки времени.
Конец цикла – это условие выхода из цикла или прекращение цикла. Если условие выхода из цикла нарушено – цикл может никогда не кончится, произойдет зацикливание (бесконечный цикл).Схема простейшего цикла.
в этом примере
цикла, действия линейного алгоритма
бесконечно повторяются, например, с
помощью оператора GOTO. Это так называемый
бесконечный цикл. Чтобы цикл имел конец
в начале или конце цикла с помощью
ветвления (IF….THEN…) нужно задать условие
выхода из цикла.
11 Цикл "с параметром".
Цикл с параметром наиболее часто встречающийся цикл в любом языке программирования. Не исключением является и Бейсик. Этот цикл применяется тогда, когда заранее известно условие и число повторений цикла.
Формат записи цикла:
FOR <начальное значение параметра> TO <конечное значение параметра>
STEP<шаг цикла>
… операторы тела цикла
NEXT <параметр)
Оператор FOR организует цикл, в котором параметр имеет начальное значение. С каждым новым циклом значение параметра возрастает на величину шага, до тех пор, пока значение параметра не достигнет конечного значения. После чего цикл прекращается. Если значение шага STEP не указано, то по умалчиванию шаг равен 1. Начальное значение параметра должно быть меньше конечного, если только шаг не является отрицательным. Цикл с параметром можно записать с помощью цикла DO WHILE, однако, первый значительно проще. Хотя такая запись может выглядеть следующим образом:
параметр=начальному_значению
DO WHILE параметр <= конечного_значения
…Тело цикла
параметр=параметр+шаг
LOOP
Такая замена справедлива, если шаг положительный. Выражение ТО в цикле FOR эквивалентно сравнению “<=” в цикле DO WHILE.
Рассмотрим применение цикла с параметром на конкретных примерах.
Пример 1
Вычислите значение Sin, Cosи tgуглов от 0 до 45 градусов с шагом 1 градус.
CONST PI=3.1415
FOR I=1 TO 45
X=PI*I/180
Y1=SIN(X)
Y2=COS(X)
Y3=TAN(X)
PRINT I, “Sin=”;Y1, “Cos=”; Y2, “tg=”; Y3
NEXT I
12 Цикл с постусловием.
икл с постусловием (REPEAT-UNTIL)
Цикл с постусловием в языке программирования Pascal реализуется с помощью оператора REPEAT... UNTIL.
Синтаксис
repeat
{Операторы}
until условие выхода из цикла;
Условие - это логическое выражение булевского типа (операция отношения или логическая операция)
Тело цикла выполняется в любом случае, затем проверяется условие.
Инструкции тела цикла (операторы) выполняются в том случае, если значение логического выражения равно false, в противном случае осуществляется выход из цикла
Оператор repeat может быть использован для проверки правильности ввода исходных данных
Нижняя граница тела цикла определена служебным словом until, поэтому операторные скобки begin и end могут быть опущены (однако если операторы тела цикла заключены в операторные скобки - это не является ошибкой).
Операторы repeat и while взаимозаменяемы. То есть, практически любую задачу можно решить как с помощью цикла с постусловием, так и с помощью цикла с предусловием. Использование того или иного цикла зависит от предпочтения программиста.
Примеры задач на использование цикла с постусловием
Пример №1
Постановка задачи:
Выводится на экран последовательность 20 случайных чисел из промежутка [-10,10]. Определить количество отрицательных чисел больших -5 в данной последовательности.
Блок-схема
pr_r_1
Кодирование
program psldv;
var
i,j:integer;
x:real;
begin
randomize; {процедура инициализации
генератора случайных чисел}
i:=20; j:=0;
repeat
x:=random(20)-10; {генерируем случайное число}
write(x:4:0); {выводим это число на экран}
if (x > -5) and (x < 0) then
inc(j); {процедурой inc увеличиваем
аргумент на единицу,
считаем найденные числа}
dec(i); {процедурой dec уменьшаем аргумент
на единицу, определяем условие
выхода из цикла}
until i=0;
writeln;
write('Количество отрицательных чисел
больших -5 равно ', j);
end.