← К списку тем

Информатика · 9 класс · Информатика ФГОС · урок 15 · только теория

Разбиение задачи на подзадачи. Составление алгоритмов и программ с использованием ветвлений, циклов и вспомогательных алгоритмов

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

Чему учимся понимать

Научиться понимать, как декомпозиция (разбиение на подзадачи) помогает строить понятные и работающие алгоритмы и программы.

Зачем это нужно

В жизни и в программировании мы постоянно сталкиваемся со сложными задачами. Умение разбить их на части помогает не запутаться, находить ошибки и решать задачи быстрее. Это основа инженерного мышления и разработки любого программного обеспечения.

Опорные понятия

ПодзадачаДекомпозицияВетвлениеЦиклВспомогательный алгоритмПодпрограммаПроцедураФункцияАлгоритмПрограмма

Главные тезисы

  • Сложную задачу всегда можно разбить на несколько более простых подзадач, решая которые по отдельности, мы в итоге решаем исходную задачу.
  • Ветвление (условный оператор) позволяет алгоритму выбирать один из нескольких вариантов действий в зависимости от условия.
  • Цикл позволяет многократно повторять одни и те же действия, пока выполняется некоторое условие или для каждого элемента из набора.
  • Вспомогательный алгоритм (подпрограмма) — это самостоятельная часть алгоритма, которая решает отдельную подзадачу и может вызываться из основной программы или из других подпрограмм.
  • Использование подпрограмм позволяет избежать дублирования кода и делает программу более структурированной и понятной.
  • При разбиении задачи на подзадачи важно, чтобы каждая подзадача имела четкий вход (что нужно) и выход (что получаем).
  • Правильная декомпозиция упрощает отладку и тестирование программы, так как каждую подзадачу можно проверять отдельно.

Определения

Подзадача
Это часть большой задачи, которую можно решить отдельно, а затем использовать результат для решения всей задачи.
Декомпозиция
Это разбиение сложной задачи на более простые и понятные части (подзадачи).
Ветвление
Это конструкция алгоритма, которая позволяет выполнять разные действия в зависимости от того, истинно или ложно некоторое условие.
Цикл
Это конструкция алгоритма, которая позволяет многократно выполнять одну и ту же последовательность действий (тело цикла) до тех пор, пока выполняется условие продолжения цикла.
Вспомогательный алгоритм
Это алгоритм, который решает отдельную подзадачу и может быть вызван из другого алгоритма (основного) для выполнения нужных действий.
Подпрограмма
Это поименованный блок кода в программе, который выполняет определенное действие и может быть вызван из разных мест программы.

Ключевые факты и правила

  • Ветвление в языках программирования обычно реализуется с помощью условного оператора if...else (если...иначе).
  • Циклы бывают с предусловием (while), с постусловием (repeat...until) и с параметром (for).
  • Вспомогательные алгоритмы в языках программирования оформляются как процедуры (не возвращают значение) и функции (возвращают результат).
  • При вызове подпрограммы управление передается ей, выполняются ее команды, после чего управление возвращается в точку вызова.
  • Декомпозиция позволяет использовать принцип «разделяй и властвуй»: решаем каждую подзадачу отдельно, а затем объединяем решения.
  • Хороший алгоритм должен быть понятным, однозначным и результативным, а разбиение на подзадачи помогает этого достичь.

Теория

1. Понять условие задачи: что дано и что требуется получить.

2. Выделить в задаче крупные этапы (подзадачи), которые можно решать независимо.

3. Для каждой подзадачи определить, какие данные нужны на входе и какой результат ожидается на выходе.

4. Решить каждую подзадачу отдельно, используя подходящие конструкции: ветвления, циклы, вспомогательные алгоритмы.

5. Собрать решения подзадач в единый алгоритм или программу, проверив, что результаты подзадач правильно используются в других частях.

Примеры

  1. Пример 1случай

    Задача «Приготовить утро школьника»

    Пояснение

    • разбиваем на подзадачи — проснуться, умыться, одеться, позавтракать, собрать портфель
    • Каждая подзадача решается отдельно, а вместе они образуют готовность к школе
  2. Пример 2случай

    Алгоритм «Перейти дорогу»

    Пояснение

    • если горит зеленый свет — идем, иначе — ждем
    • Это пример ветвления
  3. Пример 3случай

    Алгоритм «Помыть все окна в доме»

    Пояснение

    • пока есть немытые окна, мыть текущее окно
    • Это пример цикла
  4. Пример 4случай
    • В программе для рисования квадрата можно создать вспомогательный алгоритм «Нарисовать линию», который вызывается четыре раза для каждой стороны квадрата
  5. Пример 5случай
    • При вычислении площади сложной фигуры можно разбить ее на простые фигуры (прямоугольники, треугольники), вычислить площадь каждой подзадачи и сложить результаты

Интересно знать

  • Метод декомпозиции используется не только в программировании, но и в математике, физике и даже в повседневной жизни: например, при планировании путешествия мы разбиваем его на этапы: купить билеты, собрать вещи, добраться до вокзала и т.д.
  • В программировании есть принцип DRY (Don't Repeat Yourself) — «не повторяйся». Он напрямую связан с использованием вспомогательных алгоритмов: если один и тот же код нужен в нескольких местах, его выносят в подпрограмму.
  • Первые программисты писали программы без подпрограмм, и это приводило к огромным и запутанным текстам. Изобретение подпрограмм стало революцией, позволившей создавать сложные программные системы.

Связанные темы

  • Алгоритмы и исполнители
  • Основные алгоритмические конструкции: следование, ветвление, цикл
  • Запись алгоритмов на языке программирования
  • Вспомогательные алгоритмы и подпрограммы