Информатика · 9 класс · Информатика ФГОС · урок 15 · только теория
Разбиение задачи на подзадачи. Составление алгоритмов и программ с использованием ветвлений, циклов и вспомогательных алгоритмов
Тема о том, как большую и сложную задачу разбить на маленькие и понятные шаги, а затем собрать из них алгоритм или программу. Мы научимся использовать ветвления, циклы и вспомогательные алгоритмы как кирпичики для построения решения.
Чему учимся понимать
Научиться понимать, как декомпозиция (разбиение на подзадачи) помогает строить понятные и работающие алгоритмы и программы.
Зачем это нужно
В жизни и в программировании мы постоянно сталкиваемся со сложными задачами. Умение разбить их на части помогает не запутаться, находить ошибки и решать задачи быстрее. Это основа инженерного мышления и разработки любого программного обеспечения.
Опорные понятия
Главные тезисы
- Сложную задачу всегда можно разбить на несколько более простых подзадач, решая которые по отдельности, мы в итоге решаем исходную задачу.
- Ветвление (условный оператор) позволяет алгоритму выбирать один из нескольких вариантов действий в зависимости от условия.
- Цикл позволяет многократно повторять одни и те же действия, пока выполняется некоторое условие или для каждого элемента из набора.
- Вспомогательный алгоритм (подпрограмма) — это самостоятельная часть алгоритма, которая решает отдельную подзадачу и может вызываться из основной программы или из других подпрограмм.
- Использование подпрограмм позволяет избежать дублирования кода и делает программу более структурированной и понятной.
- При разбиении задачи на подзадачи важно, чтобы каждая подзадача имела четкий вход (что нужно) и выход (что получаем).
- Правильная декомпозиция упрощает отладку и тестирование программы, так как каждую подзадачу можно проверять отдельно.
Определения
- Подзадача
- Это часть большой задачи, которую можно решить отдельно, а затем использовать результат для решения всей задачи.
- Декомпозиция
- Это разбиение сложной задачи на более простые и понятные части (подзадачи).
- Ветвление
- Это конструкция алгоритма, которая позволяет выполнять разные действия в зависимости от того, истинно или ложно некоторое условие.
- Цикл
- Это конструкция алгоритма, которая позволяет многократно выполнять одну и ту же последовательность действий (тело цикла) до тех пор, пока выполняется условие продолжения цикла.
- Вспомогательный алгоритм
- Это алгоритм, который решает отдельную подзадачу и может быть вызван из другого алгоритма (основного) для выполнения нужных действий.
- Подпрограмма
- Это поименованный блок кода в программе, который выполняет определенное действие и может быть вызван из разных мест программы.
Ключевые факты и правила
- Ветвление в языках программирования обычно реализуется с помощью условного оператора if...else (если...иначе).
- Циклы бывают с предусловием (while), с постусловием (repeat...until) и с параметром (for).
- Вспомогательные алгоритмы в языках программирования оформляются как процедуры (не возвращают значение) и функции (возвращают результат).
- При вызове подпрограммы управление передается ей, выполняются ее команды, после чего управление возвращается в точку вызова.
- Декомпозиция позволяет использовать принцип «разделяй и властвуй»: решаем каждую подзадачу отдельно, а затем объединяем решения.
- Хороший алгоритм должен быть понятным, однозначным и результативным, а разбиение на подзадачи помогает этого достичь.
Теория
1. Понять условие задачи: что дано и что требуется получить.
2. Выделить в задаче крупные этапы (подзадачи), которые можно решать независимо.
3. Для каждой подзадачи определить, какие данные нужны на входе и какой результат ожидается на выходе.
4. Решить каждую подзадачу отдельно, используя подходящие конструкции: ветвления, циклы, вспомогательные алгоритмы.
5. Собрать решения подзадач в единый алгоритм или программу, проверив, что результаты подзадач правильно используются в других частях.
Примеры
- Пример 1случай
Задача «Приготовить утро школьника»
Пояснение
- разбиваем на подзадачи — проснуться, умыться, одеться, позавтракать, собрать портфель
- Каждая подзадача решается отдельно, а вместе они образуют готовность к школе
- Пример 2случай
Алгоритм «Перейти дорогу»
Пояснение
- если горит зеленый свет — идем, иначе — ждем
- Это пример ветвления
- Пример 3случай
Алгоритм «Помыть все окна в доме»
Пояснение
- пока есть немытые окна, мыть текущее окно
- Это пример цикла
- Пример 4случай
- В программе для рисования квадрата можно создать вспомогательный алгоритм «Нарисовать линию», который вызывается четыре раза для каждой стороны квадрата
- Пример 5случай
- При вычислении площади сложной фигуры можно разбить ее на простые фигуры (прямоугольники, треугольники), вычислить площадь каждой подзадачи и сложить результаты
Интересно знать
- Метод декомпозиции используется не только в программировании, но и в математике, физике и даже в повседневной жизни: например, при планировании путешествия мы разбиваем его на этапы: купить билеты, собрать вещи, добраться до вокзала и т.д.
- В программировании есть принцип DRY (Don't Repeat Yourself) — «не повторяйся». Он напрямую связан с использованием вспомогательных алгоритмов: если один и тот же код нужен в нескольких местах, его выносят в подпрограмму.
- Первые программисты писали программы без подпрограмм, и это приводило к огромным и запутанным текстам. Изобретение подпрограмм стало революцией, позволившей создавать сложные программные системы.
Связанные темы
- Алгоритмы и исполнители
- Основные алгоритмические конструкции: следование, ветвление, цикл
- Запись алгоритмов на языке программирования
- Вспомогательные алгоритмы и подпрограммы