Text
                    • ЧЕЛОВЕК И КОМПЬЮТЕР

Раздел ведет кандидат физико-
математических наук Ю. ПУХНАЧЕВ.

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

РАСЧЕТ РЕЙТИНГА

В шахматах широко ис-
пользуется рейтинг (англ,
rating — оценка), который
по сравнению со спортив-
ным разрядом дает более
объективную оценку игро-
ков.

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

Используемые формулы:

РЕЙТИНГ ЧИСЛО ОЧКОВ ИЗМЕНЕНИЕ
НОВЫМ СТАРЫМ НАБРАНИМ ОЖИДАЕМОЕ РЕЙТИНГА
Кн«=Кс+|*(к-М0Ж)=К0+АК

чммгистмпш

я<Кс-Кст>

СРЕДНИЙ РЕЙТИНГ

ТУРНИРА

Коэффициенты: а = З0-005,
ц в системе Эло равен Ю,
из опыта автора — 20; i —
номер участника.

Структура программы:
00—08 Расчет Кер для 1-го
участника,
09—25 Расчет №ж,
26—33 Расчет А К,
34—36 Вывод результата Кн.
00.ПХ8	01.КПХ0 02.ХПВ

03.— 04. ПХ9 05.1 06.— 07. :
08.ХПС 09.ПХВ 10.— 11.5
12.ВП 13.3 14./—/ 15.Х 16.3
17.Fxy 18.1 19.4- 20.Fl/x
21.ПХ9 22.1 23.— 24.Х
25.ХПЕ 26.IIXA 27.^ 28,—
29.2 30.0 31.Х32.К[]ЗЗ.ХПО
34.ПХВ 35.4- 36.С/П 37.БП
38.00.

Ввод данных. Коэффици-
енты игроков Кс заносим в
Р1—Р7, их сумму в Р8, но-
мер последнего из Р1—Р7,
зависящий от количества'
игроков, увеличим на 1 и
заносим в РО, m в Р9, N7 в
РА, В/О, С/П.

После останова выводим
данные: РХ—Кн, РВ—Кс,
PC—Кср, PD—АК, PF—№ж.
Затем N6 в РА, С/П — полу-
чим на индикаторе рейтинг
следующего игрока и т. д.
. Для большего числа уча-
стников расчет можно вести
по упрощенной системе. Для
этого в программе заменим
две ячейки: 08.ПХС и 38.08,
исключив таким образом
шаги 00—07. Работа с про-
граммой в этом случае вы-
глядит таким образом: вве-
сти Кср в PC, Кс в РВ, гп
в Р9, N в РА, далее наби-
раем БП08, С/П. Вывод
происходит так же, как и в
предыдущем случае, затем
Кс в РВ, N в РА, С/П и т. д.

Разница коэффициентов,
полученных первым и вто-
рым способами, тем боль-
ше, чем меньше игроков и
чем больше разница в их
коэффициентах.

Начальные оценки: КМС—
2100, I разряд— 1900, II—
1700.

В. ШУКЛИН (г. Москва).

• МАЛЕНЬКИЕ ХИТРОСТИ

В заметке Я. Панкова, напечатанной в
№ 12 «Науки и жизни» за 1987 год, пред-
лагается выпускать «кнопочные» телефон-
ные аппараты с клавишами, расположен-
ными так же, как у вычислительных машин.
В аппарате ТА-620 для этого следует поме-
нять местами разъемы контактов Р1 и РЗ
жгута, соединяющего тастатурную панель
с электронной схемой аппарата, и, соответ-
ственно, переставить кнопки 1, 2, 3, 7, 8, 9.

В.	ФЕДИК, В. СИВЫЙ (г. Горький).

В № 2 «Науки и жизни» за 1987 год бы-
ла опубликована маленькая заметка о
команде «запятая» в режиме счета по про-
грамме для БЗ-34. Предлагаю более пра-
вильную и полную формулировку ее опре-
деления, пригодную также для МК-61:
«Команда «запятая», использованная в про-
грамме, стирает содержимое регистра X и
восстанавливает в нем значение, бывшее
после последней из команд: 0,1, ..., 9, Bf,
ПХР, где Р = 0, 1, ..., 9, А, В, Е.»

С.	ВАЗОВСКИЙ (г. Новомосковск
Тульской обл.).

В статье «Адрес известен» («Наука и
жизнь», № 4, 1987 г.) рассмотрена такая
организация хранения программ в ППЗУ
МК-52, когда очередная программа запи-
сывается с новой строки. При этом для
каждой программы необходимо вычислить
адрес начала в ППЗУ.

Я предлагаю другой способ: записывать
программы в заранее назначенные зоны.
Если предполагается записывать програм-
мы максимальной длины, то можно исполь-
зовать следующие адреса: 1000098, 2020898,
3041698, 4062498, 5083291. Теперь можно
стереть любую из программ, не затрагивая
при этом соседние, и на ее место по-
местить новую. Для хранения библиотеки
отлаженных программ предпочтительнее
«плотная» запись, начальный адрес в этом
случае вычисляется по формуле:

Ai = Ai-14- 2Ki-i,
где Ai-i — начальный адрес предыдущей
программы, Ki-i — количество команд в
предыдущей команде, кратное 7. При этом
обеспечивается наиболее плотное заполне-
ние ППЗУ.

В. ГАВРИЛЕНКО (г. Харьков).

АЛГОРИТМИЧЕСКИЙ ПРАКТИКУМ Издательство «Наука» в 1988 году выпустило книгу С. А. Абрамова, Г. Г. Гнез- диловой, Е. Н. Капустиной и М. И. Селюн «Задачи по программированию», в кото- рую вошло более тысячи (1052, если быть предельно точным) задач для отработ- ки основных приемов про- граммирования. Публикуем восемь задач из книги: 75. Доказать, что любую це- лочисленную денежную сум- му, больше 7 рублей, можно выплатить без сдачи треш- ками и пятерками. Для дан- ного п > 7 найти такие це- лые неотрицательные а и Ь, что За 4- 5Ь = п. 413. Таблица футбольного чемпионата задана квадрат- ной матрицей порядка п, • МАЛЕНЬКИЕ РЕЦЕНЗИИ Теория и практика идут рука об руку на протяжении поч- ти всей книги Г. В. Славина «Программирование на про- граммируемых микрокалькуляторах типа «Электроника БЗ-34» (Таллинн: ВаЛгус, 1988). Начинается рассказ о карман- ной ЭВМ, и сразу же автор предлагает читателю решить с ее помощью несколько несложных примеров. От первона- чального знакомства с ПМК разговор переходит к простым вычислениям, стековой памяти, адресуем регистрам, со- ставлению алгоритмов, программированию... Задачи, решае- мые попутно, все усложняются, и когда заканчивается этот курс обучения, читатель способен с уверенностью приме- нять собранные в приложении прикладные программы — их более 30. Особую ценность заключает в себе помещенный в конце книги библиографический указатель. В нем перечислены и аннотированы не только книги о программируемых микро- калькуляторах, но и журнальные статьи, в том числе те, которые опубликованы под постоянными «компьютерными» рубриками в журналах «Известия вузов МВ и ССО СССР. Радиоэлектроника», «Наука и жизнь», «Техника — молоде- жи», «Химия и жизнь», а также в газете «Социалистическая индустрия». в которой все элементы, при- надлежащие главной диаго- нали, равны нулю, а каж- дый элемент, не принадле- жащий главной диагонали, равен 2, 1 или 0 (по числу очков, набранных в игре: 2—выигрыш, 1—ничья, 0— проигрыш). а) Найти число команд, имеющих больше побед, чем поражений. б) Определить номера ко- манд, прошедших чемпио- нат без поражений. в) Выяснить, имеется ли хотя бы одна команда, вы- игравшая более половины игр. 422. При перепечатке текста на пишущей машинке часто получается так, что в конце строки остается несколько неиспользованных позиций. Число неиспользованных по- зиций меняется от строки к строке, и поэтому правый край отпечатанного текста получается неровным. Типо- графский набор дает ровный правый край, в частности, за счет увеличения проме- жутков между словами, встречающимися в строке. Предлагается составить про- грамму, выравнивающую правый край текста. 810. Дано натуральное чис- ло, меньшее или равное 1000. Записать это число русскими словами (семнад- цать, двести пятьдесят три, тысяча и т. д.). 832. В некоторой библиоте- ке последний четверг каж- дого месяца — санитарный день. Дано натуральное чис- ло п, означающее номер го- да. Получить по порядку все числа, на которые в ука- занном году приходится са- нитарный день. 932. Дан русский текст. Требуется воспроизвести его звуковыми сигналами азбу- ки Морзе. Предусмотреть возможность регулировки скорости воспроизведения. 985. Дано поле с осями ко- ординат. По полю разброса- ны небольшие круги. Ука- зать набор функций, графи- ки которых перечеркивают все круги. Большинство задач книги сформулированы в строгой математической формули- ровке типа: дана прямо- угольная матрица и три числа, найти... Вряд ли эта четкость способствует воспи- танию специалиста-приклад- ника: ведь очень часто бы- вает так, что намного слож- нее построить математиче- скую модель, чем програм- му, ее реализующую. 1024 СОВЕТА Байт восьмой Один из самых распрост- раненных и самых рутин- ных моментов в общении с персональным компьюте- ром — это ввод столбца чи- сел, образующих в памяти машины числовой массив. Такую работу приходится выполнять, например, при статистической обработке опытных данных, при запол- нении разных электронных таблиц и т. д. Эту малоква- лифицированную работу ча- сто поручают людям, не зна- комым с тонкостями диало- га человека с ЭВМ, не уме- ющим ликвидировать воз- можные сбои. «Поколдовав» немного над помещенной здесь программой (автор — В. Соколов из Одессы), на- писанной на Квик-версии Бейсика, процесс ввода мас- сива чисел можно сущест- венно облегчить и ускорить. 57. До ввода числового массива сообщи машине воз- можный диапазон примене- ния его элементов (см. стро- ку 2). После этого машина сможет поправить тебя при грубых ошибках. Если, на- пример, вводимые числа из- меняются в диапазоне от 10 до 100, то пропуск десятич- ной точки в таком числе, как 11.37, машиной будет заме- чен — она потребует пов- торного ввода числа (см. строку 11). 58. Оформляй сообщение об ошибке аудиовизуально (строка 11): и текстом на дисплее, и звуковым сигна- лом, который в данном слу- чае очень уместен, так как человек смотрит не на дис- плей, а в исходный текст. 59. Пересчитывая элемен- ты массива перед их вво- дом в машину (сме совет 3 в № 8 за 1987 г.), заодно про- нумеруй их, а при форми- ровании запроса предусмот- 8. «Наука и жизнь» № 4. 113
1 CLS: INPUT "N";N: OPTION BASE -1: DIM ACN+3) 2 INPUT "A MIN, A MAX";AMIN, AMAX • * 3 FOR 1=1 TO N ’ВВОД ЭЛЕМЕНТОВ МАССИВА 4 DO ’ЗАГОЛОВОК ЦИКЛА С ВЫХОДОМ ИЗ СЕРЕДИНЫ 5 PRINT I;"?”; ’НОМЕР ВВОДИМОГО ЭЛЕМЕНТА 6 DO:A«=INKEYa:LOOP UNTIL An> = ”Ow AND Ab<=w9m 7 A=VAL(AH): PRINT Аи;«.<; «ЕДИНИЦЫ' И ТОЧКА 8 DO :AH=INKE Y«:LOOP UNTIL A»> = MO" AND A«<=’,9,‘ 9 A=A+VAL(A«)/10: PRINT Аи’дЕСЯТЫЕ ДОЛИ 10 IF A>=AMIN AND A<=AMAX THEN EXIT* DO 11 PRINT "ОШИБКА* ПРИ ВВОДЕ!BEEP 12 LOOP ’КОНЕЦ ЦИКЛА С ВЫХОДОМ ИЗ СЕРЕДИНЫ 13 IF 1=1 THEN AMINR=A: AMAXR=A 14 IF AKAMINR THEN AMINR=A 15 IF A>AMAXR THEN AMAXR=A 16 A=A(I) ’ДЛЯ ЧИСТКИ ЦИКЛА 17 NEXT 18 PRINT ’A MIN=";AMINR;w A,MAX=M;ANAXR 19 END ри вывод на дисплей теку- щего номера (строка 5). Это практически исключит та- кие типичные ошибки, как пропуск числа или его двой- ной ввод. 60. Если числа вводимого массива имеют одинаковый формат (одна цифра до за- пятой и одна после, напри- мер), то освободи человека от необходимости нажимать на повторяющиеся клави- ши — на десятичную точку (а многие тут нажимают на «запятую», что чревато ошибками и сбоями) и на «Ввод». Пусть такую рутин- ную работу машина делает сама (см. операторы строк 7 и 10; кстати, вспомни о том, как работает оператор опроса клавиатуры без пре- рывания на строках 6 и 8, не требующий нажатия кла- виши «Ввод»). 61. Блокируй на клавиату- ре клавиши, нажатие на ко- торые в данный момент либо бесполезно, либо при- ведет к сбою — см. циклы «до» на строках 6 и 8, реа- гирующие лишь на нажа- тие цифровых клавиш — от 0 до 9. 62. (Модификация совета 6 в № 8 за 1987 г.) Досрочно выйти из цикла можно и без перехода к метке, поставлен- ной вне тела цикла (что на- рушило бы структурирован- ность программы). Для этого достаточно перейти не к мет- ке, а к программированию на более современной вер- сии языка (в данном случае на Квик - версии — см. цикл с выходом из середины на строках 4 — 12). 63. Не спеши выделять в процедуры повторяющиеся участки программы — см. строки 6 и 8. В ряде случа- ев (а наша программа отно- сится к ним) такая операция имеет отрицательный эф- фект оптимизации — про- грамму она почти не укора- чивает, но замедляет ее про- гонку и ухудшает нагляд- ность. 64. Разработай систему звуковых сигналов, подобную той, какая используется, на- пример, в пионерлагерях для подъема, отбоя, построе- ния и т. д. Она пригодится для музыкального сопровож- дения диалога человека с компьютером, когда различ- ные короткие музыкальные фразы отмечают различные ситуации: ошибка при вводе элемента массива, нажатие лишней клавиши, окончание работы по программе и т. д. Машина может, например, победным маршем оглашать успешную компиляцию ис- ходного текста программы. КОМПЬЮТЕР ЭКОНОМИТ ЭЛЕКТРОЭНЕРГИЮ ’ПРОГРАММА ПОИСКА ПРОСТЫХ ЧИСЕЛ ПО •АЛГОРИТМУ DO-DO-DO (ДАВАЙ-ДАВАЙ-ДАВАЙ) •НА ЯЗЫКЕ ПРОГРАММИРОВАНИЯ QUIСК-BARS I С • ’(QUICK-БЫСТРЫЙ, R-PAЧИТЕЛЬНЫй) 70 K=10000:DIM Р%(К):Р%(1)=2:N=1:1=1 60 N=N+2:S=INT(SQR(N)):J«0 • DO: DO _ 50 J = J4-1 ;P=P%(J) • •• . 40 LOOP UNTIL P>=S OR N/P=InY(N/P) 30 LOOP UNTIL N/P>INT(N/P)* 20 1=1+1:P%(I)=N 10 LOOP UNTIL I=K W S. 80 ’РАБОТА С ПРИНТЕРОМ И ДИСКОВОДОМ . 90 SWITCH ON PRINTER:REM ВКЛЮЧЕНИЕ ПРИНТЕРА 100 FOR 1=1 ТО K:LPRINT I,P%(I):NEXT 1.10 SWITCH OFF PRINTER : REM ‘ОТКЛЮЧЕНИЕ JIPH HTEF 120 SWITCH ON DISCsREM ВКЛЮЧЕНИЕ ДИСКОВОДА 130 OPEN ’DATA’ FOR OUTPUT AS FILE* #1 • 140 FOR 1 = 1 TO K:PRINT #1,1,P2(I),:NEXT 150 CLOSE:REM ЗАКРЫТИЕ ФАЙЛА * . '• 160 SWITCH OFF DISC:REM ОТКЛЮЧЕНИЕ ДИСКОВОДА 170 SWITCH OFF COMPUTER AND SVET V KOMNATE Многим пользователям ЭВМ хорошо знакома ситу- ация, когда периферия (принтеры, дисководы, гра- фопостроители и др.) попу- сту транжирит электроэнер- гию, дожидаясь, пока цент- ральная машина соизволит начать с ней диалог. Включившись в борьбу за экономию энергоресурса, системные программисты нашей организации разра- ботали алгоритмический язык Барсик с оператора- ми, включающими и вык- лючающими из электросети в нужный момент перифе- рийные устройства ЭВМ. Здесь в качестве примера приведена Барсик-програм- ма поиска первых десяти тысяч простых чисел про- веркой делимости нечет- ных чисел натурального ря- да на ранее найденные простые числа, хранящиеся в массиве Р. После нахождения этих простых чисел (строки 10— 70) машина включает прин- тер (90), распечатывает числа (100), выключает из сети принтер (110), включа- ет дисковод (120), записы- вает на диск эти же числа (130—150) и выключает дис- ковод (160). Последний оператор (170) не только выдергивает вилку ЭВМ из розетки, но и тушит свет в помещении. За счет перехода от Бей- сика к Барсику наша орга- низация обязалась 89.04.01 рассчитать очередную сот- ню простых чисел на сэко- номленной электроэнергии. В. ЖАВОРОНКОВ [г. Москва).
ЛАБОРАТОРНАЯ РАБОТА В учебных курсах понятие «лабораторная работа по программированию» обычно не фигурирует, а если и встречается, то под ним понимают просто написание и отладку программы. Между тем исследовательская деятельность совсем не чужда программи- стам. Объектами такого исследования явля- ются ЭВМ и программа, а направление его связано с быстродействием, размером, на- глядностью, универсальностью и многим дру- гим. Вот пример такой проблемы. Вычисление функции х4 возможно по меньшей мере де- сятком более или менее разумных способов: 1. Y = ((Х*Х) *Х) *Х 2. Y = (X * X) * (Х*Х) 3 Y = X **4 4. Y = (X * X) ** 2 5. Y = (X ** 2) * (X ** 2) и так далее. Эти или подобные операторы существуют во всех языках. Предлагается сравнить скорость выполнения данных опе- раторов. Для этого необходимо организо- вать цикл, в котором соответствующий ва- риант оператора выполняется достаточно много раз. После этого из общего времени работы программы необходимо вычесть время, необходимое для организации само- го цикла (подумайте, как его найти), и разделить остаток на число повторений цикла. Если на доступной вам ЭВМ нет возмож- ности воспользоваться внутренним тайме- ром, подойдут и обычные часы. Аналогично можно исследовать время вы- полнения действий по извлечению квадрат- ного корня разными способами, время об- ращения к переменной с индексом в срав- нении с обычной и тому подобное. Результаты будут сильно разниться для разных ЭВМ, операционных систем, тран- сляторов и их параметров, но в любом слу- чае результаты представляют практический интерес и могут оказаться весьма неожи- данными. А. РАННИЙ (пос. Переделкино Московской обл.). От редакции. Надеемся, что читате- ли раздела станут присылать нам темы для новых лабораторных работ — содержатель- ных, не очень сложных, интересных и по- учительных. ПРОГРАММА ЭКЗАМЕНАТОР 1 DIM Va200z0a(5)100zM«zB(50) 2 Na = ,,B0nP0Clj,,:G0SUB 26:DATA LOAD DC M 3 PRINT "ВОПРОСОВ НА ДИСКЕ -";М 4 INPUТ"1-НОВЫЙ В0ПР0С/2-ИСПРАВЛЕНИЕ/3-ЭКЗАМЕН/4“К0НЕЦ| ZA:ON A GOTO 5Z1^Z16?STOP f 5 M = M»1:K = M;GOSUB ?7: PR I NT "ВОПРОС И : у И = ' 6 LINPUT V«:IF А = 2 THEN 9 7 8 9 INPUT "ЧИСЛО ВАРИАНТОВ ОТВЕТА’ (2-5 )"ZN:IF N<2 OR N>5 THEN 7:F0R 1=1 TO N;0«(I)=" ":NEXT I 10 12 13 14 INPUT "НОМЕР ПРАВИЛЬНОГО OTBETA"ZP:IF P>N THEN FOR 1=1 TO N:PRINT 1;"-й ВАРИАНТ ОТВЕТА IF I=P THEN 10:PRINT "HE"; » । PRINT "ВЕРНЫЙ LINPUT Oatl):NEXT I IF A=2 THEN 12:DATA SAVE DC OPEN R(7) MnjGOTO GOSUB 28:REM УНИЧТОЖЕНИЕ И ОТКРЫТИЕ ФАЙЛА DATA SAVE DC Vn'zNzP zQa ( ) :GOSUB 29:IF A = 2 THEN 8 13 3 Ми="В0ПР0СЫ":GOSUB 28:DATA SAVE DC M;GOSUB 29:G0T0 3 115 INPUT "НОМЕР В0ПР0C A”zК: I.F K>M THEN 15: • GOSUB 27:G0SUB 26:G0SUB 30:G0T0 6’ 16 INPUT''4HCA0 •BOnPOCOB”zV: IF V>M OR V>50 THEN 16 MAT B = ZER: R = 0: INPUT"BPEMR НА ОТВЕТ (CEK)"ZS 17 FOR J=1 TO V 18 19 K = 1 + INT(V*RND(1 ) ):IF B(K>=1.THEN ’18: B(K ) = 1 :.GOSUB 27:GOSUB‘26:GOSUB 30: CONVERT P TO Pn,(# ):CONVERT N TO №,(#> PRINT HEX(03 );"ВОПРОС r";J:PRINT STR (Voz1ZLEN(Vn ) ) 20 21 PRINT:FOR I=1TON:PRINT I :NEXT I;INPUT’oTO STR(O«(I >,1zLEN(0n(.I ))) 22 23 24 25 диз« ":KEYIN Aoz22z20 INPUT «T:IF (TO-T )/2000<S THEN 20:PRINT "ВРЕМЯ HA ОБДУМЫВАНИЕ ИСТ.ЕКЛО . " : GOTO 25 IF Аи<"1" OR Аи>№ THEN 20 IF An=PH THEN 24 : PRINT "НЕВЕРНОPRINT "ПРАВИЛЬНЫЙ .ОТВЕТ -”;0n(P ):GOTO 25. - ’ . PRINT "ПРАВИЛЬНО.":R=R+1 FOR L=1-TO 1000:NEXT LtNEXT J: PR INT." ВЫ ОТВЕТИЛИ ПРАВИЛЬНОЕ ";R;" СЛУЧАЯХ ИЗ ";V:G0T0.3. • 26 27 DATA LOAD CONVERT К DC OPEN R №:RETURN. TO MBz(###m##):RETURN 28 SCRATCH R MQ;.DATA SAVE DC OPEN R . (M* )МиxRETURN 29 DATA’ SAVE DC END:RETURN ’ ’ - ’ ’ 30 DATA LOAD DC VnzNzPz0n()fRETURN В 1986 г. в нашей рубри- ке были опубликованы две заметки с программами для «Искры 226»: «Мою секре- таршу зовут «Искра» (№ 8, стр. 60) и «К вам неожи- данно нагрянули гости» (№ 12, стр. 91). В читатель- ских письмах-откликах на эти материалы наряду с их положительной оценкой прозвучала мысль о том, что если к вам и нагрянут неожиданно гости, то это скорее всего будут либо до- зорные народного контро- ля, либо сотрудники ОБХСС. Первые накажут за малоэф- фективное использование вычислительной техники (превращение дорогой и де- фицитной ЭВМ в обыкно- венный будильник), а вто- рые будут допытываться, как «Искра» попала в част- ные руки. Тем не менее идеи, зало- женные в программы «Сек- ретарша» и «Поваренная книга» (создание базы дан- ных на магнитном диске и работа со встроенными ча- сами), оказались плодот- ворными. Тому пример — программа «Экзаменатор», присланная москвичом В. Уткиным, позволяющая создать на базе ЭВМ авто- матизированную систему обучения чему угодно. При- мененное автором модуль- ное оформление листинга
программы сделало лиш- ним ее подробное описа- ние. Отметим лишь некото- рые моменты. 1. Гибкий 8-дюймовый диск «Искры» умещает до 140 вопросов с 2—-5 вари- антами ответов, один из ко- торых верный (см. строки 5—14). 2. Любой ранее записан- ный вопрос с вариантами ответов можно подправить (см. строку 15). Такая необ- ходимость часто возникает при апробации системы. 3. При экзамене машина «выуживает» вопросы с дис- ка случайным образом, не допуская повторов. Алго- ритм такой работы заимст- вован из программы «Лото» (см. «Науку и жизнь» № 2, 1987 г., стр. 113). 4. Перед экзаменом мож- но задать не только число вопросов, но и время на об- думывание каждого (см. строку 16). Это исключит попытки экзаменуемого «пе- ресидеть» экзаменатора — слишком длительное время обдумывания равносильно неверному ответу (см. стро- ку 21). 5. При ответе экзаменуе- мого клавиши клавиатуры заблокированы—кроме, ко- нечно, номеров вариантов ответа (см. строки 20—22). 6. Пустой цикл в начале строки 25 подобен путам, какие надевают на ноги па- сущейся лошади,— он поз- воляет регулировать темп экзамена. Операторы, реализующие два первых режима работы с системой (см. меню на строке 4), между собой пе- реплетены. Это сделано по двум причинам. Во-первых, на это толкает дефицит ме- ста в журнале, а во-вто- рых, такое «спагетти» — наш подарок читателям-лю- бителям программных ре- бусов. Ждем от читателей дора- боток программы «Экзаме- натор» в таких направлени- ях: — возможность выдачи не только буквенно-цифровой, но и графической информа- ции о вопросах и вариантах ответа; — более сложная структу- ра вопросов, когда при не- верном ответе задается уточняющий вопрос или комментарий, и только пос- ле этого неправильный от- вет на начальный вопрос засчитывается как пораже- ние. УГОЛОК СПЕЦИАЛИСТА . 10 : INPUT «ЧИСЛО АРГУМЕНТОВ ФУНКЦИИ,ТОЧНОСТЬ?";^ 20 FOR J«1 ТО NtREM ПЕРЕБОР АРГУМЕНТОВ ФУНКЦИИ 30 : PRINT ”Х НАЧ.” J;:INPUT HCJ) 40 PRINT МХ КОН." J;:INPUT К (J) :Х CJ) = (Н С JHK (J j ) / 2 50 : NEXTfREM КОНЕЦ НАЧАЛЬНОГО .ДИАЛОГА ' '60 : S = 0:REM НАЧАЛО-ЧИКЛА. "Д0“ - . ' . 70. : FOR J=1 ТО N:REM ПОКООРДИНАТНЫЙ СПУСК 80 : X=X(J) :А=Н(J) ;GQSUa. 150- 90 : X('j)=X0:S=S+CX-X0) ",2., 100 : NEXT 110 :IF SQR(S)>E GOTO *60 . . 120,.:F0R J»1 TO NsPRXNT «X ОПТ" J."«" X(J>:NEXT 130 :END :REM КОНЕЦ ПРОГРАММЫ;НАЧАЛО. ПОДПРОГРАММ; 140 REM******************************************* 150 :G0SUB 210:fi0SUB 220:REM’ МЕТОД -ЗОЛОТОГО ’СЕЧЕНИЯ, 160 : IF- Y1>Y2 THEN 180:REM НАЧАЛО-АЛЬТЕРНАТИВЫ 170 : B=X2rX23X1:Y2=Y1:G0SUB'210:G0T0 190 180 : . A=X1 :X1»X2:YW2:GOSUB*2$O * 190 :IF- ABS(A-B)>E/N GOTO 160 200 :X0= (A+B)/2:REM УТОЧНЕНИЕ ОПТИМУМА ПО X’CDjRETU&N 210 :Х1=>618*A+.382*B:X(J)=X1:GOSUB 230:Y1»Y:RETURN 220 :X2=.618*B+.382*A:X(J)=X2:G0SU8 230:Y2»Y:RETURN 230 :Y=CX(1)+10*XC2>)'’.2+5*CX(3)-XC4))*2+CXC2)-2*X(3)> +10*CXC1)-XC4.))*4:RETURN :REM ФУНКЦИЯ ПАУЭЛЛА • МАЛЕНЬКИЕ РЕЦЕНЗИИ ...С виду это обычный компьютер. Но на его дисплее — цветомузыкальная мелодия. Такова компьютерная установка «Электронный художник», созданная в Казани, в студенче- ском конструкторском бюро «Прометей», Фотография установки встречается в самом конце книги Б. М. Галеева, С. М. Зорина, Р. Ф. Сайфуллина «Светомузы- кальные инструменты» (Москва: Радио и связь, 1988). На- чинается книжка с глав, где излагается история светому- зыки, проводится философское осмысление этого искусст- ва. А затем— техника светомузыки: простейшие механи- ческие проекторы, радиосхемы, электронные устройства и, наконец, возможности применения компьютерной техни- ки. И те, кто мечтает приложить свое увлечение компью- терами к задачам большим и оригинальным, могут взять в качестве путеводителя книгу Булата Галеева и его коллег. При своем небольшом объеме она насыщена информаци- ей, отлично иллюстрирована. Бейсик-программа (В. Сойкин, г. Смоленск), при- веденная здесь, предназна- чена для поиска минимума многомерной функции в за- данной области (см. запрос на строках 20—50) методом покоординатного спуска. Задача при этом сводится к серии одномерных оптими- заций с помощью подпро- граммы (см. строки 150— 200), реализующей метод золотого сечения. В дан- ном случае минимум ищет- ся у функции Пауэлла (см. подпрограмму третьего уровня на строке 230), ко- торую часто используют для тестирования программ оптимизации. Двоеточия за номерами строк позволяют «перехит- рить» Бейсик-машину и вы- делить структуру алгоритма решения задачи «паскалев- ским» манером — отступа- ми от левого края листин- га. Тем, кто интересуется проблемой оптимизации с помощью Бейсик-про- грамм, рекомендуем лите- ратуру: В. П. Дьяконов. Справоч- ник по алгоритмам и про- граммам на языке Бейсик для персональных ЭВМ.— М.: Наука, 1987 г. Б. Банди. Методы оптими- зации. Вводный курс: Пер. с англ.— М.: Радио и связь, 1988 г.
м и н но с Многим читателям знаком ХФОКАЛ, разработанный С. Зильберштейном из Ки- рова. МИРАЖ пока что не так известен, хотя обладает несомненными достоинст- вами. Это мини-операцион- ная система низкого уров- ня: экранный ассемблер/ди- зассемблер, средства отлад- ки и средства работы с файлами. В основном вари- анте система МИРАЖ рабо- тает в адресах 66 000— 77 777 (то есть в 8 нижних строках экрана), оставляя свободным ОЗУ программ, что как нельзя лучше отве- чает ее названию. Перечислим файловые функции системы: загрузка файла с магнитной ленты, запись файла на магнитную ленту, загрузка и автомати- ческий запуск программы, пуск программы, находя- щейся по заданному адре- су, остановка магнитной лен- ты за заданным файлом, вывод на экран справки о файлах. Среди отладочных функ- ций МИРАЖА отметим сле- дующие: пошаговый восьме- рично-символьный дамп па- «МИРАЖ» мяти по словам или по бай- там, дамп регистров, поша- говый просмотр и измене- ние памяти по словам или по байтам, пошаговый про- смотр и изменение регист- ров, пословное заполнение области памяти заданным кодом, побайтное переме- щение области памяти так, что старая и новая области могут пересекаться, послов- СИСТЕМА КОФОК Кодово-фокальная систе- ма разработана москвичом Л. Радченко для создания программ, имеющих как ко- довые, так и фокальные участки. Kaft известно, имен- но такие программы можно создавать гораздо быстрее, чем программы, написанные целиком в машинных кодах, а работают они намного эф- фективнее тех, что написаны полностью на фокале. Сис- тема позволяет запускать фокальную часть програм- мы, кодовую часть прог- раммы, запускать Фокал, за- пускать Отладчик БК, пере- ное сравнение областей и вывод на экран расхожде- ний, пошаговая трассиров- ка от заданного адреса, по- иск заданного слова по ма- ске, подсчет и вывод на эк- ран контрольной суммы, поиск относительных ссы- лок на заданный адрес. К явным достоинствам МИРАЖА нужно отнести то, что текст программы нигде не хранится, программа ас- семблируется по мере вво- да и появляется на экране путем дизассемблирования. ходить из фокальной части в кодовую и обратно, обра- щаться из кодовой части программы к фокальным подпрограммам, обеспечи- вать автозапуск из пусково- го монитора программ, соз- данных на Кофоке. Система КОФОК занима- ет совсем немного памяти— область адресов от 2000 до 2530. Еще одно достоинство системы — возможность ис- пользовать в программах практически все програм- мное обеспечение, зало- женное в ПЗУ компьютера БК-0010. ОБМЕН ОПЫТОМ Чтобы адаптировать игру «Видеоспорт» (П. Коноплев, г. Москва) к БК-0010.01, нужно загрузить ее и заменить коды по двум адресам: по адресу 1464 надо поставить код клавиши, которую вы хотите использовать для движения вверху, например, 32, по ад- ресу 1512 — код для движения вниз, напри- мер, 33. Вот пример ввода: 1464А-32, (ВВОД). Чтобы игра «КЛАД» останавливалась на клавише СТОП, нужно по адресу 4116 за- менить 12737 на 240, по адресу 4120 заме- нить 1000 на 240 и 4 записанную по адресу 4122, заменить также на 240. Управление че- ловечком также можно переделать по сво- ему вкусу, вот адреса: 12342 код ВПРАВО, 123444 — ВЛЕВО, 12346 —ВВЕРХ, 12350 — ВНИЗ, 12352 — стрельба НАПРАВО, 12354 — стрельба НАЛЕВО, 1362-—СМЕНА лабиринтов. А. ПИЛ ИН, А. КАЗАН (г. Ленинград). Есть много способов улучшить работу БК с магнитофоном. Один из них — включить между линейным выходом магнитофона и входом БК простейший фильтр. Указанные на схеме номиналы — лишь один из вариан- тов, более точно их можно подобрать с по- мощью программы ТЕСТ. Д. АНТОНОВ (г. Томск). Идея мультфильма на экране («Наука и жизнь» № 10, 1987 г.) мне понравилась, только вертолет был слишком маленьким. Свой вертолет я решил нарисовать на Бей- сике. Программа несложная, но, эксперимен- тируя с ней, можно получать разнообразные эффекты. В. ЧУПРОВ (г. Печора). К МАГН. 360 0,03 К БК 10 CLS 20FOR Y=< ТоГ 30WMI1A ГФ* 40 FOX Х=1 то 2Г 5© DRAW* ВМ +10,0; RI© F10 БГбГлГ3 L15* д/бЗ НГиГ NVS'NLS’WDS'CIRS F5R26 Е? R5“V2 НК2ГНЯ S' NG?NFS’ D2R5’F1O©5g£NF 6 60 NEXT X 7® NEXTY
ВРЕМЯ СЧЕТА НЕ ОГРАНИЧЕНО Как часто случаются ситуации, когда для- щийся несколько часов подряд расчет На микрокалькуляторе по программе приходит- ся прерывать из-за окончания рабочего дня или поступления более срочного задания! Тут пользователям микрокалькуляторов бу- дет полезен опыт работы с большими ЭВМ. При необходимости снять «длинную» Про- грамму до завершения счета оператор ЭВМ, желая сохранить результат и продол- жить счет в другое время, переписывает на магнитную ленту или на ди£к содержимое всех ячеек оперативной памяти и записы- вает показания управляющих кодов на пуль- те управления машины. А чем хуже про- граммируемый калькулятор? У него, конеч- но, нет накопителей на магнитных дисках или на ленте, но ведь и память у него го- раздо меньше, значения из всех регистров можно переписать на бумагу вручную всего за 2—3 минуты.. Итак, если Необходимо Прервать счет, не торопитесь выключать микрокалькулятор. Нажмите клавишу С/П, затем ШАГ НАЗАД FFIPr. Правая пара цйфр, появившаяся на индикаторе,— это адрес первой невыпол- ненной команды, назовем его адресом пре- рывания и обозначим АП. Затем возвратим калькулятор в автоматический режим кла- вишами FABT и проследим по тексту прер- ванной программы, удовлетворяет ли АП двум условиям: 1) АП не принадлежит ни одной из под- программ, если таковые имеются в про- грамме; 2) первая по порядку выполнения вычис- лительная, т. е. изменяющая содержимое регистра XI, команда, начиная с АП, испол- няется до обращения к команде. FO—то есть команде вызова содержимого регист- ра XI в регистр X. В случае, если не выполнено хотя бы од- но из этих условий, пошаговым выполнени- ем программы (нажатием клавиши ПП) вы- ходим из подпрограммы или идем до вы- полнения команды FO. После такой коррек- тировки АП необходимо узнать его новое значение — его покажет правая пара чисел на индикаторе после нажатия клавиш РПРГ. Далее, восстановив автоматический режим FABT, перепишем содержимое регистров стека (X FO Y FO Z FO Т) и адресуемых ре- гйстров О—Д. Теперь можно спокойно вы- ключать калькулятор или вводить новое за- дание. Для продолжения счета с места прерыва- ния необходимо ввести, как обычно, прер- вайную программу, восстановить содержи- мое сначала адресуемых регистров, потом стека (TfZfYfX), установить значение АП командой БП АП и запустить программу клавишей С/П. Пользуясь этим приемом, мдЖно продол- жать счет неограниченно долго. С. КЛИМЕНКО (г. Челябинск). ПОПРАВКА В программе «Ребенок на весах» («Наука и жизнь», № 12, 1988 г., стр. 87) была Пропущена команда 48.Х. ЭКОНОМЬТЕ ВРЕМЯ И... ДЕНЬГИ Тот, кто готовил рукописи для публика- ций, прекрасно знает, что большая доля времени да и будущего гонорара уходит на машинисток. Рукопись или ее часть при- ходится заново перепечатывать по несколь- ку раз — после отзывов рецензента, после работы редактора, после очередного твор- ческого взрыва, когда приходится переде- лывать уже сделанное. И после выхода ру- кописи в свет ее опять приходится перепе- чатывать, если планируется переиздание. Как часто, глядя на чистовой вариант, в ко- тором аккуратно исправлены ошибки и ОЧЕПЯТКИ машинистки, очень хочется пе- реставить или заменить слова, вставить новую фразу или убрать лишнее! Но поезд уже ушел — на очередную перепечатку нет ни времени, ни денег... Кооператив ПРИНТ при Московском энергетическом институте предлагает своим клиентам на практике освоить современ- ные компьютерные методы обработки текстов. Алгоритм услуги ПРИНТА: 1. Автор сдает рукопись (от руки) и за- бывает о ней думать. 2. В обусловленное время он подсажи- вается к компьютеру и редактирует на экране дисплея введенный в память маши- ны текст. Эту работу он может проделы- вать неоднократно вместе с рецензентом, редактором, корректором, научным ру- ководителем (в случае диссертации) и т. д. 3. Готовый текст выдается в виде твер- дой копии на бумаге и хранится на магнит- ном диске до нового использования. Текст может содержать русские и ла- тинские буквы, заглавные и прописные, а также рисунки. За справками обращаться по адресу: 105835, ГСП, Москва, Е-250, ул. Краснока- зарменная, 14, кооператив ПРИНТ при из- дательстве МЭИ.