Лабораторная работа № 6. Оператор выбора

Теоретические сведения

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

Синтаксис оператора выбора следующий:

Select Case <переключатель>

Case <условие_1>

<инструкции_1>

Case <условие_2>

<инструкции_2>

……………………

[Case Else

<инструкции_n>]

End Select

Здесь Select Case, Case, Case Else, End Selectзарезервированные слова VBA;

<переключатель> – выражение;

<условие> – выражение по типу соответствующее переключателю, записанное в одной из трех рассматриваемых ниже форм;

<инструкции_1>, <инструкции_2>, …<инструкции_n> – любые операторы языка VBA.

Исполнение оператора начинается с вычисления значения ключа. Затем выполняется проверка: удовлетворяет ли это значение одному из условий, стоящих после Case. Если такое условие найдено, то выполняются соответствующий набор инструкций, после чего работа передается оператору, идущему за End Select. Если ни одно из условий не выполняется, то работает блок команд <инструкции_n>, идущий после слова Else.

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

Условие после слова Case может быть записано в одной из трех форм:

1)       Case <константа_1>, <константа_2>, … <константа_m>

2)       Сase Is <знак операции отношения> <константа>

3)       Сase <константа_1> To <константа_2>

Для этих форм соответствующий блок команд <инструкции> выполняется в следующих случаях:

1)       если значение переключателя равно одной из констант;

2)       если выполняется условие отношения между значением переключателя и константой;

3)       если выполняется соотношение <константа_1> £ <значение переключателя> £ <константа_2>

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

Полная форма оператора выбора

Неполная форма оператора выбора

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Демонстрационные примеры

1В старо японском календаре был принят двенадцатилетний цикл. Годы внутри цикла носили названия животных: крысы, коровы, тигра, зайца, дракона, змеи, лошади, овцы, обезьяны, петуха, собаки и свиньи. На­писать программу, которая по номеру года определяет его на­звание в старо японском календаре, если известно, что 1996 г. был годом крысы — началом очередного цикла.

Поскольку цикл является двенадцатилетним, поставим в со­ответствие название года остатку от деления номера этого года на 12. При этом учтем, что остаток от деления 1996 на 12 равен 4.

Option Explicit

Sub Goroskop()

Dim Year As Integer

Year = InputBox ("Введите год", "Организация ввода")

Select Case Year Mod 12

Case 0

MsgBox "Год Обезьяны", , "Результат"

Case 1

MsgBox "Год Петуха", , "Результат"

Case 2

MsgBox "Год Собаки", , "Результат"

Case 3

MsgBox "Год Свиньи", , "Результат"

Case 4

MsgBox "Год Крысы", , "Результат"

Case 5

MsgBox "Год Коровы", , "Результат"

Case 6

MsgBox "Год Тигра", , "Результат"

Case 7

MsgBox "Год Зайца", , "Результат"

Case 8

MsgBox "Год Дракона", , "Результат"

Case 9

MsgBox "Год Змеи", , "Результат"

Case 10

MsgBox "Год Лошади", , "Результат"

Case 11

MsgBox "Год Овцы", , "Результат"

Case 12

End Select

End Sub

2.  Найти наибольшее из двух действительных чисел, используя оператор выбора.

Здесь селектором является логическая ве­личина.

Option Explicit

Sub Maximum()

Dim X As Single, Y As Single, Max As Single

X = InputBox ("Введите первое число", "Ввод чисел для сравнения")

Y = InputBox ("Введите второе число", "Ввод чисел для сравнения")

Select Case X > Y

Case True

Max = X

Case False

Max = Y

End Select

MsgBox "Наибольшее из двух чисел: " & Max, , "Результат сравнения"

End Sub

3. По введенному с клавиатуры числу x определить, какое из условий выполняется:

1.        x = 1 илиx = -1

2.        x Î [3; 5]

3.        x > 5

и выдать словесный ответ. В случае невыполнения условий, так же сообщить об этом.

В этой программе использованы различные формы записи условий после слова Case.

Option Explicit

Sub Diapason()

Dim X As Single, S As String

X = InputBox("Введите число", "Ввод")

Select Case X

Case 1, -1

S = "выполнено первое условие"

Case 3 To 5

S = "выполнено второе условие"

Case Is > 5

S = "выполнено третье условие"

Case Else

S = "ни одно из условий не выполняется"

End Select

MsgBox "Проверка показала:" & Chr(13) & S, , "Результат"

End Sub

Задачи для самостоятельного решения

Каждый студент должен решить две задачи.

1.     Написать программу, которая по номеру дня недели (нату­ральному числу от 1 до 7) выдает в качестве результата коли­чество пар в вашей группе в этот день.

2.     Написать программу, позволяющую по последней цифре числа определить последнюю цифру его квадрата.

3.     Составить программу, которая по заданным году и номеру ме­сяца m определяет количество дней в этом месяце.

4.     Для каждой введенной цифры (0–9) вывести соответствующее ей название на английском языке (0 — zero, 1 — one, 2 — two, ...).

5.     Составить программу, которая по данному числу (1–12) выво­дит название соответствующего ему месяца.

6.     Составить программу, позволяющую получить словесное опи­сание отметок (1 — плохо, 2 — неудовлетворитель­но, 3 — удовлетворительно, 4 — хорошо, 5 — отлично).

7.     Пусть элементами круга являются радиус (первый элемент), диаметр (второй элемент) и длина окружности (третий эле­мент). Составить программу, которая по номеру элемента за­прашивала бы его соответствующее значение и вычисляла бы площадь круга.

8.     Пусть элементами прямоугольного равнобедренного тре­угольника являются:
катет a;
гипотенуза
b;
высота, опущенная из вершины прямого угла на гипо­тенузу
h;
площадь
S.
Составить программу, которая по заданному номеру и значе­нию соответствующего элемента вычисляла бы значение всех остальных элементов треугольника.

9.     Написать программу, которая по номеру месяца выдает на­звание следующего за ним месяца (при m=1 получаем фев­раль, при m=4 — май).

10.  Написать программу, которая бы по введенному номеру вре­мени года (1 — зима, 2 — весна, 3 — лето, 4 — осень) выдава­ла соответствующие этому времени года месяцы, количество дней в каждом из месяцев.

11.  Для целого числа и от 1 до 99 напечатать фразу «Мне k лет», учитывая при этом, что при некоторых значениях k слово «лет» надо заменить на слово «год» или «года». Например, 11 лет, 22 года, 51 год.

12.  Написать программу, которая бы по введенному номеру еди­ницы измерения (1 —дециметр, 2 — километр, 3 — метр, 4 — миллиметр, 5 — сантиметр) и длине отрезка L выдавала бы со­ответствующее значение длины отрезка в метрах.

13.  Написать программу, которая по вводимому числу от 1 до 5 (номеру курса) выдает соответствующее сообщение «Привет, k-курсник». Например, если k=1, «Привет, первокурс­ник»; при k=4: «Привет, четверокурсник».

14.  Написать программу, которая по данному натуральному числу от 1 до 12 (номеру месяца) выдает все приходящиеся на этот месяц праздничные дни (например, если введено число 1, то: 1 января — Новый год, 7 января — Рождество).

15.  Дано натуральное число N. Если оно делится на 4, вывести на экран ответ N = 4k (где k соответствующее частное); если остаток от деления на 4 равен 1, N = 4k + 1; если остаток от деления на 4 равен 2, N = 4k + 2; если остаток от деления на 4 равен 3, N = 4k + 3. Например, 12 = 43, 22 = 45 + 2.

16.  Имеется пронумерованный список деталей: 1) шуруп, 2) гайка, 3) винт, 4) гвоздь, 5) болт. Составить программу, кото­рая по номеру детали выводит на экран ее название.

17.  Составить программу, позволяющую по последней цифре дан­ного числа определить последнюю цифру куба этого числа.

18.  Составить программу, которая для любого натурального числа печатает количество цифр в записи этого числа. Предполагается, что исходное число имеет не больше восьми цифр в записи.

19.  Даны два действительных положительных числа x и y. Ариф­метические действия над числами пронумерованы (1 — сло­жение, 2 — вычитание, 3 — умножение, 4 — деление). Соста­вить программу, которая по введенному номеру выполняет то или иное действие над числами.

20.  Написать программу, которая бы по введенному номеру еди­ницы измерения (1 — килограмм, 2 — миллиграмм, 3 — грамм, 4 — тонна, 5 — центнер) и массе М выдавала бы соот­ветствующее значение массы в килограммах.

21.  Пусть элементами равностороннего треугольника являются: 1) сторона a; 2) площадь S; 3) высота h; 4) радиус вписанной окружности r; 5) радиус описанной окружности R. Составить программу, которая по заданному номеру и значе­нию соответствующего элемента вычисляла бы значение всех остальных элементов треугольника.

22.  Составить программу для определения подходящего возраста кандидатуры для вступления в брак, используя следующее соображение: возраст девушки равен половине возраста муж­чины плюс 7, возраст мужчины определяется соответственно как удвоенный возраст девушки минус 14.

23.  Найти произведение цифр заданного k-значного числа. Допускаются числа до пяти знаков включительно.

24.  Составить программу, которая читает натуральное число N в десятичном представлении (N £ 10000), а на выходе выдает это же число в десятичном представлении и на естественном языке. Например, 7 Þ семь; 204 Þ двести четыре; 52 Þ пятьдесят два.