Языки программирования: Мега-Бейсик, Бета-Бейсик, Бета-Бейсик, Лазер-Бейсик, ZX-Форт, Паскаль HP4TM 1993 г.

PASCAL НР4Т - приложение 4. Примеры программ. Указания 1. Указания по работе с ПАСКАЛЕМ НР4Т на компьютерах ZX-Spectrum. Указания 2. Указания по работе с ПАСКАЛЕМ HP4T(vl.6M) на компьютерах ZX-Spectrum. Дополнение 1. Звук и графика в ПАСКАЛЕ 4Т на "Спектруме". Дополнение 2. "Черепашья" графика в ПАСКАЛЕ на "Спектруме".


ПРИЛОЖЕНИЕ 4.

ПРИМЕРЫ ПРОГРАММ.

Эта программа иллюстрирует действие TIN и TOUT. Программа
конструирует очень простой телефонный справочник на ленте, а затем
считывает его назад.

PROGRAM ТАРЕ;

CONST

Size=10;

TYPE

Entry = RECORD

Name: ARRAY[1..10] OF CHAR;
Number: ARRAY [1..10] OF CHAR;
END;

VAR

Directory: ARRAY[1..Size] OF Entry;
I: INTEGER;
BEGIN

FOR I:=1 TO Size DO
BEGIN

WRITE('Name please');
READLN;
READ(Name);
WRITELN;

WRITE('Number please');
READLN;
READ(Number);
WRITELN
END
END;

Чтобы выгрузить справочник на ленту, используйте:
TOUT('Director',ADDR(Directory),SIZE(Directory))
Чтобы считать массив назад:
TIN ('Director',ADDR(Directory))

ПРОГРАММА 2.

10{Программа служит для получения листинга в обратном порядке,}
20{показывает использование указателей, MARK,RELEASE}
30

4 0 PROGRAM Reverseline;
50

60 TYPE elem=RECORD

70 next:~elem;

80 ch: CHAR

90 END

100 link=~elem;
110

120 VAR prev,cur,heap:link;
130

140 BEGIN

150 REPEAT

160 MARK(heap);

170 prev:NIL;

180 WHILE NOT EOLN DO

190 BEGIN

200 NEW(cur)

210 READ(cur~.ch);

230 cur".next:=prev;

240 prev:=cur

250 END;

260

300 cur:=prev;

310 WHILE curoNIL DO

320 BEGIN

330 WRIТЕ(cur ~.ch);

340 cur:=сигЛ.next

350 END;

360 WRITELN;

3 70 RELEASE(heap);

3 80 READLN

390 UNTIL FALSE
400 END.

ПРОГРАММА 3.

10 {Эта программа показывает применение рекурсии}
20

30 PROGRAM FACTOR;
40

50 {Эта программа рассчитывает факториал числа, вводимого с}
60 {клавиатуры. 1) методом рекурсии. 2) методом итераций.}

70

80 ТУРЕ

90 POSINT = 0..MAXINT;
100

110 VAR

120 METHOD : CHAR;
130 NUMBER : POSINT;
140

150 {Рекурсивный алгоритм.}

160

170 FUNCTION RFAC(N:POSINT) : INTEGER;
180

190 VAR F: POSINT;

200

210 BEGIN

220 IF N>1 THEN F:=N*RFAC(N-1)
230 ELSE F:=1;

240 RFAC:=F
250 END;

260

270 {Итеративное решение}
280

290 FUNCTION IFAC (N: POSINT) '.INTEGER;

300

310 VAR I, F: POZINT;
320 BEGIN
330 F:=1 ;

3 40 FOR I:=2 TO N DO F:=F*I;
350 IFAC:=F
360 END;

370

380 BEGIN

3 90 REPEAT

400 WRITE ('Дайте метод (I или R) и число ');

410 READLN;

420 READ(METHOD,NUMBER);

4 30 IF METHOD='R'

440 THEN WRITELN(NUMBER,'!=',RFAC(NUMBER))

450 ELSE WRITELN(NUMBER,'! = ',IFAC(NUMDER))

460 UNTIL NUMBER=0
470 END.

ПРОГРАММА 4.

10 {Эта программа покажет Вам как модифицировать переменные}
20 {ПАСКАЛя с помощью машинного кода. Демонстрируются функции
30 {PEEK, POKE, ADDR, INLINE.}
40

50 PROGRAM divmult2;

60

70 VAR r:REAL;
80

90 FUNCTION divby2(x:REAL):REAL;
100

110 VAR i:INTEGER;

120 BEGIN

130 i:=ADDR(x)+1

140 POKE(i,PRED(PEEK(i,CHAR)));

150

160 divby2:=x

170 END;

180

190 FUNCTION multby2(x:REAL):REAL;
200

210 BEGIN

220 INLINE(#DD,#34,3);
230

240 multby2:=x
250 END;
260

270 BEGIN
280 REPEAT

290 WRITE('Введите число');

300 READ(r) ;

310

3 30 WRITELN('г,деленное на 2 будет', divby2(г):7:2);
340 WRITELN('г,умноженное на 2 будет', multby2(г):7:2)
350 UNTIL г=0
360 END.

УКАЗАНИЯ ПО РАБОТЕ С ПАСКАЛЕМ НР4Т
НА КОМПЬЮТЕРАХ ZX SPECTRUM.

Дайте команду на загрузку как обычно. Загрузится загрузчик HP4S
и далее автоматически загрузится машинный код HP4S CODE. После
успешной загрузки появится сообщение 'TOP OF RAM?'. Далее
продолжайте так, как описано в разделе 1.1.

ПРИВЯЗКА К ZX SPECTRUM.

ZX SPECTRUM - несколько необычный компьютер и это оказывает
влияние на НР4Т. Различные управляющие коды, которые мы обсуждали
выше выполняются на ZX SPECTRUM так:

RETURN - клавиша ENTER.

СС - клавиши CAPS SHIFT и 1.

СН - DELETE - CAPS SHIFT И О.

CI - клавиши CAPS SHIFT и 8.

CP - CHR(16) в операторах WRITE или WRITELN.

СХ - клавиши CAPS SHIFT и 5.

CS - CAPS SHIFT + SPACE.

ПАСКАЛЬ не поддерживает ввод ключевых слов одним нажатием
клавиш. Ввод осуществляется полным набором слов. При нажатии SYMBOL
SHIFT и какой-либо клавиши, за исключением 1, на экране появляется
не связанное с этой клавишей ключевое слово, а символ. Т.е. SYMBOL
SHIFT Т дает •>', a SYMBOL SHIFT G дает }. Вы не можете
использовать одноклавишные символы '<>", '<=', *>=' - их надо
набирать в виде комбинации символов '<", * > * , * = * .

Редактор вызывается в режиме заглавных букв, но шрифт может
быть переключен обычным порядком через CAPS SHIFT и 2.

Вы можете управлять временным заданием атрибутов для изменения
их в отдельных позициях печати экрана. Это делается с помощью
стандартных управляющих кодов (например, WRITE (CHR(17), CHR(4))
установит цвет фона зеленым), но Вы не можете менять постоянные
атрибуты. Если при использовании этих управляющих кодов будет подана
неверная последовательность, произойдет прерывание работы с
сообщением "SYSTEM CALL ERROR". При выгрузке текста или объектного
кода на ленту сообщение START ТАРЕ, THEN PRESS ANY KEY появляется
дважды, и Вы должны выполнять его всякий раз.

Вам нет необходимости выгружать загрузчик, поскольку
автозагрузчик всегда выгружается вместе с объектным кодом и если Вы
выгрузили его вместе с пусковыми процедурами, то, чтобы загрузить и
запустить программу, дайте просто LOAD"" из БЕЙСИКа. После того, как
объектный код отработает, Вы можете запустить его еще раз командой
БЕЙСИКа GO ТО 7.

Если Вы воспользовались командой 'В' для выхода в БЕЙСИК, то
при условии, что Вы не меняли БЕЙСИК-программу, вы можете вернуться
в НР4Т двумя путями. Либо через GO ТО 9 ("теплый" старт) с
сохранением ПАСКАЛЬ-программы, либо через GO ТО 12 ("холодный"
старт) с инициализацией ПАСКАЛя и с очисткой существовавшего
ПАСКАЛЬ-текста.

ZX-принтер поддерживается посредством опции компилятора 'Р'
(см. раздел 4.2), а также использованием кода CHR(16) в операторах
WRITE и WRITELN. Обратите внимание на то, что в результате этого Вы
уже не можете использовать CHR(16) в этих операторах для задания
цвета печати. Вместо него используйте CHR(15).

Исполнение рабочей копии НР4Т.

Паскаль состоит из двух частей - БЕЙСИК-интерфейса и

компилятора, пусковых процедур и т.п. На исходной кассете сначала
идет БЕЙСИК-интерфейс, а за ним компилятор, пусковые процедуры и
редактор. Обычно БЕЙСИК-программа автоматически загружает весь
остальной машинный код и автостартует компилятор. Это надо
предотвратить. Вставьте исходную кассету в Ваш магнитофон и дайте
команду LOAD"". Нажмите PLAY на магнитофоне. Когда компьютер найдет
заголовок БЕЙСИК-программы, он изобразит на экране Program: НР4Т и
затем загрузит интерфейсную программу. После того, как она будет
загружена, компьютер начнет искать кодовую часть - компилятор.
Нажмите BREAK, прервав поиск, остановите магнитофон, но не
перематывайте ленту.

Загрузите машинный код компилятора, пусковых процедур и
редактора по команде LOAD""CODE. Не забывайте, что здесь LOAD и CODE
- ключевые слова, т.е. набираются не по буквам.

Вставьте в магнитофон чистую кассету. Выгрузите БЕЙСИКовскую
часть командой SAVE "HP4S" LINE 1. После этого выгрузите блок в
машинных кодах по команде "SAVE "HP4S"C0DE 24589,21105. Здесь
выгрузится компилятор, редактор и пусковые процедуры.

УКАЗАНИЯ ПО РАБОТЕ С ПАСКАЛЕМ НР4Т (ВЕРСИЯ 1.6М)
НА КОМПЬЮТЕРАХ ZX SPECTRUM.

Дайте команду на загрузку как обычно. Загрузится загрузчик и
далее автоматически загрузится машинный код. После успешной загрузки
НР4ТМ появится сообщение 'TOP OF RAM?'. Далее продолжайте так, как
описано в разделе 1.1.

ПРИВЯЗКА К ZX SPECTRUM.

ZX SPECTRUM - несколько необычный компьютер и это оказывает
влияние на НР4Т. Различные управляющие коды,которые мы обсуждали
выше достигаются на ZX SPECTRUM так:

RETURN - клавиша ENTER.

СС - клавиши CAPS SHIFT и 1.

CH - DELETE - CAPS SHIFT и 0.

CI - клавиши CAPS SHIFT и 8.

CP - клавиши CAPS SHIFT и 3.

CX - клавиши CAPS SHIFT и 5.

CS - CAPS SHIFT + SPACE.

ПАСКАЛЬ не поддерживает ввод ключевых слов одним нажатием
клавиш. Ввод осуществляется полным набором слов. При нажатии SYMBOL
SHIFT и какой-либо клавиши, за исключением 1, на экране появляется
не связанное с этой клавишей ключевое слово, а символ. Т.е. SYMBOL
SHIFT Т дает ■>', a SYMBOL SHIFT G дает }. Вы не можете
использовать одноклавишные символы '<>', 1<=', '>=' их надо

набирать в виде комбинаций символов * < * , * > * , '='.

Редактор вызывается в режиме заглавных букв, но шрифт может
быть переключен обычным порядком через CAPS SHIFT и 2.

Вы можете управлять временным заданием атрибутов для изменения
их в отдельных позициях печати экрана. Это' делается с помощью
стандартных управляющих кодов (например, WRITE (CHR(17), CHR(4))
установит цвет фона зеленым), но Вы не можете менять постоянные
атрибуты. Если при использовании этих управляющих кодов будет подана
неверная последовательность, произойдет прерывание работы с
сообщением "SYSTEM CALL ERROR". Обратите внимание на то, что НР4Т
интерпретирует некоторые управляющие коды, например, CHR(8)
воспринимается как DELETE, поэтому эти коды не могут обрабатываться
ПЗУ Спектрума - используйте для этого процедуру SPOUT (см. далее),

если Вы хотите, чтобы какие-то коды CHR не интерпретировались НР4Т.

При выгрузке текста или объектного кода на ленту Вы должны
убедиться, что магнитофон уже включен на запись.

Если Вы использовали команду 'Т1 для выгрузки на ленту
объектного кода вместе с пусковыми процедурами, то загружается эта
программа просто LOAD""CODE, а запускается из БЕЙСИКа с помощью
RANDOMIZE UST 24608.

Войти в редактор ПАСКАЛЯ из БЕЙСИКа Вы можете одним из двух
способов.

1. "ХОЛОДНЫЙ старт" - RANDOMIZE USR 24598 - при этом ПАСКАЛЬ
реинициализируется, т.е. существующий ПАСКАЛЬ-текст уничтожается.

2. "Теплый старт" - RANDOMIZE USR 24603. При этом программа на
ПАСКАЛе сохраняется.

ZX-принтер поддерживается посредством опции компилятора 'Р'
(см. раздел 4.2), а также использованием кода CHR(16) в операторах
WRITE и WRITELN. Обратите внимание на то, что в результате этого Вы
уже не можете использовать CHR(16) в этих операторах для задания
цвета печати. Вместо него используйте CHR(15).

Исполнение рабочей копии ПАСКАЛя выполняется следующим образом.

1. Загрузите НР4ТМ с ленты и ответьте на запросы 'TOP OF RAM?'

и пр.

2. Вернитесь в БЕЙСИК командой 'В'.

3. Выгрузите ПАСКАЛЬ на ленту командой SAVE "HP4T15M"CODE
24598,19558.

4. Теперь Вы можете снова загрузить компилятор LOAD""CODE, но
после такой загрузки Вам надо давать RANDOMIZE USR 24598 для
"холодного" старта или RANDOMIZE USR 24603 для "теплого" старта.

ДОПОЛНЕНИЕ 1.

ЗВУК И ГРАФИКА В ПАСКАЛЕ 4Т НА "СПЕКТРУМЕ".

Этот документ освещает подробности того, как использовать
процедуры ПАСКАЛя 4Т для управления звуком и графикой на
ZX-СПЕКТРУМе.

ЗВУК.

Процедура BEEPER использует машинный код для определения своих
параметров и передает их в подпрограмму ВЕЕР, находящуюся в ПЗУ
Спектрума.

PROCEDURE BEEPER (A, B:INTEGER);
BEGIN

INLINE (#DD, #6E, 2, #DD, #66,3, {LD L,(IX+2): LD H,(IX+3)}
#DD, #5E, 4, #DD, #56,5, {LD E,(IX+4): LD D,(IX+4)}
#CD, #85, 3, #F3) {CALL #385 : Dl}

END;

Процедура BEEP получает через свои параметры частоту
(FREQUENCY) и продолжительность сигнала (LENGTH). Если частота равна
0, то это просто звуковая пауза заданной длины. Если частота нулю не
равна, то ее величина, также как и продолжительность конвертируются
в значения, пригодные для использования процедурой ВЕЕР ПЗУ Сперк-
тума, а затем передаются в процедуру BEEPER.

PROCEDURE ВЕЕР (Frequency: INTEGER; Length: REAL);

VAR I: INTEGER;

BEGIN

IF Frequency=0 THEN FOR I:=l TO ENTIER(12000*Length) DO
ELSE BEEPER(ENTIER(Frequency*Length),ENTIER(437500/

Frequency - 3 0.125))

FOR I:=1 TO 100 DO (краткая пауза между нотами)
END;

Пример использования процедуры ВЕЕР.

ВЕЕР (262,0.5);

ВЕЕР (0,1);

Сначала звучит "до" первой октавы в течение 0,5 сек., затем в
течение 1 сек. тишина.

ГРАФИКА.

Здесь приведены три графический процедуры. Первая ставит точку
в заданных координатах (X,Y), а вторая и третья служат для
изображения линий между текущей позицией, в которой ставилась точка
и новой позицией, заданной относительно первой. После этого
последняя позиция становится текущей.

Процедуры PLOT и LINE работают с логической переменной ON,
которая если имеет значение TRUE, то вызывает печать точки в
заданной позиции, независимо от текущего состояния пиксела в этой
позиции, а если имеет значение FALSE, то вызывает переключение
пиксела в позиции печати. Т.е. если он был включен, то выключается и
наоборот. Этот эффект аналогичен команде БЕЙСИКа OVER.

Процедура PLOT аналогична команде БЕЙСИКа PLOT.
PROCEDURE РLOT (ON: BOOLEAN;X,Y:INTEGER);

BEGIN

IF ON THEN WRITE (CHR(21), CHR(0))
ELSE WRITE (CHR(21), CHR(l));

INLINE (#FD,#21,#3A,#5C, { LD IY,#5C3A}

#DD,#46, 2,#DD,#4E,4 { LDB,(IX+2): LDC,(IX+4)}
#CD,#E5,#22); {CALL #22E5;}

END;

Процедура LINE1 вызывается процедурой LINE и служит для
передачи аргументов подпрограмме DRAW, находящейся в ПЗУ Спектрума.
PROCEDURE LINE1 (X,Y,SX,SY:INTEGER);

BEGIN

INLINE (#FD,#21,#ЗА,#5C, { LD IY,#5C3A}

#DD,#56, 2,#DD,#5E, 4, { LD D,(IX+2): LD E,(IX+4)}
#DD,#46, 6,#DD,#4E, 8, { LDB,(IX+6): LDC,(IX+8)}
#CD,#8A,#24) { CALL #248A}

END;

Процедура LINE рисует линию о текущей позиции (х,у) до позиции
(Х+х,Y+y).

PROCEDURE LINE (ON: BOOLEAN; X,Y:INTEGER);

VAR

SGNX, SSNY: INTEGER;

BEGIN

IF ON THEN WRITE (CHR(2l), CHR(0))
ELSE WRITE (CHR(21), CHR(l));

IF X<0 THEN SGNX:=-1 ELSE SGNX:=1;

IF Y<0 THEN SGNY:=-1 ELSE SGNY:=1;

LINE1 (ABS(X), ABS(Y), SGNX, SGNY)

END;

Пример использования процедур PLOT и LINE.

PLOT (ON, 50, 50);

LINE (ON,100,-50);

Здесь рисуется линия от координаты (50,50) до координаты
(150,0).

ВЫВОД НА ПЕЧАТЬ ЧЕРЕЗ ПЗУ.

Иногда бывают случаи, когда бывает полезно производить вывод на
печать через процедуру ПЗУ rst 10, а не по команде WRITE(LN).
Например, при использовании управляющего кода PRINT AT за ним должны
следовать две восьмибайтовых величины, задающих координаты в которых
должна производиться печать. В то же время, при применении процедуры
WRITE они не передаются в ПЗУ и поэтому позиция печати не будет
должным образом установлена.

Преодолеть эту проблему можно путем применения следующей
процедуры.

PROCEDURE SPOUT (С:CHAR);

BEGIN

INLINE (#FD,#21 , #ЗА, #5C, { LD IY,#5C3A}

#DD,#7E, 2, { LD A,(IX+2)}

#7D) { RST #10}

Пример использования процедуры SPOUT:
SPOUT(CHR(22)); SPOUT(CHR(8)); SPOUT (CHR(13)0; -
устанавливается позиция для печати в строке 8, колонке 13.

Мы надеемся, что Вы найдете эти процедуры полезными, и они
помогут Вам более широко использовать ПАСКАЛЬ НР4Т.

ДОПОЛНЕНИЕ 2.

"ЧЕРЕПАШЬЯ" ГРАФИКА В ПАСКАЛЕ НА ZX-СПЕКТРУМЕ.

Начиная с 15 августа 1983 г. ПАСКАЛЬ поступает с дополнительным
графическим пакетом. Пакет написан на ПАСКАЛе и загружается из
редактора командой * G' TURTLE. Она загружает программный сегмент и
присоединяет его к уже существующей программе. Обратите внимание на
то, что для нормальной работы "Черепашьей Графики" файлу должно
предшествовать объявление PROGRAM, а также объявление VAR, TYPE,
CONST, LABEL. Эти объявления могут быть произвольными, но никаких
объявлений процедур и функций до вставки графического пакета быть не
должно.

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

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

ГЛОБАЛЬНЫЕ ПЕРЕМЕННЫЕ.

HEADING.

Эта переменная содержит угловое значение того направления, в
которое смотрит "черепашка". Она может принимать любое значение типа
REAL и может быть инициализирована в Ос помощью процедуры TURTLE
(см. ниже). Значение 0 соответствует направлению движения НА ВОСТОК.
По мере возрастания величины, черепашка поворачивается против
часовой стрелки.

XCOR, YCOR.

Это текущие координаты. Они имеют тип REAL. Экран компьютера
имеет размер 256*176 пикселов и "черепашка" может находиться в любой
точке из этой области. Если будет предпринята попытка выйти за
пределы данной области, появится сообщение "OUT OF LIMITS".

Программа при этом будет остановлена сообщением .HALT.' Первоначально
эти переменные не определены. Процедура TURTLE инициализирует их и
выставляет 127 и 87, соответственно, т.е. устанавливает исходную
позицию в центре экрана.

PENSTATUS.

Это переменная типа INTEGER. В ней содержится состояние пера. О
- перо опущено, 1 - перо поднято.

ПРОЦЕДУРЫ.

Процедуры PLOT, LINE, SPOUT, рассмотренные в ДОПОЛНЕНИИ 1,
приняты в этом пакете в качестве стандартных. Единственным
существенным их отличием является то, что процедура LINE вызывает
процедуру CHECK, которая проверяет не вышли ли координаты за пределы
границ экрана. Прочие процедуры:

INK(C:INTEGER).

Принимает целые значения от 0 до 8 включительно и устанавливает
цвет, оставляемый пером.

PAPER (С:INTEGER).

Устанавливает цвет фона экрана. Имеет целые значения от О до 8
включительно.

COPY

Выгружает состояние экрана на ZX-принтер.

PENDOWN (С:INTEGER).

Устанавливает состояние, в котором перо оставляет след цвета С
(от О до 8 включительно).Эта процедура присваивает переменной
PENCTATUS 0.

PENUP.

Изменяет состояние пера. Перо поднимается. Присваивает 1
переменной PENSTATUS.

SETHD (А:REAL).

Присваивает действительное число переменной HEADING,
устанавливая тем самым направление перемещения. 0 -направление на
ВОСТОК. 90 - СЕВЕР. 180 - ЗАПАД. 2 70 - ЮГ.

SETXY (X , Y :REAL)♦

Устанавливает абсолютное значение положения в пределах
разрешенной экранной области. Проверка на выход за пределы не
выполняется. Это делает процедура LINE.

FWD (L:REAL).

Перемещение вперед на L единиц. Одна единица - один пиксел.

BACK (L:REAL).

Перемещение назад на L единиц.

TURN (А:REAL).

Изменяет направление движения на А градусов. Положительное
направление отсчета - против часовой стрелки.

VECTOR (А, L :REAL).

Перемещает "черепашку" на L шагов в направлении А. После

перемещения направление А остается в качестве текущего.
RIGHT (A:REAL).

Это альтернатива TURN. Изменяет направление на А градусов в
направлении по часовой стрелке.

LEFT (A:REAL).

Аналогична TURN и встроена только для сочетания с RIGHT.
ARCR (R:REAL, А:INTEGER).

Движение по дуге окружности радиуса R на угол А. Положительный
отсчет против часовой стрелки.

TURTLE.

Устанавливает исходное положение в центре экрана, направление -
на ВОСТОК. Фон голубой, цвет оставляемый пером - желтый. Изначально
положение не определено, поэтому эта процедура как правило первая в
программе.

ПРИМЕРЫ ПРОГРАММ.

Мы полагаем, что Вы уже загрузили ПАСКАЛЬ и выполнили
G,,TURTLE. Графический пакет начинается в строке 10 и заканчивается
в строке 1350.

1 PROGRAM CIRCLES: 1 PROGRAM FLOWER:

2 VAR I:INTEGER; 2 VAR

1360 BEGIN 1360 PROCEDURE PETAL (S:REAL);

1370 TURTLE; 1370 BEGIN

1380 FORI:=1 TO 9 DO 1380 ARCR (S,60);

1390 BEGIN 1390 LEFT(120);

1400 ARCR(0.5,360); 1400 ARCR(S,60);

1410 RIGHT(40) 1410 LEFT(120)

1420 END 1420 END;

14 30 END. 14 30 PROCEDURE FLOWER (S:REAL);

1440 VAR I:INTEGER;
1450 BEGIN

1 PROGRAM SPIRALS: 1460 FOR I:=l TO 6 DO

2 VAR 1470 BEGIN

1360 PROCEDURE SPIRALS(L,A:REAL); 1480 PETAL(S);

1370 BEGIN 1490 RIGHT(60)

1380 FWD(L); 1500 END

1390 RIGHT(A); 1510 END;

1400 SPIRALS(L+l,A) 1520 BEGIN TURTLE:

1410 END; 1530 SETXY(127,60);

1420 BEGIN 1540 LEFT(90); FWD(10);

1430 TURTLE; RIGHT(60); PETAL(0.2);

1440 SPIRALS(9,95) 1550 LEFT(60); PETAL(0.2);

1450 END. SETHD(90); FWD(40);

1560 FLOWER(0.4)
1570 END.

3-я типография ВО «Наука»
107143, Москва, Открытое шоссе. 28
Зак. 252 Тираж 10 000 экз.




СОДЕРЖАНИЕ:


  Оставте Ваш отзыв:

  НИК/ИМЯ
  ПОЧТА (шифруется)
  КОД



Темы: Игры, Программное обеспечение, Пресса, Аппаратное обеспечение, Сеть, Демосцена, Люди, Программирование

Похожие статьи:
.credits - Проект ZX-Chart выпускается theCHARTteam.
WANTED - Розыск программ...
Вступление - От авторов.
Necronomicon - ИЗГНАНИЕ "БАРРА ЭДДИННАЗУ" ПРОТИВ ДУХОВ!
Muxa - Самые банальные идеи порождают легионы последователей.

В этот день...   26 апреля