к лабораторной работе PASCAL Часть 3 Операторы цикла языка PASCAL
1 Цель работы
Изучить операторы цикла языка PASCAL.
2 Задачи работы
Научиться работать с алгоритмами циклической структуры на языке PASCAL.
3 Порядок выполнения работы
3.1 С использованием оператора цикла For cоставить и отладить программу для решения следующей задачи:
Дано действительное число x. Вычислить сумму зависящего от x ряда в соответствии с указанным преподавателем вариантом приложения А.
3.2 Провести вычисления для x=1, x=1.5, x=2.
3.3 Решить поставленную в пункте 3.1 задачу с использованием цикла While (для нечетных номеров вариантов) или с использованием оператора цикла Repeat (для четных номеров вариантов). Провести численные вычисления и сравнить полученные результаты с результатами пункта 3.2.
4 Требования к отчету
Отчет по работе должен содержать:
-название, цель работы;
-номер варианта для выполнения задания и условие своего варианта;
-блок-схему решения задачи;
-текст (листинг) программы;
-полученные при расчетах численные результаты;
-ответы на контрольные вопросы по указанию преподавателя.
5 Общие положения
5.1 Алгоритмы циклической структуры
Применительно к алгоритмическому языку циклом можно назвать повторение последовательности действий. При этом данные повторяющиеся действия составляют так называемое тело цикла. Условие прекращения повторений называется условием конца цикла.
С точки зрения программирования, цикл - повторяющиеся фрагменты программ. В языке Pascal имеются три различных оператора, служащих для программирования циклов: цикл с параметром For…to…Do, цикл с предпроверкой условия прекращения повторений While…Do и цикл с постпроверкой условия прекращения повторений Repeat…Until.
5.2 Оператор цикла с параметром
Блок-схема, соответствующая циклу с параметром, представлена на рис. 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 <оператор>
Пример. Вычислить функцию f=x+e -x при х=0, 1, 2, …, 10 и распечатать полученные значения в табличном виде.
Возможный текст программы:
5.3 Цикл с предпроверкой условия
Оператор цикла с предпроверкой условия While…Do схематично представлен в виде блок-схемы на рис.2 и имеет следующий формат:
While <условие> Do <оператор>
Здесь While, Do – зарезервированные слова («Пока [выполняется условие]», «делать»);
<условие> - выражение логического типа;
<оператор> - произвольный оператор, составляющий тело цикла (включая случай расширенного оператора).
Если условие имеет значение “Истинно” (True), то выполняется <оператор>, после чего проверка условия повторяется. Если условие имеет значение “Ложь” (False), то оператор While прекращает свою работу.
Рис.2 Блок-схема цикла с предпроверкой условия
Данный оператор может быть использован в тех случаях, когда заранее не известно предстоящее число повторений.
Пример. Дан бесконечный ряд вида
Найти сумму данного бесконечного ряда с заданной точностью e=0.01, т.е. продолжать процесс суммирования до тех пор, пока модуль разности между суммами для k-го и (k+1)-го шага не станет меньше e.
5.4 Цикл с постпроверкой условия
Оператор цикла с постпроверкой условия имеет следующий формат:
Repeat <тело цикла> Until <условие>
Здесь Repeat, Until – зарезервированные слова («Повторять», «пока не [выполнится условие]»);
<тело цикла> - произвольная последовательность операторов;
<условие> - выражение логического типа.
Операторы тела цикла всегда выполняются хотя бы один раз, после чего вычисляется значение <условие>: если его значение ложно (FALSE), операторы тела цикла повторяются, в противном случае оператор Repeat завершает свою работу.
Блок-схема данного оператора представлена на рис. 3.
Рис. 3 Блок-схема цикла с постпроверкой условия
Пример. Дано натуральное число N>10. Найти первую цифру даного числа.
6 Методические указания к выполнению работы
При решении стандартной задачи на нахождение суммы ряда прежде всего требуется выявить закономерность построения ряда, т.е. зависимость вида слагаемого от его порядкового номера.
Например, в случае суммы ряда вида
cos(x)+cos(2x)+cos(3x)+…+cos(7x)
общий вид слагаемого с номером k будет иметь вид cos(k*x), где k изменяется от 1 до 7.
Накопление суммы при этом должно проводиться по шагам, на каждом шаге цикла к имеющемуся уже значению суммы должно прибавляться очередное слагаемое (в самый первый момент предполагается, что значение суммы равно 0).
Фрагмент программы нахождения указанной выше суммы ряда с помощью оператора FOR может иметь, например следующий вид:
…
s:=0;
for k:=1 to 7 do s:=s+cos(k*x);
writeln(‘сумма =’, s);
end.
С помощью оператора While:
…
s:=0;
k:=1;
while k<=7 do
begin
s:=s+cos(k*x);
k:=k+1;
end;
writeln(‘сумма =’, s);
end.
С помощью оператора Repeat:
…
s:=0;
k:=1;
repeat
s:=s+cos(k*x);
k:=k+1;
until k>7;
writeln(‘сумма =’, s);
end.
7 Контрольные вопросы
7.1 Что называется циклом, телом цикла?
7.2 Какие операторы цикла языка Pascal Вы знаете?
7.3 Приведите известные Вам форматы оператора For.
7.4 С каким шагом может изменяться параметр оператора For?
7.5 Как можно рассчитать число шагов в операторе For?
7.6 Поясните отличия в операторах цикла с предпроверкой и постпроверкой условий.
7.7 Какой формат имеет оператор While?
7.8 Приведите пример, когда тело цикла в операторе While не выполняется ни одного раза.
7.9 Приведите формат оператора Repeat.
7.10 Поясните, в каком случае прекращаются повторения в операторе Repeat.
БИБЛИОГРАФИЯ
1. Фаронов В.В. Турбо Паскаль 7.0. Начальный курс. – М.: Нолидж. – 2000. – 576 с.
2. Зуев Е.А. Система программирования Turbo Pascal. – М.: Радио и связь. – 1992. – 288 с.
3. Рубенкинг Н. Турбо Паскаль для Windows.– М.: Мир. - 1994. – 535 с.
4. Информатика. Базовый курс. Учебник для вузов/Под ред. С.В.Симонович – СПб: Питер.- 2000. – С.560 - 611.
5. Приложение А
Варианты заданий для выполнения
Достарыңызбен бөлісу: |