Функции в Scratch

В программировании часто используются функции. Функция представляет собой отдельно выделенный участок программного кода, который имеет имя подобно имени переменной. Из основного скрипта мы можем вызывать функцию, обращаясь к ней по имени. Когда функция вызывается, составляющие ее команды выполняются.

В Scratch есть возможность создавать подобие функций. Делается это в разделе кода "Другие блоки". После нажатия кнопки "Создать блок", появляется диалоговое окно:

В самом простом случае достаточно вместо текста "название блока" вписать желаемое имя функции, например "движение туда-сюда", и нажать "ОК". После этого в Scratch появятся два блока.

Один из блоков сразу оказывается в рабочей области среды программирования и содержит слово "определить". Данный блок является заголовком определяемой, то есть создаваемой, функции. После заголовка должны идти команды, которые будут выполняться, когда функция будет вызываться.

Чтобы вызвать функцию, надо использовать блок, который находится в разделе "Другие блоки".

Пример определения функции и ее вызов:

В скрипте, который начинается с команды "когда флажок нажат", два раза вызывается функция "движение туда-сюда". При запуске игры, когда поток выполнения программы доходит до вызова функции, происходит переход к определению функции и начинают выполняться ее команды.

Когда команды функции заканчиваются, поток выполнения программы возвращается туда, откуда функция вызывалась.

В данном случае после первого вызова функции будет выполняться команда "говорить Привет 2 секунд". Потом произойдет второй вызов функции.

Глядя на этот скрипт, понятна выгода от функций. Мы избегаем повторения кода в основном скрипте кота. Однако есть ли разница по сравнению с циклами? Ведь то, что находится в теле функции, можно было бы разместить в цикле и повторить его 2 раза.

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

Создадим более сложный блок – функцию с параметром. Параметры также называют аргументами.

В диалоговом окне "Создать блок", после ввода имени блока, нажмем на кнопку "Добавить значение число или текст". В блоке появится еще одно поле. Впишем туда имя параметра – в данном случае "скорость".

Составим такие скрипты:

В отличие от первого примера здесь при вызове функции мы должны передать в нее одно значение. В заголовке функции это значение привязывается к переменной "скорость". В теле функции мы можем так или иначе использовать переменную. При выполнении кода вместо нее будет подставляться переданное в функцию значение.

Так при первом вызове функции переменная "скорость" равна 10, а при втором – равна 5. Чтобы вставить "скорость" внутрь команды "иди … шагов", надо сначала вытянуть переменную из заголовка функции. При этом автоматически создается копия блока "скорость".

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

Рассмотрим более сложный пример с параметрами:

В данном случае функция принимает три аргумента – "направо?", "скорость" и "фраза". Причем первый добавлен как логическое значение. Вспомним, что в Scratch логическое значение – правду или ложь – возвращают блоки с острыми углами по сторонам.

Для остальных двух параметров при создании блока также были добавлены подписи. Это делать не обязательно. В Scratch они используются для пояснения.

При вызове функции переменной "направо?" присваивается результат логического выражения "положение x < 0". Это выражение возвращает правду, если спрайт находится в левой половине сцены. В этом случае в функции сработает ветка "если". В итоге спрайт будет идти слева направо.

Задание

Создайте функцию, которая рисует на сцене правильный многоугольник. Функция должна принимать два аргумента – количество сторон многоугольника и длину одной стороны.

PDF-версия курса с ответами к заданиям


Программирование в Scratch. Курс




Все разделы сайта