Слайд 1Массивы
Массивом называется упорядоченный набор данных, имеющих один и
тот же тип
и располагающихся в памяти непосредственно друг за
другом.
Массивы могут быть:
Статические
и динамические;
Числовые и символьные;
Одномерные и многомерные.
Как правило, одномерный массив называют вектором:
A(7)={3,8,4,1,2,5,4}
Двумерный массив является частным случаем многомерного массива и
представляет собой матрицу (таблицу)
A(4,4)= {3,4,5,1
2,9,0,3
4,7,9,5
3,2,6,7}
Слайд 2Описание массивов осуществляется с помощью оператора Dim.
Статический массив:
Dim A(1
to 7) As Integer, B(1 to 7, 1 to 7)
as Single
Динамический массив:
Dim N as Integer, A() as Single
___________________________
Private Sub Command1_Click()
………………………………………
N=CInt(InputBox(“N=”))
ReDim A(1 to N) as Single
………………………………………
End Sub
Слайд 3Основные способы ввода и вывода элементов массива
Ввод элементов одномерного
массива осуществляется в цикле.
Ввод элементов двумерного массива осуществляется в двух
Вложенных
циклах.
ПРИМЕР. Сумма десяти вещественных чисел.
Слайд 4
Dim a(1 To 10) As Single
.
Private
Sub Command1_Click()
Dim i As Integer
For i = 1 To 10
a(i) = CSng(InputBox("A(" + CStr(i) + ")="))
Next i
End Sub .
Private Sub Command2_Click()
Dim s As Single, i As Integer
s = 0
For i = 1 To 10
s = s + a(i)
Next i
Text1.Text = CStr(s)
End Sub .
Private Sub Command3_Click()
End
End Sub
Слайд 5ПОДКЛЮЧЕНИЕ
ДОПОЛНИТЕЛЬНЫХ
ЭЛЕМЕНТОВ
УПРАВЛЕНИЯ
Слайд 7Microsoft FlexGrid Control 6.0
Слайд 9Dim a() As Single, n As Integer
.
Private Sub Command1_Click()
Dim i As Integer
List1.Clear
Open App.Path + "\massivin.txt" For Input As #1
Input #1, n
Label4.Caption = CStr(n)
ReDim a(1 To n) As Single
For i = 1 To n
Input #1, a(i)
List1.AddItem (CStr(a(i)))
Next i
Close #1
End Sub .
Private Sub Command2_Click()
Dim x As Single, i As Integer, k As Integer
For i = 1 To n - 1
For k = i To 1 Step -1
If a(k) > a(k + 1) Then
x = a(k)
a(k) = a(k + 1)
a(k + 1) = x
End If
Next k
Next i
For i = 1 To n
List2.AddItem (CStr(a(i)))
Next i
End Sub .
Private Sub Command3_Click()
End
End Sub
Слайд 10СОРТИРОВКА ВЫБОРОМ
МИНИМАЛЬНОГО ЭЛЕМЕНТА
Слайд 11
Dim x() As Single, n As Integer
Private Sub Command1_Click()
Dim i
As Integer
n = CInt(InputBox("N="))
MSFlexGrid1.Rows = n + 1
MSFlexGrid1.Row = 0
MSFlexGrid1.Col
= 0
MSFlexGrid1.Text = "i"
MSFlexGrid1.Col = 1
MSFlexGrid1.Text = "Не отсорт"
MSFlexGrid1.Col = 2
MSFlexGrid1.Text = "Отсорт"
ReDim x(1 To n) As Single
For i = 1 To n
x(i) = CSng(InputBox("a(" + CStr(i) + ")="))
MSFlexGrid1.Row = i
MSFlexGrid1.Col = 0
MSFlexGrid1.Text = CStr(i)
MSFlexGrid1.Col = 1
MSFlexGrid1.Text = CStr(x(i))
Next i
End Sub
Private Sub Command2_Click()
Dim z As Integer, i As Integer, k As Integer, L As Single
For z = 1 To n - 1
k = z
For i = z To n
If x(k) > x(i) Then k = i
Next i
L = x(k)
x(k) = x(z)
x(z) = L
Next z
MSFlexGrid1.Col = 2
For i = 1 To n
MSFlexGrid1.Row = i
MSFlexGrid1.Text = CStr(x(i))
Next i
End Sub
Private Sub Command3_Click()
End
End Sub
Слайд 12ДВУМЕРНЫЕ МАССИВЫ
Ввод двумерного массива целесообразно
осуществлять из файла, так как при
отладке
программы экономится время на
ввод значений элементов массива.
ПРИМЕР. Ввод двумерного массива
из
файла и вывод его в таблицу и файл.
Слайд 17ПРОГРАММНЫЙ КОД
Dim a() As Single, n As Integer, m As
Integer
Private Sub mnuExit_Click()
End
End Sub
Private Sub mnuOpen_Click()
Dim s As String, i
As Integer, j As Integer
CommonDialog1.Action = 1
s = CommonDialog1.FileName
Open s For Input As #1
Input #1, n, m
ReDim a(1 To n, 1 To m) As Single
For i = 1 To n
For j = 1 To m
Input #1, a(i, j)
Next j
Next i
Close #1
End Sub
Слайд 18Private Sub mnuSave_Click()
Dim s As String, i As Integer, j
As Integer
CommonDialog1.Action = 2
s = CommonDialog1.FileName
Open s For Output As
#1
With MSFlexGrid1
.Rows = n + 1
.Cols = m + 1
For i = 1 To n
.Col = 0
.Row = i
.Text = CStr(i)
For j = 1 To m
.Row = 0
.Col = j
.Text = CStr(j)
.Row = i
.Text = CStr(a(i, j))
Print #1, a(i, j); " ";
Next j
Print #1, ""
Next i
Close #1
End With
End Sub
Слайд 19ПРОЦЕДУРЫ
Visual Basic поддерживает следующие виды процедур:
Процедуры общего вида, создаваемые пользователем
Sub…End Sub.
Процедуры – функции, создаваемые пользователем Function…End Function
Процедуры обработки событий.
Процедуры
свойств Get() и Set().
Слайд 20Процедура Sub…End Sub
Формат:
Sub ( as , as ,…,
_
as )
End Sub
Для вызова процедуры используется ключевое слово Call
Private
Sub Command1_Click()
……
Call <Имя>(<перем1>,<перем2>,…,<перемN>)
……
End Sub
Слайд 21Процедура-функция Function…End Function
Формат:
Function ( as , as ,…,
_
as ) as
End Function
Вызов процедуры-функции похож на вызов
стандартной математической
функции.
Private Sub Command1_Click()
……
Z=<Имя>(<перем1>,<перем2>,…,<перемN>)
……
End Sub
Слайд 22ПЕРЕДАЧА ПАРАМЕТРОВ
Передача параметров в процедуры
Sub…End Sub и Function…End Function
может осуществляться
как по ссылке, так
и по значению.
Передача параметров по значению:
Sub Name1(By
Val x() as Single, By Val N as Single)
….
End Sub
Слайд 23ПЕРЕДАЧА ПАРАМЕТРОВ
Передача параметров по ссылке:
Sub Name1(By Ref x() as Single,
By Ref N as Single)
….
End Sub
или
Sub Name1(x() as Single, N
as Single)
….
End Sub
По умолчанию параметры передаются по ссылке.
Слайд 24ПРИМЕРЫ
Поиск коэффициентов уравнения
регрессии y=a*x+b
Sub MNK1(x() as single, y() as single,
N as integer, a as single, _
b as single)
Dim i
as integer, s1 as single, s2 as single, s3 as single, s4 as single
s1=0:s2=0:s3=0:s4=0
For i=1 to N
s1=s1+x(i)
s2=s2+x(i)*x(i)
s3=s3+x(i)*y(i)
s4=s4+y(i)
Next i
a=(N*s3-s1*s4)/(N*s2-s1*s1)
b=(s2*s4-s1*s3)/(N*s2-s1*s1)
End Sub
Слайд 25ПРИМЕРЫ
Поиск коэффициента уравнения регрессии y=a*x
Function A (x() as single, N
as integer) as single
Dim i as integer, s1 as single,
s2 as single
s1=0:s2=0
For i=1 to N
s1=s1+x(i)*y(i)
s2=s2+x(i)*x(i)
Next i
A=s1/s2
End Function