Программирование на Бейсик 48/128 для ZX-Spectrum 1993 г.

SPECTRUM-бейсик - символьные массивы.


Символьные массивы

Имена символьных массивов состоят из буквы и знака $. При
определении массива в скобках после имени, кроме числовых
значений, задающих его размерность, указывается число, опреде-
ляющее длину элементов массива (количество символов в них).

Пример: 10 DIM Z$(20,10)
20 DIM С$(10,4.5)

•В строке 10 задается одномерный символьный массив из 20 эле-
ментов Z$(1)...Z$(20), каждый из которых представляет собой строку
длиной в 10 символов. В строке 20 — двумерный массив из 40
строк длиной по 5 символов.

N-мерный символьный массив можно рассматривать как (N+1)-
мерный массив с элементами длиной в один символ. Следователь-
но, можно выделить любой символ элемента массива, указав в
индексированной переменной, кроме значений индексов, еще и
номер позиции символа в строке.

Пример: 70 LET Z$(2)="QWERTYUIOP"
75 PRINT Z$(2,3)

E

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

В отличие от числовых массивов, одновременно с символьным
массивом не может существовать неиндексированная символьная
переменная с тем же именем.

Символьные массивы нулевой размерности

Можно определить символьный массив нулевой размерности, ука-
зав в скобках после имени массива только одно значение.

Пример: 10 DIM А$(15)

Заданный массив имеет один элемент А$ — строку* фиксирован-
ной длины, равной указанному в скобках значению, в данном
случае — 15 символов.

DRAW <а>, <b>[, <q>]

оператор стр. 20

строит на экране отрезок* прямой линии или дугу окружности.

Для проведения прямой линии следом за DRAW через запятую
ставятся два целочисленных значения, задающих относительное
расстояние в пикселях от начала отрезка до его конца, соответст-
венно, по горизонтали (<а>) и вертикали (<Ь>). При проведении
отрезка влево и вниз эти значения должны быть отрицательными.
За начало отрезка принимается точка, выставленная последним
выполненным графическим оператором (DRAW, PLOT, CIRCLE). По-
сле включения компьютера начальная точка построения линий
устанавливается в левый нижний угол основного экрана (0, 0).

Для проведения дуги окружности после значений, определяющих
расстояние от начальной точки построения до конечной, через
запятую указывается числовое значение <q>. Оно задает угол в
радианах, получающийся при соединении концов дуги с центром
окружности, частью которой она является. При положительном
значении <q> дуга строится против часовой стрелки, при отрица-
тельном .— по часовой.

Цвета линии соответствуют текущим постоянным значениям атри-
бутов либо задаются операторами INK, PAPER и другими, поставлен-
ными непосредственно за ключевым словом DRAW и отделенными
друг от друга и от параметров точками с запятой.

Пример: DRAW INK 2; 80, 50, -0.5

ERASE

ключевое слово в Spectrum-Бейсике не задействовано.

exp <z> __tE]X

функция стр. 15

экспонента: возводит число е= 2,7182818 в степень, заданную чис-
ловым значением <z>.
Пример: PRINT EXP 1

2.7182818

FLASH <P>_ Mss/v

оператор стр. 22

устанавливает режим мерцания при отображении символьной и
графической информации. Параметр <р> может принимать одно
из целочисленных значений:

1 - включает режим мерцания. Изображение на экране компью-
тера при включенном режиме периодически меняет цвет тона
на цвет фона и обратно;

8 — задает режим прозрачности, при котором режим мерцания
будет повторять режим, ранее установленный для данного
знакоместа, то есть при печати новых символов мерцающие
знакоместа будут оставаться мерцающими, а нормальные —
нормальными;
О - выключает мерцание и режим прозрачности.
FLASH устанавливает режим мерцания целиком для знакоместа.

В качестве самостоятельного оператора FLASH задает режим мерца-
ния для всех последующих выводов на экран (постоянный атрибут).

FLASH может также использоваться в операторах PRINT, INPUT, PLOT,
DRAW, CIRCLE, устанавливая режим мерцания графического и сим-
вольного изображения, выводимого только данным оператором
(временный атрибут).

В операторах PRINT и INPUT ключевое слово FLASH размещается в
любом месте перед данными, отделяясь от них знаками-разделите-
лями (запятая, точка с запятой, апостроф). FLASH в операторах
PLOT, DRAW, CIRCLE ставится сразу за ключевым словом и отделяет-
ся от параметров точкой с запятой.

Пример: PRINT "A"; FLASH 1; "В"; FLASH 0; "С"

FN__ [EJ ss/2

функция

возвращает значение пользовательской функции, заданной опера-
тором DEF FN. См. описание DEF FN.

FOR <i> = <a> ТО <Ь> [STEP <s>]__Г

оператор стр. 37

определяет начало и параметры цикла FOR...NEXT, позволяющего
выполнять часть программы, заключенную между операторами
FOR и NEXT, заданное число раз. Вслед за FOR ставится буква —
управляющая переменная цикла (<i>), знак равенства и два числовых
значения, разделенных ключевым словом ТО: <а> задает начальное
значение переменной цикла, <Ь> — конечное. Далее может сле-
довать ключевое слово STEP со стоящим за ним числовым значени-
ем <s>, задающим шаг приращения управляющей переменной.
Шаг может быть как целым, так и дробным, как положительным,
так и отрицательным. При отсутствии ключевого слова STEP шаг
устанавливается равным 1.

Пример: 50 FOR »=1 ТО 25 STEP 5

После конструкции FOR...ТО...STEP размещается тело цикла — фраг-
мент программы, который требуется повторить заданное число раз.
В теле цикла может использоваться переменная цикла. Тело цикла
завершается оператором NEXT со стоящей за ним переменной цик-
ла.

Пример: 100 NEXT i

Оператор NEXT увеличивает значение переменной цикла на задан-
ный шаг и сравнивает ее новое значение с конечным значением

<b>. Если переменная цикла не превысила конечное значение, то
тело цикла выполняется еще раз, в противном случае цикл завер-
шается и программа переходит к выполнению следующего за NEXT
оператора.

Возможно построение неограниченного числа вложенных циклов
FOR...NEXT.

FORMAT_

ключевое слово в Spectrum-Бейсике не задействовано.

GO SUB <n>_н

оператор стр. 45

передает управление подпрограмме. Номер строки, с которой начи-
нается подпрограмма, задается целочисленным значением <п>.
Текст подпрограммы должен заканчиваться оператором RETURN,
который возвращает управление оператору, следующему за
GO SUB.

Из подпрограммы может осуществляться вызов другой подпрограм-
мы. Количество таких вызовов (вложений) не ограничено.

Пример: 25 GO SUB 1000

30 GO SUB 1000+X

GO TO <n>_I

оператор стр. 32

передает управление строке программы. Номер строки задается
целочисленным значением <п>. В режиме непосредственного ис-
полнения GO ТО используется для запуска программы с любой
строки без обнуления переменных и очистки экрана.

IF <условие> THEN <оператор>[: <оператор>] ..._U

оператор стр. 33

передает управление последовательности операторов при выполне-
нии заданного условия. Условие ставится за IF, последовательность
операторов — после ключевого слова THEN. При невыполнении
(ложности) условия управление сразу передается на следующую
строку программы.

Условием может быть и числовое значение. При этом считается,
что истинным значением является отличное от нуля значение, а
ложным — равное нулю.

Несколько условий может быть объединено логическими операто-
рами в логическое выражение.

Пример: 50 IF Х<3 THEN PRINT "KU-KU": GO TO 250
75 IF X+Y/5 THEN PRINT X+5;
85 IF a$="AAA" AND A=25 THEN GO SUB 100

IN <addr> [e] ss/l

функция

считывает число (байт) из порта (см. [1]). Адрес порта задается
целочисленным значением <addr> (0...65535), записываемым за
ключевым словом.

Пример: 150 LET X=IN Y

INK < color >__El ss/x

оператор стр. 21

устанавливает цвет тона — цвет, в который окрашиваются выводи-
мые на экран символы, точки, линии. Вслед за INK указывается
целочисленное значение <color> в интервале от 0 до 9, которым
кодируется цвет.

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

В качестве самостоятельного оператора INK устанавливает постоян-
ный цвет тона, влияющий на все последующие выводы на экран
(постоянный атрибут).

INK может также использоваться в операторах PRINT, INPUT, PLOT,
DRAW и CIRCLE, устанавливая временный цвет тона. В этом случае
INK влияет на цвет символов и графических объектов, выводимых
только данным оператором (временный атрибут). В операторах
PRINT и INPUT ключевое слово INK размещается в любом месте блока
данных, отделяясь от них знаками-разделителями (запятая, точка с
запятой, апостроф).

Пример: PRINT "DU-DU-DU";INK 3;"KU-KU"

INK в операторах PLOT, DRAW, CIRCLE ставится сразу за ключевым
словом и отделяется от параметров точкой с запятой.

Пример: CIRCLE INK 4; 128,88,87

INKEY$ [#<с>]_(EJN

функция стр. 39

возвращает символ, соответствующий клавише, нажатой в момент
выполнения функции (прописные и строчные буквы различаются),
либо «пустую строку», если ни одна из клавиш не нажата. Аргу-
мента не требует. Используется для обнаружения факта нажатия
клавиши на клавиатуре.

С параметром #<с> функция используется при работе с потоками
и каналами (см. [1]).

Пример: 60 IF INKEY$<>"q" THEN GO TO 60: REM Останавливает

работу программы до тех пор, пока не будет нажата клави-
ша q (без CS)

INPUT_I

оператор стр. 31

вводит данные в программу: присваивает числовым или символь-
ным переменным, расположенным за ключевым словом, соответст-
венно, числовые или символьные значения, набираемые на клави-
атуре. Вводимые значения могут содержать определенные в про-
грамме переменные. Следом за INPUT в произвольном порядке
размещаются переменные любого типа и текст комментариев.
Текст комментариев составляется из символьных и числовых кон-
стант или переменных. Комментарии, содержащие переменные,
заключаются в скобки.

Элементы, следующие за оператором INPUT, отделяются друг от
друга знаками-разделителями (запятая, точка с запятой, апостроф),
действие которых аналогично их действию в операторе PRINT. В
INPUT также moiVt быть использованы ключевые слова INK, PAPER,
FLASH, BRIGHT, AT и TAB.

Пример: 10 INPUT INK 2;"WHAT IS YOUR NAME? ";N$,
("HOW OLD ARE YOU,"+N$+"? ");AGE

Комментарии и вводимые данные оператор INPUT отображает в
нижней строке служебного экрана. После заполнения строки текст
смещается на строку выше.

Встретив переменную, не входящую в текст комментария (распо-
ложенную вне скобок), компьютер выводит на экран курсор и
ожидает ввода данных. При ожидании символьных данных на
экран выводятся две кавычки. Данные набираются на клавиатуре
и отображаются на экране. Они могут редактироваться подобно
строкам бейсик-программы. После нажатия клавиши Enter на-
бранное значение присваивается переменной.

Введя оператор STOP на запрос ввода числовой константы, можно
остановить выполнение программы. Останов программы в момент
ожидания символьных данных также производится вводом STOP, но
предварительно нужно удалить первую кавычку.

Избежать появления кавычек при ожидании ввода символьных
данных можно, используя конструкцию INPUT LINE. Ключевое слово
LINE ставится перед символьной переменной. Комментарий поме-
щается между INPUT и LINE. Прерывание работы оператора
INPUT...LINE производится нажатием клавиш CS/6.

Пример: 70 INPUT "WHAT IS YOUR NAME? "; LINE N$

Используя параметр #<c> в произвольном месте списка парамет-
ров и данных оператора INPUT, можно переключать ввод и вывод
информации на другие потоки (см. [1]).

INT <z>_ [E] R

функция стр. 16

округляет числовое значение <z> до ближайшего меньшего целого
числа.

Пример: PRINT INT 45.67;" ";INT -7.66
45 -8

INVERSE <p>_ [e]SS/M

оператор стр. 22

устанавливает режим инвертированного отображения графической
и символьной информации. Следом за INVERSE ставится целочис-
ленное значение <р>, которое может равняться либо 0, либо 1.

После выполнения оператора INVERSE 1 при печати символов цвет
тона и цвет фона меняются местами. Графическая информация
при включенном режиме инверсии отображается цветом фона и
становится невидимой. Оператор INVERSE 0 устанавливает нор-
мальный режим цветопередачи.

В качестве самостоятельного оператора INVERSE устанавливает ре-
жим инвертирования для всех последующих выводов на экран.

INVERSE может также использоваться в опер.-тс^-лЛ PRINT, INPUT, PLOT,
DRAW, CIRCLE. При этом устанавливается режим инвертирования
графической и символьной информации, выводимой только дан-
ным оператором. В операторах PRINT и INPUT ключевое слово INVERSE
размещается в любом месте перед данными, отделяясь от них
знаками-разделителями (запятая, точка с запятой, апостроф).

INVERSE в операторах PLOT, DRAW, CIRCLE ставится сразу за ключе-
вым словом и отделяется от параметров точкой с запятой.

LEN <string>_[е] К

функция стр. 17

возвращает длину (число символов) символьного значения.

Пример: 120 INPUT А$; IF LEN А$>9 THEN GO ТО 120: REM «Пропуска-
ются» строки ДЛИНОЙ только до 9 символов

LET <var>=_L

оператор стр. 28

присваивает значение переменной. После LET ставится переменная,
следом за которой через знак равенства записывается присваивае-
мое ей значение.

Пример: 60 LET Х=Х+1

80 LET A$="PITERM+STR$ X
90 LET S(5f10)=LEN A$

До присвоения переменной значения (операторами LET, READ или
INPUT) она является неопределенной и не может быть использована
в программе.

LINE _ __[Ej ss/з

См. SAVE, INPUT. ~~~

LIST [<n>]___К

оператор стр. 27

отображает на экране листинг бейсик-программы, находящейся в
памяти компьютера. LIST без каких-либо значений после ключевого
слова начинает вывод листинга с начала программы. Указав после
LIST номер строки <п>, можно начать вывод листинга с требуемого
места программы. При этом указатель текущей строки устанавли-
вается на строку с номером <п>.

После заполнения экрана вывод листинга приостанавливается и
может быть продолжен после нажатия любой клавиши, кроме N,
Space, - Break. Перечисленные клавиши прерывают выдачу
листинга.

LIST #<с> _____

оператор используется при работе с потоками и каналами (см. [1]).

LLIST [<п>] [Е]У

оператор стр. 51

распечатывает на принтере листинг бейсик-программы, находящей-
ся в памяти компьютера, начиная со строки <n>. LLIST без парамет-
ров распечатывает листинг с начала программы.

LLIST #<с>

оператор используется при работе с потоками и каналами (см. [1]).
LN <2> [e]z

функция стр. 15

натуральный логарифм положительного числового значения <z>.

LOAD < string >_

оператор стр. 47

загружает в память компьютера бейсик-программу с магнитной
ленты. Имя загружаемой программы задается символьным значе-
нием <string>. LOAD с «пустым» именем загружает первую встре-
тившуюся на ленте программу. При загрузке ранее находящаяся в
памяти программа уничтожается.

Пример: LOAD "FILENAME"
LOAD N$
LOAD ""

LOAD <string> CODE [<addr>][,<c>]_л~Mi

оператор стр. 50

загружает с магнитной ленты в память компьютера блок кодов

(последовательность байтов). Имя файла, в котором был сохранен
блок на магнитной ленте, задается символьным значением < string>.

За ключевым словом CODE указываются через запятую два цело-
численных значения: <addr> — адрес размещения блока кодов в
памяти компьютера и <с> — количество загружаемых байт. При
отсутствии параметра <с> по приведенному адресу загружается
весь блок.

Без указания числовых значений оператор LOAD...CODE загружает
блок кодов по адресу, с которого он был записан на магнитную
ленту оператором SAVE...CODE.

Пример: LOAD "NAME" CODE

LOAD "PICTURE" CODE 16384, 6912
LOAD "" CODE

LOAD <string> DATA <a>[$]()__Л...Мp

оператор стр. 49

загружает с магнитной ленты в память компьютера массив. Имя

файла, содержащего массив, задается символьным значением
< sfring >. Следом за ключевым словом DATA указывается однобук-
венное имя массива <а> с пустыми скобками. Значения, считыва-
емые с ленты, загружаются в индексированные переменные этого
массива.

Пример: LOAD "NUMBER" DATA N()
LOAD "NAMES" DATA N$()

LOAD < string > SCREEN$_л...[е] ss/к

оператор стр. 49

загружает с магнитной ленты блок кодов непосредственно в экран-
ную область памяти, при этом на экране воспроизводится ранее
записанная картинка. Имя файла, в котором она была сохранена
на ленте, указывается символьным значением < string >.

Пример: LOAD "PICTURE" SCREENS

LPRINT_Юс

оператор стр. 51

распечатывает данные на печатающем устройстве.

Формат оператора зависит от типа принтера и программы, его
обслуживающей (драйвера принтера).

Пример: LPRINT "ABCDEF"

LPRINT #<о

оператор используется при работе с потоками и каналами (см. [1J).

MERGE <string>_IE] ss/т

оператор стр. 48

подгружает бейсик-программу с магнитной ленты в память компь-
ютера, не стирая уже находящейся там программы. Имя загружае-
мой программы задается символьным значением <string >. Опера-
тор MERGE с двумя пустыми кавычками подгружает первую встре-
тившуюся на ленте программу.

Оператор MERGE соединяет две программы, располагая их строки
по порядку возрастания номеров. При совпадении номеров строк
«старые» строки заменяются на «новые».

MOVE_

ключевое слово в Spectrum-Бейсике не задействовано.

NEW __а

оператор

очищает область памяти, отведенную для размещения и работы
бейсик-программы (область памяти до адреса, занесенного в сис-
темную переменную RAMTOP). Параметров не требует.

NEXT <i>_n

оператор стр. 37

ограничивает тело цикла FOR...NEXT (не используется отдельно от
ключевого слова FOR). См. FOR.

NOT ___ss/s

логический оператор, функция стр. 35

Логический оператор

реализует логическое отрицание условия, стоящего за ключевым
словом: истинное условие делает ложным, ложное — истинным.

Пример: 90 LET Х=2: IF NOT Х>10 THEN PRINT "YES"

YES

Функция

возвращает 0, если числовое значение, следующее за ключевым
словом, не равно нулю; 1 — если значение равно нулю.

Пример: PRINT NOT(5*5-25)

OPEN #<c>, "N"

оператор используется при работе с потоками и каналами (см. [1]).

OR___ss/u

логический оператор, функция стр. 35

Логический оператор

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

Пример: LET Х=20: IF Х=50 OR Х=20 THEN PRINT "YES"

YES

Функция

• возвращает значение, стоящее перед ключевым словом, если
ее аргумент равен 0;

• возвращает 1, если аргумент не равен 0.

Пример: PRINT 45 OR 5
1

OUT <addr> , <byte>_[E] SS/Q

оператор

записывает в порт целочисленное значение <byte> (0...255), адрес
которого задается целочисленным значением <addr> (0...65535).

Пример: OUT 254,3

OVER <р>_[Е]SS/N

оператор стр. 22

устанавливает режим наложения изображений на экране. Целочис-
ленное значение <р> может принимать значения:

1 - изображение (символьное или графическое) накладывается
на изображение, уже существующее на экране, не стирая его;
точки пересечения изображений принимают окраску фона;

8 - задает режим прозрачности, при котором режим наложения
соответствует ранее установленному для данного знакоместа;
0 — устанавливает нормальный режим отображения информа-
ции.

В качестве самостоятельного оператора OVER устанавливает режим
наложения для всех последующих выводов на экран.

Ключевое слово OVER может также размещаться в операторах PRINT,
INPUT, PLOT, DRAW, CIRCLE. При этом режим наложения задается для
графической и символьной информации, выводимой только дан-
ным оператором. В операторах PRINT и INPUT ключевое слово OVER

размещается в любом месте блока данных, отделяясь от них знака-
ми-разделителями (запятая, точка с запятой, апостроф).

OVER в операторах PLOT, DRAW, CIRCLE ставится за ключевым сло-
вом и отделяется от параметров точкой с запятой.

Пример: PRINT AT 11,15; "YES"; OVER 1; AT 11,15; "_"

XE&

PAPER к color У_[El ss/c

оператор стр. 21

устанавливает цвет фона — цвет, в который окрашивается экран.
Следом за PAPER указывается целочисленное значение < color> в
интервале от 0 до 9, которым кодируется цвет.

После выполнения оператора PAPER 8 при печати в знакоместо цвет
фона будет принимать значение, ранее установленное для данного
знакоместа. PAPER 9 устанавливает белый или черный цвет фона в
зависимости' от цвета тона с целью достижения наибольшего
контраста.

В качестве самостоятельного оператора PAPER устанавливает посто-
янный цвет фона, влияющий на все последующие выводы на
экран (постоянный атрибут).

PAPER может также использоваться в операторах PRINT, INPUT, PLOT,
DRAW, CIRCLE, устанавливая временный цвет фона. В этом случае
PAPER влияет на фон знакомест, в которые выводится информация
только данным оператором (временный атрибут). В операторах
PRINT и INPUT ключевое слово PAPER размещается в любом месте
перед данными, отделяясь от них знаками-разделителями (запятая,
точка с запятой, апостроф).

Пример: PRINT INK 1 ;"DI-DI-DI";PAPER 5;"KU"

PAPER в операторах PLOT, DRAW, CIRCLE ставится сразу за ключевым
словом и отделяется от параметров точкой с запятой.

PAUSE <t>__м

оператор стр. 39

приостанавливает работу программы на время, задаваемое цело-
численным значением <t> (0...65535). Пауза исчисляется в 1/50
сек. Прервать паузу можно нажатием любой клавиши. Оператор
PAUSE 0 продолжит работу программы только после нажатия клави-

PEEK < addr> _ _IW

функция стр. 60

считывает число в интервале от 0 до 255 (байт) из ячейки памяти.

Адрес ячейки задается целочисленным значением <addr>
(0...65535).

PI__(P

функция стр. 16

возвращает значение числа «пи» (3,1415927). Аргументов не тре-
бует.




СОДЕРЖАНИЕ:


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

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



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

Похожие статьи:
Письмо №295
Новелла - Новелла "Черный берет" по игре "Sabouter".
Самиздат - "Незаконнорождённый АльХимик доктор Фауст Пернатый Змей" №1.
Разное - Вирусы на Спектруме и их обнаружение.
Почта - Привет, Wolfgang. ещё не забыл меня?

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