- •Приложение б алгоритмизация вычислительных процессов
- •1. Этапы подготовки и решения задачи на эвм
- •2. Алгоритм и формы его представления
- •3. Линейные и разветвляющиеся алгоритмы
- •4. Алгоритмы циклической структуры
- •4.1. Цикл с простой переменной
- •4.2. Циклические алгоритмы формирования и обработки одномерных массивов
- •4.3. Организация сложных (вложенных) циклов
- •4.4. Алгоритмы обработки двухмерных массивов.
- •4.5. Циклы с неизвестным числом повторений
- •5. Использование подпрограмм в алгоритмах
- •6. Алгоритмы вычисления суммы и произведения
- •7. Алгоритмы нахождения наибольшего и наименьшего значения
- •8. Алгоритмы сортировки
- •8.1. Сортировка обменом (пузырьковая сортировка)
- •8.2. Сортировка выбором
- •8.3 Метод перестановок
- •8.4. Сортировка вставкой
5. Использование подпрограмм в алгоритмах
Во многих расчетных задачах возникает необходимость повторить несколько раз одну и та же совокупность действий в разных частях алгоритма. Тогда целесообразно составить алгоритм предопределенного процесса (подпрограмму), в который выделить эту совокупность действий. При составлении блок-схемы основной задачи необходимо предусмотреть обращение к этому алгоритму (подпрограмме).
Пример. Вычислить разность между средними арифметическими элементов массива X (x1, x2, …, x50) с четными индексами и элементов с нечетными индексами
Для вычисления R необходимо дважды определить среднее арифметическое 25 разных элементов массива X. Поэтому следует в качестве предопределенного процесса (подпрограммы) Sum(k, n, X) выделить вычисления:
Формулу для подпрограммы желательно записать в общих обозначениях, присутствующих в основной задаче.
Блок-схема алгоритма вычисления R изображена на рис. 8. Она состоит из двух частей. Справа находится алгоритм решения основной задачи, а слева показан алгоритм работы подпрограммы Sum.
В блок-схеме алгоритма основной задачи в блоках 2-3 производится ввод значений элементов массива Х, блоки 4 и 7 задают значения исходных данных (параметров) подпрограммы перед каждым обращением к ней. Первый раз задаются k=1 и n=49, во второй раз k=2 и n=50. В блоках 5 и 8 производится обращение к подпрограмме Sum с передачей ей значений параметров k, n и массива X. В блоках 6 и 9 поэтапно вычисляется значение R.
Блоки 12-15 описывают алгоритм работы подпрограммы Sum. Блок-схема вспомогательного алгоритма начинается блоком “Вход” с указанием имени подпрограммы и списка ее исходных данных, а заканчивается блоком “Выход” со списком выходных данных.
Рисунок 8 - Блок-схема алгоритма, который содержит подпрограмму
6. Алгоритмы вычисления суммы и произведения
Часто наряду с вычислением значений величины или совокупности величин необходимо определить сумму или произведение всех значений или некоторых из них.
При суммировании и вычислении произведения целесообразно использовать принцип постепенного накопления: одного значения, двух, трех и т.д. При этом предварительно необходимо задать начальное значение: для суммы — нулевое, а для произведения - единицу.
Пример.
Вычислить
для
Dx=0,1;
a=3,8.
Определить
количество (k)
y<0,
и
.
Вывести значения
x, y, k, P, S.
При
решении задачи необходимо перебрать
все значения
x
на обозначенном интервале (от xn=-0,5
до xk=2,5
с шагом Dx=0,1)
и вычислить соответствующие значения
y: всего их будет
штук.
Здесь прямые скобки ] [ указывают на то, что берется целая часть от деления. Некоторые значения y будут отрицательными: нужно подсчитать их количество и произведение, а также найти сумму всех 11 значений y.
Блок-схема алгоритма решения этой задачи приведена на рис. 9.
а) б)
Рисунок 9 - Блок-схемы вычисления суммы и произведения.
В этом циклическом алгоритме можно в качестве параметра цикла выбрать переменную x (рис. 9а) или перейти к параметру целого типа i, который изменяется от 1 до 11 (рис. 9б).
Для блок-схемы вида 9а в блоке 3 присваиваются начальные значения величинам k, P, S. Блок 4 организует цикл по переменной x. После этого в блоке 5 вычисляется значение y и в следующем блоке обеспечивается вывод каждой пары значений x и y (блок вывода обязательно должен находиться внутри цикла, так как необходимо зафиксировать все значения x и y, так как при следующем прохождении цикла они получают новые значения). В блоке 7 постепенно накапливается сумма всех значений y, а блоки 8 и 9 обеспечивают накопление произведения отрицательных значений y и подсчет их количества. Блок вывода 10 должен обязательно находиться не внутри цикла, а после его окончания, так как значения k, P, S необходимо вывести один раз, когда они будут окончательно вычислены.
Блок-схема вида 9б отличается тем, что в блоке 4 определяется количество повторений цикла (m) при переходе к новой переменной i целого типа, а также в блоке 3 задается начальное значение переменной x. В блоке 10 обеспечивается ее изменение для следующего прохождения цикла.
