Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Case else




Next

Инструкция switch (язык С)

Многоальтернативный выбор

End if

Инструкции exit

В языке Basic имеется семейство инструкций exit, которые действуют аналогично инструкции break в языке C. Каждая инструкция должна находиться внутри соответствующей сложной инструкции и действует только на нее. В рассмотренном ниже примере используется инструкция exit for.

Пример. Дано {xi}, i=1...30. Найти длину первой подпоследовательности, состоящей только из положительных элементов.

pr= false: kol=0

for i=0 to 29

if x(i)>0 then

kol += 1: if not pr then pr= true

if x(i)<=0 and pr then exit for

next

Замечание. Если используются вложенные циклы do, for или while, а в теле самого внутреннего цикла инструкция exit, то exit do действует только на цикл do, exit for – только на цикл for, exit while – только на цикл while.

Это инструкции, которые разумно использовать при программировании развилок более, чем на 3 ветви.

Формат:

switch (<выражение>) <инструкция>

Выражение должно быть целого типа.

Инструкция должна быть составной. В противном случае вся конструкция теряет смысл. В ее состав должны входить несколько предложений case (выбор)и, возможно, предложение default (в противном случае), расположенные в произвольном порядке. Схематически конструкцию можно изобразить так:

switch (<выражение>){

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

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

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

}

Под постоянным понимается выражение, не содержащее переменных. Это выражение должно быть целого типа. Пока будем рассматривать в этом качестве целые (символьные тоже!) литералы. Постоянное выражение часто также называют меткой из-за его функционального назначения.

Схема выполнения инструкции следующая.

1. Вычисляется выражение в инструкции switch. Его иногда называют тестовым.

2. Выполняется проверка на равенство значения тестового выражения и значений меток в предложениях case в порядке их следования в теле инструкции switch.

3. Как только такая метка будет найдена, управление передается инструкции, следующей за ней.

4. Если не произойдет совпадение значения ни с одной из меток case, управление передается инструкции за меткой default, если она присутствует.

5. Если такой ветви нет, то управление передается инструкции, следующей за инструкцией switch, т.е. тело ее просто пропускается.

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

1. Предложения case и default могут записываться в произвольном порядке, однако рекомендуется располагать так, как показано выше.

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

3. Метки не влияют на порядок выполнения следующих инструкций, т.е. если в процессе выполнения switch будет выбрана 1 из ветвей case, то продолжится выполнение инструкций последующих ветвей case или default. Если необходимо прекратить выполнение после какой-либо ветви, следует использовать инструкцию break, которая передаст управление инструкции, следующей за switch.

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

5. Значения меток в теле switch должны быть уникальными, поскольку управление передается в первую по записи ветвь, метка которой совпадет с тестовым значением. Следовательно, переход в другую ветвь с такой же меткой физически недостижим.

Пример. Дан символьный массив {xi}, i=1...30. Подсчитать количество символов разрядки, цифр (каждой по отдельности) и остальных символов.

for (i=0; i<10; i++)digit[ i ]=0; // Массив для подсчета "вхождений" каждой цифры

for (empty=other=i=0; i<30; i++){

switch (x[i]){

case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': digit[x[ i ]-'0']++; break;

case ' ': case '\n': case '\t':empty++; break;

default: other++; [ break;]

}

}

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

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

other += 1




Поделиться с друзьями:


Дата добавления: 2014-12-27; Просмотров: 442; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.01 сек.