Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Пособие_2_изд_испр.doc
Скачиваний:
4
Добавлен:
01.05.2025
Размер:
2 Мб
Скачать
☆

5.8.2. Инструкция select case (язык Basic)

Формат:

select [case] <тестовое выражение> case <список выражений>

[<инструкции>] [case <список выражений>

[<инструкции>]]... [case else

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

]

end select

<список выражений>:=<выражение>[,<выражение>]...

<выражение>:={<выражение>|<выражение> to <выражение>|is <оператор сравнения><выражение>}

<оператор сравнения>:={>|>=|<|<=|=|<>}

Правила и рекомендации.

1. Тестовое выражение – числовое или строчное выражение.

2. Предложение case else аналогично предложению default в языке C.

3. Выражения в теле инструкции могут быть произвольными (допустимы переменные) в отличие от языка C.

4. Метка типа <выражение> проверяется на точное сравнение с тестовым значением.

5. Метка типа <выражение> to <выражение> представляет собой замкнутый диапазон значений, при попадании в который тестового значения выполняется переход на соответствующую ветвь, например, 5 to 10.

6. Метка типа is <оператор сравнения><выражение> есть открытый диапазон допустимых значений, например, is < MaxSize. Ключевое слово is может опускаться. После завершения инструкции case или case else оно будет вставлено перед оператором сравнения.

7. В отличие от языка C при попадании управления на какую-либо ветвь инструкции выполняются до следующего предложения case или end select, а не переходят дальше.

8. Ключевое слово case в инструкции select может опускаться.

Пример. Тот же.

for i=0 to 9

digit( i )=0

next

emp=0 : other=0

for i=0 to 29

select case x( i )

case “0” to “9”

digit(x( i )-“0”) += 1

case “ “, “\n”, “\t”

emp += 1

case else

other += 1

end select

next

Вопросы для самопроверки и контроля Вопросы для самопроверки

  1. Какие преимущества имеет инструкция присваивания языка C перед аналогичной инструкцией языка Basic?

  2. Какой новый объект программы позволяет выполнить инструкцию goto?

  3. Допустим ли выход из тела цикла с помощью инструкции goto?

  4. Можно ли реализовать разветвление алгоритма более, чем на 2 ветви?

  5. Почему необходимо в языке C наличие пустой инструкции?

  6. В чем смысл составной инструкции?

  7. Можно ли организовать цикл, не используя инструкцию цикла?

  8. В чем преимущество циклов с предусловием?

  9. Можно ли изменять конечное значение счетчика цикла внутри тела цикла в инструкции for языка Basic? А в инструкции for языка C?

  10. Чему равно значение счетчика цикла после его окончания? Отличается ли это правило для языков Basic и C?

  11. В чем разница в действиях инструкций break и continue языка C?

  12. Происходит ли выход из инструкции switch по достижения конца ветви case? А в инструкции select языка Basic?

Контрольные вопросы

  1. Можно ли считать запись i++; инструкцией присваивания?

  2. Можно ли использовать в качестве метки целое число? Если можно, то в каком языке?

  3. Как выполняется помеченная инструкция, если она достигнута не с помощью инструкции goto, а в естественном порядке выполнения программы?

  4. Почему в языке Basic не нужны пустая и составная инструкции?

  5. Можно ли в однострочной форме инструкции if языка Basic выполнить разветвление более, чем на 2 ветви?

  6. Перечислите блоки обобщенной блок-схемы цикла.

  7. Какова функция <выражения 3> инструкции for языка C?

  8. Когда разумно использовать цикл с постусловием?

  9. Когда форма do until языка Basic удобней, чем форма do while?

  10. Может ли инструкция exit do завершить цикл for?

  11. Могут ли иметь одинаковые значения выражения в ветвях case инструкций switch и select?