Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Занятие 1.docx
Скачиваний:
9
Добавлен:
12.03.2015
Размер:
37.96 Кб
Скачать

Оператор выбора switch

Оператор выбора switch (или переключатель) предназначен для выбора ветви вычислительного процесса исходя из значения управляющего выражения. Использование данного оператора целесообразно при сложном условном ветвлении.

 Структура оператора следующая:

switch (выражение)

{

case константное выражение : оператор или группа операторов

break;

case константное выражение : оператор или группа операторов

break;

……………

default : оператор или группа операторов

}

Значение выражения оператора switch должно быть целочисленным. Это означает, что в выражении можно использовать переменные только целого или символьного типа. Результат вычисления выражения по очереди сравнивается с каждым из константных выражений. Если в какой-либо строке находится совпадение, управление передается на соответствующую метку case, и выполняется связанная с ней группа операторов. Выполнение продолжается до конца тела оператора switch или пока не встретится оператор break, который передает управление из тела switch оператору, следующему за закрывающей данную конструкцию фигурной скобкой.

Применение оператора break в контексте блока switch является обычным. Без него после выполнения варианта case, который соответствует значению управляющего выражения, оператор switch продолжит свою работу, при этом будут выполнены все последующие варианты case и ветка default.

Оператор, связанный с default, выполняется, если выражение не совпало ни с одним из константных выражений в case. Оператор default не обязательно располагается в конце конструкции. Кроме того, он и сам не обязателен. В этом случае при отсутствии совпадений не выполняется ни один оператор. Не допускается совпадение константных выражений.

Пример 1. По номеру дня недели, введенному с клавиатуры, вывести на экран название дня недели:

#include <stdio.h>

int main(void)

{

char day;

printf("Введите номер дня недели\n");

scanf("%c",&day);

 

switch (day)

{

case'1': printf("Понедельник\n");break;

case'2': printf("Вторник\n");break;

case'3': printf("Среда\n");break;

case'4': printf("Четверг\n");break;

case'5': printf("Пятница\n");break;

case'6': printf("Суббота\n");break;

case'7': printf("Воскресенье\n");break;

default: printf("Ошибка ввода\n");

}

return 0;}

В этом примере переменная day, управляющая оператором switch, имеет символьный тип. При вводе с клавиатуры символов 1, 2, … 7 на экран выводится название соответствующего дня недели. При вводе любого другого символа на экран выводится сообщение об ошибке.

Классы памяти

В языке C все переменные и функции должны быть объявлены до их использования. Объявление переменной устанавливает соответствие имени и атрибутов переменной, вызывает выделение памяти для хранения ее значения. Место размещения переменной в памяти программы задается с помощью класса памяти (класса хранения) переменной. В зависимости от места размещения переменной в памяти определяется время жизни и область видимости переменной. Класс памяти задается спецификатором класса памяти.

В языке C имеется 4 класса памяти:

- extern (внешние переменные);

- auto (автоматические переменные);

- register (регистровые переменные);

- static (статические переменные);

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

Область видимости – это часть текста программы, в которой может быть использован данный объект. Объект считается видимым в блоке или в исходном файле, если в этом блоке или файле известны имя и тип объекта. Объект может быть видимым в пределах блока, текущего файла или во всех файлах, образующих программу.

Время жизни и область видимости объекта зависят от того, в каком месте объявлен объект. Если объект объявлен на внутреннем уровне, т. е. внутри некоторого блока, то по умолчанию он имеет локальное время жизни и локальную область видимости, т. е. он существует, пока выполняется блок, и видим в этом блоке и во всех внутренних блоках (локальная переменная). Если объект объявлен на внешнем уровне, т. е. вне всех блоков, он имеет глобальное время жизни и глобальную видимость. Такой объект существует до завершения программы и видим от точки его объявления до конца данного исходного файла (глобальная переменная).

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

Служебное слово, определяющее класс памяти, ставится в описаниях переменных перед служебным словом, задающим тип переменных:

static int i,j;

extern char ch1;

register int k;

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]