Макинтош и образование:Информатика и ИТ:Пособие:Первые программы |
© М.Е. Крекин, 1999, 2002 Глава 3
|
"Имя" -- это, в данном случае, название нашей программы. Вообще имена13 могут состоять из букв, цифр и знака подчеркивания (_). Заметьте: Лого, в отличие от большинства языков программирования, допускает использование в именах русских букв. Однако, он при этом считает большие и маленькие русские буквы разными ("FACE" и "face" будут считаться одним и тем же словом, а "рожица" и "Рожица" -- разными). Обычно стараются пользоваться значащими (осмысленными) именами. |
Напишем, например,
это квадрат
по
вп 50 пр 90
вп 50 пр 90
вп 50 пр 90
вп 50
пп
конец
Теперь черепашка знает еще одну команду. Стоит нам набрать в поле команд слово "квадрат" ("это" набирать не надо!) -- и черепашка нарисует квадратик со стороной 50 шагов. А можно ли использовать нашу новую команду в программах? Конечно, можно. Например:
это четыре_квадрата
квадрат
квадрат
квадрат
квадрат
конец
(А какой рисунок получится в результате?)
Как видите, здесь алгоритм построения всего рисунка состоит из нескольких частей (в данном случае они одинаковые, но это совсем не обязательно), каждая из которых выполняется в соответствии с другим, заранее известным, алгоритмом. Такой алгоритм, выполняющий некоторую относительно законченную часть основной задачи, называют вспомогательным алгоритмом, а соответствующую "вспомогательную программу" -- процедурой (или подпрограммой). На самом деле, никаких принципиальных отличий между головной программой и вспомогательными процедурами нет. Поэтому во многих языках программирования головная программа оформляется так же или почти так же, как процедура14.
Когда используют процедуры? Во-первых, если один и тот же алгоритм используется несколько раз по ходу решения задачи. Это вполне очевидно: зачем десять раз писать одно и то же.
Но, оказывается, на практике процедурами гораздо чаще пользуются, чтобы упростить процесс разработки программы. Допустим, нужно составить какую-нибудь достаточно сложную программу: она должна получать у человека исходные данные, проверяя при этом правильность ввода (чтоб не было ошибок, вроде "32 февраля"), затем выполнять несколько разных вычислений, наконец -- красиво выводить результаты на экран. Можно попытаться написать сразу всю программу целиком. Однако она, скорее всего, получится очень большой и настолько запутанной, что поиск любой самой простой ошибки займет уйму времени (а написать -- даже не очень большую -- программу сразу без ошибок практически невозможно). Но можно поступить по-другому. Сначала разобьем решение задачи на несколько больших этапов. Получится программа примерно такого вида:
это решение
ввод_данных
вычисление_1
вычисление_2
вывод_результатов
конец
Мы еще не знаем, как будут выполняться эти этапы, но то, что они необходимы -- нам известно; не возникает вопросов и с их последовательностью. Далее, каждый из этапов разбиваем на более мелкие, затем, при необходимости -- еще. Так продолжаем, пока подзадачи не окажутся настолько мелкими, что каждую из них можно будет выполнить с помощью небольшой простой и понятной процедуры. Такой способ разработки программ называют проектированием методом "сверху вниз"15.
Что он дает? Во-первых, на решение 10 простых задач, обычно, нужно гораздо меньше времени, чем на одну, в 10 раз более сложную. Во-вторых, разобраться в работе процедуры и найти возможную ошибку намного проще, если эта процедура -- короткая. В-третьих, когда нужно будет что-либо изменить в программе, переделывать придется не всю ее, а только некоторые процедуры. Наконец, такой метод позволяет легко распределить работу между несколькими программистами: при разработке процедуры абсолютно не важно, что содержится внутри других.
Есть и еще одно преимущество, которое нам дает использование вспомогательных алгоритмов. Зачастую, можно, однажды написав процедуру, потом использовать ее в разных программах. Это тоже облегчает и ускоряет их разработку, снижает вероятность ошибок.