- •Лабораторная работа № 3. (часть1)
- •Цель работы:
- •Порядок выполнения работы
- •Выполнить практическую часть работы.
- •Контрольные вопросы
- •Краткие теоретические сведения
- •Оператор цикла с параметром
- •Цикл с предпроверкой условия
- •Цикл с постпроверкой условия
- •Вложенные циклы
- •Операторы Break и continue.
- •Индивидуальные задания
Краткие теоретические сведения
Алгоритм циклической структуры - это алгоритм, в котором происходит многократное повторение одного и того же участка программы. Такие повторяемые участки вычислительного процесса называются циклами. Программа циклической структуры содержит один или несколько циклов. Различают детерминированные циклы с заранее известным числом повторений и итерационные циклы, в которых число повторений заранее неизвестно. Изменяющаяся в цикле переменная называется параметром цикла.
Для организации цикла необходимо выполнить следующие действия:
1) задать перед циклом начальное значение параметра цикла;
2) изменять параметр перед каждым новым повторением цикла;
3) проверять условие повторения цикла;
4) управлять циклом, т.е. переходить к его началу, если он не закончен, или выходить из него по окончании.
В языке Паскаль существует 3 вида циклов:
1) цикл с параметром или цикл типа for,
2) цикл с предусловием или цикл типа while,
3) цикл с постусловием или цикл типа repeat ... until.
Оператор цикла с параметром
Блок-схема, соответствующая циклу с параметром, представлена на рис. 1.
Здесь i – параметр цикла; i0 – начальное значение параметра; iT – конечное значение параметра; iS – шаг приращения параметра (в случае языка Pascal +1 либо –1).
Циклическая ветвь блок-схемы выполняется для всех i, начиная с i0 и кончая iT с шагом iS (т.е. для i0 , i0+iS , i0+2iS , i0+3iS , … ). Как только i выйдет за пределы интервала [i0 ,iT], повторения прерываются и программа выходит из цикла.
Рис. 1 Блок-схема цикла с параметром
Оператор цикла с параметром на языке Pascal имеет следующий формат:
For i:=i0 to iT do <оператор>
Здесь For, to, do – зарезервированные слова («для», «до», «выполнить»);
i (параметр цикла) - переменная типа INTEGER (точнее, в общем случае, любого порядкового типа);
i0 (начальное значение) и iT (конечное значение параметра) – константы или выражения того же типа;
<оператор> - произвольный оператор языка Pascal (тело цикла). В качестве оператора может выступать расширенный оператор с операторными скобками begin…end.
Шаг приращения параметра при этом постоянен и равняется +1.
При выполнении оператора For вначале вычисляется выражение i0 и выполняется присваивание i:=i0 . После этого циклически повторяется:
- проверка условия i<= iT ; если условие не выполнено, то оператор For прекращает свою работу;
-выполнение тела цикла <оператор>;
-наращивание переменной цикла на единицу.
Если условие не выполняется в самом начале работы оператора For, то исполняемый оператор не будет выполнен ни разу.
Существует и другая форма записи оператора For, при которой шаг приращения параметра принимает значение –1. В этом случае оператор For будет иметь следующий вид:
For i:=i0 downto iT do <оператор>
Пример 1. Вычислить функцию f=x+e -x при х=0, 1, 2, …, 10 и распечатать полученные значения в табличном виде.
Возможный текст программы:
Цикл с предпроверкой условия
Оператор цикла с предпроверкой условия While…Do схематично представлен в виде блок-схемы на рис.2 и имеет следующий формат:
While <условие> Do <оператор>
Здесь While, Do – зарезервированные слова («Пока [выполняется условие]», «делать»);
<условие> - выражение логического типа;
<оператор> - произвольный оператор, составляющий тело цикла (включая случай расширенного оператора).
Если условие имеет значение “Истинно” (True), то выполняется <оператор>, после чего проверка условия повторяется. Если условие имеет значение “Ложь” (False), то оператор While прекращает свою работу.
Рис.2 Блок-схема цикла с предпроверкой условия
Данный оператор может быть использован в тех случаях, когда заранее не известно предстоящее число повторений.
Пример 2. Дан бесконечный ряд вида
Найти сумму данного бесконечного ряда с заданной точностью e=0.01, т.е. продолжать процесс суммирования до тех пор, пока модуль разности между суммами для k-го и (k+1)-го шага не станет меньше e.
