СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ
Благодаря готовым учебным материалам для работы в классе и дистанционно
Скидки до 50 % на комплекты
только до 07.06.2025
Готовые ключевые этапы урока всегда будут у вас под рукой
Организационный момент
Проверка знаний
Объяснение материала
Закрепление изученного
Итоги урока
ОГЭ – 2025, задание 16, часть 2. Программирование циклов с заданным условием продолжения работы (PascalABC.NET, Python). Разбор различных вариантов заданий.
Логика работы этой конструкции описывается схемой, показанной ниже:
Выполняется цикл ПОКА следующим образом:
1) проверяется условие (вычисляется значение логического выражения);
2) если условие выполняется ("Да"), то выполняется тело цикла и снова осуществляется переход к проверке условия; Если же условия не выполняется ("Нет"), то выполнение цикла заканчивается.
Возможны случаи, когда тело цикла не будет выполнено ни разу.
Общий вид оператора цикла на PascalABC:
while условие do
begin
тело цикла
end
Здесь:
условие — логическое выражение; пока оно истинно, выполняется тело цикла;
тело цикла — один или несколько операторов, описывающих последовательность действий, выполняемых многократно.
Каждый оператор в программе заканчивается знаком "точка с запятой" (;). Но при этом нужно помнить, что знак "точка с запятой" закрывает не только последний оператор, а все открытые перед ней операторы.
Поэтому если внутри одного оператора нужно выполнить два или более других операторов, то их заключают в операторные скобки, которые обозначаются словами begin и end.
Решаемые на данном уроке задачи похожи на задачи, рассмотренные при разборе цикла-ДЛЯ, главное, что меняется здесь - условие цикла и (соответственно этому) порядок обработки данных.
Для упрощения ввода исходных данных можно вводить их двумя способами, которые приведут к одному результату:
отдельно в каждой строке, как дано в примере. Для этого используется оператор readln();
все числа в одной строке через пробел, используя оператор read().
Второй из приведенных способов ввода чисел:
более удобен в случае необходимости запускать решение задачи несколько раз, так как после копирования заданной последовательности чисел и вставки их в окно ввода достаточно эту строку скопировать в буфер, и при повторных запусках программы тогда будет достаточно вставить эту строку в окно ввода;
гарантирует, что при отладке программы для контроля правильности ответа вводятся одни и те же числа и при правильно выполненной программе будет получен требуемый результат.
Паскаль "понимает", что мы вводим числа, если между ними в строке ввода стоит пробел!
Проверьте правильность выполнения программы на приведенных в контрольном примере исходных данных, и если Ваш ответ совпал с указанным в задании, то задача решена правильно. Для большей надежности можно придумать и проверить еще несколько контрольных примеров.
Общий вид оператора цикла на Python:
while :
Здесь:
условие — логическое выражение; пока оно истинно, выполняется тело цикла;
тело цикла — один или несколько операторов, описывающих последовательность действий, выполняемых многократно.
ПРИМЕРЫ РЕШЕНИЯ ЗАДАЧ
Задача 1. Вычисление суммы всех чисел, кратных заданному числу и оканчивающегося на указанную цифру
Напишите программу, которая в последовательности натуральных чисел определяет сумму всех чисел, кратных 6 и оканчивающихся на 4. Программа получает на вход натуральные числа, количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 — признак окончания ввода, не входит в последовательность). Количество чисел не превышает 1 000. Введённые числа не превышают 30 000. Программа должна вывести одно число: сумму всех чисел, кратных 6 и оканчивающихся на 4.
Пример работы программы:
Решение
В данной задаче нужно найти сумму всех чисел в последовательности, кратных 6 (то есть остаток от деления этих чисел на 6 равен 0) и оканчивающихся на 4 (то есть остаток от деления этих чисел на 10 равен 4). Условия "Количество чисел не превышает 10 000" и "Введённые числа не превышают 30 000" не влияют на решение задачи, так как данные ограничения в условии не рассматриваются.
За начальное значение искомой суммы принимаем ноль, так как он не повлияет на ее значение в процессе суммирования.
Для ввода чисел используем оператор read(), а не readln() (см. описание урока).
В данной программе выполняем оператор read(a) перед началом цикла - читаем первое значение числа а, иначе цикл не выполнится ни разу, и второй раз - внутри цикла для чтения остальных чисел последовательности.
Проверьте ее правильность на приведенных в контрольном примере исходных данных, и если Ваш ответ совпал с указанным в задании, то задача решена правильно. Для большей надежности можно придумать и проверить еще несколько контрольных примеров.
Начальные значения всегда следует присваивать переменным, которые в процессе выполнения задачи изменяют свое значение в соответствии с условием задачи (результат арифметических действий, сравнения чисел) с учетом того, что эти начальные значения не должны влиять на результаты вычислений. Например, сумму чисел начинаем считать с нуля, а произведение - с единицы.
как по условию в заданной последовательности присутствуют только натуральные (то есть целые и положительные) числа. Этот же вывод будем использовать для определения шага цикла: так как нужно проверить все числа от 0 до 30000, то шаг цикла будет равен 1.
По сделанным из условия выводам пишем программу для решения задачи.
Исходный текст программы на PascalABC:
Исходный текст программы на Python:
Напишите программу, которая в последовательности целых чисел определяет длину последовательности и количество нечётных чисел, кратных 3. Программа получает на вход целые числа, количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 — признак окончания ввода, не входит в последовательность). Количество чисел не превышает 1 000. Введённые числа по модулю не превышают 30 000. Программа должна вывести два числа: длину последовательности и количество нечётных чисел, кратных 3.
Пример работы программы:
Решение
Подсчет суммы всех чисел не вызывает вопросов, но для получения разности количества положительных и отрицательных чисел нужно объявить две суммы – kolp для накопления количества положительных чисел и kolo - аналогично для отрицательных чисел. Проверку на а = 0 не делаем, так как 0 - это конец в вода чисел и в подсчете не участвует, и при входе в цикл задаем условие a 0 (a не равно нулю).
Для определения знака числа здесь необходимо применить оператор условного перехода if.
Подсчет разности количества положительных и отрицательных чисел выполним непосредственно в операторе вывода результата на экран. Таким образом мы сэкономим и время написания программы, и количества переменных в ней.
Исходный текст программы на PascalABC:
Исходный текст программы на Phyton:
Напишите программу, которая в последовательности целых чисел определяет их сумму и подсчитывает разность количества положительных и отрицательных чисел последовательности. Программа получает на вход целые числа, количество введённых чисел неизвестно, последовательность чисел заканчивается числом 0 (0 — признак окончания ввода, не входит в последовательность). Количество чисел не превышает 1 000. Введённые числа по модулю не превышают 30 000.
Программа должна вывести два числа: сумму всех чисел последовательности и разность количества положительных и отрицательных чисел.
Пример работы программы:
Решение
Отличие данной задачи от предыдущей в поиске количества чисел вместо суммы. И обязательно нужно при этом учесть, что каждое найденное число, удовлетворяющее условиям задачи, увеличивает результат на единицу!
Начальное значение количества также, как и при нахождении суммы, будет рано нулю.
Исходный текст программы на PascalABC:
Исходный текст программы на Python:
Напишите программу, которая в последовательности натуральных чисел определяет количество и среднее арифметическое значение трёхзначных чисел, кратных 4 и не превосходящих число 256. Программа получает на вход натуральные числа, количество которых неизвестно, последовательность чисел заканчивается числом 0 (0 – признак окончания ввода, не входит в последовательность). Количество чисел не превышает 1 000. Введённые числа не превышают 30 000. Программа должна вывести два числа – количество и среднее арифметическое значение трехзначных чисел, кратных 4 и меньших числа 256.
Пример работы программы:
Решение
Данная задача содержит три явных условия, которые должны выполняться одновременно. Заметим, что описание интервала трехзначных чисел содержит две проверки, поэтому всего их стало четыре:
(a99) and (a
При этом одновременно выполняемые проверки (a и (a можно заменить одной, тогда получаем условие:
(a99) and (a mod 4 =0) and (a
Чтобы посчитать среднее арифметическое значение, нужно найти сумму и количество чисел, соответствующих условиям отбора. При этом, так как значение суммы выводить не нужно, можно это значение в переменной не сохранять, а использовать сразу для вычисления среднего арифметического значения. Назовем эту переменную sr.
Поскольку среднее арифметическое значение получается путем обычного деления, в результате которого всегда получаем вещественное число, тогда объявляем переменную sr как real. Это не помешает нам использовать ее сначала для подсчета суммы, а затем и для получения результата.
Исходный текст программы на PascalABC:
var a, n, i, sum: integer;
begin
read ( n );
sum := 0;
for i:=1 to n do
begin
read ( a );
if (a mod 10 = 4) then
sum := sum + a;
end;
print(sum);
end.
Исходный текст программы на Python:
Задача 5. Определение среднего значения по заданным условиям (с дополнительным условием проверки)
Напишите программу, которая в последовательности натуральных чисел находит среднее арифметическое двузначных чисел или сообщает, что таких чисел нет (выводит «NO»). Программа получает на вход натуральные числа, количество введенных чисел неизвестно, последовательность чисел заканчивается числом 0 (0 - признак окончания ввода, не входит в последовательность). Количество чисел не превышает 100. Введенные числа не превышают 300. Программа должна вывести среднее арифметическое двузначных чисел или вывести «NO», если таких чисел нет. Значение выводить с точностью до десятых.
Пример работы программы:
Для проверки правильности работы программы необходимо использовать следующие тесты:
Решение:
В данной задаче требуется вывести среднее значение числа с точностью до одного знака после запятой.
Указание о том, что хотя бы в один из дней температура поднималась выше нуля, говорит нам, что обработку ситуации с отсутствием нужной информации нам описывать в решении не нужно.
Исходный текст программы на PascalABC
Исходный текст программы на Python:
Или так:
Проверьте правильность выполнения каждой программы на приведенных в контрольных примерах исходных данных, и если Ваш ответ совпал с указанным в задании, то задача решена правильно. Для большей надежности можно придумать и проверить еще несколько контрольных примеров.