«Инструкция под защитой»
«Альтернатива»
«Каскад решений»
Когда использовать: нужно выполнить одно и то же действие для каждого элемента последовательности - списка, строки или диапазона чисел.
Роль переменной цикла - «Обходчик»: переменная, которая систематически проходит по заранее определённой последовательности значений, принимая их по одному.
Пример: Вывести пройденный путь каждую секунду при равноускоренном движении (\(v_0=5\ м/c\), \(a=2\ м/c^2\)).
Анализ условия:
v0 = 5, a = 2 (константы); обходчик t принимает значения 0, 1, …, 10s для каждого момента времениДизайн алгоритма: для каждого целого значения времени от 0 до 10 включительно вычислить путь и вывести результат.
Дан список результатов измерения напряжения на резисторе:
[3.2, 4.7, 2.1, 5.0, 3.8]. Сопротивление резистора R = 10 Ом. Используя закон Ома, выведите силу тока для каждого измерения.
Роль «Счётчик»: переменная, фиксирующая количество наступления некоторого события. Изменяется на фиксированный шаг (+1).
Инициализация: count = 0
Роль «Аккумулятор»: переменная, которая накапливает итоговое значение - сумму, произведение или символы строки.
Инициализация:
total = 0product = 1result = ""Пример: Дан список температур за неделю. Подсчитать количество дней с отрицательной температурой и сумму модулей отрицательных значений температур.
Анализ условия:
temps - список значений floatint), сумма (float)count - счётчик, summa - аккумуляторДан список среднесуточных температур за неделю:
[5, -2, 0, -5, 3, 1, -1]. Вычислите среднюю температуру за неделю. Сформируйте строку из положительных значений, разделённых точкой с запятой.
Когда использовать: нужно найти наибольшее или наименьшее значение в наборе данных.
Роль «Хранитель наилучшего значения»: переменная, которая на каждом шаге хранит наилучшее из просмотренных значений и обновляется при нахождении более подходящего элемента.
Переменная должна быть инициализирована первым элементом последовательности, а не произвольным числом.
Пример: Найти наибольшую массу среди планет Солнечной системы.
На школьных соревнованиях ученики прыгали в длину. Дан список результатов в сантиметрах:
[190, 210, 205, 180, 220]. Найдите лучший результат и количество учеников, которые прыгнули дальше 200 см.
Когда использовать: нужно ответить на вопрос вида «содержит ли последовательность хотя бы один элемент, удовлетворяющий условию?» или «все ли элементы удовлетворяют условию?».
Роль «Однонаправленный флаг»: логическая переменная, инициализируется значением False. Может изменить значение на True, но не обратно. Проверяется после завершения цикла.
Псевдокод:
Пример: В ходе эксперимента зафиксированы показания датчика. Определить, содержит ли последовательность хотя бы одно аномальное значение, превышающее пороговую величину.
Анализ условия:
data - список значений; line - порог аномалииanomaly_found - однонаправленный флагОптимизация: как только найден первый подходящий элемент, обход последовательности можно остановить. Инструкция break обеспечивает досрочный выход из цикла.
Дан список отметок студента:
[4, 7, 8, 7, 10, 6]. Определить:
- Есть ли хотя бы одна отметка 10?
- Есть ли хотя бы одна неудовлетворительная отметка (ниже 4)?
Когда использовать: обрабатываются данные, поступающие до появления специального признака остановки (часового). Количество итераций заранее неизвестно.
Роль «Хранитель последнего значения»: переменная, хранящая последнее введённое значение для проверки или последующей обработки.
Пример: Студент вводит результаты химического опыта (масса осадка в граммах). Сбор данных прекращается при вводе отрицательного числа. Подсчитать общую массу вещества и количество измерений.
Анализ условия:
value - хранитель последнего значения, total - аккумулятор, count - счётчикПрограмма считывает целые числа до тех пор, пока не будет введён ноль (ноль - признак остановки, в обработку не входит). Найти сумму введённых чисел и наибольшее из них.
Когда использовать: вводимое значение должно удовлетворять ограничению (быть положительным, входить в допустимый диапазон и т. д.). При нарушении ограничения запрос повторяется.
Это частный случай «Цикла с выходом из середины»: роль признака остановки выполняет выполнение ограничения, а не специальное значение.
Пример: Запросить значение сопротивления в омах. Значение должно быть строго положительным.
Напишите программу, которая запрашивает отметку - целое число от 1 до 10 включительно. Ввод значений повторяется до тех пор, пока введённое значение не окажется в допустимом диапазоне.
| Задача | Шаблоны | Переменные |
|---|---|---|
| Найти самого высокого ученика в классе | Поиск min/max | Хранитель наилучшего значения |
| Вычислить общую стоимость всех товаров в корзине | Накопление | Аккумулятор |
| Проверить, есть ли в списке хотя бы одна оценка «5» | Линейный поиск с флагом | Однонаправленный флаг |
| Вывести таблицу умножения на 7 | Обход последовательности | Обходчик |
| Определить, все ли измерения укладываются в допустимый диапазон | Линейный поиск с флагом | Однонаправленный флаг |
| Считывать показания термометра до ввода слова «стоп» | Цикл с выходом | Хранитель последнего значения |