Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология Образование Политология Производство Психология Стандартизация Технологии |
Программная модель с циклом повторять до
program sin_repeat; var y, {текущее значение функции} x, {текущее значение аргумента} xn, {начальное значение аргумента} xk, {конечное значение аргумента} hx {шаг изменения аргумента} : real; begin {ввод исходной информации} writeln('Введите диапазон и шаг изменения аргумента'); readln(xn, xk, hx);
{вывод заголовка таблицы (первая графа - 15 позиций; вторая графа - 20 позиций)} writeln('АРГУМЕНТ Х': 15, 'ФУНКЦИЯ Y=SIN(X)': 20);
{аргументу присваивается первое значение} x: =xn;
{цикл для вычисления всех значений} repeat
{вычисление текущего значения функции для текущего значения аргумента} y: =sin(x);
{вывод аргумента и функции в табличной форме} writeln(x: 15: 5, y: 20: 5);
{переход к новому значению аргумента} x: =x+hx
until x> xk
end. Формальное исполнение программы sin_while 1) До выполнения программы осуществляется распределение свободного участка памяти под переменные величины, описанные в разделе переменных программы (рис. 15.7)
Рис. 15.7. – Распределение ОП Содержимое выделенных участков памяти - неопределенное; 1) выполняется обращение к процедуре вывода: writeln('Введите диапазон и шаг изменения аргумента'); В результате на экране, начиная с текущего положения курсора, появляется сообщение: Введите диапазон и шаг изменения аргумента и курсор переводится в начало следующей строки экрана дисплея; 2) выполняется обращение к процедуре ввода: readln(xn, xk, hx); Программа ожидает получения информации в виде трех вещественных чисел с клавиатуры ПЭВМ. Человек набирает эту информацию, например, 0 0.2 0.1 и нажимает клавишу ввод (Return или Enter). Значение 0 поступает в память под именем xn, значение 0.2 - под именем xk, значение 0.1 - под именем hx. Содержимое оперативной памяти после ввода показано на рис. 15.8.
Рис. 15.8. – Распределение ОП после ввода исходных данных 3) выполняется обращение к процедуре вывода: writeln('АРГУМЕНТ Х': 15, 'ФУНКЦИЯ Y=SIN(X)': 20); на экране первые пятнадцать позиций строки занимает текст АРГУМЕНТ Х, следующие двадцать позиций текст ФУНКЦИЯ Y=SIN(X) (это сделано для формирования на экране таблицы из двух колонок); 4) выполняется оператор присваивания x: =xn
5) выполняется оператор цикла пока 5.1.1)вычисляется условие выполнения цикла
5.1.2) Так как условие выполнения цикла справедливо, то выполняется тело цикла, а затем происходит возврат к вычислению условия выполнения цикла. Выполняем тело цикла 5.1.2.1)
5.1.2.2) Вывод на экран: 0.00000 0.00000 5.1.2.3)
5.2.1)вычисляется условие выполнения цикла
5.2.2) Выполняем тело цикла 5.2.2.1)
5.2.2.2) Вывод на экран: 0.10000 0.09983 5.2.2.3)
5.3.1)вычисляется условие выполнения цикла
5.3.2) Выполняем тело цикла 5.3.2.1)
5.3.2.2) Вывод на экран: 0.20000 0.19867 5.3.2.3)
5.4.1)вычисляется условие выполнения цикла
Так как результат FALSE, то цикл завершается. 15.6. Правила перебора всех значений переменной в заданном диапазоне Эти правила определяют метод решения задачи, которой соответствует следующая математическая модель: x: =xn(hx)xk: < серия команд> Метод решения (правила) 1) Изменяющейся переменной присваивается начальное значение; 2) Используется цикл пока или повторять до, соответственно с условием выполнения цикла – значение изменяющейся переменной меньше или равно конечного значения; с условием окончания цикла – значение изменяющейся переменной больше конечного значения; 3) Последним действием в теле цикла является вычисление нового значения изменяющейся переменной (ее значение увеличивается на величину шага изменения). Обобщенный алгоритм (действия на языке Паскаль) а) с использованием цикла пока x: =xn; while x< =xk do begin < серия команд> x: =x+hx end
б) с использованием цикла повторять до x: =xn; repeat < серия команд> x: =x+hx until x> xk 15. 7. Алгоритм вычисления Математическая модель Математическая модель таблицы значений функции от нескольких переменных (или аргументов) формулируется следующим образом " x1: =x1n(hx1)x1k: " x2: =x2n(hx2)x2k: " x3: =x3n(hx3)x3k: …………………… " xn: =xnn(hxn)xnk: y: =f(x1, x2, x3, …xn) Метод решения Таблица должна содержать значения функции для всевозможных комбинаций значений аргументов. Т.е. необходимо перебрать все значения первого аргумента, для каждого значения первого аргумента перебрать все значения второго аргумента; для каждого значения второго аргумента перебрать все значения третьего и т.д.; для каждого значения последнего аргумента вычислить значение функции, вывести полученное значение и значения всех аргументов, при которых рассчитывалось полученное значение функции, и перейти к новому значению последнего аргумента. Алгоритм с использованием оператора цикла пока будет иметь следующую структуру:
x1: =x1n; while x1 < = x1k do begin x2: =x2n; while x2 < = x2k do begin x3: =x3n; while x3 < = x3k do begin ...
xn: =xnn; while xn < = xnk do begin y: =f(x1, x2,..., xn); writeln(x1, x2,..., xn, y); xn: =xn+hxn end; {xn}
...
x3: =x3+hx3 end; {x3}
x2: =x2+hx2 end; {x2}
x1: =x1+hx1 end; {x1} Этот же алгоритм с использованием оператора цикла до будет иметь следующую структуру:
x1: =x1n; repeat
x2: =x2n; repeat
x3: =x3n; repeat ...
xn: =xnn; repeat y: =f(x1, x2,..., xn); writeln(x1, x2,..., xn, y); xn: =xn+hxn until xn> xnk;
... x3: =x3+hx3 until x3> x3k;
x2: =x2+hx2 until x2> x2k;
x1: =x1+hx1 until x1> x1k Естественно, что в таком алгоритме можно использовать разные виды операторов цикла, главное - должно выдерживаться следующее правило: - цикл, который начинается раньше, позже заканчивается; - цикл, который начинается позже, раньше заканчивается. Это основное правило вложенности циклов. IV.2.10. Оператор цикла с параметром Назначение Оператор используется в алгоритмах, когда для каждого значения переменной из диапазона значений необходимо выполнять одинаковые действия. Эта переменная называется параметром цикла. Синтаксис Рис. 15.9. – Оператор цикла с параметром Синтаксическое ограничение: результаты вычислений выражений 1 и 2 и параметр цикла должны быть одного простого порядкового типа. Семантика Условием выполнения оператора цикла с параметром является существование списка значений - для возрастающего списка значений с символом TO значение выражения 1 должно быть меньше или равно значения выражения 2; для убывающего списка значений с символом DOWNTO значение выражения 1 должно быть больше или равно значения выражения 2. Порядок выполнения оператора: 1) вычисляются значения выражений 1 и 2, определяющих список значений параметра цикла; 2) вычисляется условие выполнения оператора цикла с параметром – для списка с символом TO результат выражения 1 меньше или равен результата выражения 2, для списка с символом DOWNTO результат выражения 1 больше или равен результата выражения 2 (возможен результат TRUE или FALSE); 3) если условие имеет значение FALSE, то выполнение оператора цикла прекращается (выполняется следующий оператор, расположенный за оператором цикла); 4) формируется полный список значений параметра цикла. Для списка с символом TO - это все значения подряд от результата выражения1 по результат выражения2. Для списка с символом DOWNTO – это все значения в обратном порядке от результата выражения1 по результат выражения2; 5) параметру цикла присваивается очередное значение из списка значений (первый раз - значение выражения1); 6) если список значений исчерпан (до этого уже было выбрано значение выражения2), то выполнение оператора цикла прекращается. Значение параметра цикла становится неопределенным и выполняется следующий оператор, стоящий за оператором цикла; 7) для выбранного значения параметра цикла выполняется оператор, расположенный после символа DO (тело цикла); 8) осуществляется переход к пункту 5.
Рис. 15.10. – Изображение оператора цикла с параметром на схемах алгоритма Предупреждения: 1) по завершению оператора цикла (см. пункты 3 и 6) значение параметра цикла неопределенное (зависит от реализации языка) и выполняется следующий оператор, расположенный за оператором цикла с параметром; 2) значения выражений 1 и 2 вычисляются один раз (см. пункт 1), поэтому в теле цикла не имеет смысла изменять значения, определяющие эти выражения; 3) в теле цикла запрещается изменять значение параметра цикла, так как это приводит к непредсказуемым последствиям (значение параметра цикла изменяется автоматически в пункте 5) Популярное:
|
Последнее изменение этой страницы: 2016-07-12; Просмотров: 578; Нарушение авторского права страницы