- •1. Задание на контрольную работу
- •Задание 1
- •Варианты задач № 1
- •Задание 2
- •2. Методические указания к решению задач
- •2.1. Этапы подготовки задач к решению на эвм
- •2.2. Типовые алгоритмы вычислительных процессов
- •2.2.1. Линейный вычислительный процесс
- •2.2.2. Разветвляющийся вычислительный процесс
- •2.2.3. Циклический вычислительный процесс
- •Цикл с заданным числом шагов
- •Итерационный цикл
- •2.2.4. Циклический разветвляющийся (смешанный) вычислительный процесс
- •2.2.5. Накопление суммы и произведения
- •2.2.6. Поиск наибольшего числа в массиве
- •2.2.7. Сложные циклы
- •Методические указания к выполнению задания 2
- •Библиографический список
- •Приложение 1
- •Приложение 2
Итерационный цикл
Итерационный вычислительный процесс – это процесс последовательных приближений.
Итерационные циклы имеют аналогичную структуру, но отличаются тем, что в основе цикла лежит итерационный процесс последовательного приближения искомой величины к своему конечному значению, а не заданное число повторений, Рис. 4.
Пример. Выполнить расчет А=-0,27ВС, с заданной точностью – ε, если В=1,3; С=0,8 и напечатать А. Введем обозначения:
– в алгоритме ε;
– в программе d.
Блок-схема алгоритма приведена на рис. 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:3:1); end. |
Рис. 4. Итерационный цикл
Вычисления по программе будут выполняться до тех пор, пока не будет выполнено условие ε, где А и С два соседних приближения (см. рис.4). В программе использован оператор цикла «с постусловием»REPEAT…..UNTIL.
2.2.4. Циклический разветвляющийся (смешанный) вычислительный процесс
Структура построения алгоритма, этого типа вычислительного процесса, предусматривает:
– первоначально выбор формулы, в зависимости от выполнения (или невыполнения) условия, при котором выполняется расчет;
– затем выполнение расчета в пределах изменяющегося параметра переменной цикла, Рис. 5.
Пример. Вычислить и напечатать значение функции и ее аргумента, когда функция задана одной из трех формул.
если | |
если | |
если |
изменяется от -5 до 0 с шагом h=0,5.
По условию задачи вычисляется по одной из трех формул. Выбор формулы, для каждого значения, производится в зависимости от выполнения (или невыполнения) условия.
Блок-схема приведена на рис. 5.
Блок 2 – ввод исходных данных.
Блок 3 – начальное значение приравнивается текущему значению в формуле.
Блок 4 – проверка условия окончания общего (внешнего) цикла;
Блок 5,6 – проверка условия и выбор ветви выполнения алгоритма решения.
Блок 7, 8, 9 – вычесление значений ,соответственно по 1-ой формуле, 2-ой и3-ой формулам.
Блок 10 – вывод результатов на дисплей.
Блок 11 – изменение предыдущего значения переменной на шаг,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
x, x, h, y: real;
begin
writeln (‘ввести x, x, h’);
readln (x, x, h);
writeln (‘y,’ ‘,x’);
x:= x;
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:3:1, ‘ ’, ‘x=’, x:2:1);
x:=x+h;
end
end.
Рис. 5. Циклический разветвляющийся процесс
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) в цикле можно показать всего одним блоком , который по сути заменит 4 блока (блоки 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
begin
writeln (A[I]:3:1, ‘ ’);
end;
S=0;
P=1;
FOR I=1 to n do
begin
S:=S+A(I);
P:=P*A(I);
end;
writeln;
writeln (‘сумма=’, S:6:1, ‘ ’, ‘произведение=’, P:9:1);
end.
Количество чисел в массиве (размер)
Индекс порядкового номера первого эл-та
Ввод первого элемента массива А(1)
Формирование очередного номера элемента
массива A(I)
Проверка, все ли элементы массива A(I),
введены
Вывод всех элементов массива A(I) на экран
дисплея
Начальные значения суммы и произведения
Индекс первого элемента
Выполнение действий сложения и
умножения
Изменение индекса для выборки
следующего элемента из массива A(I)
Проверка, все ли элементы массива A(I),
перебрали
Вывод суммы и произведения элементов
массива A(I) на дисплей
Рис. 6. Алгоритм вычисления суммы и произведения элементов массива A(I)