- •Кафедра "Информатика и информационная безопасность"
- •Введение
- •Массивы данных
- •Объявление массивов на языке 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.2. Производная алгоритмическая структура Поиск максимума
Используется для нахождения максимального элемента массива и его местоположения. Условие поиска максимума определяется выражением:
<Элемент массива> > <Ключ поиска>
Особенности алгоритма.
1. Ключу поиска присваивается начальное значение. Начальным значением может быть:
– значение любого элемента массива;
– число, намного меньшее любого из возможных значений, которые могут принимать элементы массива.
2. Вводится одна дополнительная переменная, которая должна хранить значение, определяющее местоположение максимального элемента. Если обрабатывается двухмерный массив, то вводятся две дополнительные переменные: первая – для хранения индекса, определяющего местоположение в строках массива, а вторая – в столбцах маcсива.
3. Организуется циклический вычислительный процесс: цикл или цикл в цикле. Телом цикла служит структура Развилка, определяющая условие поиска элемента массива, имеющего максимальное значение.
Если условие поиска является истинным, то значение Ключа поиска заменяется значением элемента массива, а дополнительной переменной присваивается значение, определяющее местоположение соответствующего элемента массива.
В противном случае изменение значения Ключа поиска и дополнительных переменных (переменной) не происходит.
5. После окончания циклического вычислительного процесса значение Ключа поиска равно максимальному значению элемента массива, а дополнительные переменные (переменная) хранят значения, определяющие местоположение этого элемента в массиве.
П р и м е ч а н и е. Если в массиве несколько элементов имеют одинаковые значения, равные максимальному (используется знак > ), то дополнительные переменные (дополнительная переменная) хранят значения, определяющие местоположение первого элемента массива, имеющего максимальное значение. Если в выражении, определяющем условие поиска, используется знак ≥ , – то последнего.
Пример 5.
Разработать информационную технологию, позволяющую определить значение и местоположение элемента одномерного массива А произвольной размерности m, равного максимальному значению.
Входные данные: m – целое число;
A=[ai], – массив вещественных чисел.
Выходные данные:
k – значение максимального элемента массива, вещественное число;
q – значение индекса, определяющего местоположение максимального элемента, целое число.
Математическая модель:
k = a1 , q =1;
для i = 2..m, eсли ai > k, то k = ai, q = i
Схема алгоритма:
Код приложения:
Option Bаse 1
Private Sub Form_Activate()
Dim i As Integer, m As Integer, q As Integer, k As Double, a() As Double
m=InputBox(“ Введите размерность массива”)
ReDim a(m)
For i=1 To m
a(i)=InputBox(“a(“ & i & ”)”)
Next
k=a(1): q=1
For i=1 To m
If a(i)>k then
k=a(i): q=i
End If
Next
Print “Максимальное значение =” & k & Сhr(10) & _
”Индекс элемента массива = “ & q
Print Chr(10);“Исходный массив”
For i=1 To m
Print “a(“ & i & ”) =“ & Format(a(i),”0.000”)
Next
End Sub
Аналогичный алгоритм может быть использован и для нахождения экстремума функции и значения аргументов, при которых он достигнут.
Пример 6.
Разработать информационную технологию, позволяющую определить максимальное значение функции y=sin2(x)+cos(z/2)2 при изменении х от начального значения х0 до конечного значения хк с шагом х и z от начального значения z0 до конечного значения zk с шагом z.
Входные данные: х0, z0, хk, zk – вещественные числа;
dх – шаг изменения переменной х, вещественное число;
dz – шаг изменения переменной z, вещественное число.
Выходные данные:
fmax – максимальное значение функции, вещественное число;
xmax – аргумент х, соответствующий максимальному значению функции, вещественное число;
zmax – аргумент z, соответствующий максимальному значению функции, вещественное число.
Математическая модель:
fmax = –10000,0, xmax = х0, zmax = z0;
для x = x0..xk, z = z0..zk,
,
если y > fmax, то fmax = y, xmax = x, zmax = z
Схема алгоритма:
Код приложения:
Private Sub Command1_Click()
Dim x0 As Single, xk As Single, dx As Single, z0 As Single, zk As Single
Dim dz As Single, x As Single, z As Single, y As Single
Dim fmax As Single, xmax As Single, zmax As Single
х0 = Text1: xk = Text2: dx = Text3: z0 = Text4: zk = Text5: dz = Text6
fmax = -10000.0
xmax = х0: zmax = z0
For x = x0 To xk Step dx
For z = z0 To zk Step dz
y = Sin(x) ^ 2 + Cos((z / 2) ^ 2)
If y > fmax Then
fmax = y
xmax = x: zmax = z
End If
Next z
Next x
Print "Максимальное значение функции равно " & Format(fmax , _ "0.00") & Chr(10) & "Значение аргумента х=" & Format(xmax, _ "0.000") & Chr(10) & "Значение аргумента z=" & Format(zmax, "0.00")
End Sub
Результат выполнения кода приложения представлен на форме:
