Лекция 4 Оператор варианта SELECT CASE

Лекция 4
Оператор варианта
SELECTCASE

Характерной чертой алгоритмов некоторых программ является широкая разветвленность задаваемого ими вычислительного процесса.

Использование в таких случаях условных операторов IF...THEN…ELSE, вложенных один в другой, может оказаться громоздким и недостаточно наглядным, поэтому лучше применять оператор варианта. Общий вид оператора варианта таков:

SELECTCASEПроверочное выражение

CASEЗначение1

Операторы1

CASEЗначение2

Операторы2

..............................

CASEЗначениеN

ОператорыN

CASEELSE

Альтернативные операторы

END SELECT

Блок-схема этого оператора выглядит так:

Оператор варианта SELECTCASE состоит из Проверочного выражения (обычно это переменная) и нескольких операторов (либо нескольких блоков операторов), за каждым из которых закреплено определённое значение (метка), имеющее того же тип, что и проверочное выражение. При работе оператора SELECT CASE будет выполнен тот входящий в него оператор, чья метка равна текущему значению проверочного выражения. В случае отсутствия меток, равных значению проверочного выражения, будет выполняется оператор, стоящий за словами CASE ELSE (альтернативный оператор). Пример использования оператора SELECT CASE:

Option Explicit

Sub Primer1( )

Dim N As Byte, S As String

N=VAL(InputBox("Укажитеномерпары: ","",""))

SELECT CASE N

CASE 1

S="Математику"

CASE 2

S="Химию"

CASE 3

S="Физику"

CASE 4

S="Информатику"

CASE ELSE

S="ничего, выотдыхаете!"

END SELECT

MsgBox«На этой паре вы изучаете:»+vbCrLf+S

EndSub

Под каждым словом CASE с меткой можно записывать любое количество соответствующих метке операторов (т.е. блок операторов), а можно только один оператор, как в рассмотренном выше примере. Если за меткой закреплён лишь один оператор, текст программы можно сократить, записав оператор сразу после метки в той же строке, отделив его от метки двоеточием.

Option Explicit

Sub Primer2( )

Dim A, B, C As Single, S As String

A=VAL(InputBox(«A= »,"Введитечисло",""))

B=VAL(InputBox("B= ",«Введите число»,""))

S=InputBox(«Арифметическая операция (+, -, *, /, ^) =»,"","")

SELECT CASE S

CASE "+": C=A+B

CASE "-": C=A-B

CASE "*": C=A*B

CASE "/": C=A/B

CASE"^": C=A^B

CASEELSE

MsgBox«Неправильно задана операция»

C=0

END SELECT

MsgBox «C= „+STR©

EndSub

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

Option Explicit

Sub Primer3( )

Dim M, N As Byte

M = Val(InputBox(“M= », "Укажитеномермесяца", ""))

Select Case M

Case 1, 3, 5, 7, 8, 10, 31: N = 31

Case 2: N = 29

Case 4, 6, 9, 11: N = 30

Case Else

MsgBox "Нет такого!"

N = 0

EndSelect

MsgBox«В этом месяце » + Str(N) + " дней"

EndSub

Значения меток в операторе CASE также могут записываться в виде диапазона, где указывается наименьшее и наибольшее значения диапазона, разделённые словом TO:

Sub Primer4( )

Dim S As String

S=InputBox(«Введите букву:»,"","")

SELECT CASE S

CASE«а» To«я»: MsgBox«Строчная буква кириллицы»

CASE«А» To«Я»: MsgBox«Прописная буква кириллицы»

CASE"a" To"z": MsgBox«Строчная латинская буква»

CASE"A" To"Z": MsgBox«Прописная латинская буква»

CASEELSE: MsgBox«Этот символ не буква»

END SELECT

End Sub

При использовании оператора варианта SELECT CASE возможен случай, когда какой-нибудь оператор или блок операторов должен выполняться, если проверочное выражение больше либо меньше значения метки. В такой ситуации метка задаётся следующим образом: IS< Значение или IS> Значение, например:

Sub Primer5( )

Dim T As Byte

T=VAL(InputBox(«Который час?»,«Укажите время»,""))

Select Case T

Case Is < 6: Msg "Сейчасночь"

Case 6 To 12: Msg "Сейчасутро"

Case 12 To 18: Msg "Сейчасдень"

Case Is > 18: Msg "Сейчасвечер"

End Select

EndSub

Заметим, что в представленном выше примере отсутствует раздел CASE ELSE, так записывается упрощённая версия оператора варианта, это так называемый оператор варианта сокращённой формы. В данном примере сокращённая форма оправдана, поскольку метки IS<6 и IS>18 охватывают возможные альтернативные значения проверочного выражения.

При создании программ, оператор SELECT CASE часто используется для обработки выбора в меню:

Option Explicit

Sub Primer6( )

Dim N As Byte, S As Single

N=VAL(InputBox("Укажитепунктменю:"+VbCrLf+ _

«1- Владивосток»+VbCrLf+ _

«2- Уссурийск»+VbCrLf+ _

«3- Комсомольск»+VbCrLf+ _

«4- Благовещенск»,«Выберите станцию назначения»,""))

SELECT CASE N

Case 1: S = 2000

Case 2: S = 1500

Case 3: S = 1300

Case 4: S = 3000

Case Else

MsgBox " Ошибкавыбора!"

S = 0

END SELECT

MsgBox«Стоимость билета= „+STR(S)+“ руб.»

End Sub

226
RSS
Нет комментариев. Ваш будет первым!
Загрузка...
Этот сайт использует файлы cookies, чтобы облегчить вам пользование нашим веб-сайтом. Продолжая использовать этот веб-сайт, вы даете согласие на использование файлов cookies. Подробнее о том, как мы пользуемся файлами cookies и как ими управлять, вы можете узнать нажав на ссылку ниже.