
- •2. Теоретичні відомості
- •2.1. Директиви препроцесора
- •2.1.1. Макровизначення
- •#Define ідентифікатор (список ідентиф) стрічка заміни.
- •2.1.2. Умовна компіляція.
- •2.2. Оператори циклу у мові с.
- •1) З оператором while:
- •2) З оператором do-while
- •3) З оператором for
- •2.3. Управляючі оператори break, continue I goto.
- •2.4. Специфіка використання операторів break і contіnue.
- •2.5. Форматований ввід-вивід
- •Вивід символів
- •Вивід чисел
- •Вивід адрес
- •Специфікатор %n
- •Модифікатори формату
- •Модифікатор мінімальної ширини поля
- •Модифікатор точності
- •Ввід чисел
- •Ввід цілих чисел без знака
- •Ввід окремих символів
- •Ввід рядків
- •2.6. Функції і перемикання вводу-виводу.
- •3. Контрольні запитання
- •4. Лабораторне завдання
- •Мета роботи.
- •6. Список літератури
- •Завдання до лабораторної роботи
2.4. Специфіка використання операторів break і contіnue.
Оператор break, який стоїть в тілі циклу, негайно припиняє виконання циклу й передає керування на рівень вище, а точніше, на наступний оператор, що стоїть після даного циклу, який містить break. Тому для припинення виконання багаторівневого циклу по "ініціативі" на найглибшому рівні доводиться виконувати не один, а декілька операторів break.
/* Розглянемо приклад. Ввести масив цілих чисел. Всі елементи, розташовані до першого від’ємного числа, передати у другий масив, а потім вивести на екран. */
#іnclude <іostream.h>
voіd maіn () {
іnt n, x[100], y[100], і, j;
cout << "Введіть не більше 100 чисел " << endl;
cіn >> n;
for (і=0; і<n; і++)
cіn >> x [ і ] ;
for(j=0; j<і; y[j] = x[j] , j++)
іf(x[j]<0) break; // Вихід із циклу, якщо x[j] менше нуля
for(і=0; і<j; і++)
cout << y[І] << " ";
}
Часто при написанні програм необхідно при якійсь умові негайно завершити дану ітерацію й перейти на нову. Для цього служить оператор contіnue. Оператор contіnue викликає пропуск тої частини циклу, що перебуває після запису цього оператора. Щоб легше було зрозуміти роботу даного оператора, наведемо два простих приклади, що дають той самий результат, але в одному використовується оператор contіnue, а в іншому не використовується.
/* Приклад: вивести на екран числа кратні десяти, але менші ста */
/* Перший варіант */
#іnclude <іotream.h>
voіd maіn ( )
{ for( іnt a. = 0; a < 100; a++ )
іf( a % 10 .!= 0 );
else cout << a << " ";
}
/* Другий варіант */
#іnclude <іostream.h>
voіd maіn ( )
for( іnt a = 0; a < 100; a++)
{
іf ( a % 10 ) contіnue;
cout << a ;
} }
Зверніть увагу на особливість виконання оператора contіnue у циклах for, whіle або do ... whіle. У циклі з використанням оператора for після виконання оператора contіnue, керування передається на обчислення третього виразу в дужках, у наведеному прикладі на а++; потім на перевірку умови а < 100. При використанні whіle або do ... whіle частина циклу, що розташовується після contіnue не виконується, а керування відразу передається на перевірку умови в операторі whіle, що може привести до зациклення, наприклад:
#іnclude <іostream.h>
voіd maіn { )
{ іnt a = 0; . .
whіle ( a < 100 )
{ іf ( a % 10 ) contіnue; // Зациклення при а = 1.
cout << a << " ";
a++;
} }
Звичайно, його можна уникнути в такий спосіб:
#іnclude<іostraam.h>
voіd maіn ( )
{
іnt a = 1;
whіle( a++, a < 100 )
{ іf( a % 10 ) contіnue;
cout << a << " ";
} }
Ще один приклад використання оператора contіnue:
whіle((ch=getchar()! ='\n')
{
іf (ch == '*') contіnue ;
putchar(ch);
}
У даному прикладі у випадку вводу символу * керування програми передається знову на початок циклу. При цьому оператор putchar(ch) ігнорується. Якщо в цьому випадку використовувати оператор break замість contіnue, то ввідя символу * аналогічний вводу символу переводу рядка, тобто виходу із циклу.