- •Раздел 3 Программирование
- •1 Структура программы на языке Pascal
- •2 Операторы языка Pascal
- •2.1 Оператор присваивания
- •2.2 Операторы ввода данных
- •2.3 Операторы вывода данных
- •3 Стандартные функции Pascal
- •3.1 Примеры составления линейной программы
- •4 Контрольные вопросы
- •5 Задание
- •Содержание отчета
- •1 Условный оператор if
- •2 Оператор варианта case
- •3 Контрольные вопросы
- •4 Задание
- •4.1 Задание по условному оператору
- •4.2 Задание по оператору варианта
- •5 Содержание отчета
- •1 Оператор цикла с постусловием
- •2 Оператор цикла с предусловием
- •3 Оператор цикла с параметром
- •4 Контрольные вопросы
- •5 Задание
- •6 Содержание отчета
- •1 Итерационные циклы
- •2 Программа итерационного цикла
- •3 Контрольные вопросы
- •4 Задание
- •5 Содержание отчета
- •1 Краткая теория
- •1 Программа "цикл в цикле"
- •2 Программа "цикл и ветвление"
- •3 Программа "цикл в цикле и ветвление"
- •4 Контрольные вопросы
- •5 Задания
- •6 Содержание отчета
- •1 Одномерные и многомерные массивы
- •2 Обработка массивов
- •3 Контрольные вопросы
- •4 Задания
- •5 Содержание отчета
- •1 Описание функций
- •2 Параметры функции
- •2.1 Параметры-значения
- •2.2 Параметры-переменные
- •3 Контрольные вопросы
- •4 Задание
- •5 Содержание отчета
- •1 Формат описания процедуры
- •2 Параметры процедуры
- •3 Контрольные вопросы
- •4 Задание
- •5 Содержание отчета
- •1 Средства и методы отладки программ
- •1.1 Понятие отладки
- •1.2 Разновидности ошибок
- •1.2.1 Ошибки этапа компиляции
- •1.2.2 Ошибки этапа выполнения
- •1.2.3 Логические ошибки
- •2 Выполнение программы по шагам и трассировка
- •2.1 Выполнение по шагам и трассировка
- •2.2 Остановка выполнения
- •2.3 Отслеживание и модификация
- •2.4 Понятие отладочного шага
- •2.5 Выполнение программы по шагам
- •2.6 Трассировка программы
- •2.7 Выполнение больших фрагментов
- •3 Отладочные выражения, точки останова
- •3.1 Понятие отладочного выражения
- •3.2 Просмотр выражений
- •3.2.1 Добавление просматриваемого выражения
- •3.2.2 Редактирование просматриваемых выражений
- •3.3 Вычисление и модификация
- •3.3.1 Вычисление выражений
- •3.3.2 Модификация переменных
- •3.4 Использование точек останова
- •3.5 Задание точек останова
- •3.6 Отмена точки останова
- •3.7 Модификация точек останова
- •3.8 Создание условной точки останова
- •5.2 Установка точек останова
- •6 Содержание отчета
1 Итерационные циклы
Циклическая структура программы позволяет производить многократные вычисления группы операторов при изменении одного или нескольких параметров одновременно. В языке Паскаль имеются для этого операторы цикла for, repeat, while. В лабораторной работе №3 были рассмотрены эти операторы для решения задач с арифметическими циклами, в которых известны начальное, конечное значения аргумента и его шаг (приращение). Кроме того, число повторений цикла также было известно или его можно было определить.
Существует обширный ряд циклических задач, которые нельзя отнести к арифметическим циклам, т.к. в них не задаются начальное и конечное значения аргумента функции и шаг его приращения, а окончание цикла (повторения) вычислений производится по контролю не значения аргумента, а другого параметра, например, точности вычислений, времени решения задачи и др. Такие циклы называются итерационными (iteration – повторение).
Для вычислений с заранее неизвестным количеством повторений (итераций) оператор for не пригоден, поскольку в нём нужно задавать начальное и конечное значения аргумента, поэтому используются только операторы repeat и while.
2 Программа итерационного цикла
Пример 1
Составить программу вычисления значения функции y = x (π-x), используя равенство
с погрешностью E =10-4 и напечатать для контроля значения функции, определяемые выражением в левой части равенства y = x (π-x) и её разложением в ряд косинусов.
Программа
program iteracia
const
145
e=0.0001;
var
y,s,x:real; { y-функция, s-сумма, x-аргумент }
k:longint;
slag:real; { слагаемое (i-й член суммы) }
begin
writeln('введите x ');
readln(x);
s:= sqr(pi)/6;
k:=1;
repeat
slag:=cos(2*k*x)/sqr(k);
s:=s+slag;
inc(k);
until abs(slag)<e;
y:=s;
writeln(' y(x)= ',y);
writeln(' x*(pi-x)= ',x*(pi-x));
end.
Описание программы
В разделе объявления констант вводится точность вычислений Е=10-4, в разделе переменных вводятся y,s,x – вещественные, k – длинное целое и slag – вещественная.
Основной блок программы начинается оператором begin, в нём вводится значение аргумента х, вычисляется значение слагаемого slag=π./ 6 и присваивается переменной k значение 1.
Цикл открывается оператором repeat, в нём вычисляется слагаемое slag и прибавляется к предыдущему значению суммы s, затем k увеличивается на 1 (inc (k)). Проверка на окончание цикла выполняется после слова until сравнением модуля slag с заданной точностью е. Если условие выполняется (true), то при k=2 программа возвращается к repeat - на новое вычисление slag и s , если нет (false), то переходит к присвоению у значения накопленной суммы s, выводит на экран у и вычисленное значение x(π-x) для их сравнения (pi – это число π, хранящееся в памяти среды программирования Pascal)
3 Контрольные вопросы
1 Какие циклы называются итерационными?
2 Какие операторы цикла используются в итерационных циклах?
3 Как выполняется проверка на окончание вычислений в цикле?
146