Выбрать главу

печатай "Кошмар!"

Вариант 3

печатай "Неважно"

Вариант 4

печатай "Неплохо"

Вариант 5

печатай "Молодец!"

Вариант остальное

печатай "Таких отметок не бывает"

Конец выбора

И такой оператор варианта был придуман и назван Select Case, что и означает в переводе ВЫБЕРИ ВАРИАНТ. Я просто-напросто переписываю русский вариант программы по-английски:

Dim Otmetka As Integer Private Sub Command1_Click()

   Otmetka = InputBox("Какую отметку ты получил по физике?")

      Select Case Otmetka

        Case 1, 2

             Print "Кошмар!"

        Case 3

             Print "Неважно"

        Case 4

             Print "Неплохо"

         Case 5

             Print "Молодец!"

         Case Else

             Print "Таких отметок

         End Select

End Sub

Логика работы Select Case абсолютно такая же, как и у блочного If. В процессе исполнения оператора компьютер сравнивает значение переменной Otmetka по очереди со всеми значениями, перечисленными в вариантах. Наткнувшись на совпадающее значение, он выполняет операторы, стоящие в этом варианте. На этом исполнение оператора Select Case завершается. Если же совпадающего значения так и не нашлось, то выполняются операторы, стоящие в варианте Else (в нашей программе он полезен на тот случай, если ученик болен манией величия и вводит число 6).

Оператор Select Case предоставляет более широкие возможности, чем в только что рассмотренном примере. Проиллюстрируем их на другом примере:

Private Sub Command1_Click()

   а = 3

     Select Case a * a + 1

        Case 8, 4 * a, 26

           k = 0

           Print k Print a

        Case 7, 10, 84 To 90

           k = 1

           Print k

        Case Is < 0, 2, 4, 12 To 18 + a, 44, 68, Is > 100 + a

     k = 3

     End Select

End Sub

Эта программа напечатает 1. Здесь мы видим несколько новых для нас элементов.

Во-первых, после слов Select Case стоит не переменная, а выражение, поэтому с перечисленными в вариантах значениями будет сравниваться число 10, полученное как 3*3+1. В качестве значений вариантов тоже могут быть выражения, как, например, у нас — 4 * а.

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

В-третьих — конструкция 84 То 90. Она обозначает то же, что и 84,85,86,87,88,89,90, и служит в нашем случае для сокращения записи.

В-четвертых — конструкция Is < 0. Слово Is служит заменителем выражения а*а+1 и тоже используется для сокращения. Таким образом, Select Case не только сравнивает значения на равенство, но и проверяет неравенства.

В-пятых, здесь отсутствует вариант Else. Это значит, что если бы в нашей программе мы вместо а=3 написали а=0, то оператор Select Case, не найдя совпадения, не выбрал бы ни один из своих вариантов и, не найдя также Else, завершил бы свою работу, так ничего и не сделав.

Чем платим за удобство Select Case по сравнению с If? Что может If такого, чего не может Select Case? Самое главное — условия в If могут быть совершенно произвольны, а в Select Case мы привязаны к а*а+1.

Вот синтаксис оператора Select Case:

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

[Case значение, значение……

[операторы

операторы

…………….]]

[Case значение, значение……

[операторы операторы]]

………………………

[Case Else

[операторы

операторы

…………….]]

End Select

Здесь значение — это:

— выражение

— выражение То выражение

— знак сравнения выражение

Выражения могут быть не только числовые, но и строковые. Пример:

Private Sub Command1_Click() а = "Дом"

Select Case а

  Case "Домик"

    k = 3

    Print a

  Case "Дом"

    k = 0

    Print k

End Select

End Sub

Здесь будет напечатан 0.

Задание 30: Ученик вводит с клавиатуры букву русского алфавита. Компьютер должен сказать, какой звук обозначает это буква — гласный, согласный звонкий, согласный глухой или какой-нибудь другой (можно и НЕ ЗНАЮ).

Задание 31: Если у вас есть микрофон и вы можете записывать свой голос в файл, то попробуйте усовершенствовать ваш диалог с компьютером. Пусть компьютер подает вам реплики голосом. Для этого вам заранее придется записать на диск некоторое количество звуковых файлов с репликами компьютера и при помощи оператора Select Case выбирать между ними в зависимости от реплики человека с клавиатуры. Вы сразу же заметите, что компьютер поглупел, но зато стал изъясняться вслух.