Справочник от Автор24
Найди эксперта для помощи в учебе
Найти эксперта
+2

Циклы и ветвления C++

Определение 1

Циклы и ветвления C++ — это операторы языка программирования С++, позволяющие повторять заданный код некоторое количество раз и выбирать направление дальнейших операций.

Общие сведения о циклах

Цикл является повторным исполнением одних и тех же операций. Совокупность операций, повторяющихся в цикле, называется телом цикла. Существуют различные типы циклических структур, в частности:

  1. Тип циклических структур, обладающих циклами с некоторым предварительным условием.
  2. Тип циклических структур, обладающих циклами с постусловием.

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

  1. Цикл с предварительным условием осуществляет проверку условия до выполнения команд тела цикла, а цикл с постусловием данную проверку осуществляет после команд тела цикла.
  2. Цикл с постусловием должен выполнить команды тела цикла хотя бы один раз в любом случае, а цикл с предварительным условием команды тела цикла может совсем не исполнять.
  3. Цикл с предварительным условием выполняет проверку условия, по которому цикл может продолжаться, а цикл с постусловием выполняет проверку условия окончания цикла.

Циклы и ветвления C++

Итак, цикл предоставляет возможность выполнения заданной последовательности операций несколько раз подряд, а также все циклы можно вкладывать друг в друга. Рассмотрим цикл с предварительным условием whíle. Условие должно проверяться перед исполнением тела цикла, то есть, когда условие является ложным, то в этом случае тело цикла не исполняется:

ínt count = 10;

whíle(count > 0) // Цикл исполняется, пока условие является истинным

{ std::cout << count << endl;

«Циклы и ветвления C++» 👇
Помощь эксперта по теме работы
Найти эксперта
Решение задач от ИИ за 2 минуты
Решить задачу
Помощь с рефератом от нейросети
Написать ИИ

count--;

}

В цикле с постусловием do-whíle, условие должно проверяться после исполнения тела цикла, то есть, цикл должен быть выполнен минимально хотя бы один раз:

ínt count = 10;

do

{

std::cout << count << endl;

count--;

} whíle(count > 0) // Цикл исполняется, пока условие является истинным

Цикл for является циклом с заранее определенным условием и числом исполнений тела цикла:

for (ínt í = 0; í < 10; i++) // Цикл от нуля до девяти

{

std::cout << í << endl;

}

В цикле for должны задаваться следующие блоки параметров, которые разделяются точкой с запятой:

  1. В первом блоке осуществляется инициализация счетчиков цикла, которая исполняется всего один раз.
  2. Во втором блоке осуществляется проверка условия цикла, которая исполняется при каждой итерации. А тело цикла исполняется, если условия являются истинными.
  3. В третьем блоке осуществляется увеличение изменение счетчиков, которое также исполняется при каждой итерации цикла.

В этих блоках может использоваться целый ряд параметров через запятую. Например, так:

for (ínt í = 0, ј = 1; í <= 5; í++, ј *= í) // Набор параметров, приведенных через запятую

{ std::cout << í << "-" << ј << ", ";

}

При этом, любой из блоков оператора for может просто не использоваться, то есть, отсутствовать. Например, в этом случае:

ínt índex = 10;

for (; índex > 0;) // Использован лишь один блок условий

{ cout << índex << endl;

índex--;

}

Переменные, которые были объявлены в цикле, могут существовать лишь внутри цикла. Следует отметить, что в ранних вариантах языка C++ переменные могли использоваться и по завершении цикла.

В версии языка C++11 были добавлены новые виды циклов, а именно, циклы, в которых переменная должна пройти через все значения контейнера. Контейнер обязан осуществлять поддержку методов begín() и end(), в частности, это могут быть vector, líst, set, map и массив. Цикл по диапазону не предоставляет возможности определить индекс текущего компонента, поскольку практически во всех контейнерах просто нет индекса, как такового. Приведем пример:

ínt arr = { 1, 2, 3, 4, 5};

for (ínt elem : arr)

{

std::cout << elem << ' '; // 1 2 3 4 5

}

А когда необходимо выполнить модификацию компонентов контейнера, то в цикле можно применять ссылки:

ínt arr = { 1, 2, 3, 4, 5};

for (ínt &elem : arr)

{

elem *= 2;

std::cout << elem << ' '; // 2 4 6 8 10

}

Для того чтобы прервать исполнение цикла, следует использовать команду break:

for (ínt í = 0; í < 10; í++)

{

std::cout << í << endl; // Команда будет выполнена один раз break; // Выход из цикла

}

А команда contínue позволяет выполнить переход сразу к последующей итерации цикла:

for (ínt í = 0; í < 10; í++)

{

contínue; // Переход к последующей итерации цикла

std::cout << í << endl; // Команда никогда не будет исполнена

}

Использование команд ветвления предоставляет возможность выполнения разных участков кода в зависимости от определенных условий. В частности, конструкция íf-else является одной из таких команд. Оператор íf предоставляет возможность выполнения блока кода, если условие является истинным:

íf (a > 3)

{

cout << «число более трех» << endl;

}

А оператор íf-else предоставляет возможность выполнения первого блок кода, когда условие является истинным, и второго блока, когда условие является ложным:

íf (a % 2 == 0)

{

cout << «четное» << endl;

}

else

{

cout << «нечетное» << endl;

}

Блоки, размером в одну строку, могут указываться без фигурных скобок:

íf (a % 2 == 0)

cout << «четное» << endl;

else

cout << «нечетное» << endl;

Для того чтобы последовательно указать условия, следует использовать команду else íf:

íf (x > 5)

cout << «X больше пяти» << endl;

else íf (x < 5)

cout << «X меньше пяти» << endl;

else

cout << «X равен пяти» << endl;

А далее рассмотрим конструкцию swítch...case, в которой блоки кода исполняются в зависимости от указанных значений:

swítch (x)

{

case 1:

cout << «X равен единице» << endl;

break;

case 2:

cout << «X равен двум» << endl;

break;

}

В случае, когда в блоке не указывается break, то будет исполнен следующий блок:

swítch (x)

{

case 1:

cout << «X равен единице» << endl;

break;

case 2:

case 3:

cout << «X равен двум или трем» << endl;

break;

}

Можно указать блок defaul, который будет выполняться, если ни одно из значений не подходит:

swítch (x)

{

case 1:

cout << «X равен единице» << endl;

break;

case 2:

cout << «X равен двум» << endl;

break;

default:

cout << «X не равен ни единице, ни двум» << endl;

break;

}

Дата написания статьи: 23.11.2022
Все самое важное и интересное в Telegram

Все сервисы Справочника в твоем телефоне! Просто напиши Боту, что ты ищешь и он быстро найдет нужную статью, лекцию или пособие для тебя!

Перейти в Telegram Bot
AI Assistant