C++

Цикл do while

Мы уже изучили с вами цикл while. Но бывают случаи, когда применять его не совсем удобно. Например, мы желаем сделать проверку ввода данных, и если данные не введены, нам не надо обращаться к условию. И использовать циклы с предусловием нам будет неудобно. Для этого и существует цикл do while. Таким образом мы точно знаем, что цикл точно выполнится хотя бы один раз.

Как выглядит цикл с предусловием?

Блок схема цикла do while

Как вы можете видеть, вначале мы выполняем действие, а только затем обращаемся к условию. И если условие true, то мы продолжаем работать с циклом, а как только условие выдаст false, мы выйдем из цикла.

Алгоритм действий цикла do while

  1. Выполняем действие;
  2. Проверяем условие;
  3. Если условие верно, повторяем первый пункт.

Синтаксис цикла do while

Синтаксис цикла do while

Синтаксис цикла do while мало отличается от других операций языка C++. И первое, что нам надо запомнить:

  1. Если в теле цикла несколько действий, мы берем их в фигурные скобки;
  2. Если действие одно, фигурные скобки не обязательны.

Синтаксис цикла do while с одним действием

Пример использования цикла do while

Давайте рассмотрим на примере:

Нам необходимо выводить все введенные числа последовательности до тех пор, пока не введем 0.

Пример использования цикла do while

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

Обратите внимание, в условии мы пишем нашу переменную value и больше ничего. Она равносильна вот этому выражению value != 0.

Защита от некорректных данных

Защита от некорректных данных при помощи цикла do while

Мы будем заставлять пользователя вводить числа до тех пор, пока он не введет корректный день недели с понедельника по воскресенье. Предполагается, что понедельник равен 1, а воскресенье 7.

Прерывание цикла

Очень важно, когда мы знакомились с оператором switch, мы использовали оператор принудительного выхода break. В циклах while, do while и for, мы его так же можем использовать. Однако, делать это не рекомендуется.

Помимо оператора break, существует оператор continue. Он отличается тем, что заставляет принудительно выйти из текущей итерации цикла. Точно так же как и break, continue использовать не рекомендуется.

Использование операторов break и continue внутри цикла

Посмотрите на изображение выше. На нем представлены схемы действия этих двух операторов. И последствия их использования внутри цикла.

Все дело в том, что мы используем циклы для определенных задач, а применение break либо continue, нарушает наши планы. И мы не сможем предсказать логику действия нашего цикла.

Решение задач

Количество чисел последовательности

Дана последовательность целых чисел, оканчивающаяся нулём. Необходимо найти количество чисел в этой последовательности. Ноль числом последовательности не считается.

Формат входных данных
Вводится не более, чем 215 целых чисел, каждое из которых не превосходит по модулю (215−1). После последнего числа вводится 0.
Формат выходных данных
Требуется вывести одно число — количество чисел в последовательности.
Примеры
входные данные
1 2 3 4 5 0
6 13 42 0
выходные данные
5
3

Решение задачи Количество чисел последовательности

Средний рост

В классе учится n учеников. Известен рост каждого из них в сантиметрах. Рост мальчиков по условию задан отрицательными числами. Определите средний рост мальчиков и средний рост девочек.

Формат входных данных
Вводятся целое число n (2 <= n <= 40) и n целых чисел, определяющие рост каждого ученика. Известно, что в школе нет ни одного ученика ростом выше 300 сантиметров и ниже 30. Также известно, что в каждом классе учится хотя бы одна девочка и хотя бы один мальчик. Формат выходных данных
Требуется вывести два целых числа через пробел — средний рост мальчиков и средний рост девочек. Оба числа требуется округлить вниз до целого числа сантиметров.
Примеры
входные данные
10
156
-172
189
168
-187
162
-190
165
-186
-179
выходные данные
182 168

Решение задачи Средний рост

Видео по теме урока

Tags

Related Articles

Leave a Reply

Back to top button
Close