Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЯП - ПОИТ (Бахтизин) часть 1 редакт.doc
Скачиваний:
1
Добавлен:
01.04.2025
Размер:
1.76 Mб
Скачать

3.7. Оператор switch

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

Оператор break по своей сути аналогичен goto, но в отличие от последнего, не позволяет выполнять произвольных переходов, ограничивая их точкой окончания языковой конструкции, внутри которой он применяется. С точки зрения программной логики работы оператора switch оператор break обязательно должен завершать группу операторов.

switch (целое выражение)

{

case константа_1: операторы_1; break;

case константа_2: операторы_2; break;

...

case константа_n: операторы_n; break;

default: операторы_n+1;

}

Сначала вычисляется целое выражение, и результат сравнивается со значениями константа_1, константа_2, ..., константа_n. Если где-то будет совпадение, то выполняется группа операторов, имеющих соответствующую метку. Если же значение целого выражения не совпало ни с одной из констант, то выполняется группа операторов, помеченная ключевым словом default. При отсутствии ключевого слова default и несовпадении значения выражения ни с одной из констант, операторы в конструкции switch не выполняются.

Пример.

char c='a';

clrscr();

switch (c)

{

case 'm' : printf("c \n"); break;

case 'h' : printf("c \n"); break;

case 'e' : printf("c \n"); break;

case 'a' : printf("c \n"); break;

case 't' : printf("c \n"); break;

case 'z' : printf("c \n"); break;

case 'v' : printf("c \n"); break;

case 'b' : printf("c \n"); break;

default : printf("The end \n");

}

Вышеприведенный фрагмент кода программы и схема на рисунке 3.4 иллюстрируют работу оператора switch. Если выражение совпадет с константой (case ‘a’ совпадает с выражением), то на экран выведется сообщение «с», как в данном примере. Если же совпадения не последует, то по умолчанию на экране появится «The end».

Рис.3.4. Схема работы оператора switch

`` ` `3.8. Операторы цикла

3.8.1. Оператор for

Язык Си имеет несколько операторов для организации циклов. Отличие цикла for от циклов while и do..while состоит в том, что в нем, как правило, число повторений заранее известно, т.е. можно удобно задавать начальные значения и изменять параметры цикла.

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

for (выражение 1; выражение 2; выражение 3) оператор;

выражение 1 – задает начальное значение параметра цикла;

выражение 2 – условие продолжение цикла (если истина – продолжение, если ложь – выход из цикла);

выражение 3 – модификатор счетчика повторений цикла.

Пример.

int i;

for (i=0; i<=10; i++)

printf(“%d \n”,i);

Данный фрагмент программы и схема на рисунке 3.5 иллюстрируют работу оператора for. Когда программа в своем выполнении доходит до цикла for, первым выполняется инициализирующее выражение, в котором обычно устанавливается счетчик цикла. Затем условное выражение, которое также называется условием прекращения цикла; пока оно равно истине, цикл не прекращается. Каждый раз после всех строк тела цикла выполняется модифицирующее выражение, в котором происходит изменение счетчика. Как только условное выражение даст ложь, все строки тела цикла будут пропущены и управление будет передано следующей за циклом команде (т.е. выход из цикла).

Рис 3.5. Схема работы оператора for

Если тело цикла содержит более одного оператора, используются фигурные скобки.

for (выражение 1; выражение 2; выражение 3)

{

оператор 1;

оператор 2;

...

оператор n;

}

Для повышения эффективности использования оператора for можно использовать следующие приёмы.

  1. Значение счетчика наращивания можно увеличивать или уменьшать;

for (i=0; i<=10; i++) или for (i=10; i>=0; i--)

  1. В качестве условий продолжения цикла можно использовать арифметические выражения

for (i=х; i<=5*х; i=у/х) или for (i=4; i<=40; i=i+5)

for (i=20; i>=2; i-=2) или for (i=5; i<=25; i+=5)

  1. Возможна инициализация нескольких переменных внутри цикла

for (int i=0, sum=0; i<=100; i++)

  1. Все три выражения в операторе for являются необязательными, т.е. их можно опускать. Выражение 1 может быть пропущено, если переменная инициализируется в другом месте программы, выражение 3 опускается, если нет необходимости в приращении или данные операторы находятся в теле самой структуры. Например,

int i=0;

for (; i<=100; i++)

или

for (int i=0; i<=100;)

i++;

Не вызовет ошибки даже следующая запись

for ( ; ; )

Она задаёт бесконечный цикл.

  1. В качестве индексов можно использовать переменные типа char

for (i=’a’; i<=’z’; i++)

Ниже рассмотрен несложный пример использования оператора for.

Данная программа использует оператор for для суммирования всех четных чисел от 2 до 100.

#include <stdio.h> // директива для подключения к программе

void main() // описаний средств ввода-вывода

{

int Summa=0, i; // инициализация переменных

for (i=2; i<=50; i=i+2) // условие приращения и повторения

Summa = Summa + i;

printf("Сумма равна: %d\n", Summa);

}

Сумма равна: 650.