Главная » Статьи » Програмування » C [ Добавить статью ]

RUS Уроки по программированию на языке С (Ключевые слова break и continue.)

  • Ключевые слова break и continue.

    Оператор break

    Нередко при работе с циклами, возникает необходимость искусственно прервать выполнение цикла. Для этого используется, уже знакомый вам (по изучению switch), оператор break. Этот оператор должен находиться в теле цикла, в том месте где необходимо сделать остановку. Например, именно с помощью этого оператора, мы можем решить проблему вечного цикла, в ситуации, когда условие в цикле for не указывается. Рассмотрим пример:

    #include <iostream>
    using namespace std;
    void main()
    {
     for(int x=1;;x++)
     {
     if(x==4) break;// если x стал равен 4 - остановить цикл
     cout<<x;
     
     }
     cout<<”Bye!”;
    }
    
    Комментарии к примеру.

    1. Согласно правилу, условие цикла всегда истинно, так как его просто нет.

    2. При значениях 1,2 и 3 переменной x условие оператора if выполняться не будет. break, естесственно не сработает, так как находится в теле if. Между тем, на экран последовательно будут выводиться числа 1,2,3.

    3. Когда х станет равно 4, программа попадет в тело if и выполнится break. Цикл сразу же будет остановлен, а выполнение программы перейдет на следующую строчку за закрывающейся фигурной скобкой оператора for.

    4. На экране появится надпись Bye!

    5. Цифра 4 на экране никогда не появится, так как, если сработал break, все что находится в цикле ниже него уже не выполнится.

    Примечание: break может быть использован либо в цикле, либо в операторе switch. Любое другое размещение приводит к ошибке на этапе компиляции.

    Оператор continue

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

    Циклы while и do while останавливают выполнение шага и переходят к проверке условия.

    Цикл for также останавливает выполнение шага. Но, сначала переходит к изменению управляющей переменной, а потом уже к проверке условия.

    Рассмотрим пример: показать на экран все нечетные целые числа, в диапазоне от нуля до 25 включительно.

    #include <iostream>
    using namespace std;
    void main()
    {
     for(int i=0;i<26;i++)
    
     { 
     if(i%2==0)// если число делится на два без остатка
     {
     continue;// остановить итерацию цикла и перейти к i++
     }
     cout<<i<<"\n";
     
     }
    }
    
    Комментарии к примеру.

    1. Цикл начинает свое движение с нуля и проходит итерации до 25 включительно.

    2. Внутри цикла предусмотренно условие: если число i - четное, нужно остановить текущий шаг цикла (continue;)и перейти к конструкции i++.

    3. То, что располагается ниже сработавшего оператора continue на текущем шаге уже не выполнится.

    4. Если условие if не выполняется, значит число i нечетное, if будет проигнорирован, а число - отображенно на экран.


    Практические примеры.

    Пример 1.

    Постановка задачи.

    Часы бьют каждый час, столько раз, сколько времени. Написать программу, которая подсчитает, сколько раз пробьют часы за 12 часов.

    Код реализации.
    #include <iostream>
    using namespace std;
    void main(){
     int sum=0;
     for(int bom=1; bom<=12;bom++){
     sum+=bom;// накопление суммы ударов
     }
    
     // Часы пробили 78 раз.
     cout<<" Hours have punched "<<sum<<"times.\n\n";
    }
    
    Комментарий к коду.

    1. Изначально объявляется переменная sum равная нулю.

    2. Цикл формируется из трех конструкций int bom=1; - начальная инициализация, bom<=12; - условие, bom++ - изменение управляющей переменной.

    3. Внутри тела цикла накапливается сумма ударов путем прибавления управляющей переменной к значению общей суммы.

    4. Когда i достигнет значения 13, цикл остановится и на экран покажется результат.

    Пример 2.

    Постановка задачи.

    Пользователь с клавиатуры последовательно вводит целые числа. Как только пользователь ввел 0, необходимо показать на экран сумму всех введенных чисел.

    Код реализации.
    #include <iostream>
    using namespace std;
    void main(){
     int digit, sum=0;
    
     for(;;){ // реализация бесконечного цикла
    
     cout<<"Enter digit:";
     cin>>digit; // ввод числа
     if(digit==0) // если введен 0 
     break; //остановить цикл
     sum+=digit; // накопление суммы 
     }
    
     // показ результата
     cout<<" Sum of digits "<<sum<<"\n\n";
    }
    
    Комментарий к коду.

    1. В программе реализован условно бесконечный цикл. То есть остановка цикла происходит искусственным путем (break).

    2. На каждой итерации пользователь вводит число.

    3. Осуществляется проверка, если это число - 0, значит пора остановить цикл, если не 0, необходимо прибавить число к общей сумме.

    4. После того, как отработает break и цикл прекратит работу, на экран покажется сумма всех введенных с клавиатуры чисел.

    Пример 3.

    Постановка задачи.

    Написать программу, которая выводит на экран таблицу умножения.

    Код реализации.
    #include <iostream>
    using namespace std;
    void main(){
     int digit;
     cout<<"Enter digit:";
     cin>>digit;
    
     // цикл перебирает числа от 2 до введенного числа
     for(int i=2;i<digit;i++){
     
     // если число не делится на текущее 
     // значение i без остатка остановить
     // данный шаг и перейти к
     // следующему
     if(digit%i!=0) 
     continue;
    
     // показать i на экран
     cout<<i<<"\n"; 
     }
    }
    
    Комментарий к коду.

    1. Пользователь вводит число для анализа.

    2. Цикл последовательно перебирает все числа от 2 до исходного.

    3. Осуществляется проверка: если искомое число на текущее без остатка не делится, необходимо прервать данный шаг цикла и перейти к части i++. (continue).

    4. Если искомое число на текущее без остатка делится, то на экран показывается текущее число.

Категория: C | Добавил: DEN-SHP (05.11.2012)
Просмотров: 964 | Рейтинг: 0.0/0
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]