Циклы в Паскале
Циклы в Паскале
При решении задач может возникнуть необходимость повторить одни и те же действия несколько или множество раз. В программировании блоки кода, которые требуется повторять не единожды, оборачиваются в специальные конструкции – циклы. У циклов выделяют заголовок и тело. Заголовок определяет, до каких пор или сколько раз тело цикла будет выполняться. Тело содержит выражения, которые выполняются, если в заголовке цикла выражение вернуло логическую истину (True, не ноль). После того как достигнута последняя инструкция тела, поток выполнения снова возвращается к заголовку цикла. Снова проверяется условие выполнения цикла. В зависимости от результата тело цикла либо повторяется, либо поток выполнения переходит к следующему выражению после всего цикла.
В языке программирования Паскаль существует три вида циклических конструкций.
Цикл со счетчиком
Проблемы никогда нельзя разрешить
с тем же образом мыслей, который их породил.
Хотелось бы отнести приведенный урок к Методике развития критического мышления. По моему скромному мнению весь процесс изучения предмета "Информатика" должен быть построен на принципе "конструирования собственных знаний в рамках своей собственной поисковой деятельности". И главный акцент я ставлю на построение (создание) алгоритмов. Аспект этот сложный, но весьма заманчивый, с точки зрения развития логического мышления и воображения. Хотя в последнее время наблюдается "суровая алгоритмизация" всех школьных предметов. Дабы облегчить процедуру восприятия учителя прибегают к самым различным способам и методам. Главное при этом, на мой взгляд, чувство меры – играя, не "заигрывать". В приведенном примере все эмоции опущены, и я постаралась изложить его максимально "сухо".
Почему цикл? Согласно практике (моей) – анализ циклов вызывает затруднения и наибольшее число ошибок, поэтому делается акцент на цикл. Почему со счётчиком? А если с ним разобраться сразу и основательно, остальные даются "легко и непринуждённо".
Зададим структуру урока.
- Актуализация знаний.
- Изучение нового материала.
- Применение приобретенных знаний и отработка навыков.
1. Актуализация.
Пытаемся пробудить (вызвать из памяти), систематизировать и конкретизировать то, что ученики уже знают. Контекстом (направлением) является тема урока. На обилие (или отсутствие) высказываний делаем свои уточнения, дополнения, ставим акценты, привлекаем внимание к содержательной линии урока всеми доступными средствами.
2. Новая информация.
Выдаём по иерархическому принципу, то есть "потомок может иметь только одного родителя, а родитель может иметь множество потомков". Здесь, пожалуйста, и кластеры, и домены, и суффиксы, и префиксы. А в терминах ООП (объектно-ориентированного программирования) – классы, образцы класса, наследуемые признаки, и т.д. и т.п. Ещё иногда называют "маяковый" метод – "в темную большую комнату кидают факелы, а затем разглядывают, что вокруг них". Главное – каждый сам для себя фиксирует нужную информацию, и разные записи конспектов приветствуются, как и разные формулировки.
3. Закрепление.
Главное, на мой взгляд, дать почувствовать каждому ученику уверенность в совершаемых действиях. Решающим являются навыки самоконтроля и самопроверки – всегда есть множественность выбора (хотя бы два). Если выбора нет, это должно вызвать подозрение на ошибочность рассуждений. Хорошо, если один высказывается, а другой ищет слабые места или нечто аналогичное. Возможен похожий диалог с компьютером. И даже интерактив здесь будет уместен.
Попробуем примерить сказанное к циклу со счётчиком. Предполагается, что ученикам известен графический способ записи алгоритмов, линейные алгоритмы и алгоритмы с ветвлением, но циклические структуры ещё не знакомы. Кроме того, они знают операции присваивания и сравнения, основные алгебраические действия.
Первый вопрос зададим в лоб: — Какие образы, впечатления, ассоциации у вас вызывает слово "цикл"? (Высказывания учеников).
— Попробуйте сформулировать определение цикла на основе того, что мы только что услышали. (Высказывания учеников).
— Цикл, дословно с греческого – круг. Какие действия можно назвать циклом? (Высказывания учеников).
— Итак, цикл – повторяющееся действие. А может действие повторяться бесконечно? Что бы нам ещё хотелось? (Высказывания учеников).
— Итак, цикл – повторяющееся действие + условие.
Можно вспомнить сказки – дед тянул репку, позвал бабку, позвал внучку, позвал Жучку и т.д. Какое действие? Тянул. Какое условие? Пока не вытянул. Другие примеры циклов.
— А теперь вспомните "семь раз отмерь – один раз отрежь". Какое условие? (Высказывания учеников).
— Да, здесь считаем. Для счёта надо задать начало и конец – от .. и до .. (Высказывания учеников).
— Начинать можно с "0", с "1", да и вообще с чего угодно! Как Робинзон Крузо считал дни? (Ставил зарубки).
— А начал он с какого числа? (С того, когда попал на остров).
— Другие ставят палочки на листке бумаги, иногда одну за несколько единиц. Кто покупал куриные яйца? Как их вам считали? (Парами).
— Это называется шагом. Можно считать десятками, сотнями, любым удобным шагом.
— Итак, действие, выполняемое определенное количество раз – это цикл со счётчиком. Здесь нужен помощник, который следит от какого до какого и через сколько. Вот этот помощник и есть счётчик. Вы сдаёте норматив по подтягиванию на перекладине, а кто-то стоит рядом и считает. Изобразим:
— Для записи на языке программирования нам понадобится переменная счётчика, а что ещё? (Начальное её значение, конечное значение и шаг).
— А какой минимум служебных слов? (Высказывания учеников).
— Минимум 4 служебных слова: "для" For, "до" To, "шаг" Step, "следующий" Next.
Читаем: для икс от 1 до 10 с шагом 2 делаем <действие> следующий икс.
Если шаг равен единице (что бывает очень часто), то Step не пишется (говорят "по умолчанию — default — шаг равен единице"). Теперь рассмотрим пример:
— Проанализируем, сколько шагов сделает цикл? Какое значение икс получит по завершении цикла? (Ответ: 2 шага, x=13).
— А какое значение будет у игрек? (Ответ: y=64).
— Переменная цикла может изменяться в цикле. Сами считаем:
(Ответ: 2 шага, x=14).
— Подробно (кто-нибудь, кто быстро въехал):
Шаг 1
x=2 (присвоили переменной цикла начальное значение).
x=2+2 (теперь x=4).
x=4+2 (Next к x прибавляется шаг, теперь x=6).
6>6 (сравниваем переменную цикла с конечным значением) – нет – возврат.
Шаг 2
x=6+6 (новое значение x=12).
x=12+2 (Next к x прибавляем шаг, теперь x=14).
14>6 (сравниваем x с конечным значением) – да – стоп, выход из цикла.
Теперь сами пыхтим над заданиями. Разбиваемся на группы (например, по два человека).
— Я вам даю ответ примера с отрицательным шагом, а вы сами определите (догадайтесь здесь нехорошее слово – нужна уверенность), что здесь меняется и выполните упражнения.
— Цикл совершит 2 шага, а переменная цикла на выходе будет =1.
Делают упражнения по карточкам.
— Следующий раз разберём выход из цикла по условию и рассмотрим циклы с пост- и предусловием.
Подводим итоги. Награждаем хвалебными словами. Высказываем замечания. Задаём и, при необходимости, поясняем домашнее задание.
Один из вариантов самостоятельной работы
- Определите, какое количество раз выполняются операторы цикла?
FOR X = 10 TO 12 STEP 2
Y = X*X
NEXT X
FOR X = 3 TO 5
X = X+1
NEXT X
FOR X = 1 TO 12 STEP 5
X = 2*X
NEXT X
FOR X = -2 TO 1
X = -X
NEXT X
FOR X = 3 TO 1 STEP –2
X = X-2
NEXT X
FOR X = 14 TO 19 STEP 6
X = 6*X
NEXT X
FOR X = 4 TO 12 STEP 5
X = 2*X
IF X>7 THEN EXIT FOR
NEXT X
FOR X = 1 TO 17 STEP 9
IF X>12 THEN EXIT FOR
X = 2*X
NEXT X
Виды циклических алгоритмов
Безусловные циклы
В некоторых программах и линейных алгоритмах на компьютерах выход из циклов не предусмотрен логикой. Эти циклы называются безусловными (другое название — бесконечные). При написании таких алгоритмов для решения поставленных задач специальных синтаксических средств не используют (они часто и не предусмотрены). На практике вполне достаточно конструкций, которые предназначены для формирования обычных (условных) циклов. Чтобы обеспечить бесконечное повторение, проверка условия или исключается (LOOP…END LOOP, язык программирования Ада), или заменяется константным значением (while true do …, Pascal).
Теперь следует рассмотреть группу циклов с условием.
Циклический алгоритм с предусловием
При наличии предусловия цикл выполняется до тех пор, пока истинно определённое условие, которое указано перед началом. Данное условие проверяется ещё до выполнения тела, в результате чего тело алгоритма может вообще ни разу не выполнится (пример такой ситуации с нулевым количеством итераций — условие изначально ложно). Что касается применения и реализации, то во многих процедурных языках программирования такой алгоритм реализуется с помощью оператора while.
Циклический алгоритм с постусловием
В данном случае проверка условия происходит уже после выполнения тела. Это означает, что тело цикла хотя бы раз, да выполнится. В Pascal такой алгоритм реализуется посредством оператора repeat..until, в языке программирования Си — с помощью do…while.
В зависимости от языка, трактовка условий бывает разной. В том же Pascal речь идёт об условии выхода (работа линейного алгоритма завершится, когда условие истинно; «цикл до»), а в вышеупомянутом Си можно говорить об условии продолжения (цикл завершится, когда условие ложно; «цикл пока»).
Циклический алгоритм с выходом из середины
Это самая общая форма условного линейного алгоритма. Синтаксически оформляется посредством 3-х конструкций: — начало цикла, — конец, — команда выхода.
Конструкция начала обеспечивает маркировку программной точки, где начинается тело, конструкция конца — где тело заканчивается. Внутри циклического алгоритма присутствует команда, обеспечивающая выход — цикл оканчивается, а управление передаётся оператору, следующему за конструкцией конца.
Если сравнивать этот алгоритм с вышеупомянутыми, то он имеет особенность: часть тела, которая расположена после начала и до команды выхода, выполнится всегда, а часть тела, расположенная после команды выхода, при последней итерации не выполнится.
Чтобы организовать выход из середины, в некоторых языках программирования необходимо использовать специальные конструкции. В Ада это LOOP…END LOOP и команда EXIT либо EXIT WHEN:
Внутри этого алгоритма может находиться любое число команд выхода обоих типов — как EXIT WHEN (используется, если проверяется лишь условие выхода), так и просто EXIT (используется, если выход осуществляется в одной из вариаций сложного условного оператора).
В некоторых языках специальные конструкции для выхода из середины отсутствуют. В таких случаях смоделировать выход можно, используя любой условный цикл и оператор досрочного выхода (тот же break в Си) или goto — оператор безусловного перехода.
Циклический алгоритм cо счётчиком
При реализации этого алгоритма на компьютере определённая переменная меняет своё значение с некоторым шагом (она имеет заданное начальное и конечное значения), причём для каждого значения переменной тело цикла выполнится хотя бы раз. Во многих процедурных языках программирования алгоритм со счётчиком реализуется с помощью оператора for. В нём указывается счётчик (его ещё называют переменной цикла), определённое число проходов (граничное значение счётчика) и, в некоторых случаях, шаг изменения счётчика. В качестве примера — циклический алгоритм со счётчиком в языке программирования Оберон-2:
Хотите знать про алгоритмы больше? Записывайтесь на специализированные курсы в OTUS!
§ 8.8. Программирование циклических алгоритмов. Цикл с условием
Цикл – это алгоритмическая структура, в которой одни и те же инструкции выполняются периодически в зависимости от условия. В качестве условия (как и в условной инструкции) может быть любое выражение возвращающее числовое значение. Если оно отлично от нуля, то это интерпретируется как true . Если выражение вычисляется как 0 (в том числе, как действительный ноль 0.0 ), то это интерпретируется как false . Условие, которое вычисляется как true , позволяет выполнить один шаг цикла, который состоит в том, что будут выполнены одна или несколько инструкций, находящихся в теле цикла.
Существуют несколько разновидностей циклов. Все они сводятся к трем основным видам:
- цикл с предусловием (или типа while),
- цикл с постусловием и
- цикл с параметром (или цикл по переменной).
Инструкция while
В языке C++ цикл с предусловием реализован с помощью инструкции while . Инструкция while имеет следующий синтаксис:
Этот тип цикла является универсальным, т. к. с помощью него может быть решена любая задача с циклом. Работа цикла должна завершаться по выполнению определенного количества шагов, а для этого необходимо изменять значения объектов в теле цикла так, чтобы условие могло, рано или поздно, принять значение false . В этом и есть основная сложность разработки циклического алгоритма с помощью while . Если алгоритм как следует не продумать, то цикл может уйти в бесконечное выполнение (“зацикливание“) и алгоритм никогда не завершит свою работу. Тем не менее, бесконечный цикл может быть организован намеренно (в программировании такое не редкость), скажем, для анализа вводимых данных. “Бесконечный цикл” можно организовать следующим условием: while (true) <> . Вместо true можно использовать ненулевое значение переменной. Приведем пример.
Задача 1. Составить программу, в которой новое значение переменной присваивается в цикле.
В этом случае, выход из цикла программируется в теле цикла, например, с помощью инструкций if и break . Выход из цикла в программе 8.8.1 обеспечивается проверкой вводимого значения переменной а . Цикл будет изменять значение этой переменной до тех пор, пока не будет введен 0 .
Рассмотрим несколько типичных задач в которых используется цикл типа while .
Счетчики и накопители
Самым простым способом выхода из цикла – это проверка выполненных шагов цикла. Для этих целей используется переменная-счетчик. Эта переменная изменяет свое значение с шагом 1 , начиная с 0 . Нулевое значение переменной присваивается до входа в цикл, а в теле цикла переменной инкрементируется новое значение. В условии цикла сравнивается текущее значение счетчика с максимально возможным (количеством шагов).
Задача 2. Вывести на экран n -первых натуральных чисел.
Блок-схема
Мы уже говорили, что в циклах часто используются операции постфиксного или префиксного инкремента или декремента. Эти операции могут сделать код более компактным. Например, две инструкции тела цикла в программе 8.8.2 можно заменить всего одной:
Заметим, что счетчик не всегда нужен. Действительно, если известно общее количество шагов цикла n , то мы можем уменьшать значение n с каждым шагом цикла на единицу до тех пор, пока значение n не станет равным 0 (если, конечно, начальное значение n больше в программе не потребуется). Сформулировав логическое выражение сравнения n с 0 , мы можем создать условие выхода из цикла. В добавок, операцию декремента можно поместить непосредственно в условие. Обратите внимание: если в теле цикла всего лишь одна инструкция, то фигурные скобки можно опустить (для цикла while , правда, это бывает крайне редко).
Задача 3. Вывести n раз число k .
Во многих задачах требуется «накапливать» значение переменной. Накапливать можно как сумму, так и произведение. Накопителю суммы, до входа в цикл, присваивается значение 0 , а накопителю произведения — 1 , т. е. значения, которые не изменят окончательный результат.
Примером задачи получения в цикле произведения является вычисление факториала числа: n! = 1 · 2 · 3 · . · n . Факториал — величина, которая имеет очень быстрый рост, поэтому нужно предусмотреть переполнение типа, если n > 20 . Будем использовать максимально широкий целый тип ( unsigned long long ).
Задача 4. Дано целое n . Получить значение n!
Аналогично программируется и накопление суммы. При этом, можно использовать изменяемое значение счетчика для каких-либо других целей, например, для нумерации вводимых чисел.
Задача 5. С клавиатуры вводится n целых чисел. Определить среднее арифметическое введенных чисел.
В последних двух задачах также можно обойтись и без счетчика. Попробуйте такие варианты задач составить самостоятельно. Ниже приведён пример решение задачи с Черепахой в которой цикл while реализован без счетчика.
Задача 6. Составьте программу рисования n квадратов c общим центром и шагом (расстояние между сторонами квадратов) равным d .
Вывод
Параметры: n = 20, d = 10
Счетчик с произвольным шагом
В программах выше использовался счетчик с целочисленным шагом равным единице для определения количества шагов цикла. Но, в общем случае, счетчик может иметь произвольный шаг, в том числе дробный. Покажем это на примере.
Задача 7. Составить программу вывода таблицы значений квадратного корня чисел от 0.2 до 10.0 с шагом 0.2 и точностью до 4 знаков после запятой.
Возможно, программный код выглядит не очень изящно, но это неизбежная плата за табличное оформление вывода. Приведем пример с черепахой.
Задача 8. Составить программу в которой черепаха рисует параболу
Вывод
Проход циклом по разрядам числа
Обсудим еще один тип задач в которых производится действия с разрядами числа. В этих задачах для работы с отдельными разрядами числа применяются операции целочисленного деления, которые мы изучили ранее. Поскольку количество разрядов в числе заранее неизвестно, то исходное число, на каждом шаге цикла, делится на 10 (с каждым шагом удаляется младший разряд), пока частное не станет равным нулю. Это значение является основанием прекратить деление и выйти из цикла.
Усовершенствуем программу 8.5.4 (задача 2) так, чтобы в итоге обрабатывалось число произвольной разрядности.
Одна из задач такого рода — это перевод числа из 10 системы счисления (далее — с.с.) в с.с. по основанию q .
Задача 9. Дано цело десятичное число n . Перевести это число в с.с. с основанием q (целое число в интервале 2..9 )
Идея алгоритма основана на способе «деления» описанного здесь. Суть его заключается в следующем. Исходное число делим на основание с.с. и получаем остатки от этого деления в цикле. Первый остаток — это младший разряд q -ичного числа. Последний — старший разряд. Для того, чтобы повысить старшинство разряда, мы умножаем полученный на каждом шаге цикла остаток на значение переменной p , которое, с каждым шагом цикла, возрастает в 10 раз. Само же число получаем в накопителе суммы — d (т. е. фактически мы производим расчеты в 10 с.с.). Встроенные возможности языка по переводу чисел в с.с. по основаниям 8 и 16 описаны нами ранее.
Инструкция do-while
Алгоритмическую структуру «цикл с постусловием» в языке программирования C++ реализует инструкция цикла do while . Она имеет следующий синтаксис:
Поскольку условие проверяется в конце цикла, то тело цикла (одна или более инструкций) будет выполнено хотя бы один раз. В этом существенное отличие инструкций while и do while .
Пока логическое выражение в условии имеет значение, отличное от нуля или true выполняется тело цикла (это его отличает от соответствующего цикла в Pascal). Если проверяемое условие ложно изначально, то инструкции, входящие в тело цикла, будут выполнены один раз, затем произойдет выход из цикла и будут выполняться инструкции следующие за циклом.
Эту разновидность цикла удобно использовать, когда есть необходимость производить анализ входных данных. В общем случае, инструкции while и do while взаимозаменяемы. Приведем пример задачи:
Задача 10. Вывести n -первых четных положительных чисел (включая 0 ).
Эту инструкцию цикла мы будем использовать в дальнейшем в тех задачах, где её применение будет более уместным, нежели другие инструкции циклов.
Расчет факториала
Для закрепления прочитанного приведем пример циклических алгоритмов для расчета факториала целого числа. Приведенный пример является циклом с предусловием, но возможна реализация любым видом циклического алгоритма.
- Исходные данные: data – целое число, для которого определяется факториал.
- Системные переменные: параметр цикла i, принимающий значения от 1 до data c шагом 1.
- Результат: переменная factorial – факториал числа data, являющийся произведением целых чисел от 1 до data.
Рассмотрим алгоритм по шагам:
Типы циклов в JavaScript, управление циклом
- Содержание:
1. Цикл for
Цикл for используется для выполнения итераций по элементам массивов или объектов, напоминающих массивы, таких как arguments и HTMLCollection . Условие проверяется перед каждой итерацией цикла. В случае успешной проверки выполняется код внутри цикла, в противном случае код внутри цикла не выполняется и программа продолжает работу с первой строки, следующей непосредственно после цикла.
Следующий цикл выведет на консоль строчку Hello, JavaScript! пять раз.
Рис. 1. Результат выполнения цикла for на консоли
1.1. Как работает цикл for
Цикл for состоит из трёх разных операций:
Шаг 1. инициализация var i = 0; — объявление переменной-счётчика, которая будет проверяться во время выполнения цикла. Эта переменная инициализируется со значением 0 . Чаще всего в качестве счётчиков цикла выступают переменные с именами i , j и k .
Шаг 2. проверка условия i < 5; — условное выражение, если оно возвращает true , тело цикла (инструкция в фигурных скобках) будет выполнено. В данном примере проверка условия идёт до тех пор, пока значение счётчика меньше 5 .
Шаг 3. завершающая операция i++ — операция приращения счётчика, увеличивает значение переменной var i на единицу. Вместо операции инкремента также может использоваться операция декремента.
По завершении цикла в переменной var i сохраняется значение 1 . Следующий виток цикла выполняется для for (var i = 1; i < 5; i++) < >. Условное выражение вычисляется снова, чтобы проверить, является ли значение счётчика i всё ещё меньше 5 . Если это так, операторы в теле цикла выполняются ещё раз. Завершающая операция снова увеличивает значение переменной на единицу. Шаги 2 и 3 повторяются до тех пор, пока условие i < 5; возвращает true .
1.2. Вывод значений массива
Чтобы вывести значения массива с помощью цикла for , нужно задействовать свойство массива length . Это поможет определить количество элементов в массиве и выполнить цикл такое же количество раз.
Приведённый ниже скрипт выведет на экран пять сообщений с названиями цветов:
Если значение свойства length не изменяется в ходе выполнения цикла, можно сохранить его в локальной переменной, а затем использовать эту переменную в условном выражении. Таким образом можно повысить скорость выполнения цикла, так как значение свойства length будет извлекаться всего один раз за всё время работы цикла.
2. Цикл for. in
Циклы for. in используются для обхода свойств объектов, не являющихся массивами. Такой обход также называется перечислением. При обходе рекомендуется использовать метод hasOwnProperty() , чтобы отфильтровать свойства, которые были унаследованы от прототипа.
Для примера создадим объект с помощью литерала объекта.
Рис. 2. Результат выполнения цикла for. in на консоли
Предположим, что в сценарии до или после создания объекта user прототип объекта Object был расширен дополнительным методом clone() .
Так как цепочка наследования прототипа постоянно проверяется интерпретатором, то все объекты автоматически получают доступ к новому методу.
Рис. 3. Результат повторного выполнения цикла for. in на консоли
Чтобы избежать обнаружения этого метода в процессе перечисления свойств объекта user , используется метод hasOwnProperty() , который отфильтрует свойства прототипа.
Рис. 4. Результат перечисления свойств объекта с помощью метода hasOwnProperty()
3. Цикл while
Цикл while — цикл с предварительной проверкой условного выражения. Инструкция внутри цикла (блок кода в фигурных скобках) будет выполняться в случае, если условное выражение вычисляется в true . Если первая проверка даст результат false , блок инструкций не выполнится ни разу.
После завершения итерации цикла условное выражение опять проверяется на истинность и процесс будет повторяться до тех пор, пока выражение не будет вычислено как false . В этом случае программа продолжит работу с первой строки, следующей непосредственно после цикла (если таковая имеется).
Данный цикл выведет на экран таблицу умножения для числа 3:
Рис. 5. Результат выполнения цикла while
4. Цикл do. while
Цикл do. while; проверяет условие продолжения после выполнения цикла. В отличие от цикла while , в do. while; тело цикла выполняется как минимум один раз, так как условие проверяется в конце цикла, а не в начале. Данный цикл используется реже, чем while , так как на практике ситуация, когда требуется хотя бы однократное исполнение цикла, встречается редко.
Рис. 6. Результат выполнения цикла do. while
В следующем примере операторы внутри цикла выполняются один раз, даже если условие не выполняется.
5. Бесконечные циклы
При создании любого цикла можно создать бесконечный цикл, который никогда не завершится. Такой цикл может потенциально продолжать работать до тех пор, пока работает компьютер пользователя. Большинство современных браузеров могут обнаружить это и предложат пользователю остановить выполнение скрипта. Чтобы избежать создания бесконечного цикла, вы должны быть уверены, что заданное условие в какой-то момент вернёт false . Например, следующий цикл задаёт условие, которое никогда не возвращает ложь, так как переменная i никогда не будет меньше 10 :
6. Вложенные циклы
Цикл внутри другого цикла называется вложенным. При каждой итерации цикла вложенный цикл выполняется полностью. Вложенные циклы можно создавать с помощью цикла for и цикла while .
Рис. 7. Результат выполнения вложенного цикла for
7. Управление циклом
Циклом можно управлять с помощью операторов break; и continue; .
7.1. Оператор break;
Оператор break; завершает выполнение текущего цикла. Он используется в исключительных случаях, когда цикл не может выполняться по какой-то причине, например, если приложение обнаруживает ошибку. Чаще всего оператор break; является частью конструкции if .
Когда оператор break; используется без метки, он позволяет выйти из цикла или из инструкции switch . В следующем примере создаётся счётчик, значения которого должны изменяться от 1 до 99 , однако оператор break прерывает цикл после 14 итераций.
Рис. 8. Результат работы оператора break в цикле for
Для вложенных циклов оператор break; используется с меткой, с помощью которой завершается работа именованной инструкции. Метка позволяет выйти из любого блока кода. Именованной инструкцией может быть любая инструкция, внешняя по отношению к оператору break; . В качестве метки может быть имя инструкции if или имя блока инструкций, заключенных в фигурные скобки только для присвоения метки этому блоку. Между ключевым словом break; и именем метки не допускается перевод строки.
7.2. Оператор continue;
Оператор continue; останавливает текущую итерацию цикла и запускает новую итерацию. При этом, цикл while возвращается непосредственно к своему условию, а цикл for сначала вычисляет выражение инкремента, а затем возвращается к условию.
В этом примере на экран будут выведены все чётные числа:
Рис. 10. Результат работы оператора continue с меткой
5 Рекомендации по использованию циклов
К этому моменту, вам наверняка пришла мысль, что вместо одного типа цикла легко можно использовать другой. Например, в следующей таблице показано как каждым видом цикла можно вычислить сумму чисел от 1 до n:
циклом for |
циклом while |
циклом do. while |
Наверняка, каждый предпочел бы первый вариант остальным — понять его наиболее просто. Кстати, решить эту задачу можно вообще без циклов — подймайте как.