Лекция 11. Массивы. Индексы. Многомерные и динамические

advertisement
Проверка на простое число
•
•
•
•
•
•
•
•
•
•
•
•
•
•
Public Function Prostoe(ByVal N As Long) As Boolean
Dim i As Integer, Koren As Double
N = Abs(N)
If N Mod 2 = 0 And N <> 2 Or N = 1 Or N = 0 Then
Prostoe = False
Else
i=3
Koren = Sqr(N)
While i <= Koren And N Mod i <> 0
i=i+2
Wend
If i > Koren Then Prostoe = True Else Prostoe = False
End If
End Function
Описание переменных
Dim [WithEvents] имя_переменной[([индексы])] [As
[New] тип]
[, [WithEvents] имя_переменной[([индексы])] [As
[New] тип]] . . .
Private [WithEvents] имя_переменной[([индексы])]
[As [New] тип]
[,[WithEvents] имя_переменной[([индексы])] [As
[New] тип]] . . .
Public [WithEvents] имя_переменной[([индексы])]
[As [New] тип]
[,[WithEvents] имя_переменной[([индексы])] [As
[New] тип]] . . .
Описание массивов
Dim [имя_массива[([индексы])] [As [New] тип]
[, имя_массива[([индексы])] [As [New] тип]] . . .
Индексы
[нижний To] верхний [,[lнижний To] верхний] . ..
Option Base {1\0}
Динамические массивы
ReDim [Preserve] [имя_массива[([индексы])] [As
тип] [, имя_массива[([индексы])] [As тип]] . . .
Erase список массивов
Функции массивов
1. Array(список аргументов)
2. IsArray(список аргументов)
3. LBound(имя массива[, размерность])
4. UBound(имя массива[, размерность])
Переменный список параметров
• Public Function SumAll(ParamArray X() As
Variant) As Double
• Dim I As Variant, j As Variant
• SumAll = 0
• For I = LBound(X) To UBound(X)
• For Each j In X(I)
•
SumAll = SumAll + j
• Next j
• Next I
• End Function
Рекурсия
Public Function fakt(ByVal N As Integer)
As Double
If N = 1 Then
fakt = 1
Else
fakt = fakt(N - 1) * N
End If
End Function
N простых чисел
– Public Function n_Prostix(N As Integer) As Variant
– ReDim b(1 To N) As Long
–
–
–
–
–
–
–
–
–
–
–
–
–
–
Dim k As Integer, i As Integer, j As Integer
b(1) = 2: b(2) = 3: k = 2: i = 5
While k < N
For j = 1 To k
If i Mod b(j) = 0 Then Exit For
Next j
If j > k Then
k=k+1
b(k) = i
End If
i=i+2
Wend
n_Prostix = b
End Function
Простые чисела меньше N
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
–
Public Function Prostie_do_N(N As Integer) As Variant
ReDim b(1 To 2) As Long
Dim k As Integer, i As Integer, j As Integer
b(1) = 2: b(2) = 3: k = 2
For i = 5 To N Step 2
For j = 1 To k
If i Mod b(j) = 0 Then Exit For
Next j
If j > k Then
k=k+1
ReDim Preserve b(1 To k) As Long
b(k) = i
End If
Next i
Prostie_do_N = b
End Function
Download