Онлайн
библиотека книг
Книги онлайн » Разная литература » Интернет-журнал "Домашняя лаборатория", 2008 №7 - Журнал «Домашняя лаборатория»

Шрифт:

-
+

Закладка:

Сделать
1 ... 147 148 149 150 151 152 153 154 155 ... 192
Перейти на страницу:
выражения называются логическими выражениями. Если логическое выражение верно, то говорят, что оно имеет значение True (Правда). Если логическое выражение неверно, то говорят, что оно имеет значение False (Ложь). Любое логическое выражение может стоять в качестве условия в операторе If.

Логические выражения могут быть сложными — содержать одновременно операции And, Or, Not. Например, такое: а>2 And Not b>3 Or s>8

Чтобы его понять, нужно знать порядок действий. В арифметике сначала выполняется умножение, потом сложение. В логических выражениях сначала выполняется Not, затем And, затем Or. Для облегчения понимания не возбраняется расставлять скобки:

(а>2 And (Not b>3)) Or s>8

Это выражение равносильно предыдущему.

Скобки можно расставлять и чтобы изменить порядок действий: а>2 And Not (b>3 Or s>8)

Примеры:

Задание 27: "Замысловатая принцесса". Определите, кто нравится принцессе, по фрагменту из ее программы:

If Tsvet ="Черный" And (Rost<180 Or Rost>184) Then Print "ВЫ МНЕ ПОДОЙДЕТЕ" Else Print "ДО СВИДАНИЯ"

Задание 28: Усложним нашу задачу про ПОПАЛ — НЕ ПОПАЛ: Человек вводит в компьютер число. Если оно находится в интервале от 28 до 30, то нужно напечатать текст ПОПАЛ, если оно больше или равно 30 — то ПЕРЕЛЕТ, если оно находится на отрезке от 0 до 28, то НЕДОЛЕТ, если число меньше нуля — НЕ БЕЙ ПО СВОИМ.

Задание 29: Человек вводит с клавиатуры строку, смысл которой — приветствие при встрече. Компьютер тоже должен ответить приветствием. Отвечать нужно в соответствии со следующей таблицей:

Оператор варианта Select Case

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

Dim Otmetka As Integer

Private Sub Command1_Click()

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

       If Otmetka = 1 Or Otmetka = 2 Then

          Print "Кошмар!"

       Elself Otmetka = 3 Then

          Print "Неважно"

       Elself Otmetka = 4 Then

          Print "Неплохо"

       Elself Otmetka = 5 Then

          Print "Молодец!"

       Else

           Print "Таких отметок не бывает"

       End If

End Sub

Здесь может вызвать раздражение слишком часто встречающееся имя Otmetka, а также то, что и в такой простой задаче не обошлось без логических операций. Хорошо бы программу можно было писать попроще, например, так (по-русски): Выбери вариант отметки Вариант 1, 2

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

Вариант 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

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

— выражение

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

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

Выражения могут быть не только

1 ... 147 148 149 150 151 152 153 154 155 ... 192
Перейти на страницу: