Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
метод по информатике.doc
Скачиваний:
5
Добавлен:
17.11.2018
Размер:
1.53 Mб
Скачать

Итерационный цикл

Итерационный вычислительный процесс – это процесс последовательных приближений.

В основе итерационного цикла лежит итерационный процесс последовательного приближения искомой величины к своему конечному значению с заранее заданной точностью (рис. 4).

Пример. Выполнить расчет a = -0,27bc, с заданной точностью – ε, если b = 1,3; c = 0,8 и вывести на экран a. Введем обозначения:

– в алгоритме ε;

– в программе d.

Вычисления по программе будут выполняться до тех пор, пока не будет выполнено условие ε, где a и c два соседних приближения (см. рис. 4). В программе использован оператор цикла «с постусловием» REPEAT…UNTIL.

Блок-схема алгоритма приведена на рис. 4.

Program cikl;

const

c, b: real;

var

a, d: real;

begin

writeln (‘ввести b, c, d’);

readln (b, c, d);

REPEAT

a:=-0,27bc;

c:=a;

UNTIL (ABS(a-c))=>d;

writeln (‘a=’, a:5:2);

end.

Рис. 4. Итерационный цикл

2.2.4. Циклический разветвляющийся (смешанный) вычислительный процесс

Структура построения алгоритма этого типа вычислительного процесса предусматривает:

– первоначально выбор формулы в зависимости от выполнения (или невыполнения) условия, при котором делается расчет;

– затем выполнение расчета в пределах изменяющегося параметра переменной цикла (рис. 5).

Пример. Вычислить и напечатать значения функции и ее аргумента, когда функция задана одной из трех формул.

если ,

если ,

если .

x изменяется от -5 до 0 с шагом h = 0,5.

По условию задачи y вычисляется по одной из трех формул. Выбор формулы для каждого значения x производится в зависимости от выполнения (или невыполнения) условия.

Блок-схема приведена на рис. 5.

Блок 2 – ввод исходных данных.

Блок 3 – начальное значение приравнивается текущему значению в формуле.

Блок 4 – проверка условия окончания общего (внешнего) цикла.

Блок 5,6 – проверка условия и выбор ветви выполнения алгоритма решения.

Блок 7, 8, 9 – вычисление значений y, соответственно по 1-й формуле, 2-й и 3-й формулам.

Рис. 5. Циклический разветвляющийся процесс

Блок 10 – вывод результатов на дисплей.

Блок 11 – изменение предыдущего значения переменной x на шаг h.

Блок 12 – окончание расчета.

При анализе алгоритма наблюдаются 3 ветви расчета по формулам:

а) блоки 1 – 2 – 3 – 4 – 5 – 7 – 10 – 11 при ();

б) блоки 4 – 5 – 6 – 8 – 10 – 11 при ();

в) блоки 4 – 5 – 6 – 9 – 10 – 11 – 12 при ().

Program bol;

var xn, xk, h, y: real;

begin

writeln (‘ввести xn, xk, h’);

readln (xn, xk, h);

writeln (‘y x’);

x:= xn;

while x<=0 do

begin

if (x<-4) then y:=x-3sin(x) else

if (x<0) then y:=1-sin(x) else y:=lg(2+sin(x));

writeln (‘y=’, y:5:2, ‘ x=’, x:4:1);

x:=x+h;

end; end.

2.2.5. Накопление суммы и произведения

Пример. Дано N чисел. Вычислить и напечатать сумму и произведение N чисел.

Данные числа – это элементы массива, обозначаемые A(I), каждому числу соответствует определенное значение индекса I, где I = 1÷N. Получаем А(1), А(2)…А(N).

Пусть через S обозначим символ, в котором постепенно будем накапливать сумму: к предыдущему значению суммы прибавляем очередное данное число, т.е. S = S + A(I).

Начальное значение приравняем S = 0. При I = 1 имеем S = S + A(1) = А(1). Чтобы прибавить следующее число, необходимо изменить I, чтобы I = 2, тогда S = A(I) + А(2) и т.д. На последнем этапе прибавляем к предыдущему значению суммы последнее число, при I = N, получим:

.

Аналогичны рассуждения для получения произведения. Искомое значение накапливаемых чисел обозначим Р. Выражение, которое реализует постепенное накопление произведения, имеет вид: P = PA(I).

Начальное значение Р должно быть равно: Р = 1.

Блок-схема приведена на рис. 6.

Верхняя часть алгоритма предусмотрена для резервирования памяти машины и размещения в ней элементов массива А(I). Нижняя часть алгоритма выполняет выборку из памяти введенных элементов массива А(I) и действия сложения и умножения.

В представленной блок-схеме блоки 3, 4, 5, 6 показывают последовательность правильной организации ввода элементов одномерного массива А(N) в цикле. Сокращенный вариант организации ввода элементов одномерного массива А(N) в цикле можно показать всего одним блоком , который заменит четыре блока (блоки 3, 4, 5, 6).

Этим правилом воспользуемся в своем дальнейшем изложении.

При организации циклического процесса в программе использован оператор цикла с параметром FOR.

Program summa;

type mas=array[1..100] of real;

var i, n: integer;

A: mas; P, sum: real;

begin

writeln (‘ввести размер массива’);

readln (n);

FOR i:=1 to n do

begin

writeln (‘ввести число’);

readln (A[i]);

end;

writeln (‘данный массив’);

FOR i:=1 to n do

writeln (A[I]:4:1);

S:=0; P:=1;

FOR i:=1 to n do

begin

S:=S+A(i);

P:=P*A(i);

end;

writeln (‘сумма=’, S:6:1, ‘ произведение=’, P:9:2);

end.

Количество чисел в массиве (размер)

Индекс порядкового номера первого эл-та

Ввод элемента массива А(I)

Формирование очередного номера элемента

массива A(I)

Проверка, все ли элементы массива A(I)

введены

Вывод всех элементов массива A(I) на экран

дисплея

Начальные значения суммы и произведения

Индекс первого элемента

Выполнение действий сложения и

умножения

Изменение индекса для выборки

следующего элемента из массива A(I)

Проверка, все ли элементы массива A(I)

перебрали

Вывод суммы и произведения элементов

массива A(I) на дисплей

Рис. 6. Алгоритм вычисления суммы и произведения элементов массива A(I)