Блок із 1-го або більш операторів
}
while працює доти, поки вираз не буде дорівнює 0. Якщо блок складається з 1-го оператора, фігурні дужки можна не ставити.
Приклад 1. Програма запитує в користувача, чи продовжувати роботу.
#include <iostream.h>
Void main()
{
char ans;
cout << «Продовжити (Y/N)?»;
cin >> ans;
while((ans!=’Y’)&&(ans!=’y’)&&(ans!=’N’)
&&(ans!=’n’))
{
cout << «\nНе правильно натиснута клавіша\n»;
cout << «Продовжити (Y/N)?»;
cin >> ans;
}
}
Приклад 2. Підрахувати число символів у слові.
#include <iostream.h>
Void main()
{
char name[15];
int count = 0;
cin >> name;
while (name[count]!= 0)
count++;
cout << count;
}
Цикл може бути організований за допомогою do … while
Синтаксис:
do
{
блок з одного або більш операторів;
}
while (<вираз>);
Цикл має мінімум одну ітерацію. Цикл продовжується доти, поки вираз істинний, тобто не дорівнює 0. Якщо блок складається з одного оператора, фігурні дужки можна не ставити.
Приклад, аналогічний прикладу 1:
#include <iostream.h>
Void main()
{
char ans;
do
{
cout <<”\n Будете продовжувати введення (Y/N)?”;
cin >> ans;
}
while ((ans!=’Y’)&&(ans!=’y’)&&(ans! =’N’)
&&(ans! =’n’));
}
У С++ передбачена можливість дострокового виходу з програми до її нормального завершення за допомогою функції exit().
Синтаксис:
exit(status) -передається значення операційній системі через оточення errorlevel - може перевірятися в командних файлах.
Для виходу з циклу використовується оператор break; він забезпечує вихід із поточного циклу.
Організація циклів із використанням оператора for
Оператор for. Формат:
for ([початкове вираз]; [контрольне вираз]; [лічильник])
{
блок з одного або більш операторів;
}
Якщо в блоці один оператор – фігурні дужки можна не ставити.
Початкове вираз визначається один раз. Якщо контрольний вираз не дорівнює 0, то він є істинним і виконується блок. Цикл припиняє роботу, якщо контрольний вираз дорівнює 0. Вираз лічильник обчислюється при кожному повторенні циклу.
Приклади:
for(i = 10; i! = 0; i--) або for(i = 10; i; i--)
char i;
for(i = ’1’; i <= ’Z’; i++)
for(;;) //- порожньо - вічний цикл
{ cout << “12”; }
int i = 1;
for(;i <= 100;)
{
cout << i;
i++;
}
int i;
for(i = 1; i <= 10; i++)
cout << i << ’\n’;
Результат:
…
Вкладені цикли:
for(i = 1; i <= 3; i++)
{
for(j = 1; j <= 3; j++)
{
cout << j << ’\n’;
} //У цьому фрагменті фігурні дужки
} //можна не ставити
Результат:
Додатково використовуються оператори:
break;
continue;
Оператор break завершує цикл достроково.
Приклад:
int num;
char i;
cout << “Виведення 20 чисел \n”;
for(num = 1; num <= 20; num++)
{
cout << num << ’\n’;
cout << “Будете виводити наступне число (Y/N)?”;
cin >> i;
if((i == ’N’) || (i == ’n’)) break;
}
Оператор continue повертає управління до початку циклу.
Приклад:
Тільки малі літери при введенні перетворяться в прописні і будуть виводитись на екран.
#include <iostream.h>
Void main()
{
char m;
int i;
for(i = 1; i <= 5; i++)
{
cin >> m;
if((m < ’a’) || (m > ’z’)) continue;
m-= 32;
cout << m << ’\n’;
}
}
Оператори switch і goto
Оператор switch замінює короткий оператор, що розгалужується if… else
Синтаксис:
Switch (вираз)
{
case <конст_вираз 1>:
блок операторів С++;
case <конст_вираз 2>:
блок операторів С++;
...
case < конст_вираз n>:
блок операторів С++;
[default:
блок операторів С++;]
}
Після обчислення виразу в заголовку оператора, його результат послідовно порівнюється з константами-вираженнями <конст_вираз 1>... <конст_вираз n> починаючи із самого верхнього, поки не буде встановлена їхня відповідність. Тоді виконуються оператори усередині відповідного case, і після цього управління переходить на такий константний вираз без перевірок. Саме тому наприкінці кожної послідовності операторів повинен бути присутнім оператор break, що забезпечує вихід з оператора switch. Гілка, яка має назву default (по умовчанню) може бути відсутня. Якщо вона є, то послідовність операторів, що знаходиться за словом default, виконується тільки тоді, коли порівняння з жодної зі стоячих вище константних виразів не є істинним.
Приклад:
Switch (t)
{
case 1:
cout << “\nСообщение 1”; break;
case 2:
cout << “\nСообщение 2”; break;
...
default:
cout << “\n Зрадливий код”;
}
Якщо break не ставиться наприкінці блока операторів, і ми потрапляємо за умовою в блок, то здійснюється «провал донизу».
Приклад:
Switch (num)
{
case 1:
cout << "1";
case 2:
cout << "22";
case 3:
cout << "333";
}
Якщо num = 1, то результат буде:
Без використання break можуть бути оригінальні рішення.
Приклад:
Switch (num)
{
case 1:
case 2:
case 3:
cout << “Номер від 1 до 3”;
break;
case 4:
cout << “Номер 4”;
break;
default:
cout << “Помилковий номер”;
}
У загальному випадку < виразом> може бути будь-яке вираз, константа або змінна типу int, char або long int. Константи-вираження - це константи типу int, char або long int.
Оператор switch зручно використовувати при реалізації меню.
Оператор goto – рідко зустрічається, краще цим оператором не користуватися.
Приклад використання:
goto tt; // Перехід на мітку tt.
c= 12;
...
tt:...
ТЕМА 5: СТВОРЕННЯ ФУНКЦІЙ
ПЛАН
1. Створення функцій.
2. Видимість змінних.
3. Передача значень.
4. Повертаємі значення і прототипи функцій.
Створення функцій
Не варто робити один великий модуль програми. У залежності від можливості окремі “шматки” програми необхідно виділити у вигляді окремих функцій.
Функція, написана на C++, звичайно має такі властивості:
– Кожна функція повинна мати ім’я, яке починається з букви або знака підкреслення “ _ ”. Ім’я функції може складатися з цифр, букв і знаків підкреслення.
– За ім’ям кожної функції повинна стояти пара круглих дужок. Це дозволяє відокремлювати функції від змінних.
– Тіло кожної функції, що починається відразу ж після круглих дужок, повинно бути замкнуте у фігурні дужки. Це означає, що тіло кожної функції складає блок з одного або декількох операторів.
Виклик функції схожий на з’їзд з автомагістралі. Головна дорога – функція main(). Підключення функції рівнозначно з’їзду на об’їзну дорогу. Після повернення з функції (оператор return) управління передається основній функції main(), тобто здійснюється повернення на основну автомагістраль.
Приклад:
У програмі користувач одержує звіт одного з відділів: бухгалтерського, інженерного або відділу управління.
#include <iostream.h>
void bux_otd(void)
{
//код створення звіту бухгалтерського відділу
…
return;
}
void ing_otd(void)
{
// код створення звіту інженерного відділу
…
return;
}
void up_otd(void)
{
// код створення звіту відділу управління
…
return;
}
Void main()
{
int choice;
do
{
cout << “Вибір коду відділу \n”;
cout << “\t1. Бух. відділ \n”;
cout << “\t2. Інж. відділ \n”;
cout << “\t3. Відділ управління \n”;
cin >> choice;
}
while ((choice < 1) || (choice > 3));
switch (choice);
{
case 1:
bux_otd(); break;
case 2:
ing_otd(); break;
case 3:
up_otd(); break;
}
}
Видимість змінних
|