Иногда, при выполнении в теле цикла какого-либо условия, нужно экстренно прервать цикл, не доводя до конца очередной повтор. В таких случаях используется команда break.
Иногда, при выполнении в теле цикла какого-либо условия, нужно экстренно перейти к следующему повтору, не доводя до конца очередной повтор. В таких случаях используется команда continue. (Если это происходит в цикле FOR, то счётчик получает при этом следующее значение.)
Команды break и continue могут применяться в любом из видов циклов. Вне цикла их использование запрещено.
В некоторых задачах используется вложенный цикл (цикл в цикле). Например, каждый месяц в течение года больному нужно сделать десять уколов. Здесь внешний цикл (For) считает месяцы, а внутренний (тоже For) считает уколы в каждом месяце.
При выходе с помощью break из вложенного цикла мы попадаем во внешний (аналогично тому, как это происходит по окончании внутреннего цикла). А если нужно при каком-либо событии выйти сразу из двух или более вложенных циклов? Это можно сделать так:
1) В разделе описаний после слова Label указать метку (любое слово кроме служебных, составленное по тем же правилам, что и имена переменных).
2) В том месте (после конца последнего из циклов), куда нужно выскочить, поставить эту метку с левого края экрана и после неё поставить двоеточие.
3) В том месте (во внутреннем цикле), откуда нужно выскочить при выполнении какого-либо условия, поставить команду goto и после неё эту метку.
Многие специалисты (в том числе и автор Паскаля) не рекомендуют использовать команду goto, считая её потенциально опасной (источником логических ошибок). Поэтому в некоторых реализациях Паскаля (в том числе и Pascal ABC) эта команда отсутствует. Вместо неё можно завести специальную «флаговую» переменную, которая приобретает определённое значение перед прерыванием внутреннего цикла. Тогда во внешнем цикле можно проверить эту переменную, и если «флаг установлен», прервать и внешний цикл.
1. Распечатать синусы всех углов от a° до b° с промежутком 0,01°. Результат представить с 4 десятичными знаками. Все целые значения градусов выделить жирным шрифтом.
2. Сколько из целых чисел от a до b попадают в промежуток от e до d?
3. Вводят число k. Напечатать 10 чисел до k и 10 после k.
4. Среди всех трёхзначных чисел напечатать те, у которых одна из цифр равна сумме двух других.
5. Напечатать в одну строку все числа от 1 до 200, пропуская числа, оканчивающиеся нулём.
6. Найти сумму всех нечётных чисел от a до b.
7. Напечатать таблицу квадратов и кубов первых a натуральных чисел.
8. Последовательно вводятся с клавиатуры n целых чисел. Найти суммы всех отрицательных и всех положительных и определить, какая из них по модулю больше.
9. Найти произведение 5 введённых с клавиатуры целых чисел. Числа, кратные 11, пропускать.
10. Напечатать в одну строку все числа от a до b, пропуская числа, кратные 5.
11. Ввести с клавиатуры 10 целых чисел и распечатать их в одну строку. При печати пропускать числа, большие 99.
12. Напечатать все двузначные числа, сумма цифр которых делится на 7. Посчитать их количество.
13. Ввести a и b (<100) и напечатать все числа от 1 до 100, кроме кратных a или b.
14. Найти, сколько чисел от a до b делятся на 7 или 9 (но не на 7 и 9 одновременно).
15. C клавиатуры вводятся 10 целых чисел. Определить, каких чисел больше: положительных или отрицательных.
16. Напечатать в одну строку все числа от a до b, дважды повторяя числа, кратные 3 или 7.
17. Найти двухзначные числа, равные сумме куба числа единиц и квадрата числа десятков.
18. Найти сумму всех чисел от a до b, кратных 3, но не кратных 7.
19. Ввести x с клавиатуры и определить, сколько чисел в промежутке от 1 до 100 делятся без остатка на x, x-1 или x+1.
20. Ввести 5 двузначных чисел и напечатать для каждого из них перевёртыш (в котором цифры поменялись местами).