Курс лекций по V B 5.0

Выражение

Loop Until выполняется условие

Пример. Проверка пароля

Private Sub Form_Load ()

Do

X$ = InputBox$ (“Пароль ?”)

Loop Until X$ = “VB”

End Sub

Для остановки бесконечного процесса используют клавиши “Break” или Run|End или закрыть приложение. В программе можно использовать оператор Exit Do (или Exit For), которые переводят программу к оператору следующему после цикла.

Сложные неопределенные циклы

В неопределенных циклах проверка происходит в конце цикла и счетчика увеличивается еще на 1. Иногда это вызывает лишнее обновление счетчика. Можно передвинуть проверку условия на начало цикла:

Do Until условие

Тело цикла Выражение

Loop

Do While

Do

Loop Until аналогичен

Do

Loop While условие

Пример.

Do Do

Loop Until N>5 ? Loop While N <=5

Do While

Do

Выражение

Loop While условие

или

Do While условие

Выражение

Loop

В таких циклах можно объединять несколько условий, например

Do While X<=0 and txtDisplay.Text=“ “

?

?

Loop

Цикл While /Wend

While условие

. . . . .

Wend

Например, While x>0

S = S+x

Wend

Может быть несколько вложенных циклов. Любой Wend относится к ближайшему While. Do Loop дает структуру и гибкость цикла.

Условные операторы

If условие Then оператор

Например, If N>=0 and N<=9 Then Print “Ok”

Если в выражении If Then обрабатывается несколько операторов, тогда используется так называемый блок If Then.

While Wend

Вместо Do While x=0

Loop

While x=0

Wend

If условное выражение Then (Enter)

несколько операторов

Else необяза-

несколько операторов тельно

End If  

If выражение Then

оператор

Else If выражение Then

оператор

.

.

.

Else

оператор

End If

Оператор Select Case

Позволяет обрабатывать несколько вариантов выбора.

Select Case переменная или выражение

Case оператор проверки условия

действие 1

.

.

.

Case . . . . . .

действие n-1

End Select

Пример:

Select Case Ball

Case Is < 13 позволяет проверить значение переменной

Grade = 2

Case Is < 18

Grade = 3

Case Is < 22

Grade = 4

Case Else

Grade = 5

End Select

Пример 1. If Then Else

Private Sub Form_QueryUnload(Cansel As Integer, UnloadMode As Integer)

X % = MgBox(«Вы уверены?», VbYesNo)

If X % = VbNo Then

Cancel = True

Else

Cancel = False

End IF

End Sub

Пример 2.

If optColor1.Value Then

Color$ = «Красный»

Else If optColor2.Value Then

Color$ = «Зеленый»

Else If optColor3.Value Then

Color$ = «Синий»

Else

Color$ = «Белый»

End If

Пример:

Select Case Den

Case 1

Print «Пн»

Case 2

Print «Вт»

.

.

.

Case 7

Print «Вс»

End Select

В фразе Case можно задавать значения переменной в виде диапазона

Select Case Den

Case 1 to 5

Print «Рабочий день»

Case Else

Print «Выходной»

End Select

либо перечислением возможных значений

Select Case Den

Case 6, 7

Print «Выходной»

Case Else

Print «Рабочий день»

End Select

Массивы

2 вида массивы: управляющие и массивы переменных (обычные массивы или списки).

Управляющие массивы состоят из нескольких однотипных элементов управления, использующих общие свойства, по отличающимся порядковым номерам или индексам. Может быть не более 255 элементов в таком массиве. При этом новые элементы на форме помещаются на место исходных элементов управляющего массива. Поэтому при размещении на форме их следует позиционировать и двигать, чтобы они не перекрывали друг друга. Например, можно создать на форме матрицу надписей или текстовых полей.

Одномерные массивы или списки определяются именем и положением элемента в списке. Например данные о выпуске продукции за 12 месяцев.

Могут быть фиксированные и динамические списки. Размеры их могут быть велики и определяются объемом свободной памяти.

У фиксированных списков размер не меняется, а динамические списки могут менять свой размер. Для фиксированных списков память выделяется в начале работы программы и существует меньший риск переполнения памяти.

Динамические списки более гибки в работе.

Списки могут быть видимыми всему приложению, данной форме (модулю) или только одной процедуре.

Создание фиксированного списка:

а) в форме (модуле). Описание помещается в разделе деклараций формы (модуля)

Dim Massiv$(20)

доступен любой процедуре модуля или формы;

б) в пределах всего проекта (глобальный)

Public Massiv(20) As String - 21 элемент от 0 до 20

или Global

в) локальный массив, который сохраняется до следующего вызова процедуры

Private Sub .

Static Massiv A(20)

Создание динамических массивов.

а) в форме

В размере декларации формы Dim DYNMAS() As String

А внутри процедуры выделяем нужный размер

Private Sub .

Dim N %

ReDim DYNMAS(N) As String

При работе команды ReDim информация в массиве теряется.

Для сохранения информации при изменении размера массива

ReDim Preserve DYNMAS(N+1) As String

или (N-1) удалит последний элемент

б) Глобальный динамический список, видимого в пределах всего проекта

Public DYNMAS() As String

или Global

Далее можно использовать ReDIM в любой процедуре всего проекта.

Ввести данные в массив можно с помощью INPUT BOX, текстового поля.

Для изменения нумерации в массиве не с 0, а с 1 - оператор Option Base 1 в разделе деклараций формы (модуля).

Можно задавать массив диапазоном значений

вместо Dim A(19)

Dim A (1980 TO 2000)

Освобождение ОП от динамический массивов Erase DYNMAS/ Для фиксированных списков Erase только очищает массив.

Окна ввода

Окна ввода- это другая возможность, помимо текстовых полей, для ввода информации. Функция InputBox$ выводит на экран модальную диалоговую панель, которая в отличие от текстовых полей имеет фиксированный размер окна. У окна ввода есто строка заголовка и 4 элемента: подсказка, командные кнопки OK и Cancel и поле ввода. Синтаксис функции: Строковая переменная=

InputBox(“подсказка”[,заголовок][поумолчанию][,X][,Y][,файл справки, контекст])

где подсказка- текстовая строка или строковая переменная (1024 символа),

заголовок -содержание строки заголовка окна,

по умолчанию - начальное содержимое окна ввода,

X,Y- расстояние между левым (верхним) краями экрана и окна ввода. Если параметры не заданы, то окно располагается по центру на 1/3 высоты экрана.

Например, MyInput$=InputBox(“Введи число”, “Запрос”,”0”,100,200)


Страница: