- •Создание программы линейной структуры для вычисления выражения
- •Создание программы разветвляющейся структуры, операторов и функций для ее реализации. Задание 2,3 :
- •If условие Then операторы [Else операторы ]
- •If условие1 Then
- •Создание программ обработки одномерных массивов Задание: в одномерном числовом массиве вычислить сумму элементов, значение которых меньше значения последнего положительного элемента
- •Создание программ обработки многомерных массивов и использование процедур. Задание: Найти первое кратное «3» число и заменить на его первый элемент
- •Создание программы для обработки строковых данных Задание: Найти количество слов, в которых первый и последние символы совпадают между собой
- •Создание программы файлов поочередного доступа Задание: в числовом файле вычислить среднее арифметическое положительных элементов.
- •Создание файла прямого доступа Задание: Проверка приборов
Создание программ обработки одномерных массивов Задание: в одномерном числовом массиве вычислить сумму элементов, значение которых меньше значения последнего положительного элемента
Программный код:
Dim n As Integer, i As Integer ‘процедура кнопки вывода массива на форму
Dim x() As Single
Private Sub CmdTest_Click()
Dim newline As String, elements As String
newline = Chr(13) + Chr(10)
TxtX.Text = "Элементы массива:" + newline
For i = 1 To n
TxtX.Text = TxtX.Text + Format(x(i), "0.0 ")
Next i
End Sub
Private Sub CmdVvod_Click() ‘ввод массива
‘изменение свойств
‘кнопка Проверка ввода и Вычислить
CmdTest.Enabled = True
CmdWork.Enabled = True
n = Val(InputBox("Введите число", "Задание размерности массива"))
ReDim x(n)
If OpbHand.Value = True Then
For i = 1 To n
x(i) = Val(InputBox("Ввод " & i & "-го элемента", "Ввод массива"))
Next i
Else
For i = 1 To n
x(i) = Int(n * Rnd - n / 2)
Next i
End If
CmdVvod.Caption = "Массив введен!"
End Sub
Private Sub CmdWork_Click()
Dim Sum As Single, Product As Single
If ChbSum.Value = 1 Then
Sum = 0
For i = n To 1 Step -1
If x(i) > 0 Then
k = x(i)
Exit For
End If
Next i
Sum = 0
For i = 1 To n
If x(i) > k Then
Sum = Sum + x(i)
End If
Next i
LblSum.Text = Sum
Else
LblSum.Text = ""
End If
End Sub
Private Sub CmdReset_Click()
CmdTest.Enabled = False
CmdWork.Enabled = False
CmdVvod.Caption = "Ввести массив..."
CmdVvod.SetFocus
TxtX.Text = ""
LblSum.Text = ""
Sum = 0
For i = 1 To n
x(i) = 0
Next i
End Sub
Теория, краткое описания команд:
Описание массивов
Dim имя (индекс1[,индекс2]) [As тип], …
где имя - имя массива, удовлетворяющее стандартным правилам именования переменных;
ReDim имя (индекс1[,индекс2])
Оператор Option Base применяется для задания нижней границы индексов массива
Option Base {0 | 1}
Оператор цикла For Each...Next повторяет выполнение блока операторов для каждого элемента массива или семейства.
For Each элемент In группа
Блок операторов
[Exit For]
Next [элемент]
При работе с массивами данных возникает необходимость использования вложенных циклов (один цикл For...Next или Do…Loop или For...Each...Next располагается внутри другого):
For I = 1 To 10
For J = 1 To 10
For K = 1 To 10
...
Next K
Next J
Next I
Скриншоты:
Задание 5
Создание программ обработки многомерных массивов и использование процедур. Задание: Найти первое кратное «3» число и заменить на его первый элемент
Программный код:
Dim n As Integer, m As Integer
Dim a() As Single
Public Sub vivod_Msg()
'Вывод массива в окно сообщения
For i = 1 To n
For j = 1 To m
st$ = st$ & Format(a(i, j), "##") & " "
Next j
st$ = st$ & Chr(13)
Next i
MsgBox "Массив" & Chr(13) & " " & st$
End Sub
Public Sub vivod_Immediate()
'вывод массива в окно Отладки
For i = 1 To n
For j = 1 To m
Debug.Print a(i, j);
Next j
Debug.Print
Next i
End Sub
Public Sub vivod_Form()
'вывод массива на форму
For i = 1 To n
For j = 1 To m
TxtВвод.Text = TxtВвод.Text & a(i, j) & " "
Next j
TxtВвод.Text = TxtВвод.Text & Chr(13) + Chr(10)
Next i
End Sub
Private Sub CmdВвод_Click()
n = InputBox("Введите количество строк:")
m = InputBox("Введите количество столбцов:")
ReDim a(n, m)
LblУсловие.Caption = "Задан двумерный массив " & "a(" & n & "," & m & ")"
Call vvod
'вывод массива на форму
If Chk1.Value = 1 Then Call vivod_Form
'вывод массива в окно Отладки
If Chk2.Value = 1 Then Call vivod_Immediate
'Вывод массива в окно сообщения
If Chk3.Value = 1 Then Call vivod_Msg
End Sub
Private Sub CmdЗадача1_Click()
'Нахождения 1-го положительного в массиве
LblЗадача3.Caption = Pol(i1, j1)
End Sub
Private Sub CmdЗадача3_Click()
For i = 1 To m
For j = 1 To n
If ((a(i, j) Mod 3) = 0) Then a(i, j) = a(1, 1)
Next j
Next i
For i = 1 To m
For j = 1 To n
TxtЗадача1.Text = TxtЗадача1.Text & a(i, j) & " "
Next j
TxtЗадача1.Text = TxtЗадача1.Text & Chr(13) + Chr(10)
Next i
End Sub
Private Sub CmdЗадача2_Click()
'Вывод на форму значения функции Sr
LblЗадача2.Caption = Format(Sr(), "00.0")
End Sub
Public Sub vvod()
If Opt1.Value = True Then
'ввод массива в окне сообщения
For i = 1 To n
For j = 1 To m
a(i, j) = InputBox("введите элемент:" & i & "," & j, "Ввод элементов")
Next j, i
ElseIf Opt2.Value = True Then
'ввод массива генератором
For i = 1 To n
For j = 1 To m
a(i, j) = Int(100 * Rnd - 60)
Next j, i
End If
End Sub
Function Pol(i1, j1)
Dim flag As Integer
For j = 1 To m
flag = 0
For i = 1 To n
If a(i, j) > 0 Then
flag = 1
Pol = a(i, j): i1 = i: j1 = j
Exit For
End If
Next i
If flag = 1 Then Exit For
Next j
End Function
Public Function Sr()
Dim ko As Integer
Dim s As Single
For i = 1 To n
For j = 1 To m
If a(i, j) < 0 Then s = s + a(i, j): ko = ko + 1
Next j
Next i
Sr = s / ko
End Function
Private Sub CmdСброс_Click()
TxtВвод.Text = ""
LblЗадача3.Caption = ""
TxtЗадача1.Text = ""
LblЗадача2.Caption = ""
End Sub
Теория, краткое описания команд:
В VB есть возможность задать свойства объектов программно с помощью оператора With … End With, который выполняет последовательность операторов над одиночным объектом
With объект
[блок операторов]
End With
где объект -имя объекта;
блок операторов - один или несколько операторов, выполняемых над объектом или
.элемент управления.свойство=значение.
Процедура типа Sub.
[Private | Public] Sub имя ([список аргументов])
операторы
End Sub
Обращение к процедуре Sub
Call имя(список аргументов)
где Public - указывает, что процедура доступна для всех других процедур во всех модулях,
Private - доступна для других процедур только того модуля, в котором она описана;
Процедуры Function.
[Public | Private] Function имя([список аргументов]) [As тип]
операторы
имя = выражение
End Function
Скриншоты:
Задание 6
