![]() ![]() Работа с операторами цикла - Delphi (Lazarus).Циклический процесс, или просто цикл, – это повторение одних и тех же дей- ствий. Последовательность действий, которые повторяются в цикле, называют телом цикла. Один проход цикла называют шагом, или итерацией. Переменные, которые изменяются внутри цикла и влияют на его окончание, называются параметрами цикла. При написании циклических алгоритмов следует помнить следующее. Во-пер- вых, чтобы цикл имел шанс когда-нибудь закончиться, содержимое его тела должно обязательно влиять на условие цикла. Во-вторых, условие должно состоять из корректных выражений и значений, определенных еще до первого выполнения тела цикла. В языке Free Pascal для удобства программиста предусмотрены три оператора, реализующих циклический процесс: Оператор цикла с предусловием while .. doНа рис. 3.25 изображена блок-схема алгоритма цикла с предусловием. Оператор, реализующий этот алгоритм в языке Free Pascal, имеет вид: while выражение do оператор; Работа с этим редактором очень похожа на редактор полей набора данных, но есть и отличия. В верхней части окна вы видите четыре кнопки, слева - направо: Работает оператор while следующим образом. Вычисляется значение выражения. Если оно истинно (True), выполняется оператор. В противном случае цикл заканчивается, и управление передается оператору, следующему за телом цикла. Выражение вычисляется перед каждой итерацией цикла. Если при первой проверке выражение ложно (False), цикл не выполнится ни разу.
Рассмотрим пример. . Пусть необходимо вывести на экран значения функции y=esin(x)cos(x) на отрезке [0;π] с шагом 0.1. Применим цикл с предусловием: var x,y:real; В результате работы данного фрагмента программы на экран последовательно будут выводиться сообщения со значениями переменных x и y: x= 0; y=1 Оператор цикла с постусловием repeat … untilЕсли в цикле с предусловием проверка условия осуществляется до тела цикла, то в цикле с постусловием условие проверяется после тела цикла (см. рис. 3.26). Сначала выполняются операторы, являющиеся телом цикла, после чего проверяется условие, если последнее ложно, то цикл повторяется. Выполнение цикла прекратится, если условие станет истинным. В языке Free Pascal цикл с постусловием реализован конструкцией repeat
Работает цикл следующим образом. В начале выполняется оператор, представляющий собой тело цикла. Затем вычисляется значение выражения. Если оно ложно (False), оператор тела цикла выполняется еще раз. В противном случае цикл завершается, и управление передается оператору, следующему за циклом. Таким образом, нетрудно заметить, что цикл с постусловием всегда будет выполнен хотя бы один раз в отличие от цикла с предусловием, который может не выполниться ни разу. Если применить цикл с постусловием для создания подпрограммы, которая выводит значения функции y=esin(x)cos(x) на отрезке [0;π] с шагом 0.1. получим: var Оператор цикла for … doОператоры цикла с условием обладают значительной гибкостью, но не слишком удобны для организации «строгих» циклов, которые должны быть выполнены заданное число раз. Оператор цикла for … do используется именно в таких случаях: for i:= in to ik do оператор; Переменную i называют параметром цикла. Переменные in и ik — диапазон изменения параметра цикла: in — начальное значение, а ik — конечное значение параметра цикла. Шаг изменения цикла for всегда постоянен и равен интервалу между двумя ближайшими значениями типа параметра цикла (при целочисленном значении параметра цикла шаг равен 1). В случае если тело цикла состоит более чем из одного оператора, необходимо использовать составной оператор: for i:= in to ik do Опишем (рис.3.27) алгоритм работы цикла for … do:
Понятно, что этот алгоритм представляет собой цикл с предусловием ![]() Рисунок 3.27: Алгоритм работы цикла for...do В дальнейшем, чтобы избежать создания слишком громоздких алгоритмов, в блок-схемах цикл for будем изображать так, как показано на рис. 3.28 ![]() Рисунок 3.28: Представление цикла for...do с помощью блок-схемы Фрагмент подпрограммы, приведенный далее, демонстрирует применение цикла for: Вернемся к задаче вывода значений функции на y=esin(x)cos(x) отрезке [0;π] с шагом 0.1. Как видим, здесь количество повторений цикла явно не задано. Однако это значение, можно легко вычислить. Предположим, что параметр цикла х принимает значения в диапазоне от xn до xk, изменяясь с шагом dх, тогда количество повторений тела цикла можно определить по формуле: ![]() округлив результат деления до целого числа. Следовательно, фрагмент программы вывода значений функции y=esin(x)cos(x) на отрезке [0;π] с шагом 0.1. будет иметь вид: var i,n:integer; x,y:real; Рекомендуем в повседневной деятельности:
![]() ![]() |