В КУРСЕ?

Разбираемся в теме

Первый алгоритм: почему счётчик и сумма — не одно и то же

В начальных задачах программирования часто требуется пройти по числам и выбрать подходящие. Ошибки возникают не только в записи команд, но и в смысле переменных: вместо количества найденных элементов вычисляют их сумму или наоборот. Полезно сначала выполнить алгоритм на бумаге и объяснить состояние после каждого шага. Рассмотрим самостоятельный пример, не предполагая содержание определённого учебного года или класса.

Результат задаёт смысл переменной

Пусть дана последовательность 3, 8, 5, 10. Нужно узнать количество чётных чисел и отдельно их сумму. Подходят 8 и 10, поэтому количество равно двум, а сумма — восемнадцати. Эти результаты отвечают на разные вопросы. Для количества нужен счётчик, который увеличивается на один при каждом подходящем элементе. Для суммы добавляется само значение. Названия переменных полезно выбирать по смыслу. Если обе названы похожими неясными буквами, при чтении труднее заметить, что именно обновляется.

Условие проверяется для текущего элемента

На каждом шаге алгоритм рассматривает одно число и решает, соответствует ли оно правилу. Чётность можно определить по отсутствию остатка при делении на два. Если условие истинно, обновляются нужные накопители; если нет, они сохраняются. Важно не проверять случайно уже накопленную сумму вместо текущего числа. Такая программа может выполнять команды без технической ошибки, но решать другую задачу. Поэтому полезно проговорить каждый шаг обычными словами до перевода в выбранный язык программирования.

Начальное состояние должно подходить пустому результату

До просмотра чисел найдено ноль подходящих элементов, а сумма выбранных равна нулю. Это объясняет начальные значения, а не делает их произвольной традицией. Если подходящих чисел не окажется, итог останется корректным. Для другой задачи, например поиска максимума, выбор начального состояния требует отдельного решения. Нельзя механически начинать любую переменную с нуля: при отрицательных данных это может дать неверный максимум. Смысл состояния проверяют по задаче и допустимым входам.

Маленькие тесты должны различаться по устройству

Один удачный пример показывает немного. Полезно проверить последовательность без подходящих чисел, с одним подходящим и со всеми подходящими. Также учитывают ноль, отрицательные значения и пустой ввод, если они допустимы по условию. Не нужно добавлять случаи, которые запрещены задачей, но важно прочитать ограничения. После каждого шага можно записывать текущее число, результат условия, счётчик и сумму. Такая трассировка показывает первый момент расхождения и помогает исправить логику вместо случайного изменения команд.

Попробуйте на практике

Вручную посчитайте количество и сумму чётных чисел.

  1. Запишите последовательность 3, 8, 5, 10 и начальные значения счётчика и суммы. Подпишите, какой вопрос решает каждая переменная.
  2. Пройдите числа по порядку. Для чётного увеличьте счётчик на один и добавьте значение к сумме, для остальных сохраните состояние.
  3. Повторите разбор для 1, 3, 5 и для 0, 2, 4. Объясните, почему ноль влияет на количество, хотя не изменяет сумму.
  4. Придумайте ошибку, при которой к счётчику добавляется само число. Найдите, на каком шаге она становится заметна и какой смысл нарушает.

Как проверить результат. Для основного примера получены два и восемнадцать. Счётчик и сумма имеют разные обновления, а тесты показывают корректность не только одного удобного случая.

Частые вопросы

Работающая без ошибки программа обязательно правильная?

Нет. Она может корректно выполнять неверно выбранные действия. Проверять нужно соответствие условию и смысл результата.

Можно ли сразу писать код без бумажного разбора?

С опытом это бывает удобно, но небольшой ручной пример помогает обнаружить ошибку постановки и особенно полезен при изучении нового приёма.

Самостоятельный разбор темы. Содержание конкретной обучающей программы здесь не представлено.

Зарегистрируйтесь, чтобы уточнить возможность доступа к этому материалу

Зарегистрироваться
← К списку материалов