Пример программы с while

Оператор цикла while или цикл while — цикл, повторяющий одно и то же действие, пока условие продолжения цикла while остаётся истинным.

// форма записи цикла while while (/*условие продолжения цикла while*/) < /*блок операторов*/; /*управление условием*/; >

Условие продолжения цикла должно быть истинно true , как только условие стало ложным, выполняется выход из цикла. Также как и в условных операторах выбора, фигурные скобочки могут опускаться в том случае, если тело цикла — это один оператор. Но как правило в цикле выполняется несколько операторов, так как кроме выполнения полезного действия необходимо делать условие цикла while ложным, иначе цикл будет бесконечным, а это, в свою очередь, приведет к зависанию программы.

Рассмотрим применение цикла while на примере движения автомобиля. На псевдокоде, то это будет так:

// Пока скорость движения автомобиля меньше 60 км/ч, продолжать наращивать скорость.

Истинным условием цикла, в данном случае, является скорость автомобиля меньше 60 км/ч, а ложным — скорость автомобиля больше или равно 60 км/ч. Повторение цикла будет продолжаться до тех пор пока скорость автомобиля не станет больше или равно 60 км/ч, после наступления этого момента условие цикла станет ложным, и программа выйдет из цикла. Рассмотрим фрагмент кода на C++ с циклом while решающим поставленную задачу.

Циклы. Цикл do while. Что это. Что делает. Пример. Синтаксис. Урок #15.


int speed = 5; // начальная скорость автомобиля while ( speed < 60 ) // заголовок цикла while speed += 10; // тело цикла
// while.cpp: определяет точку входа для консольного приложения. #include «stdafx.h» #include using namespace std; int main(int argc, char* argv[]) < int speed = 5, count = 1; while ( speed < 60 ) < speed += 10; // приращение скорости cout system(«pause»); return 0; >

Итак, в строке 14 добавил переменную-счётчик, для подсчёта прохождений цикла.

Тело цикла увеличилось, поэтому пришлось поставить фигурные скобочки. Результат работы программы (см. Рисунок 1).

цикл while в С++

Рисунок 1 — Цикл while в C++

Как я и говорил, всего 6 повторений цикла и после выхода из цикла while переменная speed = 65 .

Для закрепления материала по циклу while разработаем всем известную игру «Отгадай число». На псевдокоде это будет так:

// Пока загаданное число не угадано, продолжать угадывать его

Загадывать число будет компьютер, а мы — отгадывать. Используя генератор случайных чисел, компьютер загадает число от 1 до 10, включительно, пока мы не отгадаем число выход из цикла не произойдет.

// ygadai.cpp: определяет точку входа для консольного приложения. #include «stdafx.h» #include #include using namespace std; int main(int argc, char* argv[]) < srand( time( 0 ) ); int unknown_number = 1 + rand() % 10; // загадываемое число int enter_number; // переменная для хранения введённого числа cout > enter_number; while ( enter_number != unknown_number ) < cout > enter_number; // продолжаем отгадывать > cout

Циклы. Цикл while. Что это. Что делает. Пример. Синтаксис. Урок #14.

Чтобы войти в цикл необходимо инициализировать переменную enter_number , тогда цикл while начнёт корректную проверку условия, вот для этого перед циклом while мы запрашиваем пользователя ввести число. После того как пользователь ввёл число, начинает работать цикл while , выйти из которого получится только в случае угадывания числа. результат работы программы (см. Рисунок 2).

оператор цикла while C++

Рисунок 1 — Цикл while в C++

Я отгадал число с третьей попытки, а Вы, с какой сможете??

Источник: cppstudio.com

Крутой курс Java для «чайников». Урок 18. Цикл while.

Аналогично циклу for при выполнении цикла while также выполняется блок команд до тех пор, пока выполняется определённое условие. У него также есть проверочное условие , есть тело цикла. И одно его выполнение также называется итерацией .

Читайте также:
Если бы строители строили здания так же как программисты пишут программы

Цикл while имеет следующий синтаксис

while ( проверочное выражение )

код для выполнения на каждой итерации (тело цикла);

Алгоритм работы цикла while:

1. Проверятся на истинность проверочное выражение .

2. Если проверочное выражение истинно, то выполняется тело цикла, которое расположено внутри фигурных скобок <>

3. После того, как завершится тело цикла, программа снова переходит к проверке на истинность проверочного выражения, т.е. на 1-й шаг.

Дословно можно представить алгоритм работы примерно так

пока (проверочное выражение истинно)

выполняется код на каждой итерации

В отличие от цикла for в случае с while нет части кода, в которой происходит объявление и изменение оператора счётчика, который бы отвечал за количество итераций, которые должны выполниться, и за то, в какой момент нужно сделать проверочное условие ложным, чтобы вовремя прекратить выполнение цикла. Здесь необходимо отдельно об этом позаботиться.

Важно! Если на входе в цикл проверочное выражение ложно, то ни одна итерация цикла не будет выполнена. Цикл, оценив проверочное выражение и получив в результате false, перейдёт к выполнению следующей задачи.

Теперь на конкретном примере. Возьмём пример из урока 16 (про цикл for) и реализуем его с помощью цикла while.

Задача — вывести на экран числа от 1 до 10, каждое число с новой строки.

Код для такой задачи будет следующий

Как он будет выполняться?

Сначала мы объявляем переменную (до цикла), фактически она будет счётчиком, и присваиваем ей начальное значение 1.

Затем входим в цикл.

Осуществляется проверка проверочного выражения i

Оно верно, соответственно, тело цикла выполнится.

Сначала выполнится команда вывода текста на экран

В результате чего на экран будет выведено значение переменной i (которое на данный момент равно 1).

Затем выполнится оператор инкремента i++, после чего значение переменной i станет равно 2.

Смотрим, выполнится вторая итерация или нет. Проверяем на истинность проверочное условие i

Опять выполняем оператор вывода текста на экран

Значение переменной i на данный момент равно 2. Это число и будет выведено на экран.

Затем сработает инкремент i++, значение i станет равно 3.

Всё, вторая итерация завершена.

Аналогично выполнятся с 3-й по 9-ю итерации.

Смотрим, что у нас будет после выполнения 9-й итерации. Очевидно, значение переменной i станет равно 10.

Смотрим, выполнится 10-я итерация или нет. Выполняем проверку проверочного условия. i

Опять на экран будет выведено значение переменной i командой

Т.е. будет выведено число 10.

Затем опять сработает оператор инкремента i++ и значение переменной i станет равно 11.

Смотрим, выполнится 11-я итерация или нет.

Проверяем, верно ли проверочное условие. i

Проверочное условие не верно. То есть тело цикла не выполнится и программа перейдёт к выполнению последующих задач (либо завершит своё выполнение если таковых нет).

Как обычно рассматриваем особенности.

1. Ещё раз акцентирую внимание. В случае цикла while конструкция предусматривает только проверочное условие. Заботиться о том, чтобы оно в нужный момент было верно, а в другой нужный момент неверно, надо самостоятельно. Кроме того, надо составлять конструкцию так, чтобы цикл не стал бесконечным.

То есть чтобы в какой-то момент проверочное условие стало ложным.

2. Аналогично циклу for можно выполнять любые необходимые операции с переменной-счётчиком:

  • инкремент, декремент i++, i—,
  • прибавление или вычитание любого числа i = i + 2; i = i — 5;
  • умножение и деление на любое число i *= 3; i /= 7;
  • Любые другие. Главное, чтобы проверочное условие было истинно или ложно в нужный момент исполнения программы.
Читайте также:
1с не удалось запустить следующую начальную программу

3. Если в какой-то момент проверочное условие не станет ложным, то тело цикла будет исполняться снова и снова. Цикл станет бесконечным.

Пример бесконечного цикла в случае while

4. Проверочное условие может быть как простым выражением, так и сложным. Главное, чтобы результатом выполнения этого выражения было логическое значение (boolean) — true или false.

Например, можно так

while (text != «end»)

5. Циклы while подобно циклам for можно вкладывать один в другой.

Здесь, как и ранее рассмотрим пример из урока 16. Он был выполнен с помощью вложенных циклов for. А мы выполним его с помощью вложенных циклов while.

System.out.println(«Номер итерации внешнего цикла — » + i);

System.out.println(» Номер итерации внутреннего цикла — » + j);

Теперь смотрим, как эта конструкция работает.

Поскольку при работе с циклом while об объявлении переменной нужно заботиться заранее, мы объявили их до цикла.

Программа входит в цикл.

Начинается она с вывода на экран номера итерации.

То есть будет выведено «Номер итерации внешнего цикла — 1».

Продолжаем выполнять первую итерацию внешнего цикла. Доходим до внутреннего цикла. Проверяем на действительность проверочное условие j

Начинается она с вывода на экран номера итерации внутреннего цикла. Итак, на первой его итерации на экран будет выведено » Номер итерации внутреннего цикла — 1″.

Далее выполнится оператор инкремента j++, в результате чего значение переменной j будет увеличено на 1 и станет равно 2.

Всё. Первая итерация внутреннего цикла завершена.

Заново осуществляем проверку на истинность проверочного условия внутреннего цикла. j

Выполняем тело цикла. Выводим на экран текст » Номер итерации внутреннего цикла — 2″. Затем инкрементом j++ увеличиваем значение переменной j на единицу. Теперь значение j равно 3.

Всё. Вторая итерация внутреннего цикла завершена.

Всё. Третья итерация внутреннего цикла выполнилась.

Итак, после внутреннего цикла мы увеличиваем значение переменной i на единицу оператором инкремента. i++.

Теперь обратим внимание на такой момент. После выполнения последней итерации значение переменной j стало равно 4.

Чтобы наш внутренний цикл, который начнёт работу на второй итерации внешнего цикла, начал отсчёт с единицы, нужно присвоить переменной j значение 1, что мы и делаем командой j = 1

Всё. Первая итерация внешнего цикла завершена.

На второй итерации произойдёт всё то же самое, что и на первой:

— Вывод текста «Номер итерации внешнего цикла — 2»

— Три итерации внутреннего цикла, которые в конечном итоге три раза выведут на экран текст с номером итерации внутреннего цикла.

— Значение переменной i будет увеличено ещё на единицу.

— Значение переменной j снова станет равно 1 после выполнения оператора присвоения.

Таким образом, аналогично циклу for всего за программу будут выполнены 3 итерации внешнего цикла и на каждой итерации внешнего цикла будут выполнены по 3 итерации внутреннего цикла. Итого тело внутреннего цикла будет выполнено 9 раз (по 3 раза на каждой итерации внешнего цикла).

Для наглядности ещё раз копирую из урока 16 результат выполнения кода

1. Первая итерация внешнего цикла.

Вывод на экран текста «Номер итерации внешнего цикла — 1»

1.1. Первая итерация внутреннего цикла

Вывод на экран текста » Номер итерации внутреннего цикла — 1″

1.2. Вторая итерация внутреннего цикла

Вывод на экран текста » Номер итерации внутреннего цикла — 2″

1.3. Третья итерация внутреннего цикла

Вывод на экран текста » Номер итерации внутреннего цикла — 3″

2. Вторая итерация внешнего цикла.

Вывод на экран текста «Номер итерации внешнего цикла — 2»

Читайте также:
Программы компьютерного тестирования это

2.1. Первая итерация внутреннего цикла

Вывод на экран текста » Номер итерации внутреннего цикла — 1″

2.2. Вторая итерация внутреннего цикла

Вывод на экран текста » Номер итерации внутреннего цикла — 2″

2.3. Третья итерация внутреннего цикла

Вывод на экран текста » Номер итерации внутреннего цикла — 3″

3. Третья итерация внешнего цикла.

Вывод на экран текста «Номер итерации внешнего цикла — 3»

3.1. Первая итерация внутреннего цикла

Вывод на экран текста » Номер итерации внутреннего цикла — 1″

3.2. Вторая итерация внутреннего цикла

Вывод на экран текста » Номер итерации внутреннего цикла — 2″

3.3. Третья итерация внутреннего цикла

Вывод на экран текста » Номер итерации внутреннего цикла — 3″

6. Работу цикла while также можно прервать преждевременно при выполнении определённого условия с помощью ключевого слова break

Пример такой конструкции для цикла while

Эта конструкция последовательно выводит на экран числа от 1 до 10.

Можно прервать выполнение цикла, например, при значении переменной i, равном 3. Тогда конструкция будет следующей:

Результатом выполнения такого кода будет вывод на экран чисел от 1 до 2 (с 1-й по 2-ю итерацию). Затем по мере исполнения 3-й итерации программа дойдёт до исполнения оператора if. Когда условие в скобках будет истинным (при значении i, равном 3) выполнится код в фигурных скобках. То есть программа выйдет из цикла. При этом оставшиеся команды тела цикла на 3-й итерации (а это вывод текста на экран и оператор инкремента) и оставшиеся итерации цикла (с 4-й по 10-ю) выполнены не будут.

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

7. В проверочном выражении цикла while не обязательно использовать только числовые значения. Можно использовать, например, текстовые.

Такая конструкция имеет право на жизнь

if (i == 5) j = «quit»;

Не нарушая традиций, посмотрим, как выполняется код из примеров данного урока.

Источник: dzen.ru

Пример программы с while

aleksEy Уровень 16

9 июня 2023

Ну тогда делаем вывод таблицы в одну строчку 🙂 System.out.printf( «____2__3__4__5__6__7__8__9_ n2 | 4 6 8 10 12 14 16 18 n3 | 6 9 12 15 18 21 24 27 n4 | 8 12 16 20 24 28 32 36 n5 | 10 15 20 25 30 35 40 45 n6 | 12 18 24 30 36 42 48 54 n7 | 14 21 28 35 42 49 56 63 n8 | 16 24 32 40 48 56 64 72 n9 | 18 27 36 45 54 63 72 81»);

2 мая 2023

Пример для последнего случая – вычисление в цикле while суммы кубов натуральных чисел, у которых квадрат меньше их количества: public static void main(String[] args) < int sum = 0; // итоговая сумма int i = 0; // стартовое число ряда int count = 20; // количество чисел while(i<=count) < i++; // берем очередное число, i++ эквивалентно i=i+1 if (i*i <=count)// если квадрат числа меньше continue; // количества чисел — сумму не считаем // переходим к следующему числу в цикле sum += i*i*i; // иначе считаем сумму кубов чисел > // sum += i*i*i — форма записи, аналогичная sum = sum + i*i*i System.out.println(sum);// печатаем результат > Мне одному кажется, что должно быть (i*i>=count) в условии оператора continue?

Источник: javarush.com

Рейтинг
( Пока оценок нет )
Загрузка ...
EFT-Soft.ru