Помощничек
Главная | Обратная связь


Археология
Архитектура
Астрономия
Аудит
Биология
Ботаника
Бухгалтерский учёт
Войное дело
Генетика
География
Геология
Дизайн
Искусство
История
Кино
Кулинария
Культура
Литература
Математика
Медицина
Металлургия
Мифология
Музыка
Психология
Религия
Спорт
Строительство
Техника
Транспорт
Туризм
Усадьба
Физика
Фотография
Химия
Экология
Электричество
Электроника
Энергетика

Вернемся к единственности оператора сравнения для структуры множественного выбора.



В этом языке данная структура может применяться ТОЛЬКО для проверки на совпадение с константным целым выражением, т.е. это может быть любая комбинация символов и целых чисел, лишь бы они были постоянными. Следует отметить, что использование целого константного выражения является существенным недостатком, присущим рассмотренному оператору. ПОЭТОМУ: не пытайтесь лепить в switch проверку переменной или вызов функции, даже если она однозначно целая или символьная.

Число, указанное для каждого конкретного случая НЕ МОЖЕТ ИЗМЕНЯТЬСЯ! Константы в вариантах case должны быть различными. После ключевого слова switch может стоять и выражение в круглых скобках, может быть там любое выражение, допустимое в языке СИ, значение которого должно быть целым. Отметим, что можно использовать явное приведение к целому типу, однако необходимо помнить о тех ограничениях и рекомендациях, о которых говорилось в предыдущих уроках.

Символы должны заключаться в одиночные кавычки. Например: 'F'.

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

Код: (C)

сase D:

case d:

//блок операторов

Еще некоторые детали данной структуры: список операторов может быть пустым, либо содержать один или более операторов. Причем в операторе switch не требуется заключать последовательность операторов в фигурные скобки. Однако наличие фигурных скобок - не ошибка.

В операторе switch можно использовать свои локальные переменные, объявления которых находятся перед первым ключевым словом case, однако в объявлениях не должна использоваться инициализация.

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

- вычисляется выражение в круглых скобках;

- вычисленные значения последовательно сравниваются с константными выражениями, следующими за ключевыми словами case;

- если одно из константных выражений совпадает со значением выражения, то управление передается на оператор, помеченный соответствующим ключевым словом case;

- если ни одно из константных выражений не равно выражению, то управление передается на оператор, помеченный ключевым словом default, а в случае его отсутствия управление передается на следующий после switch оператор.

В теле оператора switch можно использовать вложенные операторы switch, (или другие вложенные структуры) при этом в ключевых словах case можно использовать одинаковые константные выражения.

Пример:

Код: (C)

switch (a)

{

case 1: b=c; break;

case 2:

switch (d)

{

case 0: f=s; break;

 

case 1: f=9; break;

 

case 2: f-=9; break;

}

case 3: b-=c; break;

:

Упражнения

1. Составить программу упорядочения по возрастанию значе­ний в трех переменных.

2. Составить программу, которая выводит на экран меню:

1. Первое

2. Второе

3. Третье

и в зависимости от выбранного пункта выдает одну из надписей: «Получите суп», «Получите картошку», «Получите компот», «Оста­вайтесь голодным». Написать два варианта программы: с использова­нием условного оператора if и с использованием переключателя.

Операторgoto.

Оператор безусловного перехода goto суще­ствует в языке Си, как и во всех других языках программирования высокого уровня. Однако с точки зрения структурного подхода к программированию его использование рекомендуется ограничить. Формат оператора:

gotoметка;

Метка представляет собой идентификатор с последующим дво­еточием, ставится перед помечаемым оператором.

Одна из ситуаций, в которых использование goto является оправданным — это необходимость «досрочного» выхода из вло­женного цикла. Вот пример такой ситуации:

for(...)

{ while (...)

{ for(...)

{... gotoexit ...}

}

}

exit: cout<<”выход из цикла”;

При использовании оператора безусловного перехода необхо­димо учитывать следующие ограничения:

• нельзя входить внутрь блока извне;

• нельзя входить внутрь условного оператора (if ...else...);

• нельзя входить внутрь переключателя;

• нельзя входить внутрь цикла.

Задание

Задача №1

Турист за день прошел А км. До обеда он шел t часов и прошел 20 км. Еще t2 часа он шел после обеда. Когда скорость туриста была выше: до обеда или после обеда?




©2015 studopedya.ru Все права принадлежат авторам размещенных материалов.