Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лекции программирование.doc
Скачиваний:
15
Добавлен:
01.03.2025
Размер:
1.01 Mб
Скачать

Как выбрать цикл?

Если в задаче повторяются одинаковые (или похожие) действия, нужно использовать цикл. Но какие из 3-х видов цикла в каких задачах лучше применить? Для выбора цикла рассуждайте так:

  1. Так как чаще всего встречается цикл FOR, в первую очередь попробуем его. FOR годится, если число повторов точно известно до начала цикла. Если число повторов заранее неизвестно, а проясняется только по ходу выполнения цикла, используется один из условных циклов: WHILE или REPEAT.

  2. Если возможно придумать такие исходные данные к задаче, при которых тело цикла не должно выполниться ни разу, то нужно использовать WHILE.

  3. Если первый раз тело цикла обязательно требуется выполнить при любых условиях, и только в ходе выполнения вводятся или вычисляются данные, позволяющие принять решение об окончании цикла, то нужно использовать REPEAT.

Во всех остальных случаях WHILE или REPEAT являются одинаково пригодными.

Экстренные события в теле цикла

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

Иногда, при выполнении в теле цикла какого-либо условия, нужно экстренно перейти к следующему повтору, не доводя до конца очередной повтор. В таких случаях используется команда continue. (Если это происходит в цикле FOR, то счётчик получает при этом следующее значение.)

Команды break и continue могут применяться в любом из видов циклов. Вне цикла их использование запрещено.

В некоторых задачах используется вложенный цикл (цикл в цикле). Например, каждый месяц в течение года больному нужно сделать десять уколов. Здесь внешний цикл (For) считает месяцы, а внутренний (тоже For) считает уколы в каждом месяце.

При выходе с помощью break из вложенного цикла мы попадаем во внешний (аналогично тому, как это происходит по окончании внутреннего цикла). А если нужно при каком-либо событии выйти сразу из двух или более вложенных циклов? Это можно сделать так:

  1. В разделе описаний после слова Label указать метку (любое слово кроме служеб­ных, составленное по тем же правилам, что и имена переменных).

  2. В том месте (после конца последнего из циклов), куда нужно выскочить, поставить эту метку с левого края экрана и после неё поставить двоеточие.

  3. В том месте (во внутреннем цикле), откуда нужно выскочить при выполнении какого-либо условия, поста­вить команду goto и после неё эту метку.

М ногие специалисты (в том числе и автор Паскаля) не рекомендуют использовать команду goto, считая её потенциально опасной (источником логических ошибок). Поэтому в некоторых реализациях Паскаля (в том числе и Pascal ABC) эта команда отсутствует. Вместо неё можно завести специальную «флаговую» переменную, которая приобретает определённое значение перед прерыванием внутреннего цикла. Тогда во внешнем цикле можно проверить эту переменную, и если «флаг установлен», прервать и внешний цикл.

Лаб. 7. Числовые задачи с циклом For

  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 двузначных чисел и напечатать для каждого из них перевёртыш (в котором цифры поменялись местами).