8.3 Спеціальні функції для роботи з рядками та символами
9. Функції користувача
9.1 Функції: визначення, опис, виклик
9.2 Передача масивів у функцію
9.3 Перевантаження функцій у С++
9.4 Функції зі змінною кількістю параметрів
10. Структури
Список літератури
1. Створення простих програм на С++
C++ (Сі-плюс-плюс) — універсальна мова
програмування високого рівня з підтримкою декількох парадигм програмування: об'єктно-орієнтованої,
узагальненої та процедурної. Розроблена Б'ярном Страуструпом (англ. Bjarne Stroustrup) в AT&T Bell Laboratories (Мюррей-Хілл, Нью-Джерсі) у 1979 році та
названа «Сі з класами». Страуструп перейменував мову у C++ у 1983 р. Базується на
мові Сі. Визначена стандартом ISO/IEC 14882:2003.
1.1 СТРУКТУРА ПРОГРАМИ
Розглянемо програму, що виводить на екран монітора фразу “Ласкаво
просимо до С++!”:
Приклад 1.
// Welcome.cpp – ім’я файла з програмою
# include <iostream.h>
void main ()
{ cout << ” Ласкаво просимо до
С++! \ n”;
}
Результат виконання програми:
Ласкаво просимо до С++!
У першому рядку програми міститься однорядковий
коментар, що починається з символу “//”, який вказує, що після цього символу йде
однорядковий коментар. Коментарі не викликають ніяких дій комп’ютера і ігноруються
компілятором С++, а лише допомагають іншим людям читати і зрозуміти Вашу програму.
У другому рядку розміщено команду (директиву)
препроцесору, що забезпечує включення до програми засобів зв’язку зі стандартними
потоками вводу і виводу даних. Вказані засоби містяться у файлі під назвою iostream.h
(мнемоніка: “і” (input) – ввід; “output” – вивід; “stream” – потік; “head” - заголовний).
Рядок, що починається з ”#”, обробляється препроцесором перед компіляцією програми.
Файл iostream.h повинен бути залучений для всіх програм, що виводять дан
на екран монітора або вводять дані з клавіатури.
Третій рядок є заголовком функції з іменем
main. Будь-яка програма на С++ повинна містити лише одну функцію з таким
менем.Саме з неї починається виконання програми.void – специфікатор
типу, який вказує, що функція main в даному прикладі не повертає ніякого
значення. Круглі дужки після main потрібні в зв’язку з форматом (синтаксисом)
заголовка будь-якої функції. В них розміщується список параметрів. У нашому
прикладі параметри не потрібні.
Тіло будь-якої функції повинно починатися
закінчуватися фігурними дужками, між якими знаходиться
послідовність описів, операторів і визначень. Кожен оператор, визначення чи опис
повинні закінчуватися крапкою з комою.
Рядок
cout << ” Ласкаво просимо до С++!
\ n”;
є командою комп’ютеру надрукувати на
екрані рядок символів, що записаний у лапках. Повний рядок, включаючи cout, операцію
<<”, рядок ”Ласкаво просимо до С++! \ n” і крапку з комою “;”, називається
оператором. Всі вводи і виводи в С++ виконуються над потоками символів. Таким чином
потік символів Ласкаво просимо до С++! спрямовується до об’єкта стандартного потоку
виводу cout, який пов’язаний з екраном. Вже зараз слід відмітити одну з принципових
особливостей мови С++, яку називають перевантаженням або розширенням дії стандартних
операцій. Операція ”<<” називається операцією „розмістити у потік” лишень
у тому випадку, коли зліва від неї знаходиться ім’я об’єкта cout. Інакше
пара символів “<<” означає бінарну операцію зсуву вліво. Символи правого
операнда зазвичай виводяться так само, як вони виглядають між лапками.
Слід зазначити, що символи ”\n
не виводяться на екран. Комбінацію символів, що починаються з позначки оберненого
Стеша (”\”), називають знаком переходу або escape-символом. Керуюча послідовність
\n” означає перехід на початок нового рядка. Цей символ в лапках може знаходитися
будь-де в рядку, при цьому послідовність символів, що знаходиться за ним, виводитиметься
з нового рядка. Тобто результат виконання операції
cout << ” Ласкаво просимо \nдо
С++! \ n”;
матиме вигляд:
Ласкаво просимо
до С++!
1.2 ЕТАПИ ВИКОНАННЯ ПРОГРАМИ
Вихідна програма, підготовлена на мов
С++ у вигляді текстового файлаз розширенням *.срр (welcome.cpp),
проходить 3 етапи обробки:
1) препроцесорне перетворення тексту програми;
2) компіляція;
3) компоновка (редагування зв¢язків чи складання).
Після цих 3 етапів формується машинний
код програми, що виконується.
Задачею препроцесора є перетворення (доповнення)
тексту програми до початку її компіляції. Правила препроцесорної обробки визначаються
програмістом за допомогою директив препроцесора. Директива починається з ”#” (¢дієс¢, ¢шарп¢). Наприклад,
1) #define - визначає правила заміни
в тексті:
#define ZERO 0.0
Це означає, що кожне використання у програм
мені ZERO буде замінюватися на 0.0.
2) #include< ім¢я заголовного файла > - передбачена
для залучення до тексту програми тексту файлу з каталогу “Заголовних файлів” INCLUDE,
які постачаються разом зі стандартними бібліотеками. Кожна бібліотечна функція чи
об¢єкт
С++ має відповідний опис в одному з заголовних файлів (наприклад, iostream.h,
stdio.h, conio.h, math.h). Список заголовних файлів визначається стандартом
мови. Використання директиви include не під¢єднує відповідну стандартну
бібліотеку, а лише дозволяє долучити до тексту програми описи із зазначеного
заголовного файлу. В нашому випадку препроцесор обробляє директиву #include <iostream.h>
під’єднує до вихідного тексту програми засоби для обміну з дисплеєм. Далі файл
передається на компіляцію, у ньому виявляються синтаксичні помилки, які потрібно
усунути програмістові. Після безпомилкової компіляції текст програми перекладається
компілятором на машинну мову, далі отримуємо об’єктний файл з розширенням *.obj.Підключення об¢єктних кодів файлів з визначеннями необхідних
стандартних функцій і об¢єктів з бібліотеки відбувається на етапі компоновки, тобто після компіляції.
У об¢єктному
коді створюваної програми ніби замуровуються дірки за допомогою кодів стандартних
функцій. Хоча в заголовних файлах містяться всі описи стандартних функцій, до коду
програми залучаються лише функції й об¢єкти, які використовуються в програмі.
Після компоновки утворюється модуль програми з розширенням *.ехе.
Отже, в нашому випадку, виконавши директиви,
препроцесор сформує повний текст програми, компілятор створить об’єктний файл welcome.obj,
за замовчуванням обравши для нього зазначене ім’я, а компоновщик (редактор зв’язків
Linker) доповить програму бібліотечними функціями, наприклад, для роботи з об’єктом
cout і побудує модуль welcome.exe, запустивши, який ми одержуємо на
екрані бажану фразу. Схема етапів виконання програми наведена на рис. 1.1.
1.3 ПОРЯДОК ЗАПУСКУ ПРОГРАМИ
1.
Відкрийте нове вікно редагування (File > New)
надайте йому ім’я Welcome (File > Save As);
2.
У новому вікні наберіть текст програми, що наводиться
у Прикладі 1.
3.
Відкомпілюйте програму (Compile > Compile
або (Alt+F9)). В разі повідомлень про помилку, перевірте текст програми
усуньте невідповідності. Щоразу, вносячи зміни у вихідний текст програми, зберігайте
файл (File > Save або F2). Після чого змінену програму слід відкомпілювати;
4.
Запуск відкомпільованої програми здійснюється за командою
(Run > Run або Ctrl+F9). Якщо з моменту останньої компіляції вихідний
код було модифіковано, ця команда виконає послідовно компіляцію і компоновку. Результат
виконання програми можна переглянути, натиснувши комбінацію клавіш Alt+F5.
2. Форматний ввід/вивід
у мові С/С++
2.1 ФУНКЦІЇ ВВОДУ/ВИВОДУ МОВИ С
У мові С++ немає вбудованих засобів вводу/виводу – вони здійснюються за
допомогою функцій, типів та об’єктів, що містяться у стандартних бібліотеках. Використовується
два способи: функції, успадковані з мови С та об’єкти С++.
Основні функції вводу/виводу в стил
С, опис яких міститься у заголовному файлі <stdio.h>:
рrintf (<керуючий
рядок>, <список аргументів>);
Керуючий рядок береться у лапки і вказу
компілятору вигляд інформації, що виводиться. Вона може містити специфікації перетворення
керуючи або escape-символи.
Специфікація перетворення має такий вигляд:
% <прапор>
<розмір поля. точність> специфікація,
де прапор може набувати наступних
значень:
-
вирівнювання вліво числа, що виводиться (за замовчуванням виконується вирівнювання
вправо);
+
виводиться знак додатного числа;
розмір поля
задає мінімальну ширину поля, тобто довжину числа. Якщо ширини поля недостатня,
автоматично виконується його розширення;
точність
задає точність числа, тобто кількість цифр його дробової частини;
специфікація
вказує на вигляд інформації, що виводиться. У таблиці 2.1 наведено основні формати
функції друку.
Таблиця 2.1
Формат
Тип інформації,
що виводиться
%d
десяткове ціле
число
% і
для виведення
цілих чисел зі знаком (printf (“a=%i”, -3));
%u
для виводу
беззнакових цілих чисел (printf(“s=%u”, s))
%c
один символ
%s
рядок символів
%e
число з плаваючою
крапкою (експоненційний запис)
%f
число з плаваючою
крапкою (десятковий запис) (printf(“b=%f\n, c=%f\n, d=%f\n”, 3.55, 82.2, 0.555
));
%u
десяткове число
без знака
Керуючий рядок може
містити наступні керуючі символи:
\n – перехід на новий рядок;
\t – горизонтальна і \v – вертикальна
табуляція;
\b – повернення назад на один символ;
\r – повернення на початок рядка;
\a – звуковий сигнал;
\” –лапки;
\? – знак питання;
\\ - зворотний слеш.
Список аргументів - об¢єкти, що друкуються (константи,
змінні). Кількість аргументів та їх типи повинні відповідати специфікаціям перетворення
в керуючому рядку.
Приклад 1.
#include <stdio.h>
#define PI 3.1415926
void main()
{
int number=5, cost=11000, s=-777;
float bat=255, x=12.345;
printf ("%d студентів з¢їло
%f бутербродів.\n", number, bat);
printf ("Значення числа pi рівне%f.\n",
pi);
printf ("Вартість цієї машини %d%s\n",
cost,"у.е");
printf ("x=%-8.4f s=%5d%8.2f ",
x, s, x);
}
В результаті виконання останньої функц
printf() на екрані буде виведено:
х=12.3450 s= -777 12.34
Функція scanf передбачена
для форматного вводу інформації довільного вигляду. Загальний вигляд функції:
scanf (<керуючий рядок>, <
список адрес>);
На відміну від функції виводу
printf(), scanf() використовує у списку адреси змінних, для одержання
яких перед іменем змінної ставиться символ ”&”, що позначає унарну операцію
одержання адреси. Для вводу значень рядкових змінних символ ”&” не використовується.
При використанні формату %s рядок вводиться до першого пропуску. Вводити дані можна
як в одному рядку через пропуск, так і в різних рядках.
Дану особливість ілюструє відповідна
частина програми:
int course;
float grant;
char name[20];
printf ( "Вкажіть ваш курс, стипендію,
м¢я \n");
scanf ( "%d%f", &course,
&grant);
scanf ( "%s", name); /* ”&
відсутній при зазначенні масиву символів */
Для зміни кольору тексту використовують
функції із файла <conio.h>: clrscr() – очищує екран; textcolor(Колір)
задає колір символів; textbackground (Колір) – встановлює колір фону. Вивід
тексту на екран здійснюється за допомогою функції cprintf(), яка використовується
аналогічно printf(). Зверніть увагу на те, що перехід на початок нового рядка
у цій функції здійснюється за допомогою комбінації ”\n\r”.
Колір можна задати за допомогою ціло
або іменованої константи, перелік яких наводиться у таблиці 2.2.
Таблиця 2.2
Колір
Константа
Значення константи
Чорний
BLACK
0
Синій
BLUE
1
Зелений
GREEN
2
Червоний
RED
4
Фіолетовий
MAGENTA
5
Сірий
GREY
8
Блакитний
LIGHTBLUE
9
Помаранчевий
LIGHTRED
12
Жовтий
YELLOW
14
Білий
WHITE
15
2.2 ФУНКЦІЇ ВВОДУ/ВИВОДУ
ТА МАНІПУЛЯТОРИ МОВИ С++
А ось як виглядає програма вводу/виводу
з використанням бібліотеки класів С++:
Приклад 2.
# include <iostream.h>
void main()
{ int i;
cout<< “Введіть ціле число\n”;
//об’єкт для вводу з клавіатури і >>розміщення
у потік виводу
cin>> i;
cout<< “Ви ввели число”<<
i <<”дякую!”;
}
Для форматного виводу у С++ використовуються
маніпулятори, для використання яких до програми потрібно підключити заголовний файл
<iomanip.h>:
setw(int) – встановлює максимальну
ширину поля виводу чисел та рядків (не символів);
setprecision(int) – встановлює максимальну кількість цифр дробової частини для дійсних чисел
з фіксованою крапкою;
setiosflags(ios::showpoint | ios::fixed)
– вивід дійсних чисел з фіксованою крапкою;
setiosflags(ios::left) або setiosflags(ios::right) – вирівнювання по лівому або правому
полю;
endl – при
виводі включає у потік символ нового рядка, еквівалентний “\n” (його опис міститься
у файлі iostream.h).
Маніпулятори спрямовуються в потік виводу,
аналогічно тому, як це зроблено у прикладі 3:
Приклад 3.
# include<iostream.h>
#include <iomanip.h>
void main()
Результат виводу ( позначає пробіл):
52.287
410.000
У даному прикладі маніпулятори точност
та фіксації крапки спрямовуються у потік виводу одноразово, тоді як ширину поля
виводу необхідно встановлювати для кожного значення.
3. Лінійні програми на С++
3.1 СТАНДАРТНІ ТИПИ ДАНИХ
МОВИ С++
Всі об¢єкти (змінні, масиви тощо),
з якими працює програма в С/С++, необхідно визначати або описувати. Найпростіша
форма визначення змінної:
<тип> <список імен змінних>;
При оголошенні об¢єкти можна ініціалізувати (задавати
початкове значення).
Наприклад: int j=10,
m(3), n;
float c(-1.3), l=-10.23, f1;
Оголошення повідомляють компілятору про
властивості та імена об¢єктів і функцій. Змінні можуть змінювати свої значення. При наданні значення
змінній у комірці пам¢яті, яка відводиться під неї, розміщується код цього значення. Доступ до
значення цієї змінної можливий через ім¢я змінної, а доступ до ділянки пам¢яті здійснюється за
адресою. Розмір ділянки пам¢яті, що відводиться змінній, визначається її типом. Перелік базових типів
даних наведено у таблиці 3.1.
Таблиця 3.1
Тип даних
Назва
Розмір, біт
Діапазон значень
unsigned char
Беззнаковий цілий
довжиною не менше 8 біт
8
0 . . 255
сhar
Цілий довжиною
не менше 8 біт
8
-128 . . 127
unsigned int
Без знаковий цілий
16
0 . . 65535
short int (short)
Короткий цілий
16
-32768 . . 32767
unsigned short
Беззнаковий короткий
цілий
16
0 . . 65535
int
Цілий
16
-32768 . . 32767
unsigned long
Беззнаковий довгий
цілий
32
0 . . 4294967295
long int (long)
Довгий цілий
32
-214748348 . .
2147483647
float
Дійсний одинарно
точності
32
3.4Е-38 . . 3.4Е+38
double
Дійсний подвійно
точності
64
1.7Е-308 . . 1.7Е+308
long double
Дійсний максимально
точності
80
3.4Е-4932 . . 1.1Е+4932
3.2 ОПЕРАЦІЇ МОВИ С++
Позначкиоперацій – це один або декілька символів, що визначають
дію над операндами. Операції поділяють на унарні, бінарні та тернарні за кількістю
операндів, які беруть участь в операції (таблиця 3.2).
Таблиця 3.2.
Операція
Короткий опис
Унарні операції
&
Операція одержання
адреси операнда
*
Звернення за адресою
(розіменування)
-
Унарний мінус
змінює знак арифметичного операнда
~
Порозрядове інвертування
внутрішнього двійкового коду (побітове заперечення)
!
Логічне заперечення
(НЕ) значення операнда. Цілочисельний результат 0 (якщо операнд ненульовий, тобто
стинний) або 1 (якщо операнд нульовий, тобто хибний). Таким чином: !1 дорівню
0; !2 дорівнює 0; !(-5)=0; !0 дорівнює 1.
++
Інкремент (збільшення
на одиницю):
Префіксна операція
(++х) збільшує операнд на 1 до його використання.
Постфіксна операція
(х++) збільшує операнд на 1 після його використання.
int m=1, n=2;
int a=(m++)+n;
// a=3, m=2, n=2
int b=m+(++n);//
b=6, m=2, n=3
- -
Декремент (зменшення
на одиницю):
Префіксна операція
(--х) зменшує операнд на 1 до його використання.
Постфіксна операція
(х--) зменшує операнд на 1 після його використання.
sizeof
Обчислення розміру
(в байтах) об¢єкта того типу, який має операнд. Має дві форми:
1) sizeof (вираз);
sizeof(1.0); //
Результат - 8,
Дійсні константи
за замовчуванням мають тип double;
Ділення операндів
арифметичного типу (якщо операнди цілочисельні, абсолютне значення результату
заокруглюється до цілого, тобто 20/3 дорівнює 6)
%
Одержання залишку
від ділення целочисельних операндів (13%4 = 1)
Операції зсуву
(визначені лише для цілочисельних операндів)
<<
Зсув вліво бітового
представлення значення лівого цілочисельного операнда на кількість розрядів, рівну
значенню правого операнда (4<<2 дорівнює 16, т.я. код 4 100, а звільнен
розряду обнуляються, 10000 – код 16)
>>
Зсув вправо бітового
представлення значення правого цілочисельного операнда на кількість розрядів,
рівну значенню правого операнда
Порозрядне виключне
АБО бітових представлень значень цілочисельних операндів
Операції порівняння
<
Менше, ніж
>
Більше, ніж
<=
Менше або рівне
>=
Більше або рівне
= =
Рівне
!=
Не рівне
Логічні бінарн
операції
&&
Кон’юнкція (І)
цілочисельних операндів або відношень, цілочисельний результат (0) або (1)
||
Диз’юнкція (АБО)
цілочисельних операндів або відношень, цілочисельний результат (0) або (1) (умова
0<x<1 мовою С++ записується як 0<x && x<1)
Тернарна операція
Умовна операція
? :
Вираз1 ? Вираз2
: Вираз3;
Першим вираховується
значення Виразу1. Якщо воно істинне, тоді обчислюється значення Виразу2, яке ста
результатом. Якщо при обчисленні Виразу1 одержуємо 0, тоді в якості результату
береться значення Виразу3.
Наприклад:
х<0 ? -x : x
; //обчислюється абсолютна величина x.
Основні матичні функції мови С/С++, опис
яких міститься у файлі <math.h>, наведені у таблиці 3.4.
Таблиця 3.4
Матичний запис
Функція
Пояснення
Приклад
arccos x
acos
Повертає арккосинус
кута, рівного х радіан
acos(x);
arcsin x
asin
Повертає арксинус
аргументу х в радіанах
asin(x);
arctg x
atan
Повертає арктангенс
аргументу х в радіанах
atan(x);
аrctg(x/у)
atan2
Повертає арктангенс
відношення параметрів х та у в радіанах
atan2(x, y);
-
ceil
Заокруглює дійсне
значення х до найближчого більшого цілого і повертає його як дійсне
ceil(x);
cosx
cos
Повертає косинус
кута, рівного х радіан
cos(x);
chx=1/2(ex+e-x)
cosh
Повертає гіперболічний
косинус аргументу, рівного х радіан
cosh(x);
ex
exp
Повертає результат
піднесення числа е до степені х
exp(x);
|x|
fabs
Повертає модуль
дійсного числа х
fabs(x);
-
floor
Заокруглює дійсне
число до найближчого меншого числа і повертає результат як дійсний
floor(x);
-
fmod
Повертає залишок
ділення х на у. Аналогічна операції %, але працює з дійсними числами
fmod(x, y);
ln x
log
Повертає значення
натурального логарифму х
log(x);
lg x
log10
Повертає значення
десяткового логарифму х
log10(x);
xy
pow
Вираховує значення
числа х у степені у
pow(x, y);
sinx
sin
Повертає синус
кута, рівного х радіан
sin(x);
sh x=1/2 (ex-e-x)
sinh
Повертає гіперболічний
синус кута, рівного х радіан
sinh(x);
sqrt
Визначає корінь
квадратний числа х
sqrt(x);
tg x
tan
Повертає тангенс
кута, рівного х радіан
tan(x);
tgh x
tanh
Повертає гіперболічний
тангенс кута, рівного х радіан
tanh(x);
Таблиця 3.5 Операції присвоювання
Операція
Пояснення
Приклад
=
Присвоїти значення
виразу-операнду з правої частини операнду лівої частини
Р=10.5-3*х
*=
Присвоїти операнду
лівої частини добуток значень обох операндів
Р*=2 еквівалентно
Р=Р*2
/=
Присвоїти операнду
лівої частини результат від ділення значення лівого операнда на значення правого
Р/=(2.2-х) еквівалентно
Р=Р/(2.2-х)
%=
Присвоїти лівому
операнду залишок від ділення цілочисельного значення лівого операнда на цілочисельне
значення правого операнда
Р%=3 еквівалентно
Р=Р%3
+=
Присвоїти операнду
лівої частини суму значень обох операндів
А+=В еквівалентно
А=А+В
-=
Присвоїти операнду
лівої частини різницю значень лівого і правого операндів
Х-=3.4-у еквівалентно
Х=Х-(3.4-у)
4. Основні оператори мови
С++
4.1 СКЛАДОВІ ОПЕРАТОРИ
Складовий оператор – це два або більше оператори, що повинні виконуватися
у певній частині програми як один оператор. До складових операторів належать власне
складовий оператор та блок. В обох випадках - це послідовність операторів, розміщених
у фігурних дужках. Блок відрізняється від складового оператора наявністю в його
тілі оператора визначення об’єкту (змінної, константи, масиву тощо).
Наприклад:
{n++; summa+=n;}//це складовий оператор
{int n=0; n++;summa+=n;} //це блок
4.2 ОПЕРАТОРИ РОЗГАЛУЖЕННЯ
Оператор умовного переходу if використовується для спрямування ходу програми за однією з гілок обчислень
в залежності від певної умови.
Загальна форма запису:
if (умова) оператор1;
else оператор2;
Наприклад, для знаходження
коренів квадратного рівняння використовується запис:
if (d>=0)
{x1=(-b-sqrt(d))/(2*a);
x2=(-b+sqrt(d))/(2*a);
cout<< “\nx1=”<<x1<<“x2=”<<x2;
}
else cout<<“\nРозв¢язку немає”;
Якщо оператор1 та/або оператор2
містять два або більше операторів, їх беруть у фігурні дужки {}, тобто вони
складовими. Оператор if перевіряє істинність чи хибність умови. Якщо умова справджується
(не рівна 0), тоді виконується оператор1, інакше, при хибності умови (==0),
виконується оператор2.
Другу частину оператора (else оператор2;)
можна опускати. Така його форма має назву “скороченої”. Тоді у випадку хибност
умови, керування передається до оператора, що йде услід за умовним оператором.
Якщо оператор1 і оператор2
в свою чергу є операторами if , вони є вкладеними.
Загальний вигляд вкладеного оператора
if: if (умова1) оператор1;
else if (умова2) оператор2;
else оператор3;
В якості умов у мовах С/С++ використовуються
стандартні операції відношення: <, <=, >, >=,
!=, ==. Пари наведених символів не можна відокремлювати чи переставляти.
Для об’єднання в умові декількох умов
використовуються логічні операції. Наведемо їх перелік в порядку спадання пріоритету:
! (заперечення або логічне НІ), && (кон’юнкція або логічне
І), || (диз’юнкція або логічне АБО). Між позначками && та
|| не дозволяються пробіли.
Наприклад: 0<x&&x<=100
((!x)&&(y>0)||((z==1)&&(k>0))
Оператор вибору switch подібний
до умовного оператора if, проте у ньому замість виразу-умови використовується
вираз, результатом якого може бути декілька цілочисельних значень, кожне з яких,
вимагає виконання свого оператора. Отже, програму можна спрямувати більше ніж у
двох напрямках.
Загальна форма запису оператора вибору:
switch(вираз)
{ case consnant1:
оператори; break;
сase consnantN:
оператори;break;
default: оператори; },
де consnant1…consnantN - цілі або символьн
константи. При виконанні оператора switch, обраховується вираз, записаний після
switch і його значення послідовно порівнюється з константами, записаними після case.
При першому ж співпаданні виконуються оператори, позначені даною міткою. Якщо виконуван
оператори не містять оператор переходу break, далі виконуватимуться оператори
усіх наступних варіантів. Якщо значення виразу, записаного після switch,
не співпало з жодною константою, виконуватимуться оператори після мітки default,
яка не є обов’язковою.
4.3 ОператорИ циклУ
Цикл з параметром for:
Основна форма запису:
for (вираз_1; вираз_2; вираз_3 ) оператор;
де вираз_1 – ініціалізація
початкового значення параметру циклу;
вираз_2 – перевірка умови на продовження
циклу;
вираз_3 – зміна параметру циклу з кожною
терацією (корекція);
оператор – тіло циклу, простий або складовий
оператор.
Цикл продовжується до тих пір, поки вираз_3
не стане рівним 0. Будь-який вираз можна опускати, залишаючи натомість “ ; ”.
Приклади використання циклу з параметром:
1) Зменшення параметра:
for ( n=10; n>0; n--)
{ <тіло циклу>}
2) Зміна кроку коректування:
for ( n=2; n>60; n+=13)
{ <тіло циклу>}
3)Корекція може здійснюватися не лише
за допомогою додавання чи віднімання:
for ( d=100.0; d<150.0;d*=1.1)
{ <тіло циклу>}
for (x=1;y<=75;y=5*(x++)+10)
{ <тіло циклу>}
5) Можна використовувати декілька виразів ініціалізації або модифікації:
for (x=1, y=0; x<10;x++,y+=x)
{ <тіло циклу>}.
Цикл з передумовою while:
Основна форма запису:
while (умова)
оператор;
де оператор – це простий,
складовий або порожній оператор.
Цикл виконується до тих пір, поки
умова приймає значення “true”, тобто вираз у дужках повертає ненульовий результат.
У циклі з передумовою спочатку перевіряється істинність умови, а потім виконується
оператор тіла циклу. Тому цикл while не виконується жодного разу, якщо від
початку умова буде хибною.
Цикл з післяумовою do – while:
Основна форма запису:
do
оператор;
while (умова);
де оператор – це простий,
складовий чи порожній оператор.
Тіло циклу виконується до тих пір, поки
умова справджується. Оскільки в циклі do–while умова перевіряється в кінці,
оператор тіла циклу виконуватиметься хоча б один раз.
Для запобігання безкінечност
циклу в тілі циклів while та do–while потрібно передбачити зміну параметрів,
які входять до умови.
4.4 ОПЕРАТОРИ ПЕРЕХОДУ
Оператори переходу виконують безумовну
передачу управління.
1) goto < мітка> - оператор безумовного переходу.
Керування передається оператору з даною міткою:
<мітка>: оператор;
В мові С мітка не декларується.
2) break - оператор перериває цикл або перемикач,
управління передається на перший наступний оператор;
while (умова)
{< оператори>
if (<вираз-умова>) break;
<оператори>}.
Тобто оператор break доцільно використовувати,
коли умову продовження ітерації потрібно перевіряти в тілі циклу.
2) continue – припинення поточної і перехід до наступно
терації циклу. Використовується, коли тіло циклу містить розгалуження.
3) return – здійснює повернення
результату з тіла функції.