ELSEIF <условие 2> THEN

<Оператор 2>

ELSE

<Оператор 3>

END IF

В этом случае для оператора ELSEIF не ставится в соответствие END IF.

c. Переключатели

Оператор IF позволяет реализовать выбор между двумя вариантами дальнейших действий. Однако иногда в программе необходимо выбрать один из нескольких вариантов. Конструкция вложенных операторов IF при этом может быть очень сложной и запутанной, поэтому в современных языках используют другие конструкции множественного выбора.

В последнее время для реализации множественного выбора большинство популярных языков программирования имеют оператор выбора. Оператор выбора используется для реализации нескольких альтернативных вариантов действий в зависимости от значения выражения, называемого переключатель.

Формат оператора в общем виде:

SELECT CASE <переключатель>

CASE <условие 1>

<оператор 1>

CASE < условие 2>

<оператор 2>

. . .

[CASE ELSE

<блок операторов n>]

END SELECT

 

Работает этот оператор следующим образом:

• вычисляется значение выражения-переключателя;

• далее начинается проверка соответствия полученного значения условию 1;

• в случае соответствия этих значений выполняется оператор 1 и далее управление передается оператору, следующему за оператором END SELECT;

• если значение переключателя не соответствует условию 1, то проверяется соответствие условию 2 и т.д.;

• если же не найдено соответствие ни одному из условий, то выполняются операторы, следующие за CASE ELSE или выполняется оператор, следующий за оператором END SELECT,если CASE ELSE отсутствует.

При записи оператора выбора следует иметь в виду, что оператор выполняет проверку условий строго по порядку. Поэтому надо следить за тем, чтобы условия не «перекрывали» друг друга. Например, если первым поставить условие x>0, а затем x>10, то первое условие «перекроет» второе (и до второго условия оператор не дойдет).

Типы результата выражения-переключателя и условия должны соответствовать друг другу.

Условие выбора может содержать список, в котором элементы отделяются запятыми, эти элементы списка условия можно записать: тремя способами:

- как выражения или константы;

- задать границы диапазона:

<нач. значение> TO <конеч. значение>

- задать условие через операцию отношения:

IS <знак операции> <выражение>

Пример:

SELECT CASE x

CASE 1, 3, 5

y=x^2

CASE 6 TO 10, 20

y=x+2

CASE 25, IS >= 30

y=2*x

CASE ELSE

y=2*x+1

END SELECT

 

5. Программирование циклических процессов

 

a. Оператор цикла FOR

 

Для реализации цикла со счетчиком используется оператор FOR.

Общий формат оператора:

FOR <счетчик цикла> =<нач. знач>TO <конеч. знач> [STEP <шаг>]

<оператор 1>

. . .

<оператор n>

NEXT [<счетчик цикла>]

 

Где <счетчик цикла> – это числовая переменная. В начале выполнения цикла она принимает значение, задаваемое выражением <нач. знач>;

<оператор 1> . . . <оператор n> составляют тело цикла, которое будет выполняться заданное число раз;

<шаг> определяет значение, на которое будет изменяться счетчик цикла при выполнении каждого шага цикла.

Шаг изменения счетчика цикла может быть любым положительным или отрицательным числом, а также выражением. Если шаг больше 0, то цикл завершится когда <счетчик цикла] станет больше <конеч. знач>. Если шаг меньше 0, то цикл завершится когда <счетчик цикла] станет меньше <конеч. знач>.Если шаг равен 1, то его в операторе можно не записывать.

Чтобы прервать цикл до его завершения и передать управление первому оператору, следующему за NEXT, используют оператор EXIT FOR.

 

b. Операторы циклов с предусловием

 

1. Тело цикла будет выполняться до тех пор, пока значение условия истинно.

DO WHILE<условие>

<оператор 1>

. . .

<оператор n>

LOOP

 

2. Тело цикла будет выполняться до тех пор, пока значение условия ложно.

DO UNTIL <условие>

<оператор 1>

. . .

<оператор n>

LOOP

Чтобы прервать цикл до его завершения и передать управление первому оператору, следующему за LOOP, используют оператор EXIT DO.

 

c. Операторы циклов с постусловием

 

1. Тело цикла будет выполняться до тех пор, пока значение условия ложно.

DO

<оператор 1>

. . .

<оператор n>

LOOP UNTIL <условие>

 

2. Тело цикла будет выполняться до тех пор, пока значение условия истинно.

DO

<оператор 1>

. . .

<оператор n>

LOOP WHILE<условие>

 

6. Массивы

 

В Visual Basic различают два вида переменных – простые переменные и переменные структурного типа. Переменные структурного типа предназначены для идентификации нескольких данных. Частным случаем переменной структурного типа является массив.

Массив – это упорядоченный набор однотипных значений – элементов массива.

Массив имеет имя, размер и базовый тип, которые задаются при описании массива.

Тип элементов массива определяет тип самого массива и называется базовым типом.

Имя массива записывается по тем же правилам, что и имена переменных. Имя массива задает имя каждому элементу массива: каждый элемент массива обозначается этим именем и индексом, который определяет номер (место) этого элемента в массиве.

Размер массива – это количество элементов в массиве.

Массивы могут быть одномерными и многомерными. Но мы ограничимся рассмотрением только одномерных и двумерных массивов.

Одномерные массивы – массивы, в которых элементы пронумерованы последовательно по порядку: первый элемент, второй, третий и т.д. Для обозначения элементов одномерного массива используется один индекс.

Двумерные массивы – массивы, в которых данные условно организованы в виде таблицы (матрицы), где положение каждого элемента определяется номером строки и номером столбца. Для обозначения элементов двумерного массива используются два индекса: первый индекс для обозначения номера строки, второй индекс для обозначения номера столбца.

Значения индексов можно задать непосредственно числом (прямая адресация) – a(1), a(4,2), …или косвенно, указав в индексе идентификатор переменной, которая позволит вычислить индекс (косвенная адресация) – a(i), a( i, j+2).

При работе с массивами в программе они должны быть объявлены (описаны), т.е. указаны имя массива, тип элементов массива, его размерность.

При обращении к элементу массива, значение индекса которого выходит за допустимые границы, появляется сообщение об ошибке.

Синтаксис оператора описания массива:

[Public/Private] DIM <ИмяМассива>(<размерность>) AS <ТипДанных>

В качестве размерности указывается либо верхняя граница изменения индекса, либо конкретный диапазон изменения значений индексов: Iн TO Iк.

Пример:

DIM s1 (15), s2 (15) AS STRING

DIM c (9,11) AS INTEGER

Нижняя граница изменения индексов по умолчанию равна 0. То есть если описан массив:

DIM a(15) AS INTEGER

это значит, что можно обращаться к элементам: a(0), a(1), a(2), a(3), …, a(15).

Для изменения начала отсчета индексов служит специальный оператор, который устанавливает начало отсчета либо с 0, либо с 1:

OPTION BASE 1

В этом случае

DIM a(15) AS INTEGER

описывает массив a(1), a(2),…,a(15).

Иногда в процессе выполнения программы размер массива требуется изменить. В этом случае первоначально массив объявляется как динамический (в объявлении не указывается его размерность).

Количество элементов в динамическом массиве и его размерность в процессе выполнения программы можно переопределить с помощью оператора ReDim. Например:

Dim s ( ) As String

. . .

n = 15

ReDim s ( n )

. . .

 

7. Процедуры и функции

 

Рассмотрим элементы, которые могут входить в состав проекта.

Процедура представляет собой поименованную последовательность совместно выполняемых инструкций (операторов).

Различают следующие типы процедур:

• процедуры обработки событий;

• процедуры макросов;

• процедуры пользователя.

Процедуры обработки событий связаны с каким-либо объектом, вызываются тогда, когда происходит соответствующее событие, и имеют следующий синтаксис:

Private Sub <ИмяОбъекта_Событие( )>

<Код обработки события>

End Sub

где ИмяОбъекта – имя объекта, с которым связывается процедура,

Событие – вид обрабатываемого события.

Например, процедура обработки события Click (щелчок) для объекта CommandButton1 (кнопка) имеет вид:

Private Sub CommandButton1_Click( )

<Код обработки события>

End Sub

Процедуры обработки макросов создаются при записи макросов. Макрос можно вызывать из программы оператором вызова процедуры, комбинацией клавиш либо щелчком на значке, связанным с макросом. Эти процедуры имеют синтаксис:

Sub <Имя макроса( )>

<Программный код макроса>

End Sub

Процедура пользователя создается им для выполнения каких-либо типовых действий в рамках разрабатываемой программы. Синтаксис процедуры пользователя:

[Private/Public] Sub <ИмяПроцедуры [(СписокПараметров)]>

<Тело подпрограммы (строки кода)>

End Sub

Необязательный элемент <СписокПараметров> программы служит для передачи процедуре исходных данных для вычислений и состоит из элементов списка, разделенных запятыми. Элемент списка параметров имеет синтаксис