Квант

48

Об открытии
Всегоозной заочной
школы программирования

Институт программных систем АН СССР открывает Всегоозную заочную школьную программирование для школьников и учащихся ПТУ, интерсуциализация информационной, вычислительными машинами и программированием. Цель Школьы расскаазать о проблемах и перспективах информационных и обосновных приемах программирования и сферах его применения, показать способы составления программ на нескольких языках программирования. Вообще говоря, предварительные знания по информанике не предполагается, и все же в тех случаях, когда авторы уроков найти полезным сравнение того или иного программного средства с алгоритмическим языком, на базе которого построен школьный курс «Основы информаники и вычислительной техники», 9—10 кл., в уроках Школьы не будет перечатьаться содержание школьного учебника. Первые четые урока Школьы будут опубликованы в «Кванте».

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

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

Желающие приять участие в работе Всегоозной заочной школьи программирования должны do получения 11 номера журнала прислать свои заявления по такой форме:

Язык Лого

А. А. ДУВАНОВ, Ю. А. ПЕРВИН

Урок 1: Путешествия Черепахи (простейшие команды Лого)

— Может ли вы управлять телевизором?
— Конечно! Надо включить его в сеть, выбрать нужный канал, настроить изображение и звук.
Так же легко, наверное, вы можете управлять волосипедом, газовой плитой, телефоном и другими привычными исполнительами.
Мы живем в мире исполнитель. Всевозможные машины и механизмы,

приборы, простые и сложные. В роли исполнительия часто выступаем мы сами. Исполнительия являются и ограничциями, такие, как почта, почечная, магазин. В этом мире исполнительный выделяется один особый их вид — электронно-вычислительные машины. Их особая роль — помочь управлять другими исполнительами, самыми разными по назначению и устройству. ЭВМ при этом выступает в роли поредника. Человек с пульта машины задает программу действий исполнителью на специальном языке человека-машинного общения — языке программирования. Задача машины — преобразовать фразы этого языка в управляющие сигналы и передать их исполнителью.

49

Каков смысл в этом посредничсте? Во-первых, язык программирования гораздо более близок к естественному языку, нежели электронные, магнитные или механические воздействия на исполнитель. Во-вторых, машина позволяет запоминать программу и «вспоминать» ее всякий раз, когда это потребуется. В-третьих, пользовая язык программирования, можно задавать не только простые последовательности команд, но и более сложные действия: некоторые команды исполнитель может выполнять лишь при соблюдении определенных условий — условные команды; выполнение других заключается в многократном повторении группы действия — команды цикла. Наочец, ЭВМ обладает огромным быстроестием — до миллиарда операций в секунду и больше; она не знает установленные и имеет хотя и «железный», но полное способный характер: ей не знакомы обидивость, заносивость, разражительность и другие чисто человека неодестатки.

Первые четые урока Заочный школа программирования познакомят вас с программрованением на языке Лого. Этот язык предназначен для управления разными простыми исполнителями. Мы удалим внимание одному из них, по традиции называемому Черепахой. Этот исполнитель живет на плоскости. Он может пользовать по ней в разных направлениях, оставляя за собой след. Можно себе представить этот исполнитель, реализно выполненным из металла и пластика.

Одноко зачастую такой исполнитель былает виден только на экране дисплея. Надо отметить, что это довольно типичная ситuation. Многие полезные и необходимые исполнители существуют только в виде модели, программированных на ЭВМ. За их поведением можно наблюдать на экране. может показаться, что они бесполезны, поскольку неосязаемые, словно признаки. Опровергунуть это мнение можно просто перечисленем несколько активно использовемых исполнителей, существующих только «внутри» машины.

— Математик. Способен быстро и точно делать огромные по объему арифметические и алгебраические вычисления.

— Редактор текстов. Позволяет хранить, преобразовать тексты и выдавать их на печать в нужном формате.

— Редактор рисунков. Удобное средство для создания на экране картинок, в том числе мультитипикций.

— Выблютекарь. Хранить на магнитной ленте или магнитном диске готовые рисунки, результаты счета, программы; ведет архив.

Исполнитель Черепаха и язык для его управления — Лого — был придуманы в 1969 году известным американским ученым С. Пайпертом. Лого быстро завоевал популярность во всем мире как язык для начального знакомства с программированием.

Начинать изучение программирования проще всего на своем родном языке. Позмоту у Лого так много версией: в американских школах используется Лого, все команды которого записьюются по англійски; болгарские предложатели учат свои действия на болгарязьчной версии Лого. В наших уроках, естественно, исполнитель поннимает только русские слова. Об этом должен читать читатель, который захочет выполнить приложение здесь программы на доступной ему ЭВМ, если в ее программе обеспечение включен англоязычный Лого.

Внимание! Включаем комьютер. В центре экрана появляется изображение исполнителя в виде треугольника-стрелки, направленного носиком кверху. Это и есть Черепаха. Рядом с экраном — клавиатура. Она также как на пышцей машине, только клавишей на ней несколько большее.

Вы готовы? Исполнитель ждет. Вот первые две команды на языке Лого: ВПЕРЕД n, НАЗАД n. Можно писать сокращенное В вместе ВПЕРЕД и Н вместе НАЗАД, машина появится. Число n — параметр команды — задает количество шагов исполнителя. У Черепахи короткие лапы: 10 ее шагов — условия единиц длины — примерно составляют 1 см.

Итак, попробуем управлять:

50

Получилось! Черепаха сначала переед, а затем вернулась в исходное положение. На экране остались следы ее протулки.

Вот еще две команды Лого: они управляют поворотами: ВПРАВО α, ВЛЕВО α. Эти команды (их допустимые сокращения — П и Л) заставляют исполнитель поворачивать соответствующее вправо или влево на α градусов.

Давайте заставим Черепаху пруляться по квадратной дорогке:

Черепаха очень послушна! Наберем на клавиатуре еще одну команду НАЗАД100. Черепаха не тронулась с места, а на экране появилось сообщение: ЧТО ТАКОЕ НАЗАД100?

Дело в том, что в языке Лого, так же, как и в русском языке, слова разделяются пробелами. Машина пыталась найти в своей памяти команду НАЗАД100, но, конечно, ее там нет.

Давайте исправимся! Набираем на клавиатуре: НАЗАД 100. Теперь на экране получился флажок (рис. 1).

Задачка 1*. Составьте программу, по которой Черепаха нарисует кораблик (рис. 2).

Команда СВРОС стирает с экрана черпашьи следы и устанавливает исполнитель в центр экрана носиком кверху. Включение компьютера экравального выполнения этой команды. Нарисуем равносторонний треугольник. Каждый его угол равен 60 градусам. Так и хочет написать программу:

СВРОС В 50 П 60
В 50 П 60
В 50 П 60

Как вы думаете, что получится на экране? Треугольник? Вот вы и ошиблись, Черепаха нарисует вот такую фигуру (рис. 3).

Вы увидели ошибку? Что бы внутриние углы треугольника имели по 60 градусов, надо каждый раз развоирать Черепаху на 120. Вот как выглядит правильная программа:

СВРОС В 50 П 120
В 50 П 120
В 50 П 120

Задачка 2*. Описите кораблик из задачки 1 парусом (рис. 4).

Следующие две команды позволяют перемещать исполнитель по экрану, не оставляя следа (поднимать рисункой инструмент — «карандаш») и снова включить след по желанию (опускать карандаш): НЕРИСУЙ (сохранение НР), РИСУЙ (сохранение Р). Отметим, что операция опускания карандаша является составной частью выполнения команды СВРОС.

Правила Лого не всегда совпадает с правилами родного языка. Если с точки зрения русского языка правильно написать НЕ РИСУЙ, то, получив такую команду, ЭВМ снова удивится: ЧТО ТАКОЕ НЕ?

Задачка 3*. Какое слово написет на экране Черепаха, выполняя следующую программу:

СВРОС
В 40 Л 45 Н 20 П 90 В 20 Л 45 Н 40
НР П 90 В 20 Л 90 Р
В 40 Н 40 П 45 В 50 Л 40 Н 40
НР П 90 В 20 Л 90 Р
В 40 П 90 В 30 П 90 В 20 П 90 В 30

Интересно, что бы получилось у Черепахи, если бы мы продолжили неверную программу рисования треугольника (см. рис. 1) и написали:

СВРОС В 50 П 60
В 50 П 60
В 50 П 60
В 50 П 60

Ясно, что в конце пути Черепаха смотрит вверх, ведь она 6 раз поворачалась на 60 градусов. Более того, она оказывается в исходной точке.

51

Черепаха нарисовала правильный шестиугольник! Обратите внимание, что рисунок получен шестикратным повторением двух команд. Лого обладает средством для более лаконичной записи таких повторений — командой цикла. Команд имеет вид: ПОВТОРИ nl.

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

Вот как выглядит программа рисования правильного шестиугольника с использованием команды цикла:

СБРОС ПОВТОРИ 6 [В 50 П 60]
Задача 4*. Составьте программу, рисуную ел (рис. 5).

Мы заставили использовать рисовать шестиугольник. Попробуем проектировать: ШЕСТИУГОЛЬНИК. Вы правы! ЭВМ снова напишет знакомое:

ЧТО ТАКОЕ ШЕСТИУГОЛЬНИК?
В обшем-то, все правильно. Ведь мы не сообщили ей, что ранее записанная совокупность команд называется ШЕСТИУГОЛЬНИК.

Научить использовать понятие новых незнакомые слова и воспринять их как команды можно с помощью еще одной команды языка Лого. Команд, начинающаяся словом ЭТО, заставляет машину запоминать любую программу — последовательность команды (или, в частности, одну команду), завершающийся словом КОНЕЦ. Именно запоминать, а не выполнять! Вслед за словом ЭТО надо написать имя, под которым машина будет знать запоминаемую программу. Так, запись

ЭТО ШЕСТИУГОЛЬНИК
ПОВТОРИ 6 [В 50 П 60] (1)
КОНЕЦ
есты команда запоминания программы (зесь состояние из одной команды)

ПОВТОРИ 6 [В 50 П 60]
Выполняя команду ЭТО, машина не посылает никаких указаний исполнителю и, следовательно, Черепаха не движется с места. Действительно, ЭВМ в это время занята запоминанием программы, имеющей имя ШЕСТИУГОЛЬНИК. Под таким имеем эту программу можно теперь вызывать для выполнения. Для этого достаточно набрать на клавиатуре слово
ШЕСТИУГОЛЬНИК
и Черепаха выполнит уже знакомый рисуок. Таким образом машина «научилась» новой команде — ШЕСТИУГОЛЬНИК.

Программа, хранящаяся в памяти машины и имеющая имя, по которым ее можно вызвать для выполнения, называется проедурой. Запись (1), включаяшая строки ЭТО ШЕСТИУГОЛЬНИК (заготовок описания проедуры) и КОНЕЦ (окончание описания), есть описание проедуры, а собственно команда запоминаемой программы (в нашем примере строка ПОВТОРИ 6 [В 50 П 60] — тело проедуры).

Задача 5*. Составьте проедуру, рисуную дом (рис. 6).

Попробуем теперь нарисовать точно будь последнее — например,оты для печел (рис. 7).

Разобем рисуок на три слоя. Проедура СОТЫ будет иметь вид:

ЭТО СОТЫ
ПОВТОРИ 3 [СЛОЙ]
КОНЕЦ

Каждай слой (рис. 8) будет начиная рисовать в точке 1 и заканчивать в точке 4. Это гарантирует правильную стыковку слоев друг с другом при выполнении цикла в проедуре СОТЫ.

ЭТО СЛОЙ
РЯД
ПОДВОДВ3
РЯД
ПОДВОДВ4
КОНЕЦ

В описании проедуры СЛОЙ использованы вызывы трех, еще не запрограммированных проедур РЯД, ПОДВОДВ3, ПОДВОДВ4. Вызывать проедуру СЛОЙ нельзя, пока они

52

не описаны. Опишем процессу РЯД:
ЭТО РЯД
ПОВТОРИ 8 [ШЕСТИУГОЛЬНИК ПОДВОД] КОНЕЦ

Хотя, по-видимому, понятно, что именно поручено делать процессу РЯД, в ее описании есть вызов еще одной, пока не описанной процессуры ПОДВОД. Процедура ПОДВОД необходима для установки Черпахи к месту, с которой она должна очень очередной шестиугольник в ходе рисования ряда:

ЭТО ПОДВОД
НР Л 60 Н 50
Л 60 Н 50
П 120 Р
КОНЕЦ

Подвод в точку 3 состоит из возврата в точку 1 и перемещения в точку 3:

ЭТО ПОДВОДЗ
НР ВОЗВРАТ
В 50 Л 60
В 50 П 60 Р
КОНЕЦ

Возврат делается из точки А в точку 1 девятикратным вызовом процессуры ШАГНАЗАД:

ЭТО ВОЗВРАТ
ПОВТОРИ 9 [ШАГНАЗАД]
КОНЕЦ

Опишем процессу ШАГНАЗАД:

ЭТО ШАГНАЗАД
Л 120 В 50
П 60 В 50
П 60
КОНЕЦ

Осталось описать процессуры ПОДВОД4:

ЭТО ПОДВОД4
ВОЗВРАТ
В 50 П 60
В 50 Л 60
КОНЕЦ

Вот и все! Если теперь очистить экран: СБРОС, и выдать команду СОТЫ, то можно будет увидеть, как исполнитель, тщательно следуя нашим предписаниям нарисует шестиугольные ячейки.

Задачка 6*. Составьте программу для рисования а) улицы из 10 домов, таких как в задачке 5; 6) поселка из пяты улиц.

Задачка 7. Составьте программу, которая рисунетLOBийк ПОДВОД] КОНЕЦ

На примере рисования сот показан метод проектирования сложных программы, называемый в информанике методом «сверху вниз». Этот метод похож на рисование дерева, растущего ветвями вниз (рис. 9).

Планируя процессу СОТЫ, записываем обращение к процессре СЛОЙ. Тепер начинаем проектировать процессру СЛОЙ. В ней не обойтись без процедур РЯД, ПОДВОДЗ, ПОДВОД4 и т. д. Иными словами, мы начинаем с общей схемы задачи, вводя команды вызова несущеннуюших процедур. Каждый такой новую команду описывается при помощи процедуры, в которой, в свою очередь, могут появиться вызовы новых, не описанных процедур и т. д.

Вершины дерева, у которых нет растущих вниз ветвей, называются листями. Чтобы программа могла работать, все имена на листях должны быть правильными командами языка Лого. В этом смысле дерево на рисунке 9 не является полным.

Задачка 8. Дополнительное рисование СОТЫ так, чтобы на листах были записаны команды языка Лого.

Внимание! Напоминаем, что проверяться будет только задачи 1—6, помещенные звездочек.