logo
VBA-методПособие

4.5 Оператор выбора Select Case

 

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

    1. 1.           В редакторе Visual Basic напишите код процедуры, как на рис. 34

 

Рис. 34 Код процедуры Ball

 

2.Запустите её на выполнение и убедитесь в том, что она работает

На этом примере видно, что за счёт вкладывания одного условного оператора в другой, конструкция усложняется, становится тяжёлой для восприятия. В подобных случаях хорошей альтернативой оператору If служит оператор выбора Select Case, который позволяет выбрать одно из нескольких возможных продолжений программы.

 

Синтаксис оператора Select Case следующий:

 

Select Case КлючВыбора

Case Is выражение

оператор

Case диапазон значений

оператор

Case диапазон значений

оператор

Case диапазон значений

оператор

Case Else

оператор

End Select

 

Например:

 

Select Case vozrast

Case Is <=7

Msgbox”Ты дошкольник”

Case 8 to 16

Msgbox”Ты учишься в школе”

Case 17 to 30

Msgbox”Тебе пора заняться делом”

Case 31 to 60

Msgbox”Кто не работает, тот не ест”

Case Else

Msgbox”Вы заслужили отдых”

End Select

 

Если значение переменной vozrast меньше или равно 7, отображается сообщение ”Ты дошкольник”. Если значение переменной vozrast находится в диапазоне от 8 до 16, отображается сообщение ”Ты учишься в школе”. Если значение переменной vozrast находится в диапазоне от 17 до 30, отображается сообщение ”Тебе пора заняться делом”. Если значение переменной vozrast находится в диапазоне от 31 до 60, отображается сообщение ” Кто не работает, тот не ест”. Если значение возраста не равно ни одному из предложенных диапазонов значений, выводится сообщение ”Заслуженный отдых”.

1. В редакторе Visual Basic напишите код процедуры, как на рис. 35

Рис. 35 Код процедуры Ball с оператором Select Case

 

2. Запустите её на выполнение и убедитесь в том, что она работает

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

4.6    Циклический алгоритм

 

Очень часто в программах надо выполнить определённые операторы несколько раз. Не логично записывать эту последовательность действий 20 или 50 раз подряд. В этих случаях организуют циклические вычисления. Алгоритм называется циклическим, если определенная последовательность шагов выполняется несколько раз в зависимости от заданной величины, которая называется параметром цикла.

 

 

4.7    Оператор цикла For…Next

 

Общий вид в алгоритме конструкции оператора For…Next, который позволяет выполнить группу операторов или один оператор заданное количество раз, следующий:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Синтаксис для цикла For…Next следующий:

 

For I= N1 To N2 Step h

P1

.

. Тело цикла

Pn

Next

 

Где For(для), To(до), Step(шаг), Next(следующий) - служебные слова VBA, а P1, Pn - операторы. Step является необязательным параметром. Если он опущен в программе, то значение параметра I увеличивается на 1. Параметр Step может быть любым действительным числом, как целым, так и дробным, как положительным, так и отрицательным. Работает оператор For следующим образом:

При первом вхождении в цикл, параметр цикла I принимает значение равное величине нижней границы N1 и выполняется оператор или операторы в теле цикла. Затем значение параметра увеличивается на величину шага и вновь выполняется тело цикла. Подобные действия будут повторяться до тех пор, пока значение параметра цикла не станет больше величины N2, после чего осуществляется выход из цикла.

 

В качестве примера выполните следующее задание:

1. В редакторе Visual Basic создайте процедуру и назовите её Цикл

2. Введите код процедуры, как на рис. 36

Рис. 36 Код процедуры Цикл

 

3. Запустите её на выполнение и убедитесь в том, что она работает

 

Переменная счёт выступает в этом примере в качестве параметра цикла, и будет менять своё значение от 1 до 4. В цикле 4 раза будет появляться окно сообщения за счёт использования функции MsgBox. С помощью значка конкатенации к сообщению будет добавляться значение переменной счёт, а также слово год(а).

 

Ещё одним примером, демонстрирующим работу оператора For…Next, является решение задачи: Найти сумму целых чисел от 1 до 50.

Код процедуры представлен на рис. 37

Рис. 37 Код процедуры Сумма целых чисел

 

В этом примере, описав, переменные счёт и сумма как целочисленные, обнуляется значение переменной сумма. Для чего это делается? Мы берём произвольную ячейку памяти компьютера и должны быть уверены в том, что в ней ничего не содержится. Ведь в цикле будет выполняться оператор сумма = сумма + счёт, то есть к тому что было в ячейке сумма прибавляется значение переменной счёт. И мы должны знать, что предварительно туда занесёно значение нуля. В результате запуска процедуры на выполнение Вы получите ответ: 1275.

Рис. 38 Окно с ответом

 

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

 

4.8    Сложный циклический процесс с использованием оператора For…Next

Вложенные циклы

 

Если телом цикла является циклическая структура, то такие циклы называются вложенными. Цикл, содержащий в себе другой цикл, называют внешним, а цикл, содержащийся в теле другого цикла, называют внутренним.

Общий вид в алгоритме конструкции сложного цикла For…Next следующий:

 

 

 

 

Синтаксис операторов сложного цикла:

For I= N1 To N2 For J= M1 To M2

P1

.

. тело цикла

Pn

Next

Next

 

При первом вхождении в цикл, параметр внешнего цикла I принимает значение равное N1 и управление передаётся во внутренний цикл, в котором параметр цикла j принимает значение, равное M1 и выполняется оператор (операторы), которые записаны во внутреннем цикле. Затем параметр внутреннего цикла j увеличивается на 1, и вновь выполняется тело цикла. Операторы P1, Pn будут выполняться до тех пор, пока параметр цикла j не станет больше величины М2. Затем параметр внешнего цикла I увеличивается на 1, и вновь начинает свою работу внутренний цикл, в котором параметр цикла j будет изменяться от М1 до М2, и при каждом прохождении цикла будут выполняться операторы P1 и Pn. Внешний цикл закончит свою работу, когда параметр цикла I станет больше величины N2.

Рис. 39 Пример работы сложного цикла

 

1. В редакторе Visual Basic введите код процедуры (см. рис. 39)

2. Разобравшись в работе сложного цикла, посмотрите, какие значения принимает переменная произв.