[FAQ] Оператор break и continue - Форум Cheat-Master.ru
  • Страница 1 из 1
  • 1
Модератор форума: Sanoxxx, Alowir  
[FAQ] Оператор break и continue
eastwood63 Дата: Пятница, 25.12.2015, 21:10 | Сообщение # 1
Боец
Сообщений: 283
Статус: Offline
В теле оператора множественного выбора switch оператор break прерывал исполнение оператора switch. Когда оператор break выполняется в цикле, то досрочно прерывается исполнение оператора цикла, и управление передаётся следующему оператору после цикла. Разработаем программу с использованием оператора break. Программа печатает таблицу степеней двойки.


Код
// break.cpp: определяет точку входа для консольного приложения.

#include "stdafx.h"
#include <iostream>
// заголовочный файл <cmath> содержит прототип функции pow()
#include <cmath>
using namespace std;

int main(int argc, char* argv[])
{
    for (int count = 0; count <= 10; count++) // начало цикла for
    {
        if ( count == 6)
            break; // выход из цикла for
        cout << "2^" << count << " = " << pow(2.0,count) << endl; // печать степени двойки
    }
    system("pause");
    return 0;
}


В строке 6 подключён заголовочный файл содержащий прототипы основных математических функций. Сейчас нужно запомнить то, чтобы использовать функцию pow() необходимо подключить заголовочный файл <cmath>. Функция pow(a,b) возводит число а в степень b. В строке 11 записан заголовок цикла for. В цикле for объявлена переменная-счётчик count, значение которой меняется от 0 до 10 включительно. В строке 13 записан оператор условного выбора if, истинность условия которого запускает оператор break, который, в свою очередь, приводит к выходу из цикла for. В строке 15 запускается функция pow(). Условие продолжения цикла for будет истинно до тех пор, пока значение в переменной count <= 10. Тогда как, выход из цикла for произойдёт раньше, чем условие продолжения цикла станет ложным. Выход из цикла for выполнится, когда значение в переменной count станет равным шести.


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

Код
// break.cpp: определяет точку входа для консольного приложения.

#include "stdafx.h"
#include <iostream>
#include <cmath> // заголовочный файл содержит прототип функции pow()
using namespace std;

int main(int argc, char* argv[])
{
    for (int count = 0; count <= 10; count++) // начало цикла for
    {
        cout << "2^" << count << " = " << pow(2.0,count) << endl; // печать степени двойки
        // эквивалент оператору break
        if ( count == 5)
            count = 11;
    }
    system("pause");
    return 0;
}


Оператор условного выбора if теперь записан после строки 12, по этому изменилось условие в операторе if. Как только условие в операторе if станет истинным программа передаст управление строке 15. Тогда переменной count присвоится значение 11, и условие продолжения цикла for станет ложным.

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

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


Код
// пример использования оператора continue:
int count = 0;
do // начало цикла do while
{
continue;
count++;
}
while ( count  <  10 )


Посмотрите внимательно на выше приведенный пример, и Вы увидите, что do while бесконечный, так как каждая итерация цикла приводит к выполнению оператора continue, который пропускает операцию инкремента переменной-счётчика count и переходит на следующую итерацию цикла. Таким образом значение в переменной count не меняется, а значит и условие всегда будет истинным. Разработаем программу с оператором continue. Программа должна работать циклически. Внутри цикла необходимо организовать ввод чисел.Если введено число от 0 до 10 включительно, то необходимо напечатать квадрат этого числа, иначе используя оператор continue пропустить оператор возведения в квадрат введенного числа. При введении отрицательного числа осуществить выход из цикла.

Код
// continue.cpp: определяет точку входа для консольного приложения.

#include "stdafx.h"
#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
    int in_number; // переменная для хранения введённого числа
    do
    {
        cout << "Enter number: ";
        cin >> in_number; // считываем введённое число в переменную in_number
        if ( in_number > 10 || in_number < 0 ) // если введённое число не входит в заданный интервал
            continue; // переход на следующую итерацию цикла do while
        cout << "square = " << in_number * in_number << endl; // возводим в квадрат введённое число
    } while ( in_number >= 0 ); // пока введённое число больше либо равно нулю цикл будет работать
    system("pause");
    return 0;
}


Цикличность в программе организуем циклом с постусловием — do while. В цикле сначала считываем введённое число в переменную in_number, после чего, выполняется проверка условия в операторе if. Условие оператора условного выбора if будет истинным в том случае, если введённое число будет строго меньше нуля или строго больше 10. Заданный интервал — [0;10], число взятое из этого интервала возводится в квадрат. Истинность условия оператора if приводит к выполнению оператора continue в строке 15. А оператор continue пропускает операторы в строке 16 и переходит к проверке условия продолжения цикла do while. Условие в цикле будет истинно, пока вводимые числа будут строго больше 0.


Теперь переделаем эту программу так, чтобы можно было обойтись без оператора continue, то есть напишем эквивалент оператору continue.

Код
// continue.cpp: определяет точку входа для консольного приложения.

#include "stdafx.h"
#include <iostream>
using namespace std;

int main(int argc, char* argv[])
{
    int in_number; // переменная для хранения введённого числа
    do
    {
        cout << "Enter number: ";
        cin >> in_number; // считываем введённое число в переменную in_number
        if ( in_number <= 10 && in_number >= 0 ) // если введённое число входит в заданный интервал
            //continue; // переход на следующую итерацию цикла do while
        cout << "square = " << in_number * in_number << endl; // возводим в квадрат введённое число
    } while ( in_number >= 0 ); // пока введённое число больше либо равно нулю цикл будет работать
    system("pause");
    return 0;
}


В эквивалентной программе без оператора continue код уменьшился на одну строку — закомментированная строка 15. Изменилось условие оператора условного выбора if. Строка 16 — это тело оператора if, а значит, если условие в if истинно будет выполнятся оператор в строке 16.


[AHK] Все биндеры для всех фракций DRP, ARP, SRP
[DRP] Ездим на такси бесплатно
[ARP] ЧИТЕРИМ ГАН С БОМЖА (1ЛВЛ)
[DRP] Оплачиваем дом с твинка
[DRP] Лучшая работа для 1 уровня
[CLEO] Мои темы с разработками
[Cheater] Все мои видео читинга


Сообщение отредактировал eastwood63 - Пятница, 25.12.2015, 21:12
  • Страница 1 из 1
  • 1
Поиск:
Статистика Форума
Лучшие пользователи
Admin [39113]

GеNius [7210]

[CM]Russel [5557]

kenlo763 [4952]

[CM]AGRESSOR [4639]

Snake_Firm [4452]

Сэс [4416]

Artem_Buero [4223]

[CM]Durman [3204]

[CM]Рафаэль [3080]

iMaddy [2855]

sky_Woker [2854]

getrekt [2745]

Новые пользователи
PUPS12124 [02:09]

Bioksit [00:15]

Dafdaf [23:27]

ячеченец [21:00]

balbesbizad [12:02]

cpark [11:40]

Mario_Imperator [11:33]

leonovichstas97 [22:40]

ubeyefudu [18:53]

zheniakuzma [17:47]

Moonberg [16:04]

tamararl6 [15:04]

consuelobm3 [08:03]