Как можно было бы сделать, если использовать массив?
1. Ввести значения и заполнить ими массив.
2. Найти среднее значение в массиве.
Var
a: array[1..10] of integer;
s: integer;
i:byte;
begin
s:=0;
for i:=1 to 10 do
begin
wtite(‘введите -->’);
readln(a[i]);
s:=s+a[i];
end;
end.
16.Правила разработки цикла
Известно по крайней мере два класса задач, которые приводят к появлению цикла:
· обработка или формирование массивов - при переносе формулировки задачи типа
<обработать массив > //типа <вывести на экран>
или
<сформировать массив> //типа инициализировать/ввести массив>
с объекта на каждый его компонент получаем повторяющиеся подзадачи. Эту последовательность подзадач сокращаем, записывая формулировку подзадачи один раз (в обобщенной форме) и повторяя в цикле. При решении этого класса задач циклы разрабатываются сверху вниз.Число повторений обычно определяется числом элементов массива, поэтому используются циклы for (со счетчиком).
· итерационные алгоритмы – алгоритмы, основанные на использовании рекуррентных формул. При решении задач этого (второго) класса циклы разрабатываются снизу-вверх. Рекуррентные формулы обычно используются потому, что для снижения сложности вычислений (замена умножения - сложением, а возведения в степень - умножением и т.п.) на каждом шаге при каждом новом повторении цикла каждый новый результат получается с использованием старого (ранее полученного) результата. Можно выделить 2 разновидности итерационных алгоритмов:
1. Алгоритмы, связанные с реализацией т.н. n-арных операций:
S = =x1+x2+x3+...+xn S = = x1∙x2∙x3∙...∙xn S = X!=1∙2∙3∙4∙...∙X и т.п.
Реализация n-арных операций требует преобразования их в последовательность двухместных (бинарных) операций, что приводит к появлению повторяющихся действий и необходимости сворачивания этих повторяющихся действий в цикл.
2. Алгоритмы приближенных вычислений - алгоритмы, разрабатываемые для поэтапного (пошагового) приближенного нахождения решения задач (например, поиск корня уравнения), для которых неизвестно, как найти точное решение.
Обе задачи второго класса приводят к появлению циклов, которые разрабатываются методом "снизу вверх". При этом первая разновидность задач второго класса реализуется с помощью циклов с известным числом повторений (цикла for - для каждой n-арной операции, зная n, можно определить число повторений), а вторая разновидность - с помощью циклов с неизвестным числом повторений.
Известно, что структура цикла (с известным числом повторений) включает в себя три компонента: подготовка цикла, заголовок цикла, тело цикла (те действия, которые необходимо многократно повторить). Заголовок цикла задает правила изменения параметра цикла (тело цикла повторяется для каждого значения параметра цикла).
Как правило, очередное повторение тела цикла строится с использованием результата, полученного при предыдущем повторении тела цикла, наприемр, как в данном случае
xi = xi-1 + h
yi = f(xi).
При этом подготовка цикла практически имитирует такое выполнение тела цикла, которого еще не было. Это делается затем, чтобы настроить тело цикла на первое правильное выполнение.
Однако, если цикл организован таким образом, что очередное повторение тела цикла не использует результат предыдущего повторения, как в данном случае
xi = (i-1)*h и yi = f(xi)
то в этом случае подготовка цикла не нужна.
Порядок разработки циклов восходящим методом:
1. Записываем линейный алгоритм (в котором, например, многоместная операция реализуется с помощью последовательности большого количества бинарных операций).
2. Находим рекуррентную формулу (замечаем повторяемость) для определенной последовательности шагов.
3. Те повторяющиеся действия, для которых удалось получить обобщенную формулу, сворачиваем в цикл. При этом в тело цикла попадают те действия, которые записаны в виде рекуррентной формулу; в заголовке цикла записываем правило, с помощью которого устанавливается, повторять далее цикл или нет; в подготовку цикла включаются те действия, которые не удалось обобщить.
4. Если подготовка цикла не простая, то необходимо выполнить ее упрощение.
5. Если попытка упрощения подготовки цикла удалась, то необходимо скорректировать заголовок так, чтобы число повторений стало на 1 больше.
6. Необходимо выполнить операцию отбрасывания лишних индексов.
Теперь о том, когда циклы разрабатываются методом "сверху вниз". Вернемся к уточнению команд обработки цикла.
При появлении команд:
Дата добавления: 2016-05-28; просмотров: 1661;