Отправляет email-рассылки с помощью сервиса Sendsay

Дистанционное обучение

  Все выпуски  

уроки и методика преподавания информатики для учителей паскаль циклы с условием www.thl.narod.ru


ЦИКЛЫ С УСЛОВИЕМ. Если заранее неизвестно число повторений цикла, то используются циклы с условием. В паскале имеется два типа таких циклов. Циклы While называют циклами с пред-условием. Они имеют вид WHILE <логич.выражение> DO <оператор>; Цикл While организует выполнение одного (возможно составного) оператора пока истинно логическое выражение, стоящее в заголовке цикла. Поскольку значение логического выражения проверяется в начале каждой итерации, то тело цикла может не выполниться ни разу. Таким образом, в этом цикле логическое выражение - это условие продолжения работы в цикле. Другой вариант циклов с условием - это циклы Repeat. Их называют циклами с пост-условием. Они имеют вид REPEAT <оператор 1> ... <оператор N> UNTIL <логич.выражение> Оператор Repeat организует повторяющееся выполнение нескольких операторов до тех пор пока не станет истинным условие, стоящее в Until-части. Тело цикла обязательно выполняется хотя бы один раз. Таким образом, в этом цикле логическое выражение - это условие выхода из цикла. При создании циклических алгоритмов Турбо Паскаль позволяет использовать процедуры Continue и Break. Процедура Continue досрочно завершает очередной шаг цикла, передает управление на заголовок. Процедура Break реализует немедленный выход из цикла. РЕКОМЕНДАЦИИ: Для того, чтобы избежать зацикливания программы необходимо обеспечить изменение на каждом шаге цикла значения хотя бы одной переменной, входящей в условие цикла. После выхода из цикла со сложным условием (с использованием операций and, or, xor) как правило необходима проверка того, по какому условию цикл завершен. ПРИМЕР: Пары неотрицательных вещественных чисел вводятся с клавиатуры. Посчитать произведение для каждой пары и сумму всех чисел. program cycle_while; var x,y,sum:real; otv:char; begin sum:=0; otv='Д'; while (otv='Д') or (otv='д') do begin write('Введите числа x,y > 0 '); readln(x,y); writeln('Их произведение = ',x*y:8:3); sum:=sum+x+y; write('Завершить программу (Д/Н)? '); readln(otv); end; writeln('Общая сумма = ',sum:8:3); readln end. ПРИМЕР: В той же задаче можно использовать другой цикл с условием: program cycle_repeat; var x,y,sum:real; otv:char; begin sum:=0; repeat write('Введите числа x,y > 0 '); readln(x,y); writeln('Их произведение = ',x*y:8:3); sum:=sum+x+y; write('Завершить программу (Д/Н)? '); readln(otv); until (otv='Д') or (otv='д'); writeln('Общая сумма = ',sum:8:3); readln end. ПРИМЕР: Нахождение наибольшего общего делителя двух целых чисел с помощью Алгоритма Эвклида. program Evklid; var a,b,c:integer; begin write('введите два целых числа : '); readln(a,b); while b<>0 do begin c:=a mod b; a:=b; b:=c; end; writeln('наибольший общий делитель = ',a); readln end.

В избранное