
Информатика: создаём своего цифрового помощника Урок 19 из 26
Разделить большую задачу, не потеряв цель
Разделим задачу напоминания на маленькие проверяемые действия и соберём первый алгоритм помощника на бумаге.
Где мы на карте
Это третий блок одного проекта. Мы пользуемся данными версии 0.2, но пока описываем действия на бумаге: так можно обнаружить ошибку до написания Python.
Ситуация и вопрос
Мама просит: «Пусть помощник напомнит о школьном проекте». Сразу нарисовать кнопку соблазнительно, но непонятно, где хранится срок и что делать, если его нет. Сначала ответьте: какой видимый результат должен получить человек и какие данные для него нужны?
Новые слова без пропусков
Задача — требуемый результат, а не список кнопок. Декомпозиция — разбиение задачи на части, каждую из которых можно объяснить и проверить отдельно. Подзадача имеет вход и результат: например, «получить срок» возвращает дату или сообщение об её отсутствии. Зависимость означает, что один шаг использует результат другого. Критерий готовности — наблюдаемое условие: при наличии срока помощник выдаёт правильное напоминание, а при его отсутствии честно сообщает, что срок не задан. Интерфейс — только способ показать результат, не сама логика.
Опорный сигнал
потребность → входные данные → маленькие шаги → проверяемый результат
Разбираем шаг за шагом
Начните с вымышленной задачи t-01 «Кітап оқу». Срок «завтра» указан на отдельной тестовой карточке: в старом tasks.json срока ещё нет. (1) Найти запись по id, а не по названию: названия могут повторяться. (2) Прочесть срок. (3) Если срок отсутствует, вернуть «срок не указан» и остановиться. (4) Сравнить срок с сегодняшним днём. (5) Если задача не выполнена и срок близко, подготовить напоминание. (6) Показать результат. Теперь нарисуйте шесть карточек и стрелки зависимостей. Объясните, почему сравнение не может происходить раньше чтения срока. Эта бумажная модель ещё не программа: в ней нет формата даты и правила слова «близко»; следующие уроки добавят их.
Проверка руками
Возьмите четыре листка: id, done, срок и ответ. Название задачи держите отдельно. Попросите другого ученика сыграть роль помощника: он получает листки по одному и должен назвать, какой листок ему нужен следующим. Уберите листок со сроком: ученик должен остановиться, а не угадывать дату. Поменяйте название при том же id: результат не должен измениться. Так вы проверите, какие сведения действительно влияют на решение. Запишите это как правило до того, как рисовать экран или писать код.
Предскажите и проверьте
У записи есть название, но нет срока. Можно ли сразу перейти к сравнению дат? Запишите прогноз. Нет: сравнивать нечего; нужно завершить ветку понятным сообщением. У записи есть срок, но она выполнена — нужна ли напоминалка? Нет, если требование говорит напоминать только о невыполненном. Сравните обе ветки и найдите общую часть — поиск записи.
Поймайте ошибку
«Сначала сделаем красивый экран, потом разберёмся с данными». Исправьте план: вход и проверка срока определяют, что экран вообще может обещать. Пустой срок не должен выглядеть как нулевая дата.
Перенос в новую ситуацию
Разбейте на подзадачи другую просьбу: «Показать, сколько задач завершено». Какие шаги общие с напоминанием, а какие новые? Не включайте поиск срока без причины. Объясните, что подсчёт должен пройти все записи, а не только первую.
Изменение проекта
В step-02/ALGORITHM-ru.md запишите цель, вход, выход и шесть карточек для напоминания. Сохраните три исходные вымышленные задачи без изменений. Добавьте отдельную таблицу предположений: сегодня, формат срока, смысл «близко». Непроверенные предположения нельзя прятать внутри рисунка.
Задание и доказательство
Передайте карточки однокласснику в перепутанном порядке. Он должен восстановить зависимости, показать ветку без срока и объяснить остановку. Доказательство: схема, два прогона на разных входах и одно исправленное предположение. Если порядок можно восстановить двумя несовместимыми способами, допишите правило.
Возврат через 1, 7 и 30 дней
Завтра восстановите шесть шагов по памяти. Через семь дней разложите без подсказки просьбу о подсчёте. Через месяц проверьте, не зависит ли ваш будущий код от неоговорённого формата срока.
Если вы нашли ошибку или опечатку в тексте статьи, то сообщите нам об этом
Комментарии (0)
Войдите, чтобы оставить комментарий →
Пока нет комментариев. Будьте первым.