Алгоритмизация: вспомогательные алгоритмы и подпрограммы (функции) — тренажёр для 9 класса
9 класс • Информатика
Тренажёр по теме «Алгоритмизация: вспомогательные алгоритмы и подпрограммы (функции)» для 9 класса на объяснять понятие «вспомогательный алгоритм» и цель его выделения, определять функцию в Python с параметрами и возвращаемым значением (def, return), вызывать функции и передавать аргументы по позиции. Задания соответствуют разделу «ФРП по информатике, 9 класс: Вспомогательные алгоритмы. Подпрограммы. Функции. Параметры и возвращаемое значение. Декомпозиция задач» федеральной рабочей программы. 10 заданий с автоматической проверкой ответов, подсказками и разбором решения. Заниматься можно бесплатно, без регистрации.
Задания в теме
Загружаем задание…
Справка
Проверено методистом
Михаил ИгнатьевУчитель высшей квалификационной категорииИсточник
[1] Примерная основная образовательная программа основного общего образования, раздел «ФРП по информатике, 9 класс: Вспомогательные алгоритмы. Подпрограммы. Функции. Параметры и возвращаемое значение. Декомпозиция задач», ФГОС ООО.
Что нужно уметь по этой теме
- объяснять понятие «вспомогательный алгоритм» и цель его выделения
- определять функцию в Python с параметрами и возвращаемым значением (def, return)
- вызывать функции и передавать аргументы по позиции
- применять декомпозицию для разбиения сложной задачи на подзадачи
- различать локальные и глобальные переменные
Соответствие программе
Кодификатор ФИПИ: 9.3.1
ФРП: ФРП по информатике, 9 класс: Вспомогательные алгоритмы. Подпрограммы. Функции. Параметры и возвращаемое значение. Декомпозиция задач
Часы по ФРП на раздел: 6
Прогресс по этой теме: 0 верно, 0 неверно, 0 пропущено из 10 заданий.
Как разобраться в теме: полный разбор
Раздел 1 — Определение
Вспомогательный алгоритм — это алгоритм, решающий отдельную подзадачу и вызываемый из другого алгоритма (основного или другого вспомогательного) по имени. Основной алгоритм при этом не повторяет команды вспомогательного, а лишь передаёт ему управление и данные.
Подпрограмма — форма записи вспомогательного алгоритма в языке программирования. В Python подпрограммы реализованы единственным механизмом — функцией, которая создаётся служебным словом def и может возвращать результат оператором return.
Выделение вспомогательных алгоритмов преследует три цели: устранение повторяющихся фрагментов кода, разбиение сложной задачи на обозримые части и повторное использование готовых решений. Программа из функций читается как список действий, а не как сплошной поток команд.
Тема замыкает раздел «Алгоритмизация и программирование»: ученик уже умеет писать линейные, разветвляющиеся и циклические алгоритмы, а теперь учится декомпозиции — методу разбиения задачи на независимые подзадачи, каждая из которых оформляется отдельной функцией.
Раздел 2 — Ключевые правила
Функция в Python описывается один раз и вызывается сколько угодно раз, причём описание не выполняет никаких действий до момента вызова.
- Заголовок функции записывается как
def имя(параметры):, тело — с отступом в 4 пробела. Пример:def square(x):— функция с одним параметромx. - Параметр — переменная в заголовке функции, аргумент — конкретное значение, подставляемое при вызове. В
square(5)число5— аргумент, попадающий в параметрx. - Позиционная передача аргументов связывает первый аргумент с первым параметром, второй — со вторым. При
def rect(a, b)вызовrect(3, 7)даётa = 3,b = 7, аrect(7, 3)— наоборот. - Оператор `return` возвращает значение в точку вызова и немедленно завершает функцию. Команды после сработавшего
returnне выполняются. - Функция без
returnвозвращает специальное значениеNone; такую подпрограмму называют процедурой и используют ради побочного действия — вывода на экран, изменения файла. - Локальная переменная создаётся внутри функции и уничтожается после её завершения; глобальная переменная объявляется в основном тексте программы и видна везде, но изменить её изнутри функции без слова
globalнельзя. - Количество аргументов при вызове обязано совпадать с количеством параметров, иначе интерпретатор выдаёт
TypeError.
Раздел 3 — Разбор примеров
Пример 1. Функция с параметром и возвратом.
```python def square(x): return x * x
print(square(6)) # 36
``
При вызове square(6) аргумент 6 копируется в параметр x, вычисляется 36, значение возвращается и передаётся в print. Вывод: функция с return` работает как выражение — её вызов можно поставить туда, где допустимо число.
Пример 2. Два параметра, позиционный порядок.
```python def diff(a, b): return a - b
print(diff(10, 4)) # 6 print(diff(4, 10)) # -6 ``` Порядок аргументов изменил результат, потому что связывание идёт по позиции, а не по смыслу имён. Вывод: при вызове держите порядок параметров из заголовка.
Пример 3. Локальная переменная.
```python def total(n): s = 0 for i in range(1, n + 1): s += i return s
print(total(5)) # 15
print(s) # NameError
``
Переменные s и i существуют только во время работы функции, поэтому обращение к s` снаружи вызывает ошибку. Вывод: локальные имена изолируют функцию от остальной программы.
Пример 4. Глобальная переменная и её изменение.
```python count = 0
def add(): global count count += 1
add(); add()
print(count) # 2
``
Без строки global count интерпретатор счёл бы count локальной и выдал UnboundLocalError. Вывод: чтение глобальной переменной разрешено всегда, запись — только после объявления global`.
Пример 5. Декомпозиция задачи. Задача: найти количество простых чисел на отрезке [2; N].
```python def is_prime(n): if n < 2: return False d = 2 while d * d <= n: if n % d == 0: return False d += 1 return True
def count_primes(N): k = 0 for x in range(2, N + 1): if is_prime(x): k += 1 return k
print(count_primes(30)) # 10 ``` Задача разбита на две независимые подзадачи: проверка одного числа и подсчёт по отрезку. Вывод: декомпозиция позволяет отлаживать и проверять части по отдельности.
Раздел 4 — Таблица
| Признак | Локальная переменная | Глобальная переменная |
|---|---|---|
| Место создания | внутри тела функции | в основном тексте программы |
| Область видимости | только тело своей функции | вся программа |
| Время жизни | от вызова до return | от объявления до конца программы |
| Чтение внутри функции | доступно | доступно |
| Запись внутри функции | доступна напрямую | требует слова global |
| Конфликт одинаковых имён | локальное имя перекрывает глобальное | глобальное скрыто на время работы функции |
| Понятие | Где записывается | Пример |
|---|---|---|
| Параметр | в заголовке def | def rect(a, b): — a, b |
| Аргумент | в вызове функции | rect(3, 7) — 3, 7 |
| Возвращаемое значение | после return | return a * b → число 21 |
| Вызов функции | в основной программе | s = rect(3, 7) |
Раздел 5 — Типичные ошибки
Пропуск `return`. Ученик выводит результат через print внутри функции и пытается использовать вызов в выражении. Причина — смешение вывода и возврата. Неправильно: def sq(x): print(x*x), затем y = sq(3) + 1 → TypeError. Правильно: def sq(x): return x * x.
Несовпадение числа аргументов. Заголовок def rect(a, b) требует ровно двух значений, вызов rect(5) прерывает программу. Причина — потеря второго параметра при копировании кода. Правильно: rect(5, 8).
Попытка изменить глобальную переменную без `global`. Строка count += 1 внутри функции превращает count в локальную, а её начального значения нет. Правильно: добавить global count первой строкой тела либо передавать значение параметром и возвращать результат.
Обращение к локальной переменной снаружи. После def f(): m = 5 вызов print(m) даёт NameError, потому что m уничтожена. Правильно: def f(): return 5, затем m = f().
Код после `return`. В теле return a; a += 1 вторая строка недостижима. Причина — представление о return как об обычном присваивании. Правильно: все вычисления размещать до return.
Раздел 6 — Пошаговый алгоритм
- Прочитайте условие и выпишите подзадачи, которые решаются самостоятельно.
- Для каждой подзадачи придумайте имя-глагол или имя-признак:
is_prime,count_primes,read_data. - Определите входные данные подзадачи — они станут параметрами.
- Определите результат подзадачи — он станет выражением после
return. - Запишите заголовок
def имя(параметры):и тело с отступом. - Проверьте, что все рабочие переменные тела созданы внутри функции.
- Соберите основную программу из вызовов функций, соблюдая порядок аргументов.
- Проверьте результат на контрольных примерах, включая граничные:
is_prime(1),count_primes(2), нулевые и отрицательные значения.
Раздел 7 — Как запомнить
- Формула функции: «def — имя — скобки — двоеточие — отступ — return». Шесть элементов, пропуск любого даёт ошибку.
- Различение параметр/аргумент: параметр — Пустой ящик в заголовке, аргумент — Актуальное значение при вызове (П — П, А — А).
- Правило видимости: «локальное живёт от вызова до return, глобальное — от старта до финиша».
- Мнемоника для
global: «читать глобальное можно молча, писать — только вслух» (объявивglobal). - Признак необходимости функции: один и тот же фрагмент кода встречается дважды — вынесите его в подпрограмму.
Частые вопросы
Зачем использовать функции в программировании?
Чтобы не повторять одинаковый код, разбить задачу на части (декомпозиция) и упростить отладку.
Что делает оператор return?
Завершает выполнение функции и возвращает указанное значение вызвавшей программе.
Чем параметр отличается от аргумента?
Параметр — переменная в определении функции; аргумент — конкретное значение, передаваемое при вызове.
Что такое декомпозиция?
Разбиение сложной задачи на более простые подзадачи, каждая из которых решается отдельной функцией.
Чем локальная переменная отличается от глобальной?
Локальная существует только внутри функции; глобальная — вне функций и доступна из любого места программы.