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

If (условие) break;

операторы

}

Например, если начальные значения целых переменных i, j таковы, что i < j, то следующий цикл определяет наименьшее целое, не меньшее их среднего арифметического:

while(i<j){

i++;

if (i == j) break;

j--;

}

Оператор break практически незаменим в переключателях, когда с их помощью надо организовать разветвление. Например, следующая программа печатает название любой, но только одной, восьмеричной цифры:

//Программа 4.4

#include "stdafx.h"

#include <iostream>

void main(){

int ic;

std::cout<<"\n Input octuple number: ";

std::cin>>ic;

std::cout << "\n" << ic;

switch(ic){

case 0: std::cout << " - zero"; break;

case 1: std::cout << " - one"; break;

case 2: std::cout << " - two"; break;

case 3: std::cout << " - three"; break;

case 4: std::cout << " - four"; break;

case 5: std::cout << " - five"; break;

case 6: std::cout << " - six"; break;

case 7: std::cout << " - seven"; break;

default: std::cout << " - this is not octuple number!";

}

getchar();

}

Программа напечатает название только одной введенной цифры и прекратит работу. Если в ней удалить операторы break, то в переключателе будут последовательно выполнены все операторы, начиная с помеченного нужным (введенным) значением.

Циклы и переключатели могут быть многократно вложенными. Однако следует помнить, что оператор break позволяет выйти только из самого внутреннего цикла или переключателя. Например, в следующей программе, которая в символьном массиве подсчитывает количество нулей (ko) и единиц (kl), в цикл вложен переключатель:

//Программа 4.5

#include "stdafx.h"

#include <iostream>

void main(void){

char c[] = "ABC100111";

int k0 = 0, kl = 0;

for (int i = 0; c[i] != '\0'; i++)

switch (c[i]){

case '0': k0++; break;

case '1': kl++; break;

default: break;

}

std::cout<< "\n In string " <<k0 << " zero, " <<kl << " units ";

getchar();

}

Результат выполнения программы:

В строке 2 нуля, 4 единицы

Оператор break в данном примере передает управление из переключателя, но не за пределы цикла. Цикл продолжается до естественного завершения.

При многократном вложении циклов и переключателей оператор break не может вызвать передачу управления из самого внутреннего уровня непосредственно на самый внешний. Поэтому удобнее всего для этого пользоваться не оператором break, а оператором безусловной передачи управления (goto).

Оператор continue употребляется только в операторах цикла. С его помощью завершается текущая итерация и начинается проверка условия дальнейшего продолжения цикла, т.е. условий начала следующей итерации.

Типичный пример использования оператора continue: подсчитать среднее значение только положительных элементов одномерного массива:

for (s=0.0, k=0, i = 0; i<n; i++) {

if(x[i] <= 0.0) continue;

k++; //-Количество положительных элементов в массиве

s += x[i]; // Сумма положительных элементов массива

}

if (k > 0) s = s/k; // Среднее значение

Выполнение оператора continue эквивалентно окончанию текущей итерации цикла и началу проверки для принятия решения о начале новой итерации.