37
IV Всегоизная летняя школа юных программтов
В этой статье подробно рассакзывается о работе школы юных программтов, проходившей в июле — августа в Новосибирском академгородке. Наши читатели узнали, какие задачи могут порой решать современные программы. Дляучащихся нашей Заочной школы программрования стать заказпит освоение языка Робик и подготовит к изучению языка Рапира, которое научется в «Кванте», 1980, № 1.
С 26 июля по 10 августа 1979 года в Новосибирском академгородке проходила IV Всегоизная летняя школа юных программтов, в работе которого участвовал более 120 школьников. Среди них были представители Харькова и Находки,iche
ва и Ангарска, Ленинграда и Москвы и многих других городов нашей страны.
Торжественное открытие Школи состоялось в Малом зале Дома ученых Сибирского отделения АН СССР, где часто проходят научные съедды, симпозумы и конференции. Перед участниками Школи выступили представитель Научного совета по проблемам образования при Предидуме СО АН СССР, ректор Новосибирского университета академик В. А. Коптюг, заведующий отделом информационных ВЦ СО АН СССР, научный руководитель Летней школи член-корреспондент АН СССР А. П. Erшов и другие учены.
На lekционных и семинарских занятиях, проходивших в Новосибирском университете, школьники познакомились с современными языками и системами программрования (Рапира, Паскаль, Сетл, Поплан), с системой машинной графики Шпата, позволяющей выполнять на ЭВМ различных рисунки, схемы
38
чертежи, изготовлять диапositивы, снимать мультимпликационные фильмы. Юным программистам рассказывали о различных способах и приемах программирования, ихучили применять ЭВМ для решения самых разнообразных задач, работать на различных внешних устройств, пользоваться архивными системами Краб и Хамелеон.
Пожалуйста, смыли интересными были практические занятия: в течение нескольких дней школьники получили возможность работать в ВЦ СО АН СССР — одном из лучших встране вычислительных центров, оборудованном самой современной техникой.
Во время работы Школьы были проведены две конференции, на которых школьники рассказыали о своих работах и узнали о результатах работы своих товарищей. Большинство представленных на конференции работ выполналось по заказам промышленных предприятий, научно-исследовательских институтов, учебных заведений. Такие работы имеют не только учебное, но и больше практическое значение. Результаты некоторых из них опубликованы в научной литературе или рекомендованы к публикации по итогам Школьы.
О некоторых работах, получивших дипломы первой, второй и третьей степени, мы расскажем в этой заметке.
Как обучить ЭВМ языку?
В Новосибирской школе юных программистов, как и в Заочной школе программирования «Кванта», учащся, основные учебный язык Робик, присутствот к изучению более сложных языков программирования, обладающих большими возможностями и позволяющими решать не только учебные, но и практические важные прикладные задачи. Однако из таких языков — учебно-производственный язык Рапира — будет описан на ближайших уроках Заочной школе программирования.
Задача Анатомия Велико (Новосибирск, 8 кл.) состоит в том, чтобы научить этому языку вычислительной машину БЭСМ-6. Составленная им программа переводит все конструкции Рапры в конструкции языка Поплан, который машина БЭСМ-6 понимает. Пожалуйста, самая сложная часть работы заключится в организации работы с памятью.
На уроках Заочной школе уже рассказывалось о том, как работать с памятью на языке Робик. Имеющиеся в этом языке предписание присваивания позволяет записать в блок памяти одно число или одну строку текста. Для того чтобы запомнить в памяти ЭВМ таблицу или списк чисел (например, страниц школьного журнала с оценками), в Робике нужно выделять отдельный блок памяти для каждой клетки таблицы и придумывать для этого блока новое имя.
Понятно, что гораздо удобнее было бы помещить всего таблицу в один и тот же блок памяти. Однако для работы с таблицей, хранящейся в таком блоке, нужно, оченьindo, уметь заполнять и читать отдельные ее клетки, то есть работать не только с блоком памяти в целом, но и с отдельными его частями.
В большинстве языков программирования предусмотрен возможность работы с таблицами, в каждой клетке которых записано число. Но многохарактеристики нужно хранить впеременку в одном блоке памяти разные объекты (числа, тексты, таблицы и т. д.). Например, информация о каждом химическом элементе в таблице Менделеева содержит atomный номер элемента (число), название (строка текста), обозначение (строка текста) и atomный вес (число) (рис. 1). Конечный набор объ-
39
ектов, расположенных в определенном порядке, называется в математике кортежем. Например, изображению на рисунке клетку таблицы Менделеева можно представить таким кортежем:
«2, ‘Гелий’, ‘Не’, 4.00260»
Чтобы прочитать в памяти отдельный элемент кортежа, нужно назвать имя блока и указать порядковый номер нужного элемента. Например, если приведенный здесь кортеж записан в память под именем A, то его первый элемент (число 2) обозначает A [1], а запись A [3] обозначает третий элемент кортежа, то есть текст ‘Не’.
Один кортеж может быть элементом другого кортежа. Например, если таблицу Менделеева удобно записать в один блок памяти в виде большого кортежа, каждый элемент которого — это маленький кортеж. описывающий отдельную клетку:
«1, ‘Водород’, ‘Н’, 1.0079»,
«2, ‘Гелий’, ‘Не’, 4.0026»,…
В памяти машин们 приходится хранить также и неупорядоченные наборы объектов, т. е. просто множества. Процедуры работы с памятью, разработанные Анатолем Величко при реализации языка Рапира, позволяют не только записывать множество и кортежей в памяти ЭВМ и выбирать из них отдельные элементы, но и выполнять различные математические операции над ними, например, находить обведенное и пересечение множества и т. п.
Юрий Ширман (Харьков, 8 кл.) решал более частную задачу: как освободить блок памяти, если хранящаяся в нем информация больше не нужна. Иметь такой возможность очень важно. Довольно часто случается так, что вся память машин заполнена и новую информацию некапсать, хотя часть старой уже не нужна и ее можностерить. В некоторых языках и системах сделать это довольно просто, но в системе ДОС ЕС, с которой работали харьковские школьники, такая возможность не предусмотрена. Юрий написал на языке PL-1 серio процессур, позволяющих программисту в любой момент запросить блок памяти нужного размера или освободить занятый блок.
Семиклассица Наталья Глазолева (Новосибирск) занималась особершенствованием языка Поплан — одного из распространенных диалоговых языков программирования. Существный недостаток этого языка состоит в том, что текст процедуры, записанной в память ЭВМ, невозможно ни проверить, ни исправить: если в процессе обнаружена ошибка, то все процедуры нужного заполнения заповедно. Разработанная Наташей программа позволяет изменять и исправлять текст процедур примерно так же, как это делается в Робике.
Белъчонок ведет понск
Огромную помощь специальным самых различных отраслей знания оказывает диалоговые информационные системы, позволяющие быстро найти и проанализировать нужные сведения. При разработке таких систем важно хранить информацию в форме, удобной для машин, а общее (диалог) с машиной организации в форме, удобной для человека. Как правило, эти системы обслуживают специальные системы должны формироваться так, чтобы они были понятны такому специализуту. Скажем, химикой может вопрос «Чему равен atomный вес?», но формулировка «Назовите четырьмя элементов такого-то кортежа» его явно не устроит — ведь он не обязан помнить, в каком блоке и под каким номером хранится интересующая его информация. Мы рассекjem о трех информационных системах, представленных на конференции.
Бесспорно, наиболее интерес вызвала диалоговая система для анализа структуры белковых соединений «Белъчонок».
Как известно, белки состоит из аминокислот, соединенных в цепочках, порой очень длинные (от нескольких десятиков до нескольких тысяч).
40
Различных же аминокислот немного — около двадцати. Составы многогих белков известны: они занесены в специальные каталоги в виде кортежей аминокислот.
Задача системы «Бельчонок» состоит в том, чтобы по обнаружению в хлебе эксперимента «обрывку» белковой цепочки выяснить, в состав каких белков она могла бы входить. Разумеется, это можно сделать «вручную» — перебрав все справаники и каталоги, — но это займет много времени, и, главное, всегда сохраняется опасность, что что-то пропущено.
По заказу Института организации химики СО АН новосибирские восемиклассики Татьяна Вайштейн и Анамолий Велико разработали систему «Бельчонок», которая выполняет эту работу гораддо быстрее и качественное. Если раньше на нее иногда уходило несколько дней, то теперь машина находится на нижнюю находит нужную информацию за несколько секунд.
В памятии ЭВМ постояно хранятся необходимые сведения о белках: структура белка, называние, физические и химические свойства и ссылка на литературу, в котором он подробно описан.
Каждая аминокислота обозначает буквой латинского алфавита, например A — аланин, V — валин и т.п.; структура каждой представлена в виде последовательности букв, то есть в виде строки текста.
Под действием неокоторых химических реактивов (ферментов) молекулярная модель
Рис. 2.
*) Далее машина печатает все белки, содержащие конфигурацию AV и ее позицию, по той же схеме.
41
ЖДУ ВАШИХ УКАЗАНИЙ
— ЗНАК
— КАКОЙ БЕЛОК ВАС ИНТЕРЕСУЕТ?
— Б1
— ЗНАК РАЗРЫВА?
— 1
— AV, VAA, AVA, VV
ЖДУ ВАШИХ УКАЗАНИЙ
— СПРАВКА
— КАКОЙ БЕЛОК ВАС ИНТЕРЕСУЕТ?
— Б1
— ЧТО ВАС ИНТЕРЕСУЕТ: СТРУКТУРА, ЛИТЕРАТУРА ИЛИ КОММЕНТАРИЙ?
— ЛИТЕРАТУРА
— ЖУРНАЛ’ КВАНТ № 12
1979 Г
ЖДУ ВАШИХ УКАЗАНИЙ
— КОНЕЦ
— СИСТЕМА БЕЛЬЧОНОК РАБОТУ ЗАКОНЧИЛА ДО СВИДАНИЯ!
Две другие информационные системы представили на конференции харьковские школьники. Шестилассица Наталья Вольфовская разработала программу для работы с научной литературой в библиотеках. Программа позволяет быстро получить список книг и статей, относится к заданной теме.
А программа «Индекс», разработанная Алексеем Карножчиким и Игорем Розенберром (8—9 кл.), предназначена для получения справок о почтиых индексах. Интересная особенность программы состоит в том, что его можно пользоваться с любого домашнего телефона: достаточно набрать номер — и телефон подключается к ЭВМ. После этого машине сообщается название нужного города. Его приходится кодировать, поскольку телефонный диск не очень удобен для набора текста. Можно, например, вместе какдой буквы набирать ее номер по алфавиту, но это займет довольно много времени.
Был предложен менее трудоемкий способ: достаточно набрать номер первой и последней букв в название города и общее число букв в названии. В ответ на такой запрос ЭВМ включает магнитофонную ленку с того места, где записан почтовый индекс нужного города. Эта система разработана по заказу харьковского почта.
Второклассник обучает ЭВМ
Несложную, но красивую программу, позволяющую моделировать на ЭВМ простейшие ядерные реакции,
42
разработали самые тоные участники конференции — второклассик Леонид Рабинович и третьоклассик Сергея Гавриленко из Новосибирска.
Известно, что в ядерных реакциях синтеза при слиянии ядер двух atomов может получаться ядро нового химического элемента. Его atomный номер, то есть число протонов в ядре, будет равен сумме atomных номеров участников в реакции элементов. Это простое правило и положено в основу программы.
В памятии ЭВМ постояно храниться таблица Менделеева. Программа запрашивает в диалоговом режиме обозначения и atomные веса участников в реакции ядер, находит по таблице их atomные номера, вычисляет atomный номер элемента, получающего в результате реакции, и по той же таблице находит его обозначение. Вот пример диалога с этой программы в процессе моделирования реакции синтеза геля (рис. 1):
— ОБОЗНАЧЕНИЕ ПЕРВОГО ЭЛЕМЕНТА?
— Н
— АТОМНЫЙ ВЕС?
— 1
— ОБОЗНАЧЕНИЕ ВТОРОГО ЭЛЕМЕНТА?
— Н
— АТОМНЫЙ ВЕС?
— 3
— РЕАКЦИЯ:
Н+H=He
РЕЗУЛЬТАТ РЕАКЦИИ:
НАЗВАНИЕ — ‘ГЕЛИЙ’,
ОБОЗНАЧЕНИЕ — ‘Не’,
АТОМНЫЙ ВЕС — 4
После незначительных условий эту программу можно использовать на уроках физики при изучении ядерных реакций и строения atoms.
Модель машинных Тыорига
Программа Виталия Цикобы (Новосибирск, 7 кл.) предназначена в основном для студентов, изучающих теории алгоритмов и теоретическое программрование. В этих дисциплинах широко использовется представление о так называемой машине Тыорига — универсальном логическом устройстве с очень простой системой команд.
В теоретических исследованиях такая «машина» иногда оказывается удобнее настоящих ЭВМ. Виталий подготовил программу, моделирующую на ЭВМ БЭСМ-6 работу машинных Тыорига. На экране терминала можно увидеть всего «конструкторю» машины: запоминающее устройство в виде движущейся ленты, головку записи и считывания и устройство управления. Составив программу для машинных Тыорига, студент может проследить на экране за работой этой программы во всех деталях (раныше проверить такие программы приходилось вручную).
ЭВМ создает мультфильмы
Пожалуйста, наобольший интерес у всех участников и гости конференции вывала секция машинной графики. Семиклассика Асия Салихова (Новосибирск) рассказала о структуре учебной графической системы Шпара, разработанной его вместе с восемиклассией Натальей Соколовой, и об особенностях работы с этой системой в разных языках программирования *).
Третья классика Анина Вайштейн (Новосибирск) рассказала о том, как с помощью системы Шпара и СМОГ можно составлять программу.
*) Статья о системе Шпара, написанная ее разработчицами, будет опубликована в одном из ближайших номеров журнала.
Рис. 3.
43
мы для изготовления на ЭВМ мультипликationenных фильмов. После этого доклада был показан первый в СССР мультфильм, созданный школьниками младших классов с помощью ЭВМ. На рисунке 3 показана заставка этого мультфильма (рыбка проплывает при показе вдоль всего kadра) и два kadра из мультфильма «Ракета поржает самолет». В составлении программы для отдельных кадров этого фильма принимали участие Сердей Гавриленко (3 кл.) и Волода Фишелев (2 кл.).
Работа Светланы Уропиной и Анны Филамовой (Новосибирск, 3—4 кл.) выполналась по заказу сотрудников Института химического кинетики и горения СО АН СССР. Задча заключалась в том, чтобы построить серию графиков довольно сложных функций.
Школьники успешно справились с заданием, удачно использовав при этом основные конструкции различных языков программирования. Например, координатная сетка, которая почти на всех графиках должна быть выглядеть одинаково, изображалась с помощью отдельной процедуры, внутри которой применяется несколько циклических предписаний.
Функции, зависимости от двух переменных, для большей нагрузности изображались двумя способами: во-первых, при помощи аксонометрической проекции (рис. 4), во-вторых, при помощи системы маркировки, позволяющей изображать на одном рисунке несколько графиков, каждый из которых отмечен специальным значком (маркером) — рисунок 5. Для двух наиболее сложных функций были созданы мультфильмы, показывающие, как изменяется график при усленинии магнитного поля.
44
В общей сложности девочки составили свыше сорка процедур для построения восьмидесят графиков.
Борис Слуцкий (Новосибирск, 7 кл.) разработал программу для изображения пространственной структуры белковых молекул. Взамное расположение различных aminoокислот в белковых молекулах играет большое роль в биохимии, и специальном часто бывают нужно наглядно представлять строение той или иной молекулы. Борис не только «научил машину» рисовать отдельные молекулы на бумаге (рис. 6), но и разработал программу для сыемки мультифильма, показывающего, как молекula поворачивается.
ЭВМ классифицирует
Большое внимание на конференции было уделено проблеме распознавания образов. Основная трудность этой проблемы заключается в том, что распливочные понятия «близко», «похоже» и т. п. нужно сделать настоящее точным, чтобы можно было формировать и решить на машине соответствующее задачи.
Программа Михаила Дуна и Андрея Каедала (Харьков, 7 кл.) выполняет группирование деталей в технологически подобные группы. Каждая деталь имеет так называемую технологическую карту, в которой описано, каким образом нужно выполнить каждую из операций обработки. Если пропумеровать способы выполнения операции, то вместе карты можно написать «технологическое число», в котором каждая цифра говорит, каким образом нужно выполнить соответствующее операцию. Например:
1 — обработать фрезой № 1;
2 — обработать фрезой № 2;
1 — показать в синей цвет,
2 — показать в серый цвет.
Тогда 11 означает, что деталь нужно обработать фрезой № 1 и показать в синей цвет. Задча состоит в том, чтобы выбрать технологически подобные детали, то есть детали, для которых неокоторые операции обработки совпадают. Программа позволяет решить эту задачу, выбирая детали, технологические числа которой имеют в определенных позициях одинаковые цифры.
Более сложную задачу решили Галина Шварц и Анна Беспрозванная (Москва, 9 кл.). Они разработали программу, классифицирующего объекты в многомерных пространствах.
Общая формулировка задачи такова. Каждый из объектов имеет признаков, значение каждого признака — это число (например: объекты — различные заводы, а признаки — экономические показатели их работ). Тогда каждый объект может представить себе как точку в многомерном пространстве: значения признаков будут координатами этой точки. В этом случае близки можно считать точки, расстояния между которых не слищом велики. Программа, составленная Московским школьницами, позволяет разделить заданный набор точек на несколько групп близких между собой точек, причем число таких групп задается заранее. Программа предназначена для применения в экономике промышленности при разделении предметной на группы по величины, объему и ассортименту продукции.
Андрей Тармаковский (Харьков, 8 кл.) разработал программу, которая находит, с помощью какого аффициного преобразования один чертеж можно перевести в другой. Эта программа применяется психологическими при изучении крителовой функции.
Дмитрий Гершун (Москва, 9 кл.) написал программу, вычисляшую количество различных систем голосования. Ему удалось так организовать работу машины, что перебор вариантов произойдет чем за минуту.