Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Программная модель с циклом повторять до



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)

  ОП  
y ? Под хранение данного типа REAL (6Б)
x ? Под хранение данного типа REAL (6Б)
xn ? Под хранение данного типа REAL (6Б)
xk ? Под хранение данного типа REAL (6Б)
hx ? Под хранение данного типа REAL (6Б)

Рис. 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.

  ОП  
y ? Под хранение данного типа REAL (6Б)
x ? Под хранение данного типа REAL (6Б)
xn 0.0 Под хранение данного типа REAL (6Б)
xk 0.2 Под хранение данного типа REAL (6Б)
hx 0.1 Под хранение данного типа REAL (6Б)

Рис. 15.8. – Распределение ОП после ввода исходных данных

3) выполняется обращение к процедуре вывода:

writeln('АРГУМЕНТ Х': 15, 'ФУНКЦИЯ Y=SIN(X)': 20);

на экране первые пятнадцать позиций строки занимает текст АРГУМЕНТ Х, следующие двадцать позиций текст ФУНКЦИЯ Y=SIN(X) (это сделано для формирования на экране таблицы из двух колонок);

4) выполняется оператор присваивания x: =xn

x: = 0.0 (0.0)
  xn  

5) выполняется оператор цикла пока

5.1.1)вычисляется условие выполнения цикла

0.0< =0.2 (TRUE)
x< =xk  

5.1.2) Так как условие выполнения цикла справедливо, то выполняется тело цикла, а затем происходит возврат к вычислению условия выполнения цикла.

Выполняем тело цикла

5.1.2.1)

y: = 0.0 (0.0)
  sin(0.0)  

5.1.2.2) Вывод на экран:

0.00000 0.00000

5.1.2.3)

x: = 0.0+0.1 (0.1)
  x+hx  

5.2.1)вычисляется условие выполнения цикла

0.1< =0.2 (TRUE)
x< =xk  

5.2.2) Выполняем тело цикла

5.2.2.1)

y: = 0.09983 (0.09983)
  sin(0.1)  

5.2.2.2) Вывод на экран:

0.10000 0.09983

5.2.2.3)

x: = 0.1+0.1 (0.2)
  x+hx  

5.3.1)вычисляется условие выполнения цикла

0.2< =0.2 (TRUE)
x< =xk  

5.3.2) Выполняем тело цикла

5.3.2.1)

y: = 0.19867 (0.19867)
  sin(0.2)  

5.3.2.2) Вывод на экран:

0.20000 0.19867

5.3.2.3)

x: = 0.2+0.1 (0.3)
  x+hx  

5.4.1)вычисляется условие выполнения цикла

0.3< =0.2 (FALSE)
x< =xk  

Так как результат 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; Просмотров: 540; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.043 с.)
Главная | Случайная страница | Обратная связь