Демонстрационные примеры
Пример 1. Вычислить на ПК наибольший элемент массива X, состоящего из 10 элементов вещественного типа, и его индекс.
Структурная схема алгоритма приведена на рис. 8
Рис. 8. Структурная схема алгоритма нахождения наибольшего элемента массива.
Текст соответствующей программы:
Sub Primer1()
Dim X(9) As Single, MAX As Single, IMAX As Byte
Dim S As String
For I=0 To 9
X(I)=InputBox (“I=”+Str (I),,”Значения элементов массива X”)
Next I
MAX=X(9)
IMAX=0
For I=0 To 9
If X(I)>MAX Then
MAX=X(I)
IMAX=I
EndIf
Next I
S=“Максимальный элемент массива “+Str (MAX)
S=S+” его порядковый номер “+Str (IMAX)
MsgBox S,,”РЕЗУЛЬТАТ”
End Sub
Выполним тестирование программы для следующих исходных данных:
X(0)=10 X(1)=-1 X(2)=0 X(3)=0.5 X(4)=1.5 X(5)=1 X(6)=-0.1 X(7)=0.1 X(8)=0.35 X(9)=-1.5
Тогда максимальный элемент должен быть равен 10, его порядковый номер 1.
Результаты работы программы совпадают с ручным счетом.
Рис 9. Результаты выполнения программы.
Пример 2.Переписать все элементы одномерного массива А размера N (N<=10) в массив D, заменив отрицательные значения на их квадраты. Сравнить исходный массив и полученный массивы на равенство, выдав на экран дисплея сообщение о результатах сравнения. Ограничение: A(I) – целые.
Текст соответствующей программы:
Sub Primer2()
Dim A(10) As Integer, D(10) As Integer, N As Byte
Dim I As Byte, FLAG As Boolean, STROKA As String
Dim STROKA1 As String
N = InputBox("ВВЕДИТЕ ЗНАЧЕНИЕ №")
For I = 0 To N
A(I) = InputBox("I=" + Str(I), "Значения элементов массива А")
Next I
STROKA = "Исходный массив:"
STROKA1 = "Результирующий массив:"
For I = 0 To N
STROKA = STROKA + " " + Str(A(I))
If A(I) < 0 Then
A(I) = A(I) ^ 2
FLAG = False
Else
FLAG = True
End If
D(I) = A(I)
STROKA1 = STROKA1 + " " + Str(D(I))
Next I
If FLAG = False Then
STROKA1 = STROKA1 + " МАССИВЫ ОДИНАКОВЫЕ "
Else
STROKA1 = STROKA1 + " МАССИВЫ РАЗНЫЕ "
End If
MsgBox STROKA1, , STROKA
End Sub
Тестирование:
1. N=5
A: 1 2 3 –6 0 0
D: 1 2 3 36 0 0
2. N=4
A: 1 2 3 6 0
D: 1 2 3 6 0
1. Примеры к заданиям 1 - 4 вариантов 1 – 11 раздела 3
Пример к заданию1.
Sub Формула()
Dim t, p, z, X, y As Single
X = Val(InputBox("")) '
y = Val(InputBox("")) '
t = (X + y) / y
p = Sin(X)
z = Format(t * p, "FIXED")
MsgBox "Результат вычислений", vbInformation, "z=" &Пример к заданию 2.
Sub PRIM2_1()
Dim A, B As Single
A = Val(InputBox(""))
B = Val(InputBox(""))
If (A - B) > 0 Then
C = Sqr(A - B)
Else
C = (A - B) ^ 2
End If
MsgBox "A= " & A & " " & "B= " & B, _
vbInformation, "C= " & Format(C, "FIXED")
End Sub
Пример к заданию 3.
Sub PRIM3_Цикл_do()
'Вычисление значения функции F =Sin(X ^ 2 + 2 * X)
'Объявление типов переменных X, H, F,S
Dim X, H, F As Single
Dim S As String
'Задание начальных значений
X = 0
H = 0.1
S = 0
'Начало цикла с предусловием
Do While X <= 1.4
'Вычисление значений функции в цикле в формате с фиксированной точкой
F = Format(Sin(X ^ 2 + 2 * X), "FIXED")
'Суммирование значений функции для вывода в одну строку
S = S + " " + Str(F)
'Изменение параметра цикла на величину шага
X = X + H
'Окончание цикла
Loop
'Вывод результата в диалоговое окно
MsgBox "Значения функции", vbInformation, "S= " & S
'Конц записи программы
End Sub
Пример 1 к заданию 4.
Sub PRIM4_МАССИВ_A()
'Объявление переменных I, J, K целого типа
Dim I, J, K As Integer
'Объявление переменных MIN, MAX и массива A(1 To 10)вещественного типа
Dim A(1 To 10), MIN, MAX As Single
'Объявление переменной S строкового типа
Dim S As String
'Начало цикла, где I- параметр цикла
For I = 1 To 10
'Заполнение элементов массива - A(I)случайными величинами
A(I) = (Rnd * 10 + I)
'Суммирование значений элементов в строку для вывода в окно
S = S + " " + Str(Format(A(I), "FIXED"))
'Продолжение цикла
Next I
'Вывод значений элементов массива в диалоговое окно
MsgBox "Вывод элементов массива", vbInformation, "S= " & S
'Задание начальных значений переменным MIN и MAX
MAX = A(1)
MIN = A(1)
'Начало цикла
For I = 2 To 10
'Поиск MIN путем сравнения MIN с последующими элементами
If A(I) < MIN Then MIN = A(I): J = I
'Поиск Mах путем сравнения Mах с последующими элементами
If A(I) > MAX Then MAX = A(I): K = I
'Продолжение цикла
Next I
'Вывод результата вычислений
MsgBox "Индексы мин. и макс. элементов " & (Chr(10) & Chr(13)) _
& "j= " & J & " " & " k= " & K, vbInformation, _
" MIN= " & Str(Format(MIN, "fixed")) & " " & " MAX= " & Str(Format(MAX, "fixed"))
'Конец кода программы
End Sub
Пример 2 к заданию 4.
Sub prim5_Массив_B()
Dim B(1 To 10), I, N, S As Integer
Dim S1 As String
S = 0
For I = 1 To 10
B(I) = Val(InputBox(""))
S1 = S1 + " " + Str(B(I))
If (B(I) >= -5) And (B(I) <= 35) Then S = S + B(I)
Next I
MsgBox "Вывод массива в строку", vbInformation, "s1= " & S1
MsgBox "Сумма значений из указанного диапазона [-5,35]" _
, vbInformation, " s= " & S
End Sub