Информатика и информационные технологии

© М.Е. Крекин, 1999, 2002

Глава 3
Первые программы

В этой главе вы узнаете:

  • как записать и запустить программу на Лого;
  • что такое "вспомогательный алгоритм" и "процедура";
  • как из одной сложной задачи сделать несколько простых, и зачем это нужно.

Вы уже знаете несколько основных команд черепашьей графики и можете создавать машинные рисунки. Но каждый раз, чтобы нарисовать картинку (и даже просто исправить ее) приходится заново набирать все команды. А почему бы не объединить всю последовательность команд? В языке Лого это сделать очень просто. Нужно на особом листе -- листе программ (для переключения на него и обратно в ЛогоМирах служит картинка "это" -- ) написать все эти команды, поставив перед ними

это (to) <имя>,

а после них --

конец (end).

"Имя" -- это, в данном случае, название нашей программы. Вообще имена13 могут состоять из букв, цифр и знака подчеркивания (_). Заметьте: Лого, в отличие от большинства языков программирования, допускает использование в именах русских букв. Однако, он при этом считает большие и маленькие русские буквы разными ("FACE" и "face" будут считаться одним и тем же словом, а "рожица" и "Рожица" -- разными).
Обычно стараются пользоваться значащими (осмысленными) именами.

Напишем, например,

это квадрат
по
вп 50 пр 90
вп 50 пр 90
вп 50 пр 90
вп 50
пп
конец

Теперь черепашка знает еще одну команду. Стоит нам набрать в поле команд слово "квадрат" ("это" набирать не надо!) -- и черепашка нарисует квадратик со стороной 50 шагов. А можно ли использовать нашу новую команду в программах? Конечно, можно. Например:

это четыре_квадрата
квадрат
квадрат
квадрат
квадрат
конец

(А какой рисунок получится в результате?)

Как видите, здесь алгоритм построения всего рисунка состоит из нескольких частей (в данном случае они одинаковые, но это совсем не обязательно), каждая из которых выполняется в соответствии с другим, заранее известным, алгоритмом. Такой алгоритм, выполняющий некоторую относительно законченную часть основной задачи, называют вспомогательным алгоритмом, а соответствующую "вспомогательную программу" -- процедурой (или подпрограммой). На самом деле, никаких принципиальных отличий между головной программой и вспомогательными процедурами нет. Поэтому во многих языках программирования головная программа оформляется так же или почти так же, как процедура14.

Когда используют процедуры? Во-первых, если один и тот же алгоритм используется несколько раз по ходу решения задачи. Это вполне очевидно: зачем десять раз писать одно и то же.

Но, оказывается, на практике процедурами гораздо чаще пользуются, чтобы упростить процесс разработки программы. Допустим, нужно составить какую-нибудь достаточно сложную программу: она должна получать у человека исходные данные, проверяя при этом правильность ввода (чтоб не было ошибок, вроде "32 февраля"), затем выполнять несколько разных вычислений, наконец -- красиво выводить результаты на экран. Можно попытаться написать сразу всю программу целиком. Однако она, скорее всего, получится очень большой и настолько запутанной, что поиск любой самой простой ошибки займет уйму времени (а написать -- даже не очень большую -- программу сразу без ошибок практически невозможно). Но можно поступить по-другому. Сначала разобьем решение задачи на несколько больших этапов. Получится программа примерно такого вида:

это решение
ввод_данных
вычисление_1
вычисление_2
вывод_результатов
конец

Мы еще не знаем, как будут выполняться эти этапы, но то, что они необходимы -- нам известно; не возникает вопросов и с их последовательностью. Далее, каждый из этапов разбиваем на более мелкие, затем, при необходимости -- еще. Так продолжаем, пока подзадачи не окажутся настолько мелкими, что каждую из них можно будет выполнить с помощью небольшой простой и понятной процедуры. Такой способ разработки программ называют проектированием методом "сверху вниз"15.

Что он дает? Во-первых, на решение 10 простых задач, обычно, нужно гораздо меньше времени, чем на одну, в 10 раз более сложную. Во-вторых, разобраться в работе процедуры и найти возможную ошибку намного проще, если эта процедура -- короткая. В-третьих, когда нужно будет что-либо изменить в программе, переделывать придется не всю ее, а только некоторые процедуры. Наконец, такой метод позволяет легко распределить работу между несколькими программистами: при разработке процедуры абсолютно не важно, что содержится внутри других.

Есть и еще одно преимущество, которое нам дает использование вспомогательных алгоритмов. Зачастую, можно, однажды написав процедуру, потом использовать ее в разных программах. Это тоже облегчает и ускоряет их разработку, снижает вероятность ошибок.

Контрольные вопросы

  1. Как оформляется процедура на Лого? Как исполнить ее?
  2. Каким может быть имя процедуры?
  3. Что изменится, если во вспомогательном алгоритме "квадрат" вместо команды "направо" поставить "налево"?
  4. Когда используются вспомогательные алгоритмы?
  5. Расскажи о методе проектирования "сверху вниз".

Примечания

  1. Имена еще называют словом "идентификатор" (от лат. Identificare -- опознавать, отождествлять)
  2. В Си головная программа -- это процедура с именем "main" (т.е. главная); в Паскале запись отличается только использованием слов "program" для головной программы и "procedure" -- для процедур
  3. Проектирование "сверху вниз" широко применяется не только при программировании, а и вообще при разработке любых сложных проектов

[Предыдущая страница][Содержание][Следующая страница]
[Титульная страница][Новости][Макинтош][Информатика и ИТ][Об авторе]
Hosted by uCoz