Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Lab2-3_met_zavd.doc
Скачиваний:
5
Добавлен:
20.11.2019
Размер:
251.39 Кб
Скачать

2.3. Управляючі оператори break, continue I goto.

Оператор break здійснює негайний вихід з операторів циклу або оператора swich. Управління передається наступному оператору після оператора з якого здійснювався вихід. Якщо оператор break стоїть всередині вкладеного циклу, то вихід здійснюється тільки із внутрішньої структури, тобто тільки з того циклу в якому є оператор break.

Оператор continue - передає управління на кінець тіла циклу, всередині якого він знаходиться. Тобто пропускає частину ітерації, яку виконує і переходить до наступної ітерації.

Наприклад, треба знайти суму додатніх елементів кожного рядку масиву а(n,m). Фрагмент програми, що буде шукати суму має вигляд:

for(i=0; i<n; i++)

{

s=0;

for(j=0; j<m; j++)

{

if(a[i,j]<0)

continue;

s=s+a[i,j];

}

b[i]=s;

}

Оператор goto

Синтаксис оператора

goto мітка

де: “мітка” - це мітка оператора на який здійснюється перехід. Міткою може бути будь-який ідентифікатор, після якого стоїть символ двокрапка “:”.

Мова С володіє такими засобами, що використовувати оператор goto немає потреби. Єдиний випадок коли можна використовувати оператор goto це вихід із внутрішнього, вбудованого циклу у випадку знаходження помилки:

for(i=0; i<n; i++)

for(j=0; j<m; j++)

if(a[i]==b[j])

goto err;

.

.

err: printf (“співпадання елементів масивів”);

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, то ввідя символу * аналогічний вводу символу переводу рядка, тобто виходу із циклу.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]