- •Кафедра "Информатика и информационная безопасность"
- •Введение
- •Массивы данных
- •Объявление массивов на языке 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. Пример информационной технологии, реализующей процесс упорядочения элементов массива
- •Содержание
1.2. Производная алгоритмическая структура Пересчёт
Используется для изменения значений элементов массива, хранящихся в вычислительной среде в соответствии с заданной математической зависимостью.
Особенности алгоритма.
1. Значения элементов массива, которые требуется пересчитать в соответствии с заданной математической зависимостью, хранятся в вычислительной среде.
2. Математическая зависимость, в соответствии с которой изменяются значения элементов массива, задаётся структурой Следование, которая служит телом цикла.
3. Алгоритм разрабатывается в зависимости от того, требуется или нет сохранять значения элементов исходного массива.
Пример 3.
Разработать информационную технологию, позволяющую уменьшить значения элементов массива А произвольной размерности m в k раз (k ≠ 0). Новый массив не заполняется.
Входные данные:
А = [ai], – массив вещественных чисел;
k – целое число; т – целое число.
Выходные данные:
А = [ai], – пересчитанный массив вещественных чисел.
Математическая модель:
для i
= 1..m,
ai
=
при k
0
Схема алгоритма:
Код приложения:
Private Sub Command1_Click()
Dim m As Integer, k As Integer, i As Integer
Dim a() As Single
m=InputBox(“Введите размерность массива ”)
ReDim a(1 To m)
Print “Введите значения элементов массива”
For i=1 To m
a(i)=InputBox(“a(“ & i & ”)”)
Next
Print “Исходный массив”
For i=1 To m
Print “a(“ & i & ”) =“ & Format(a(i),”0.00”)
Next
k=InputBox (“Введите значение k”)
If k<>0 Then
For i=1 To m
a(i) = a(i)/k
Next
Print Chr(10);“Результирующий массив”
For i=1 To m
Print Format(a(i),”0.00”
Next
Else
Print “На нуль делить нельзя”
End If
End Sub
2. Вычислительный процесс поиск
Используется для нахождения местоположения элементов или их значений в массиве в соответствии с условием поиска. Условие поиска определяется операциями отношения (<, <=, >, >=, <>) между двумя операндами. Одним из операндов служит элемент массива, а другим – переменная, называемая Ключом поиска. Различают следующие производные алгоритмические структуры:
– Поиск по ключу;
– Поиск максимума;
– Поиск минимума.
2.1. Производная алгоритмическая структура Поиск по ключу
Используется для поиска местоположения элементов массива в соответствии с условием поиска, заданного выражением:
<Элемент массива> <Операция отношения> <Ключ поиска>
Особенности алгоритма.
1. Ключу поиска присваивается начальное значение, определяющее элементы массива, местоположение которых должно быть найдено. В большинстве случаев значение ключа поиска задаётся вводом.
2. Организуется циклический вычислительный процесс: цикл или цикл в цикле. Телом цикла служит структура Развилка, определяющая условие, в соответствии с которым должны быть найдены элементы массива. Если значение элемента массива удовлетворяет условию поиска, то значение его индексов выводится на визуальное устройство или сохраняется в вычислительной среде.
Если условие поиска ложно, осуществляется переход к следующему элементу массива.
3. В алгоритме предусматриваются действия, которые выполняются, если условие поиска окажется ложным для всех элементов массива. В этом случае вводится понятие "Флажок".
"Флажок" – это переменная, которая, как правило, может принимать два значения: True (Истина) или False (Ложь). Перед началом циклического вычислительного процесса "Флажку" присваивается начальное значение, допустим, False. В теле цикла в случае, когда значение условия поиска станет истинным, "Флажку" присваивается новое значение, допустим, True.
После окончания циклического вычислительного процесса проверяется значение "Флажка": если "Флажок" изменил своё значение, значит, условие поиска было выполнено хотя бы один раз, если нет, то условие поиска не было выполнено ни разу.
П р и м е ч а н и е. Если условие поиска задано точным равенством (=), то типы элементов массива и ключа поиска должны быть одинаковыми, допускающими сравнение (Byte, Integer, Long, String).
Пример 4.
Разработать информационную технологию, позволяющую определить индексы элементов квадратной матрицы А произвольной размерности m т, расположенных на главной диагонали, значения которых равны ключу поиска (k), задаваемому вводом.
Входные данные: m – целое число;
A=[aij],
,
– массив целых чисел;
k – целое число.
Выходные данные: значения найденных индексов или сообщение об их отсутствии.
Математическая модель:
flag = Ложь;
для i = 1..m, если aii = k, то flag = Истина и вывод i;
eсли flag = Ложь, то вывод сообщения.
Схема
алгоритма:
Код приложения:
Private Sub Form_Activate()
Dim m As Integer, i As Integer, j As Integer, k As Integer
Dim flag As Boolean, a() As Integer
m = InputBox("Введите количество строк матрицы")
ReDim a(1 To m, 1 To m)
For i = 1 To m
For j = 1 To m
a(i,j) = InputBox("a(" & i & "," & j & ")")
Next
Next
k = InputBox("Введите значение ключа поиска")
flag = False
For i = 1 To m
If a(i,i) = k Then
flag = True
Print "Индекс элемента =" & i
End If
Next
If flag = False Then
MsgBox "Элементов со значением " & k & " нет"
End If
Print “Значения элементов матрицы A:”
For i=1 To m
For j=1 To m
Print a(i,j);
Next
Next
End Sub
