Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основы.doc
Скачиваний:
59
Добавлен:
07.03.2016
Размер:
3.6 Mб
Скачать

6.2. Організація ітераційних циклів з передумовою while та післяумовою do...While

Синтаксис циклу з передумовою while:

while ( <вираз>)

{

блок із 1-го або більш операторів

}

while працює доти, поки вираз не буде дорівнює 0 (false). Якщо блок складається з 1-го оператора, фігурні дужки можна не ставити.

Приклад 1. Програма запитує в користувача, продовжувати роботу по натиснутій клавіші або ні. При введенні символів 'y', 'Y', 'n', 'N' – відбувається вихід з циклу, інакше на екран виводиться відповідне повідомлення.

#include <iostream>

using namespace std;

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>

using namespace std;

void main()

{

char name[15];

int count = 0;

cin >> name;

while (name[count] != 0)

count++;

cout << count;

}

Цикл може бути організований як цикл з післяумовою do … while

Синтаксис:

do

{

блок з одного або більш операторів;

}

while ( <вираз> );

Цикл має мінімум одну ітерацію. Цикл продовжується доти, поки вираз істинний, тобто не дорівнює 0 (false). Якщо блок складається з одного оператора, фігурні дужки можна не ставити.

Приклад, аналогічний прикладу 1:

#include <iostream>

using namespace std;

void main()

{

char ans;

do

{

cout <<"\nБудете продовжувати введення ( Y/N )?";

cin >> ans;

}

while ((ans!='Y')&&(ans!='y')&&(ans!='N')

&&(ans!='n'));

}

У С++ передбачена можливість дострокового виходу з програми до її нормального завершення за допомогою функції exit().

Синтаксис:

exit(status) - передається значення операційній системі через оточення errorlevel – може перевірятися в командних файлах.

Як і в арифметичному циклі for, в циклах while, dowhile мають місце оператор break для виходу з циклу та оператор continue для повернення на початок циклу.

6.3. Оператори 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, то результат буде:

122333

Без використання оператору break можуть бути оригінальні рішення.

Приклад:

switch (num)

{

case 1:

case 2:

case 3:

cout << "Номер від 1 до 3";

break;

case 4:

cout << "Номер 4";

break;

default:

cout << "Помилковий номер";

}

У загальному випадку <виразом> може бути будь-який вираз, константа або цілочисельна змінна. Константи-вираження – це константи цілочисельного типу.

Оператор switch зручно використовувати при реалізації меню.

Особливістю роботи з оператором switch є те, що в середині окремого блоку case не можна оголошувати змінні без використання фігурних дужок { }. Фігурні дужки визначають область видимості та існування окремої змінної. Тобто, для оголошення та використання змінної у блоці case необхідно взяти його у фігурні дужки.

Приклад обчислення функції аргументу x від заданого типу t:

#include <iostream>

using namespace std;

void main()

{

int t;

double x;

cout<<"Введіть значення аргументу x ";

cin>>x;

cout<<"Введіть значення типу функції 1 або 2 ";

cin>>t;

switch (t)

{

case 1:

{

double y = x*x;

cout << "\ny = " <<y;

break;

}

case 2:

{

double y = x*x*x;

cout << "\ny = " <<y;

break;

}

default:

cout << "\nНевірно заданий тип функції";

}

}

Оператор goto рідко зустрічається, краще цим оператором не користуватися.

Приклад використання:

goto tt; // Перехід на мітку tt.

c= 12;

...

tt: ...