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

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

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

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

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

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

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

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

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

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

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

ínt count = 10;

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

{ std::cout $\lt$$\lt$ count $\lt$$\lt$ endl;

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

count--;

}

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

ínt count = 10;

do

{

std::cout $\lt$$\lt$ count $\lt$$\lt$ endl;

count--;

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

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

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

{

std::cout $\lt$$\lt$ í $\lt$$\lt$ endl;

}

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

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

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

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

{ std::cout $\lt$$\lt$ í $\lt$$\lt$ "-" $\lt$$\lt$ ј $\lt$$\lt$ ", ";

}

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

ínt índex = 10;

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

{ cout $\lt$$\lt$ índex $\lt$$\lt$ 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 $\lt$$\lt$ elem $\lt$$\lt$ ' '; // 1 2 3 4 5

}

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

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

for (ínt &elem : arr)

{

elem *= 2;

std::cout $\lt$$\lt$ elem $\lt$$\lt$ ' '; // 2 4 6 8 10

}

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

for (ínt í = 0; í $\lt$ 10; í++)

{

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

}

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

for (ínt í = 0; í $\lt$ 10; í++)

{

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

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

}

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

íf (a > 3)

{

cout $\lt$$\lt$ «число более трех» $\lt$$\lt$ endl;

}

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

íf (a % 2 == 0)

{

cout $\lt$$\lt$ «четное» $\lt$$\lt$ endl;

}

else

{

cout $\lt$$\lt$ «нечетное» $\lt$$\lt$ endl;

}

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

íf (a % 2 == 0)

cout $\lt$$\lt$ «четное» $\lt$$\lt$ endl;

else

cout $\lt$$\lt$ «нечетное» $\lt$$\lt$ endl;

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

íf (x > 5)

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

else íf (x $\lt$ 5)

cout $\lt$$\lt$ «X меньше пяти» $\lt$$\lt$ endl;

else

cout $\lt$$\lt$ «X равен пяти» $\lt$$\lt$ endl;

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

swítch (x)

{

case 1:

cout $\lt$$\lt$ «X равен единице» $\lt$$\lt$ endl;

break;

case 2:

cout $\lt$$\lt$ «X равен двум» $\lt$$\lt$ endl;

break;

}

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

swítch (x)

{

case 1:

cout $\lt$$\lt$ «X равен единице» $\lt$$\lt$ endl;

break;

case 2:

case 3:

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

break;

}

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

swítch (x)

{

case 1:

cout $\lt$$\lt$ «X равен единице» $\lt$$\lt$ endl;

break;

case 2:

cout $\lt$$\lt$ «X равен двум» $\lt$$\lt$ endl;

break;

default:

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

break;

}

Воспользуйся нейросетью от Автор24
Не понимаешь, как писать работу?
Попробовать ИИ
Дата написания статьи: 23.11.2022
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач
Все самое важное и интересное в Telegram

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

Перейти в Telegram Bot