
- •3444 Методичні вказівки
- •1 Базові структури алгоритмів
- •2 Обчислювальні процеси, що розгалужуються
- •2.1 Логічні вирази
- •2.2 Умовна операція ?:
- •Умова ? вираз_1 : вираз_2;
- •2.3 Оператор умовної передачі керуванняif
- •If (вираз)
- •2.4 Типові помилки програмування
- •2.5 Оператор розриву break
- •2.6 Оператор switch
- •Програма
- •3 Завдання для самостійного виконання
- •Програма
- •Програма
- •Програма
- •4 Питання для самоконтролю
- •Список літератури
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
case ′B′:
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.