Циклы
Функция. Процедура.
Некоторые свойства кнопок.
Appearance | Трёхмерный эффект |
BackColor | Цвет фона |
Cancel | Кнопка реагирует на нажатие «Esc» |
Caption | Надпись |
Default | Кнопка реагирует на нажатие «Enter» |
Draglcon | Пиктограмма при перемещении |
DragMode | Ручной или автоматический режим перетаскивания |
Enabled | Доступность элементов |
Font | Вид шрифта |
Height | Высота шрифта |
HelpContextId | Привязка к собственному справочному файлу |
Index | Индекс элемента управления в массиве |
Left | Левый верхний угол |
MouseIcon | Изображение указателя мыши на кнопке |
MousePointer | Форма указателя мыши на кнопке |
Name | Имя элемента управления |
TabIndex | Порядок перемещения фокуса при нажатии Tab |
TabStop | Возможность перехода элемента управления с помощью кнопки «Tab» |
Tag | Содержит любую необходимую дополнительную информацию |
Top | Левый верхний угол, координата «Y» |
True/False | Разрешить/Запретить |
Visible | Видимость (True/False) |
WhatThisHelpID | Привязка к собственному справочному файлу |
Width | Ширина объекта |
Процедура – это подпрограмма, она начинается с оператора Sub и заканчивается End Sub, между которыми помещается текст процедуры. Такие процедуры могут вызываться самим VB или другими процедурами.
|
|
Private Sub Command1_Click()
Тело процедуры
End Sub
Вызов процедуры. Для вызова процедуры используется оператор Call: Call имя_процедуры.
Функция.
Функция построена точно также, как процедура, однако есть отличие: как и в математике, результатом функции является возвращаемое ею значение. Примером функции являются программа поиска минимального значения массива:
Function minlarr() As Integer, num As Integer, left As Integer, As Variant
Dim mh As Variant
Mh = Arr(left): num = left
For i = left + 1 To right
If Arr(i)<mh Then mh=Arr(i): num = 1
Next
min = mh
End Function
(ищет минимальное значение массива)
For…To…Next. For счётчик=начальное_значение To конечное_значение [Step(шаг)].
Пример программы:
For i=1 To 100
Print i*100
Next i ‘закрытие цикла
For L=100 To 5 Step -0.5
x=y*L
Next
For i=1 To 5
For j=10 To 20
Print i+j
Next j,i
Оператор цикла For Each…Next
Это специфическая форма цикла For предназначена для выполнения некоторой операции с каждым объектом, входящим в состав некоторой коллекции объектов (такой операцией может быть, например, вызов метода или присвоение значения свойству).
Синтаксис оператора:
For Each Имя объекта In Имя коллекции
Операции над объектом
Next Имя объекта
Пример
( изменяется свойство BackColor у всех этикеток «Label», лежащих на форме)
Dim x As Object
For Each x In Form.Controls
IF TypeName (x)= «Label» Then
X BackColor=0
End IF
Next x
Оператор цикла Do While…Loop / Do…Loop While
Эти 2 разновидности цикла тесно взаимосвязаны. Их часто рассматривают как один из базовых видов цикла. Циклы For…Next применяют в тех случаях, когда количество проходов и диапазон изменения счетчика заранее известны. Циклы While предназначены для ситуаций, когда количество проходов цикла заранее не известно, но зато известно условие выхода из цикла.
|
|
Синтаксис цикла While:
Do While Условие выхода
Группа операторов Цикл с предусловием
Loop
Do
Группа операторов Цикл с постусловием
Loop While Условие выхода
Отличие между ними в том, что условие выхода проверяется в одном случае перед очередным проходом (с предусловием), а в другом случае – после выхода (с постусловием).
Если в цикле опустить условие выхода или это условие выполняется всегда, то получится бесконечный цикл(выход из такого цикла – Ctrl+Break)
Пример
Do While 2>1
Print «Вечный цикл:-Р»
Loop
Оператор цикла Do Until…Loop/ Do… Loop Until
По своей цикл Until подобен циклу While лишь с той разницей, что проходы цикла выполняются до тех пор, пока условие выхода не выполнится.
Пример
Dim N As Integer
N=100
Do
N=N-1
Print N
Loop Until N<11
Выход из цикла Exit For / Exit Do
C помощью оператора Exit… можно осуществить досрочный выход из цикла вне зависимости от значения, которое имеет в данный момент условие выхода.
Пример
Dim N As Integer
N=10
Do While N>1
N=N-1
Dobug.Print N
IF N=5 Then Exit Do
Loop
Условный оператор IF…End IF
Синтаксис:
If логическое выражение Then оператор
End If
If a=5 Then c=7:b=20
End If
Условный оператор IF,,,Else,,,Else IF… End IF
IF логическое выражение1 Then
Группа операторов
Else IF логическое выражение2 Then
…
Else
Группа операторов
End IF.
Пояснение – если не выполнилось выражение 1, начинает проверять на 2.
IF a=b or c<>d Then
B=d
a=20
Else
C=d
End IF
Условный оператор Select Case…End Select
Конструкция Select Case «принимает решения» на основе анализа значения одного выражения, при этом это выражение указывается в строке Select Case.
Select Case анализируемое выражение
Case значение1
Группа операторов
Case значение2
Группа операторов
Case значениеN
Группа операторов
Case Else
Группа операторов
End Select.
Массив – набор однотипных простых переменных, объединенных одним именем и доступных через это имя и порядковый номер переменной в наборе.
Каждая отдельно взятая переменная называется элементом массива, который имеет свой порядковый номер, называемый индексом.
Количество элементов массива может быть бесконечным. Ограничения накладываются конкретным языком программирования и операционной системой.
Элементы массива обладают непрерывной номерацией определенного диапазона.
Различают статистические и динамические массивы. Границы статистического массива устанавливаются на этапе разработки и не могут изменяться в течении выполнения программы. Динамические массивы могут изменять свои размеры в ходе выполнения программы.
Статистические массивы.
Для объявления массива используется оператор Dim:
Dim имя_массива (начальное_значение To конечное_значение) (Dim A (15 To 30))
Dim имя_массива (размерность) (Dim A (50))
Указание верхней и нижней границ можно задать любым диапазоном индекса. По умолчанию (если задана только размерность) начальный индекс равен нулю. Option Base позволяет задать индексацию массива с единицы (Option Base 1). Этот оператор должен находиться в секции General Declaration. Допустимое значение Option Base только «0» или «1».
Область определения. Статистические массивы нельзя определить локально внутри процедуры, а только глобально.
Многомерные массивы.
При объявлении многомерного массива можно задавать только верхние границы размерности, которые разделяются запятыми.
Dim a (2 To 5, 1 To 5, 1 To 5, 1)
Dim b (1, 2, 3, 4, 5, 6, 7)
Динамический массив.
Если при решении задач количество входных данных заранее неизвестно, то в этом случае можно объявить динамический массив, что позволяет изменять его размер или размерность во время выполнения приложения. Динамический массив создаются в два этапа.
|
|
1) Сначала массив определяется в секции General Declaration (формы, модуля, класса) без указания размера:
Dim arrays () As Integer.
2) В процессе выполнения процедуры используется оператор ReDim, который устанавливает фактическое значение размерности массива.
Private Sub Command1_Click()
ReDim arrays (50, 100)
…
End Sub
В отличие от Dim, оператор ReDim используется только в процедурах. При этом указывать тип данных необязательно, особенно, если он определён оператором Dim. Для того, чтобы не потерять содержимое массива при изменении его размерности, нужно использовать ReDim совместно с оператором Preserve. Использование совместно с ReDim Preserve позволяет сохранять содержимое массива при изменении его размерности или размера.
22. Окно InputBox
Окно InputBox состоит из:
1) Строка заголовка;
2) Приглашение к вводу;
3) Поле ввода со значением, предлагаемое по умолчанию;
4) Две кнопки: OK/Cancel.
InputBox (promt!, [title], [,default] [,xpos] [,ypos] [,help, context])
promt определяет текст, отображающийся в диалоговом окне как приглашение;
title отвечает за надпись заголовка, если этот параметр не указан, то отображается название приложения;
default определяет значение по умолчанию, отображаемое в строке ввода;
xpos и ypos указывают координаты верхнего левого угла окна, по умолчанию окно отображается в середине экрана.
A = InputBox («Подсказка», «Заголовок», Значение_default).
23. Окно MsgBox
Окно MsgBox:
MsgBox Promt [,Buttons], [Title] [,Helpfile, Context].
MsgBox «Здравствуй, мир», VbExclamation, «Приветствие».
Ответ = MsgBox («Закончить?», VbCritical, «End»).
TabIndex – передача фокуса после загрузки формы:
Private Sub Form_Load()
Command1.TabIndex=0
Command2.TabIndex=1
Command3.TabIndex=3
…
End Sub