Алгоритмизация: вспомогательные алгоритмы и подпрограммы (функции) — тренажёр для 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 описывается один раз и вызывается сколько угодно раз, причём описание не выполняет никаких действий до момента вызова.

  1. Заголовок функции записывается как def имя(параметры):, тело — с отступом в 4 пробела. Пример: def square(x): — функция с одним параметром x.
  2. Параметр — переменная в заголовке функции, аргумент — конкретное значение, подставляемое при вызове. В square(5) число 5 — аргумент, попадающий в параметр x.
  3. Позиционная передача аргументов связывает первый аргумент с первым параметром, второй — со вторым. При def rect(a, b) вызов rect(3, 7) даёт a = 3, b = 7, а rect(7, 3) — наоборот.
  4. Оператор `return` возвращает значение в точку вызова и немедленно завершает функцию. Команды после сработавшего return не выполняются.
  5. Функция без return возвращает специальное значение None; такую подпрограмму называют процедурой и используют ради побочного действия — вывода на экран, изменения файла.
  6. Локальная переменная создаётся внутри функции и уничтожается после её завершения; глобальная переменная объявляется в основном тексте программы и видна везде, но изменить её изнутри функции без слова global нельзя.
  7. Количество аргументов при вызове обязано совпадать с количеством параметров, иначе интерпретатор выдаёт 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
Конфликт одинаковых имёнлокальное имя перекрывает глобальноеглобальное скрыто на время работы функции
ПонятиеГде записываетсяПример
Параметрв заголовке defdef rect(a, b):a, b
Аргументв вызове функцииrect(3, 7)3, 7
Возвращаемое значениепосле returnreturn a * b → число 21
Вызов функциив основной программеs = rect(3, 7)

Раздел 5 — Типичные ошибки

Пропуск `return`. Ученик выводит результат через print внутри функции и пытается использовать вызов в выражении. Причина — смешение вывода и возврата. Неправильно: def sq(x): print(x*x), затем y = sq(3) + 1TypeError. Правильно: 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 — Пошаговый алгоритм

  1. Прочитайте условие и выпишите подзадачи, которые решаются самостоятельно.
  2. Для каждой подзадачи придумайте имя-глагол или имя-признак: is_prime, count_primes, read_data.
  3. Определите входные данные подзадачи — они станут параметрами.
  4. Определите результат подзадачи — он станет выражением после return.
  5. Запишите заголовок def имя(параметры): и тело с отступом.
  6. Проверьте, что все рабочие переменные тела созданы внутри функции.
  7. Соберите основную программу из вызовов функций, соблюдая порядок аргументов.
  8. Проверьте результат на контрольных примерах, включая граничные: is_prime(1), count_primes(2), нулевые и отрицательные значения.

Раздел 7 — Как запомнить

  • Формула функции: «def — имя — скобки — двоеточие — отступ — return». Шесть элементов, пропуск любого даёт ошибку.
  • Различение параметр/аргумент: параметр — Пустой ящик в заголовке, аргумент — Актуальное значение при вызове (П — П, А — А).
  • Правило видимости: «локальное живёт от вызова до return, глобальное — от старта до финиша».
  • Мнемоника для global: «читать глобальное можно молча, писать — только вслух» (объявив global).
  • Признак необходимости функции: один и тот же фрагмент кода встречается дважды — вынесите его в подпрограмму.

Частые вопросы

Зачем использовать функции в программировании?

Чтобы не повторять одинаковый код, разбить задачу на части (декомпозиция) и упростить отладку.

Что делает оператор return?

Завершает выполнение функции и возвращает указанное значение вызвавшей программе.

Чем параметр отличается от аргумента?

Параметр — переменная в определении функции; аргумент — конкретное значение, передаваемое при вызове.

Что такое декомпозиция?

Разбиение сложной задачи на более простые подзадачи, каждая из которых решается отдельной функцией.

Чем локальная переменная отличается от глобальной?

Локальная существует только внутри функции; глобальная — вне функций и доступна из любого места программы.