Но самое интересное – это метки в операторе CASE. Напротив оценки «хорошо» стоит метка из двух разделенных запятой чисел (1, 2), – эта ветвь оператора CASE выполнится для этих двух значений. Такие объединенные метки могут содержать несколько чисел. А если числа следуют подряд, их заменяют числовым диапазоном – это два числа, разделенные двумя точками («многоточием»), причем первое число должно быть меньше второго. Такой диапазон (3..5) служит меткой для ветви «Удовлетворительно».
• Цикл со счетчиком FOR-TO-DO удобен при известном количестве повторений, которое вычисляется при входе в цикл.
• Счетчик цикла внутри оператора наращивается автоматически, цикл завершается, когда счетчик превысит указанное максимальное значение.
• Оператор выбора CASE-OF-ELSE-END допускает метки из нескольких чисел, и даже диапазоны целых чисел.
А) Позвольте ученику отказаться от сдачи экзамена. Признаком отказа будет ввод нуля в качестве ответа. В этом случае надо досрочно выйти из цикла и обойти выставляющий оценку оператор (вспомните о процедуре Break).
Б) Напишите программу, которая по введенному числу дает заключение о том, какому дню недели оно соответствует – рабочему (1-5) или выходному (6,7), например:
День = 2
Рабочий
День = 7
Выходной
День =
Ошибка!
Здесь выделенные числа напечатаны пользователем.
В) Напишите программу, которая, запросив число N, печатала бы числа от 1 до N в обратном порядке, например:
N = 3
3
2
1
Г) Существует вариант цикла FOR, где счетчик цикла не наращивается, а уменьшается, этот оператор выглядит так:
FOR N:= начальное_значение DOWNTO конечное_значение DO оператор
Ключевое слово DOWNTO задает счет в обратном порядке (DOWN – «вниз»); при этом начальное значение счетчика должно быть больше или равно конечному, иначе цикл не выполнится ни разу. Воспользуйтесь этим оператором для решения предыдущей задачи (задание В).
Д) Пусть программа запросит два числа N и M, а затем вычислит их произведение без использования операции умножения (*). Подсказка: организуйте цикл суммирования N раз числа M.
Е) Напишите программу, вычисляющую сумму чисел от 1 до N, где N – число, вводимое пользователем.
Ж) Напишите программу, вычисляющую сумму только тех чисел от 1 до N, которые делятся либо на три, либо на пять.
Задачи на темы предыдущих глав
И) Платный участок трассы протянулся с километра P1 до километра P2 (P1<P2). А пост ГАИ размещен на километре M. Попадает ли этот пост на платный участок трассы? Пусть ваша программа разберется с этим.
К) Дорожная служба запланировала ремонт трассы на участке с R1 по R2 (R1<R2). В сочетании с условием предыдущей задачи ваша программа должна определить:
• Будут ли ремонтировать весь платный участок P1–P2 ?
• Будут ли ремонтировать хотя бы часть платного участка P1–P2 ? Если да, то определить длину ремонтируемой платной части.
• Будут ли ремонтировать хотя бы часть бесплатного участка? Если да, то определить длину ремонтируемой бесплатной части.
Глава 18