Квант
Разное

Конкурс работ по программированию

52

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

Конкурс работы по программированию

Вычислительный центр СО АН СССР и редакция журнала «Кванта» объявляют конкурс работы по программированию.

В конкурсе могут принять участие, нарушуя с учетоммися Заочной школи программирования, ущущеся общеобразовательных школ и профессионально-технических училищ. Каждая работа должна содержать

  1. краткие сведения об авторах (фамилия, имя, отчество, полный домашний адрес, школа, класс, когда и где изучал программирование);
  2. описание работы (постановка задачи, обоснование метода ее решения, комментарии к программе, полученные результаты);
  3. текст программы и машинные расчетки (если расчетки есть).

Конкурсные работы необходимо направлять не позднее 15 апреля по адресу: 630090, Новосибирск, 90, просп. Науки 6, ВЦ СО АН СССР, Отдел информаатики, Конкурс-81.

Победители конкурса получат приглашение на VI Летний школью юных программистов. Обзор наиболее интересных работ будет опубликован в нашем журнале.

Десять задач на применение произвольной

(Начало см. на с. 37)

Задача 10. На рисунке 10 изображен график скорости v прямолинейно движущейся точки. Получясь этим графиком, определите момент времени t, когда ускорение a этой точки равно 3 m/c².

Указание. Постройте касательные к графику скорости с угло-

выим коэффициентом, равным 3. Най-dите абсциссы точек касания.

Рис. 10.

54

В таблице для каждой планеты приводается ее название, радиус (в км), удаление от Солнца (в мл. км), количество спутников, а также состав atmosферы, задаваемый с помощью множества — списка названия газов. Все эти сведения образуют контекст соответствующего объекта — элемента множества СОЛНЕЧНАЯ СИСТЕМА.

Если теперь в качестве признака взят ГАЗ в состав atmosферы, а совокупность остальных элементов в кортежах планет считать контекстом, то в этих обозначениях легко программируется задача 7 (а, г) Олимпиды по программированию («Квант», 1980, № 3): из множества планет Солнечной системы выбрать те, atmosферы которых содержат углексный газ:
<**> —> РЕЗ;
для ПЛАНЕТЫ из СОЛНЕЧНАЯ СИСТЕМА ::
ЕСЛИ’УГЛЕКИСЛЫЙ ГАЗ'
ИЗ ПЛАНЕТА[5] TO ИЗ ПЛАНЕТА[5]
TO РЕЗ+ПЛАНЕТА—> РЕЗ
ВСЕ;
ВСЕ;

Программа начинается засылкой пустого множества в РЕЗ; в РЕЗ постепенно формируется множество результат. Обратите внимание, что, решая эту задачу, нам вообще не попадобится обращение к отдельным элементам множества. Порядок, в котором перечислены элементы в множестве (1), не существует.

В этой программе множестворезультат осталось в память ЭВМ. Если результат требуется напечатать, можно воспользоваться оператором форматной печати, синтаксическая диаграмма которого имеет вид:

Здесть выражение-1 — это выражение, значение которого (число или текст) должно быть отпечатано, а значение выражения-2 — это количество печатаемых символов.

Таким образом, печать таблицы планет осуществляется циклом:
ДЛЯ X ИЗ РЕЗ ::
ПЕЧАТЬ (X[1]:12,X[2]:6,
X[3]:3,X[4]:2,X[5]:50)
ВСЕ;

(объясните, как выбраны здесь количество печатаемых символов). Стоит сказаать, что в одной строке больше истинства печатающих устройств современных ЭВМ размешается 128 символов.

Остается только добавить, что печатная таблица всегда должна иметь заголовок. Но печать заголовка затруднен не вызывает: как правило, заголовок — это одна строка.

Задание 12.1. Опишите множество учащихся ващего класса, предложая, что по каждому из учеников известны сведения: фамилия, пол, год рождения, начиные значака ГТО. Написите программу, печатающую

a) множество всех девочек класса;
b) множество всех значистов ГТО класса.

А как быть, если потребуется разыскать всех девочек, сдавших нормы на значок ГТО? Одно решение сразу бросается в глаза: написать две процедуры, одна из которых по множеству учеников класса формирует и оставляет в память множество ДЕВОЧКИ, а вторая (уже написанная при решении задачи 12.1) выбирает значокок из этого множества. (Впрочем, порядок работы двух таких процедур может быть и обратным: сначала выбираются значки, а потом среди них — девочки.)

Во многих языках программирования (в том числе и в Рапире) предусмотрен возможность получения за один «проход». Эти возможности обеспечивают так называемые сложными условиями. Сложное условие — это совокупность нескольких условий (которые знакомы читательм «Кванта», например, по условным операторам или операторам цикла Рапира), соединяемых логическими операциями и (логическое умножение), или (логическое сложение) и НЕ (отрицание). Объедининие простых условий в одно сложное делается не произвольно, а по определенным правилам, которые можно задать диаграммой.

55

В этой синтаксической диаграмме на месте условия может, разумеется, стоять и сложное условие.

Читатели «Кванта», возможно, уже встречались с логическими операциями И, ИЛИ, НЕ. Операции И и ИЛИ применяются к двум операндамысказыванием, а операция НЕ — к одному. Значения операндов и результатов у всех трех операций — две различuousся величины: истина и ложь, или «+» и «—», или (что особенно удобно для представления в машине) 0 и 1. Для операций И, ИЛИ и НЕ существует простое таблиное представление (именами А и Б обозначены условия операнды).

АИБ АИБ

Операции И, ИЛИ, НЕ можно применять и к условиям (которые тоже принимают значения истина и ложь). Так, (X>2) И (X<5) означает попадание X в числовой интервал 2;5[, а условия НЕ(ДЕВОЧКА ИЛИ (НЕ ЗНАЧКИСТ И МАЛЬЧИК)) выделяет множество всех «спортивных» мальчиков. То же сложное условие могло бы быть выражено проще — МАЛЬЧИК и ЗНАЧКИСТ. О способах преобразования сложных условий можно прочитать в книге Ю. А. Шихановича «Введение в современную математку» (М. «Наука», 1965).

Задание 12.2. Составьте, используя сложные условия, процедуры выборки из множества КЛАСС всех мальчиков старше 1965 года рождения, сдающих нормы на значок ГТО. Отпечатайте таблицу-результат с задовольком.

Рассматривающиеся do схх пормножества (СОЛНЕЧНАЯ_СИСТЕМА, КЛАСС,…) служили машинными представлениями двумерных таблиц: одно изменение — строки — это кортежи (планеты, ученики,…), а второе изменение — столбцы — это элементы, образующие кортежи (радиусы планет, пол ученика,…). Теперь не составит труда знакомство с трехмерными таблицами. В повседневной жизни трехмерная таблица — это, например, книга, на каждом странице которой размещена одна «объчная» двумерная таблица, требе измерение такой таблицы — номер страниц. Так, известные каждому школьнику таблицы Брадиса тоже можно изобразить как множество кортежей, состоящих из числового значения (контекста) и соответствующих ему трех признаков — СТРАНИЦА, СТРОКА, СТОЛБЕЦ.

Найти значение в третьем столбце и пятой строке на второй странице в такой таблице ознакомлен определить контекст, признаки которого удовлетворяют сложному условияю (СТРАНИЦА-2) И (СТРОКА-5) И (СТОЛБЕЦ-3).

Задание 12.3. Классный журнал на явварь содержит 8 страниц, по странице на каждый из предметов — русский язык, литература, математика, физика, химия, география, иностранный язык, физкультура. Страница журнала состоит из строк, на каждой из которых написана фамилия школьника и предусмотрен места на 18 оценок — по одному на каждый из дней. Опишите ваш классный журнал на явварь и составьте программу печати таблицы ученников, получивших отличные оценки хотя бы по одному предмету 28 явваря.

И, наконец, заключительные вопросы:

Задание 12.4. Опишите ситuation из повседневной практики, когда может оказаться полезным представление информации в виде четырехмерной таблицы. Как такую таблицу вы зададите машине? Как найти элемент в такой таблице?

Ю. Первин, Н. Юнерман