- •2. Основні елементи мови с
- •3.1 Алфавіт мови програмування
- •3.2Лексеми
- •3.3Ключові слова
- •3.4Ідентифікатори
- •3.5 Класифікація типів даних
- •3.6 Літерали
- •3.7 Оператори
- •3.8 Коментарі
- •3.9 Директиви препроцесора
- •3.10 Організація програми
- •3. Операції та вирази
- •4.1 Загальні відомості
- •4.2 Арифметичні операції
- •4.3 Операції приведення типів
- •(Тип) ідентифікатор,
- •4.4 Операції присвоєння
- •4.5 Операції інкремента і декремента
- •4.6 Операції порівняння
- •4.7 Операції зсуву
- •4.8 Порозрядні операції
- •4.9 Логічні операції
- •4.10 Операція sizeof
- •Sizeof ( Вираз ),
- •4.11 Операція послідовного обчислення
- •4.12 Операція умови (?:)
- •Операнд-1 ? Операнд-2 : Операнд-3
- •4.13 Адресні операції
- •Тип * ім'я_покажчика;
- •4. Прості типи даних
- •5.1 Оголошення змінних
- •[ Модифікатори ] тип ім’я_змінної;
- •5.2 Час існування та область видимості змінних
- •5.3 Цілі типи даних
- •5.4 Дійсні типи даних
- •5. Оператори керування
- •5.1 Оператор розгалуження if
- •If ( Вираз ) true-оператор;
- •5.2 Оператор розгалуження if-else
- •If ( Вираз ) true-оператор; else false-оператор;
- •5.3 Оператор множинного розгалуження switch
- •5.4 Оператор циклу for
- •For ( Вираз 1 ; Вираз 2 ; Вираз 3 ) тіло циклу
- •5.5 Оператор циклу while
- •While ( Вираз ) тіло циклу
- •5.6 Оператор циклу do while
- •Тіло циклу while ( Вираз ) ;
- •5.7 Оператор break
- •5.8 Оператор continue
- •6 Введення та виведення даних
- •7.1 Функція виведення printf
- •Int printf( стрічка форматування, змінна1, змінна2, ... );
- •7.2Функція введення scanf
- •Int scanf (стрічка форматування, адреса змінної1, адреса змінної2, ... );
- •9.1 Введення та виведення у файл
- •7 Масиви
- •7.1 Загальні поняття
- •7.2 Одновимірні масиви
- •Тип даних ім’я змінної [n];
- •7.3 Багатовимірні масиви
- •6. Функції
- •6.1 Основні поняття
- •{Тіло функції}
- •6.2 Область видимості
- •6.3 Порожній тип void
- •6.4 Передача аргументів у функцію
- •6.5 Рекурсивні функції
- •6.6 Прототипи функцій
- •8. Рядки в с
- •4.1 Прототипи
- •4.2 Функції перетворення буферів
- •4.3 Функції перевірки літер
- •4.4 Рядок символів
- •4.5 Операції з рядками:
- •4.6 Символьні константи
- •9. Покажчики
- •5.1 Визначення та ініціалізація покажчиків
- •5.2 Визначення покажчиків:
- •5.3 Масиви
- •5.6 Копіювання рядка
- •5.7 Посилання та оператор &
- •5.9 Посилання в якості результатів функції
- •5.10 Покажчики на функцію
- •Тип_функціі (* імя_покажчика) (специфікація_параметрів);
- •5.11 Покажчики на void
- •5.12 Арифметика покажчиків
- •10. Структури, об’єднання, перерахування
- •7.1 Структури
- •7.2 Ключове слово typedef
- •7.3 Об’єднання
- •7.4Перераховуваний тип (Enum)
- •Enum dataType
- •Enum day
- •11 Динамічне виділення пам'яті
5.3 Оператор множинного розгалуження switch
Приклад 6. Синтаксис оператора switch
switch ( Вираз )
{
case константний вираз 1: набір операторів 1; break;
case константний вираз 2: набір операторів 2; break;
…………………………………………………….
case константний вираз n: набір операторів n; break;
default : набір операторів по замовченню;
}
Блок-схема оператора switch зображена на рисунку 5.3.
Рисунок 5.3 – Блок-схема оператора множинного розгалуження switch
Вираз, що іде за ключовим словом switch у круглих дужках, може бути будь-яким виразом, припустимим в мові С, значення якого повинно бути цілим.
Значення цього виразу є ключовим для вибору з декількох варіантів. Тіло оператора switch складається з наборів операторів, кожен з яких позначений ключовим словом case з наступним константним виразом. Слід зазначити, що використання цілого константного виразу є істотним недоліком, який властивий оператору switch.
Так як константний вираз обчислюється під час трансляції, він не може містити змінні чи виклики функцій. Зазвичай у якості константного виразу використовують цілі або символьні константи.
Усі константні вирази в операторі switch повинні бути унікальні. Крім наборів операторів, позначених ключовим словом case, може бути, але не обов'язково, один набір позначений ключовим словом default.
Набір операторів може бути порожнім, або містити один або більше операторів. Причому в операторі switch не потрібно набір операторів об’єднувати за допомогою фігурних дужок, як у складеному операторі.
Схема виконання оператора switch наступна:
- обчислюється вираз в круглих дужках;
- обчислене значення виразу послідовно порівнюються з константними виразами, що ідуть за ключовими словами case;
- якщо один з константних виразів збігається зі значенням виразу, то управління передається набору операторів, що позначений відповідним ключовим словом case;
- якщо жоден з константних виразів не дорівнює виразу, то управління передається набору операторів, позначеному ключовим словом default, а у випадку його відсутності управління передається наступному після switch оператору.
Використання оператора break дозволяє в необхідний момент перервати послідовність виконуваних операторів у тілі оператора switch, шляхом передачі управління оператору, що іде за switch.
Варто знати, що за відсутності операторів break в тілі оператора switch і збігу значення виразу з яким-небудь константним виразом, виконується наскрізний прохід через усе тіло оператора, що залишилося у switch, включаючи й оператор гілки default.
Приклад 7. Написати програму яка виводить по введеному ключу (від 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;
}