Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
m3444.doc
Скачиваний:
9
Добавлен:
19.04.2015
Размер:
547.84 Кб
Скачать

2.6 Оператор switch

Оператор перемикання switch призначений для організації вибору з декількох варіантів. Формат оператора такий:

switch (вираз)

{

case константний_вираз_1: список_операторів_1;

case константний_вираз_2: список_операторів_2;

. . .

default: список_операторів;

}

Вираз, що стоїть у круглих дужках за ключовим словом switch, повинен мати значення цілого типу. Це значення є ключовим для вибору з декількох варіантів.

Тіло оператора switch складається з декількох операторів, що починаються ключовим словом case. За константний вираз використовують цілі або символьні константи.

Наприклад, case 10: …; case 1: …; цілі константи;

case 'А': case '1': – символьні константи.

Усі константні вирази повинні бути унікальні.

Не можна як константний вираз використовувати рядок символів. Наприклад, case "SOS": є неприпустимим.

Крім операторів, позначених ключовим словом case, може бути наявний фрагмент, позначений ключовим словом default.

Список операторів після двокрапки може бути порожнім або містити один або більше операторів. Причому цей список операторів (навіть якщо їх більше, ніж один) не потрібно брати у фігурні дужки, але й наявність їх не буде вважатися помилкою.

Схема виконання оператора switch така:

1) обчислюється вираз у круглих дужках;

2) результат послідовно порівнюється з константними виразами, що йдуть за ключовими словами case;

3) якщо одне з константних виразів збігається зі значенням виразу, то керування передається на оператор, позначений відповідним ключовим словом case. Далі будуть виконуватися всі наступні оператори або до кінця оператора switch (до фігурної дужки, що закривається), або поки не зустрінеться оператор break, який здійснить вихід із switch;

4) якщо жодне з константних виразів не збігається з результатом обчислення виразу, то керування передається на оператор, позначений ключовим словом default, а у випадку його відсутності керування передається на наступний після switch оператор.

Розглянемо приклад, коли варіанти формул для y=f(x) позначені кількома символами.

Варіанти : А) або 1) у=sin x ;

В) або 2) y=1/ x;

C) або 3) y= lnx.

Програма

#include<stdio.h>

#include<conio.h>

#include<math.h>

int main( )

{ float x,y;

char variant;

puts("Введiть x=");

scanf("%f",&x);

puts("Введи варiант A або 1 для y=sin(x) ");

puts("B або 2 для y=1/x");

puts("С або 3 для y=ln x ");

fflush(stdin); /* Не забувайте fflush, якщо використовуєте ключі формату %c або %s */

scanf("%c", &variant);

switch(variant)

{ // Початок оператора switch

//опис дій, якщо обирається варіант А або 1

case ′A′:

case ′1: y=sin(x);

printf("variant=%c x=%f y=%f\n", variant, x, y);

break;

// опис дій, якщо обирається варіант В або 2

caseB′:

case ′2′: if (x) // Перевіряємо, що знаменник не дорівнює 0

{ y=1/x;

printf("variant=%c x=%f y=%f\n", variant, x, y);

}

else

printf("variant= %c дiлення на 0\n", variant);

break;

// опис дій, якщо обирається варіант С або 3

case ′C′:

case ′3′: if (x>0) //Перевіряємо, що аргумент ln(x) > 0

{ y=log(x);

printf("variant =%c x=%f y=%f\n", variant, x, y);

}

else

printf("variant=%c x=%f обчислення неможливi \n", variant, x);

break;

// опис дій, якщо обирається варіант, неописаний вище

default: printf("Неприпустимий варiант %c\n",variant);

break;

} // Кінець оператора switch

getch();

return 0;}

Формули можуть бути позначені не лише символами, але й цілими числами, наприклад,

10) у= x2 ;

15) y= x3;

20) y= x4.

Тоді змінну variant необхідно описати як цілу величину ( int ), для введення її значення використовуємо ключ формату %d.

scanf(“%d”, &variant);

switch(variant)

{ case 10: y=pow(x,2);

printf("variant =%d x=%f y=%f\n", variant, x, y);

break;

case 15: y=pow(x,3));

printf("variant =%d x=%f y=%f\n", variant, x, y);

break;

case 20: y= pow(x,4));

printf("variant =%d x=%f y=%f\n", variant, x, y);

break;

default:

printf("Неприпустимий варіант %c\n",variant);

break;

} і т. д.

Якщо пропустити break після y=pow(x,2), то у випадку вибору варіанта 10 спочатку буде обчислено y=pow(x,2), а потім y=pow(x,3) і за break відбудеться вихід із switch. Замість у = x2 буде обчислено у = x3.

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