Переменные, циклы, ветвления: основы программирования для ЕГЭ
Коротко о главном
Программа — это последовательность команд, которые обрабатывают данные. Три базовые конструкции лежат в основе любой программы:
- Переменная — именованная область памяти для хранения значения.
- Ветвление (
if) — выбор пути выполнения по условию. - Цикл (
for,while) — повторение действий.
В ЕГЭ эти конструкции чаще всего встречаются в задачах на трассировку кода, поиск чисел с заданными свойствами и анализ алгоритмов обработки массивов.
Определения и правила
| Понятие | Определение | Пример |
|---|---|---|
| Переменная | Ячейка памяти с именем и типом значения | |
| Тип данных | Множество допустимых значений и операций | int, real, string |
| Присваивание | Запись нового значения в переменную | |
| Условие (ветвление) | Проверка логического выражения, выбор ветки | if x > 0 then ... |
| Цикл с условием | Повторение, пока условие истинно | while x < 10 do ... |
| Цикл с счётчиком | Повторение заданное число раз | for i := 1 to 10 do ... |
| Цикл с постусловием | Выполняется хотя бы раз, проверка после тела | repeat ... until x = 0 |
Ключевые операторы сравнения и логики:
Общая схема цикла for:
Правило работы ветвления с else:
Если условие истинно — выполняется первая ветвь, иначе (если есть else) — вторая. Без else при ложном условии программа просто идёт дальше.
Как применять
Пример 1. Трассировка (задание 25/26).
s := 0
for i := 1 to 5 do
s := s + i * i
Считаем: . Такие задачи требуют аккуратно пройти цикл шаг за шагом, фиксируя значения переменных в таблице.
Пример 2. Ветвление внутри цикла (задание 23).
count := 0
for x := 1 to 100 do
if x mod 3 = 0 and x mod 5 <> 0 then
count := count + 1
Здесь считаются числа от 1 до 100, кратные 3, но не кратные 5. Важно правильно понять приоритет and/or: сначала проверяются оба условия отдельно, потом объединяются.
Пример 3. Поиск с накоплением результата (задание 27).
result = []
for n in range(1, 1000):
if n % 7 == 0 and str(n)[-1] == '3':
result.append(n)
print(min(result))
Программа ищет наименьшее число, кратное 7, оканчивающееся на цифру 3. Разбор такой задачи начинается с понимания условия отбора, затем — с выбора эффективного способа перебора (для больших диапазонов важна оценка сложности).
Типичные ошибки
- Путают
for(число повторений известно заранее) иwhile(повторение до выполнения условия) — это меняет логику трассировки. - Забывают, что в
repeat...untilтело выполняется хотя бы один раз, даже если условие сразу истинно. - Неверно применяют приоритет логических операций:
andвыполняется раньшеor, если нет скобок. - Ошибаются в границах цикла:
for i := 1 to nвключает и , и . - Забывают инициализировать переменную-накопитель (
s := 0,count := 0) перед циклом — без этого результат непредсказуем. - Путают целочисленное деление
divи остаток от деленияmod: , а .
Где встречается на экзамене
- Задание 23 — подсчёт количества чисел или комбинаций, удовлетворяющих условию, через перебор в цикле с ветвлением.
- Задание 25 — работа с массивами/последовательностями чисел: суммы, максимумы, количество элементов по условию.
- Задание 26 — анализ эффективности алгоритма, оптимизация перебора с циклами и условиями.
- Задание 27 — написание полной программы: считывание данных, обработка в цикле, проверка условий, вывод результата (обычно на Pascal, Python или C++).
Частые вопросы
Чем отличается цикл for от while?
В for число повторений известно заранее (задан диапазон счётчика), в while цикл продолжается, пока истинно условие, и число повторений может быть неизвестно до выполнения.
Когда используется repeat...until?
Когда тело цикла должно выполниться хотя бы один раз независимо от условия — проверка условия происходит после выполнения тела.
Как правильно расставлять приоритеты and и or без скобок?
and выполняется раньше or. Например, в выражении A or B and C сначала вычисляется B and C, потом результат объединяется через or с A.
Чем отличаются div и mod?
div — целочисленное частное от деления, mod — остаток. Например, 23 div 4 = 5, а 23 mod 4 = 3.
Почему важно инициализировать переменные перед циклом?
Если не задать начальное значение накопителю (сумме, счётчику), результат работы программы будет неопределённым или ошибочным, так как переменная может содержать случайное значение из памяти.
Как быстро трассировать цикл вручную на экзамене?
Составьте таблицу с колонками: номер итерации, значения всех переменных после каждого шага. Проходите цикл строго по шагам, не пропуская проверку условия.
Потренироваться: задание 25 · задание 23 · задание 27 · задание 26