
- •Кафедра "Прикладная Информатика"
- •Введение
- •Массивы данных
- •Объявление массивов на языке Visual Bаsic
- •1. Вычислительный процесс заполнение
- •1.1. Производная алгоритмическая структура Формирование
- •1.2. Производная алгоритмическая структура Пересчёт
- •2. Вычислительный процесс поиск
- •2.1. Производная алгоритмическая структура Поиск по ключу
- •2.2. Производная алгоритмическая структура Поиск максимума
- •2.3. Производная алгоритмическая структура Поиск минимума
- •3. Вычислительный процесс накопление
- •3.1. Производная алгоритмическая структура Cумма
- •3.2. Производная алгоритмическая структура Произведение
- •3.3. Производная алгоритмическая структура Счётчик
- •4. Синтез сложных алгоритмов из производных алгоритмических структур
- •4.1. Производная алгоритмическая структура Выборка
- •4.2. Производная алгоритмическая структура Перестановка
- •4.3. Пример информационной технологии, реализующей процесс упорядочения элементов массива
- •Содержание
2.3. Производная алгоритмическая структура Поиск минимума
Используется для нахождения минимального элемента и его местоположения. Условие поиска минимума определяется выражением:
<Элемент массива> < <Ключ поиска>
Особенности алгоритма.
Аналогичны производной алгоритмической структуре Поиск максимума, но Ключу поиска присваивается начальное значение, которое может быть:
значением любого элемента массива;
числом, намного большим любого из возможных значений, которые могут принимать элементы массива.
После окончания циклического вычислительного процесса значение Ключа поиска равно минимальному значению элемента массива, а дополнительные переменные (переменная) хранят значения, определяющие местоположение этого элемента в массиве.
Пример 7.
Разработать информационную технологию, позволяющую определить местоположение элемента матрицы А произвольной размерности mn, имеющего минимальное значение. При наличии нескольких одинаковых минимальных элементов выбрать элемент, имеющий наибольшие индексы.
Входные данные: m – целое число;
n
– целое число;
A=[aij], , – массив целых чисел.
Выходные данные: min – минимальное значение элемента массива, целое число;
k и q значения индексов, определяющих его местоположение, целые числа.
Математическая модель:
min = a11, k = 1, q = 1;
для i = 1.. m, j = 1.. n,
если aij ≤ min, то min = aij, k = i, q = j
Схема алгоритма:
Код приложения:
Private Sub Command1_Click()
Dim m As Integer, i As Integer, j As Integer, k As Integer, q As Integer
Dim a() As Integer, min As Integer
m=InputBox(“Количество строк матрицы=”)
n =InputBox(“Количество столбцов матрицы=”)
Redim a(1 To m,1 To n)
For i=1 To m
For j=1 To n
a(i,j)=InputBox(“a(“ & i & ”,” & j & ”)”)
Next
Next
Print “Исходный массив”
For i=1 To m
For j=1 To n
Print a(i,j);
Next
Next
min = a(1,1)
k=1: q=1
For i=1 To m
For j=1 To n
If a(i,j)<=min then
min = a(i,j)
k=i: q=j
End If
Next
Next
MsgBox “ Минимум = ” & min & Сhr(10) & ”Индекс i=” & i & _
“Индекс j=” & j
End Sub
3. Вычислительный процесс накопление
Служит для накопления сумм и произведений значений элементов массива, а также подсчета количества элементов в массиве, значения которых удовлетворяют заданному условию.
Различают следующие производные алгоритмические структуры:
накопление суммы (Cумма);
накопление произведения (Произведение);
подсчет количества (Счётчик).
3.1. Производная алгоритмическая структура Cумма
Производная алгоритмическая структура Cумма служит для вычисления различных сумм.
Особенности алгоритма.
1. Вводится дополнительная переменная, которая служит для хранения значений сумм элементов массива.
2. Дополнительной переменной присваивается начальное значение, равное 0.
3. Определяется тип вычислительного процесса:
цикл с параметром, если задана размерность массива или ее можно определить перед началом вычислительного процесса;
итерационный цикл, если накопление суммы заканчивается при достижении заданной точности.
4. Телом цикла служит структура Следование, представленная итерационной формулой:
<Доп. переменная>=<Доп. переменная > + <Элемент массива>
5. После окончания вычислительного процесса дополнительная переменная хранит искомую сумму.
Пример 8.
Разработать информационную технологию, позволяющую вычислить сумму значений элементов первой и последней строк матрицы А произвольной размерности m×n.
Входные данные: m – целое число;
n – целое число;
A=[aij], , – массив вещественных чисел.
Выходные данные:
s – искомая сумма, вещественное число.
Математическая модель:
Схема алгоритма:
Код приложения:
Option Base 1
Private Sub Command1_Click()
Dim m As Integer, n As Integer
Dim s As Single, a() As Single, i As Integer, j As Integer
m=InputBox(“Введите количество строк матрицы”)
n=InputBox(“Введите количество столбцов матрицы”)
Redim a(m,n)
For i=1 To m
For j=1 To n
a(i,j)=InputBox(“a(“ & i & ”,” & j & ”)”)
Next j
Next i
s=0
For j=1 To n
s=s+a(1,j)+a(m,j)
Next j
Print “Исходная матрица”
For i=1 To m
For j=1 To n
Print Format(a(i,j),”0.00”);
Next
Next
Msgbox “Сумма первой и последней строк матрицы равна ” & s
End Sub
Аналогичный алгоритм может быть использован для накопления суммы степенного ряда. В этом случае дополнительной переменной присваивается значение, равное первому члену степенного ряда.
Пример 9.
Разработать информационную технологию, позволяющую вычислить сумму степенного ряда: 0,5+х+х2/2+х3/3+… Количество членов степенного ряда, для которых необходимо вычислить сумму, задаётся вводом.
Входные данные: k – количество членов ряда, целое число;
х – вещественное число.
Выходные данные: s – значение искомой суммы, вещественное число.
Математическая модель:
Схема алгоритма:
Код приложения:
Private Sub Command1_Click()
Dim x As Single, k As Byte, s As Double, i As Integer
k=InputBox(“Введите количество членов степенного ряда”)
x=InputBox(“Введите значение х”)
s=0.5
For i=1 To k
s=s+x^ i/i
Next i
MsgBox “Сумма членов степенного ряда =” & s
End Sub