В КУРСЕ?

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

Трассировка алгоритма: как проверить условие и цикл на бумаге

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

Сначала определите вход и ожидаемый результат

Пусть дан список целых чисел: 4, минус 1, 7, 0, 7. Нужно узнать, сколько элементов больше пяти. Вход — весь список, результат — одно число. Слово «элементов» существенно: две семёрки находятся в разных позициях, поэтому учитываются обе. Прежде чем писать алгоритм, решите пример вручную. Подходят третье и пятое числа, значит ожидаемый ответ равен двум. Такой ответ служит проверкой, но одного примера недостаточно: правильная программа должна работать и с другими допустимыми данными.

Задайте состояние и правило его изменения

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

Запишите каждое повторение

После числа 4 счётчик остаётся равным нулю. После минус 1 — тоже нулю. Число 7 удовлетворяет условию, поэтому получается единица. После нуля значение не меняется. Последняя семёрка увеличивает счётчик до двух. Получилась последовательность состояний: 0, 0, 1, 1, 2. На каждом шаге счётчик означает количество подходящих элементов среди уже просмотренных. Это объяснение помогает проверить алгоритм целиком. Если после третьего элемента записано семь, смысл переменной нарушен: вместо количества сохранено значение одного элемента.

Проверьте границу и необычные входы

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

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

Выполните трассировку подсчёта чисел больше пяти для нового списка: 5, 6, 6, минус 2.

  1. Запишите начальное значение счётчика и объясните, что оно означает до первого повторения.
  2. Для каждого числа укажите, истинно ли условие «больше пяти», и запишите новое значение счётчика.
  3. Измените условие на «не меньше пяти» и повторите трассировку того же списка.
  4. Придумайте список из трёх чисел, для которого ответ равен нулю, и объясните, почему значение счётчика не изменится.

Как проверить результат. При первом условии состояния после элементов равны 0, 1, 2, 2, а ответ — 2. При втором условии ответ равен 3. Разницу объясняет только включение числа 5.

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

Почему повторяющиеся числа считаются несколько раз?

Задача спрашивает количество подходящих элементов, а не различных значений. Если требуется подсчитать разные числа, понадобится другая постановка и дополнительная логика.

Трассировка гарантирует отсутствие ошибок?

Она помогает обнаруживать ошибки на выбранных данных и понять логику. Для более уверенной проверки нужны разные случаи и объяснение того, что состояние переменной означает на каждом шаге.

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

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

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