
- •1 Основні елементи мови с
- •1.1 Алфавіт мови програмування
- •1.2 Лексеми
- •1.3 Ключові слова
- •1.4 Ідентифікатори
- •1.5 Класифікація типів даних
- •1.6 Літерали
- •1.7 Оператори
- •1.8 Коментарі
- •1.9 Директиви препроцесора
- •1.10 Організація програми
- •2 Операції та вирази
- •2.1 Загальні відомості
- •2.2 Арифметичні операції
- •2.3 Операції приведення типів
- •2.4 Операції присвоєння
- •2.5 Операції інкремента і декремента
- •2.6 Операції порівняння
- •2.7 Операції зсуву
- •2.8 Порозрядні операції
- •2.9 Логічні операції
- •2.10 Операція sizeof
- •2.11 Операція послідовного обчислення
- •2.12 Операція умови (?:)
- •2.13 Адресні операції
- •3 Прості типи даних
- •3.1 Оголошення змінних
- •3.2 Час існування та область видимості змінних
- •3.3 Цілі типи даних
- •3.4 Дійсні типи даних
- •4 Оператори керування
- •4.1 Оператор розгалуження if
- •4.2 Оператор розгалуження if-else
- •4.3 Оператор множинного розгалуження switch
- •4.4 Оператор циклу for
- •4.5 Оператор циклу while
- •4.6 Оператор циклу do while
- •4.7 Оператор break
- •4.8 Оператор continue
- •5 Функції
- •5.1 Основні поняття
- •5.2 Види виклику функцій
- •5.3 Область видимості
- •5.4 Порожній тип void
- •5.5 Передача аргументів у функцію
- •5.6 Рекурсивні функції
- •5.7 Прототипи функцій
- •6 Покажчики
- •6.1 Визначення та ініціалізація покажчиків
- •6.2 Визначення покажчиків
- •6.3 Масиви
- •6.4 Операції порівняння
- •6.5 Копіювання рядка
- •6.6 Покажчики на функцію
- •6.7 Покажчики на void
- •6.8 Арифметика покажчиків
- •7 Масиви
- •7.1 Загальні поняття
- •7.2 Одновимірні масиви
- •7.3 Багатовимірні масиви
- •8 Рядки в с
- •8.1 Рядки
- •8.2.Створення рядків
- •8.3 Прототипи
- •8.3 Функції перетворення буферів
- •8.4 Функції перевірки літер
- •8.5 Операції з рядками
- •9 Структури, об’єднання, перерахування
- •9.1 Структури
- •9.2 Бітові поля
- •9.3 Ключове слово typedef
- •9.4 Об’єднання
- •9.5 Перераховуваний тип
- •10 Введення та виведення даних
- •10.1 Функція виведення printf
- •10.2Функція введення scanf
- •10.3 Введення та виведення у файл
- •11 Динамічне виділення пам'яті
4.3 Оператор множинного розгалуження switch
Синтаксис оператора switch:
switch (Вираз)
{
case константний вираз 1: набір операторів 1; break;
case константний вираз 2: набір операторів 2; break;
case константний вираз n: набір операторів n; break;
default : набір операторів по замовченню;
}
Графічне представлення оператора switch зображене на рисунку 4.3.
Рисунок 4.3 – Графічне представлення оператора множинного розгалуження switch
Вираз, що іде за ключовим словом switch у круглих дужках, може бути будь-яким виразом, припустимим в мові С, значення якого повинно бути цілим.
Значення цього виразу є ключовим для вибору з декількох варіантів. Тіло оператора switch складається з наборів операторів, кожен з яких позначений ключовим словом case з наступним константним виразом. Слід зазначити, що використання цілого константного виразу є істотним недоліком, який властивий оператору switch.
Так як константний вираз обчислюється під час трансляції, він не може містити змінні чи виклики функцій. Зазвичай у якості константного виразу використовують цілі або символьні константи.
Усі константні вирази в операторі switch повинні бути унікальні. Крім наборів операторів, позначених ключовим словом case, може бути, але не обов'язково, один набір позначений ключовим словом default.
Набір операторів може бути порожнім, або містити один або більше операторів. Причому в операторі switch не потрібно набір операторів об’єднувати за допомогою фігурних дужок, як у складеному операторі.
Порядок виконання оператора switch наступний:
обчислюється вираз в круглих дужках;
обчислене значення виразу послідовно порівнюються з константними виразами, що ідуть за ключовими словами case;
якщо один з константних виразів збігається зі значенням виразу, то управління передається набору операторів, що позначений відповідним ключовим словом case;
якщо жоден з константних виразів не дорівнює виразу, то управління передається набору операторів, позначеному ключовим словом default, а у випадку його відсутності управління передається наступному після switch оператору.
Використання оператора break дозволяє в необхідний момент перервати послідовність виконуваних операторів у тілі оператора switch, шляхом передачі управління оператору, що іде за switch.
Варто знати, що за відсутності операторів break в тілі оператора switch і збігу значення виразу з яким-небудь константним виразом, виконується наскрізний прохід через усе тіло оператора, що залишилося у switch, включаючи й оператор гілки default.
Приклад 4.4. Написати програму яка виводить по введеному ключу (від 1 до 7) назву дня тижня. У випадку виходу за діапазон виводиться повідомлення про помилку.
#include <stdlib.h>
#include <stdio.h>
int main()
{
int day; /* день тижня*/
printf(“Vveditj denj tygnya (1-7)”);
scanf ("%i", & day);
switch(day)
{
case 1: printf("Ponedilok \n"); break;
case 2: printf("Vivtorok \n"); break;
case 3: printf("Sereda \n"); break;
case 4: printf("Chetver \n"); break;
case 5: printf("Pjatnyzzja \n"); break;
case 6: printf("Sybota \n"); break;
case 7: printf("Nedilya \n"); break;
default : printf ("Error! \n");
}
system("PAUSE");
return 0;
}