Информатика, 6 классРазбиение на подзадачи5 минут чтения
Разбиение на подзадачи
Большую задачу целиком в голове не удержать. Её делят на части, каждую решают отдельно, а потом собирают целое из готовых кусков.
6классСверху вниз
Начинают с общего плана. «Сделать игру» распадается на «нарисовать поле», «двигать героя», «считать очки», «показать итог».
Каждый пункт делится дальше, пока не станет ясно, как его выполнить. Такой способ называют разбиением сверху вниз.
План при этом остаётся понятным: наверху крупные шаги, внизу подробности.
Задача «дневник погоды» сверху вниз
- Дневник погоды
- Ввод данных
- Спросить температуру
- Проверить, что это число
- Хранение
- Дописать в список
- Расчёты
- Среднее за неделю
- Самый тёплый день
- Самый холодный день
- Показ
- Собрать таблицу
Разбиваем задачу «дневник наблюдений за погодой»
- 1Ввести температуру за день
- 2Сохранить её в список
- 3Посчитать среднее за неделю
- 4Найти самый тёплый и самый холодный день
- 5Показать всё это в виде таблицы
Процедуры
Выделенную часть программы записывают отдельно и дают ей имя. Такую именованную часть называют процедурой или функцией.
Дальше вместо десяти строк пишут одно слово. Программа становится короче и понятнее, а исправлять её нужно в одном месте.
Функция обычно получает данные и возвращает результат. «Посчитать среднее» получает список чисел, а отдаёт одно число.
Зачем выделять часть
- Повторяетсяпишем один раз
- Сложнаяпрячем подробности
- Нужно проверитьпроверяем отдельно
- Меняетсячиним в одном месте
- Занимает целый экранделим на две
Имя вместо подробностей
Хорошее имя функции избавляет от чтения её содержимого. Увидев «посчитать периметр», не нужно смотреть, как именно он считается.
Так программа читается как рассказ: прочитать данные, проверить, посчитать, показать.
Если имя получается длинным и с союзом «и», значит, часть делает два дела сразу. Её стоит разделить.
Одна большая часть
Несколько маленьких
Двести строк подряд
Пять частей по сорок
Ошибку ищут во всём куске
Ошибку ищут в одной части
Проверить можно только целиком
Каждую проверяют отдельно
Повторы копируются
Повтор вызывается по имени
Проверка по частям
Маленькую часть легко проверить: дал ей данные, посмотрел результат.
Такую проверку записывают отдельно и запускают каждый раз после правок. Тогда сломанное обнаруживается сразу, а не через неделю.
Взрослые программисты пишут такие проверки всегда, и на большие программы их набираются тысячи.
Сборка целого
Когда части готовы и проверены, целое собирается быстро. Основная часть программы становится коротким списком вызовов.
Ошибки при сборке тоже бывают: части ждут данные в разном виде. Поэтому договариваются заранее, что каждая получает и что отдаёт.
Так работают и большие команды. Один пишет одну часть, другой другую, а договорённость о стыке общая.
Как устроена собранная программа
Запуск
Прочитать данные
Проверить, годятся ли они
- Данные верные?
даПосчитать и показать результат
нетСообщить об ошибке и попросить снова
Завершение
Разделяй по смыслу
Делить нужно по смыслу, а не по числу строк. Часть, которая читает данные, и часть, которая их считает, живут отдельно.
Тогда замена одной не тронет другую. Захотел читать не с клавиатуры, а из файла, поменял одну часть.
Это правило работает далеко за пределами программирования. Так устроены и хорошие тексты, и хорошие инструкции.
Готовые части
Не всякую часть нужно писать самому. Для частых дел давно написаны библиотеки: расчёты, работа с датами, чтение файлов, рисование графиков.
Пользоваться готовым не стыдно, а разумно: чужой код проверен тысячами людей. Важно только понимать, что именно он делает.
Своё пишут там, где готового нет или где важно разобраться самому. В учёбе как раз второй случай.
Порядок работы над задачей
Сначала формулируют задачу словами и придумывают, как проверить ответ. Потом рисуют схему и делят на части.
Дальше пишут одну часть, проверяют её и переходят к следующей. Собирают целое в самом конце.
Соблазн написать всё сразу велик, но проигрывает почти всегда: ошибки накапливаются, и найти их в готовом целом труднее, чем в отдельной части.
От школьной задачи к настоящей
Большие программы состоят из тысяч таких частей. Никто не держит их в голове целиком, и это нормально.
Работает разбиение и в учёбе: доклад, сочинение, подготовка к контрольной раскладываются так же.
Про поиск ошибок читай урок «Отладка». Про первые шаги в коде есть урок «Первая программа».
Проверь себя: В программе три раза подряд повторяется один и тот же расчёт с разными числами. Что стоит сделать?
Вынести расчёт в отдельную часть с именем и вызывать её три раза, передавая нужные числа. Тогда исправлять формулу придётся в одном месте, а не в трёх.
Короткие ответы
- Когда часть программы стоит выделить отдельно?
- Когда её можно назвать одним внятным именем или когда она повторяется. Если название придумывается с трудом, кусок выбран неудачно.
- Не станет ли программа длиннее от такого деления?
- Строк иногда становится больше, зато читать и чинить их легче. Выигрыш заметен уже на второй сотне строк.