Урок 12. Подпрограммы — программы в программе
Тема: Язык программирования Logo
Подпрограммы очень часто используются в программировании. По-другому их называют процедурами или функциями. Пока мы не будем усложнять себе жизнь и ограничимся использованием слова «подпрограмма». Что же это такое?
Судя по названию, подпрограмма — это то, что входит в обычную программу (в программный код, который мы пишем). Что такое обычная программа? Это последовательность команд, в результате выполнения которой исполнителем (в нашем случае, черепахой) что-то происходит. Когда программа готова, нам достаточно нажать одну кнопку, чтобы ее запустить. А теперь представьте, что у нас в программе есть маленькие программки (подпрограммы), которые мы также запускаем нажатием всего лишь одной кнопки, после чего что-то происходит. Хотя на самом деле, никакой кнопки нет. Подпрограмма внутри программы запускается оттого, что ее вызывают по имени. Все это можно изобразить так:
Здесь пунктирными линиями обозначены строки программного кода. Подпрограмм и их вызовов может быть много. Вызывается подпрограмма по ее имени.
Давайте рассмотрим какой-нибудь практический пример, чтобы стало все более понятно. Пусть, например, код, заставляющий черепаху рисовать синюю толстую линию, будет оформлен в виде подпрограммы с названием с_линия. В языке программирования Лого ключевым словом, обозначающим начало подпрограммы, является выучи. Можно представить, что тем самым мы учим черепаху новым командам.
сброс выучи с_линия { цвет_пера 0, 0, 220 толщина_пера 5 вперёд 75 } иди 10, 200 с_линия иди 100, 250 направление 45 с_линия
Итак, здесь главная программа - это команда сброс и все что идет после закрывающей фигурной скобки. От команды выучи и до закрывающей скобки включительно — это подпрограмма.
Какое преимущество дает использование подпрограмм? Ведь можно было вставить код, рисующий синюю линию, непосредственно в программу и не делать так, как показано выше. Однако тогда этот код пришлось бы вставлять два раза, и программа бы получилась длиннее. Использовать здесь цикл также не получится, т. к. между рисованием первой и второй линий есть еще команды. Вывод: использование подпрограмм позволяет сократить программный код.
Другое преимущество подпрограмм — это то, что они могут принимать различные данные и результат их работы может выглядеть по-разному. Принимаемые данные передаются в подпрограмму с помощью переменных, которые указываются после ее имени. Пример:
сброс выучи надпись $x, $y, $текст { иди $x, $y напиши $текст } надпись 10, 20, "программирование" надпись 100, 140, "другая надпись"
Здесь создается подпрограмма надпись, которая принимает два числа и одну строку через переменные $x, $y и $текст. Когда надпись вызывается в главной программе, то указываются конкретные значения (числа и строки), они и подставляются в подпрограмме вместо переменных, а затем используются внутри скобок. В результате мы можем изменять результат работы подпрограммы за счет того, какие данные в нее передаем. Конечно, это достаточно относительно. В примере выше черепаха только перемещается и пишет, но зато где угодно и что угодно.
Подпрограмма может принимать данные в любом количестве. Главное, чтобы количество переменных после ее имени и количество конкретных значений при вызове совпадало.
Рассмотрим еще один пример подпрограммы:
выучи цвета $r, $g, $b { цвет_холста $r, $g, $b если $r >= 128 { $r = $r - 128 } иначе { $r = $r + 128 } если $g >= 128 { $g = $g - 128 } иначе { $g = $g + 128 } если $b >= 128 { $b = $b - 128 } иначе { $b = $b + 128 } цвет_пера $r, $g, $b }
В данном случае подпрограмма устанавливает цвет холста по переданным ей данным, меняет значения переменных $r, $g и $b, затем устанавливает цвет пера.
Задание
- Напишите программу, в которой бы использовался код, приведенный выше (про цвета). Пусть сначала подпрограмма вызывается со случайными значениями, а затем с тем, которые ввел пользователь. Также после каждого вызова подпрограммы черепаха должна что-нибудь рисовать на холсте.
- Напишите подпрограмму под названием фигура, принимающую два численных значения: количество сторон фигуры и размер стороны. Код тела подпрограммы должен содержать команды, которые заставляют черепаху рисовать правильный многоугольник по переданным данным. Несколько раз вызовите подпрограмму, передав ей разные значения.
Последние комментарии
2 дня 3 часа назад
3 дня 31 минута назад
4 дня 46 минут назад
6 дней 16 часов назад
1 неделя 4 часа назад
1 неделя 2 дня назад
2 недели 1 день назад
2 недели 1 день назад
2 недели 6 дней назад
3 недели 5 часов назад