ZX Учебная: BASIC — строковые функции
Функции для работы со строковыми данными
TO используется для получения строки или подстроки, состоящей из группы последовательных символов заданной строковой переменной или выражения.
Общий вид функции:
строковое выражение (m TO n)
где:
m— начальная позиция строки или подстроки в заданном строковом выражении. Параметр необязательный;n— конечная позиция строки или подстроки в заданном строковом выражении. Параметр необязательный.
LEN используется для определения длины строковых данных или выражения.
Общий вид функции:
LEN строковое выражение
STR$ используется для преобразования числовых данных в строковые.
Общий вид функции:
STR$(числовое выражение)
VAL используется для преобразования строковой переменной или выражения в числовые данные.
Общий вид функции:
VAL строковая переменная/данные
Примечания:
-
Круглые скобки, используемые в перечисленных выше функциях, можно опустить, если числовое выражение простое.
-
STR$иVAL— взаимно обратные функции, то есть:STR$(VAL a$)=a$ -
Строковая переменная или выражение должны быть такими, чтобы функция
VALвозвращала числовое значение.
Примеры использования функций TO, LEN, STR$ и VAL:
10 PRINT "REVIJA"(1 TO 6)
20 PRINT "REVIJA"(1 TO 3)
30 PRINT "REVIJA"(4 TO 6)
10 INPUT "Введите ваше имя? ";a$
20 PRINT "Длина вашего имени — ";LEN a$;" символов"
10 LET a=521.34:LET b=20
20 LET c$="a+b="+STR$(a+b):PRINT c$
10 PRINT "11"=;VAL "11"
Команда определения новой функции
DEF FN служит для определения новой функции.
Общий вид команды:
DEF FN имя функции (список)=числовое/строковое выражение
где:
- имя функции — имя, присвоенное новой функции. В зависимости от того, возвращает функция числовые или строковые данные, в конце имени может стоять знак
$или его может не быть; - список — один или несколько аргументов, разделённых запятыми. Если аргументов несколько, их необходимо заключить в скобки.
Пример команды DEF FN:
10 LET x=0:LET y=0:LET a=10
20 DEF FN p(x,y)=a+x*y
30 PRINT "Функция p(x,y)=a+x*y"
40 PRINT "При x=2, y=3 и a=10 функция имеет значение ";FN p(2,3)
50 STOP
Команды условного и безусловного перехода
Эти команды используются для изменения порядка выполнения команд программы. К этой группе относятся команды типа GO TO и IF.
GO TO обеспечивает безусловный переход к команде с указанным номером, то есть передаёт выполнение программы на заданную строку.
Общий вид команды:
GO TO [номер строки]
где номер строки — номер одной из программных строк. Его можно опустить; в этом случае переход выполняется к первой строке с бо́льшим номером.
IF позволяет разветвить программу в зависимости от заданного условия.
Общий вид команды:
IF <условие> THEN GO TO номер строки
или
IF <условие> THEN команды
где:
<условие>— отношение между двумя числовыми или строковыми выражениями. Между ними ставится один из знаков сравнения:=,<,>,<=,>=или<>. Такие условия называются простыми;- номер строки — номер одной из программных строк;
- команды — одна или несколько команд языка BASIC.
Примечания:
Условие, указанное в команде IF, может быть также составным. Составные условия образуются сочетанием простых условий с помощью служебных слов AND, OR и NOT. Составное условие, в котором используется:
a) AND (читается «и»), истинно, если истинны оба простых условия;
b) OR (читается «или»), истинно, если истинно хотя бы одно из простых условий;
c) NOT (читается «не»), истинно, если связанное с ним простое условие ложно.
ZX Учебная: BASIC (строковые функции)
Примеры команд GO TO и IF
10 LET x=1
20 PRINT x: LET x=x+1
30 GO TO 20
10 LET a$=INKEY$
20 IF a$= THEN PRINT a$
30 GO TO 10
10 LET a=0
20 PRINT a,ača
30 LET a=a+1
40 IF a<11 THEN GO TO 20
50 STOP
Команды для создания программных циклов
Программным циклом называется группа команд, выполнение которой нужно повторить заданное число раз. Начало и конец цикла обозначаются соответственно командами FOR и NEXT. Это специальные команды BASIC, позволяющие использовать переменную в качестве счётчика.
FOR
Используется как первая команда программного цикла, то есть задаёт его начало.
Общий вид команды:
FOR управляющая_переменная=начало TO конец [STEP шаг]
где:
- управляющая переменная — числовая переменная, называемая индексом цикла; её имя должно состоять только из одной буквы;
- начало — числовая константа или выражение, задающее начальное значение индекса цикла;
- конец — числовая константа или выражение, задающее конечное значение индекса цикла;
- шаг — числовая константа или выражение, задающее приращение индекса цикла.
Параметр шага необязателен. Если он не указан, считается, что его значение равно +1.
NEXT
Используется как последняя команда программного цикла, то есть задаёт его конец.
Общий вид команды:
NEXT управляющая_переменная
Описание управляющей переменной приведено в предыдущем разделе.
Блок-схема цикла FOR
FOR i=p1 TO p2 STEP p3
│
▼
Команды BASIC
│
▼
NEXT i
Примеры команд FOR и NEXT
10 FOR i=1 TO 99
20 PRINT i
30 NEXT i
40 STOP
10 FOR i=5 TO 119 STEP 5
20 PRINT i
30 NEXT i
40 STOP
Команда определения размерности данных (DIM)
Позволяет присвоить группе данных единое имя и зарезервировать в компьютере необходимый для этой группы объём памяти. Команда применяется как для числовых, так и для символьных данных.
Примечания:
- Команда определения размерности данных относится к так называемым описательным командам. Она служит исключительно для описания данных, используемых в программе, и не выполняется как команда.
- Группа данных может быть многомерной.
- Команду DIM необходимо указывать в программе до любой другой команды, обращающейся к элементам массива, объявленного в DIM.
- В одной программе может быть несколько команд DIM. Обычно все они указываются в самом начале программы.
DIM (для числовых данных)
Служит для присвоения единого имени группе числовых данных и одновременно определяет в памяти компьютера место для их хранения.
Общий вид команды:
DIM a(n1,n2,...,nk)
где:
a— одна из букв английского алфавита; это имя массива размерностиk;n1,n2,...,nk— числовые выражения, округляемые до ближайшего целого числа.
DIM (для символьных данных)
Служит для присвоения единого имени группе символьных данных и резервирует в памяти компьютера место для их хранения.
Общий вид команды:
DIM a$(n1,n2,...,nk)
где:
a$— одна из букв английского алфавита, за которой обязательно следует знак доллара ($), указывающий на то, что речь идёт о символьных данных;a$— имя массива размерностиk;n1,n2,...,nk— см. описание командыDIM a.
Пример команды DIM
Загрузка одномерного массива из 10 элементов:
10 DIM a(10)
20 PRINT "Загрузка одномерного массива из 10 элементов"
30 PRINT
40 FOR n=1 TO 10
50 INPUT "Введите значение элемента массива ";a(n)
60 PRINT n;" элемент массива: "
ZX Учебная: BASIC (строковые функции)
Команды для выполнения подпрограмм
Основные команды для выполнения подпрограмм: GO SUB (обеспечивает вызов подпрограммы) и RETURN (обозначает последнюю команду подпрограммы).
GO SUB
Обеспечивает переход к подпрограмме.
Общий вид команды:
GO SUB номер строки
где:
номер строки — номер программной строки, на которую передаётся управление.
RETURN
Обозначает конец подпрограммы, то есть обеспечивает выход из подпрограммы, вызванной командой GO SUB.
Общий вид команды:
RETURN
Примеры использования команд GO SUB и RETURN:
10 REM korišćenje potprograma
20 PRINT program
30 GO SUB 100
40 PRINT nastavak programa
50 GO SUB 100
60 PRINT kraj programa
70 STOP
100 PRINT radi potprogram
110 RETURN
10 REM korišćenje potprograma sa više ulaznih tačaka
20 PRINT program
30 GO SUB 100
40 PRINT nastavak programa
50 GO SUB 100
55 GO SUB 90
60 PRINT kraj programa
70 STOP
90 PRINT preklapanje potprograma
100 PRINT radi potprogram
110 RETURN
Команды для работы с цветом
К командам, позволяющим работать с цветом, относятся: INK, PAPER, FLASH, BRIGHT, INVERSE, OVER и BORDER.
| Код | Цвет |
|---|---|
| 0 | чёрный |
| 1 | тёмно-синий |
| 2 | красный |
| 3 | фиолетовый |
| 4 | зелёный |
| 5 | голубой |
| 6 | жёлтый |
| 7 | белый |
INK
Используется для задания цвета символов, выводимых на экран.
Общий вид команды:
INK n
где:
n — код цвета символов, которые будут выведены или нарисованы во внутренней области экрана. Помимо стандартных значений [0–7 (см. таблицу цветов)], можно использовать также значения 8 и 9 со следующим значением:
- 8 — цвет остаётся неизменным, то есть таким, каким он был задан ранее;
- 9 — цвет контрастный по отношению к цвету фона.
Контрастный означает, что цвет будет белым, если цвет, относительно которого задаётся контраст, тёмный (от 0 до 3), и чёрным, если этот цвет светлый (от 4 до 7).
PAPER
Используется для задания цвета фона, на котором отображается содержимое.
Общий вид команды:
PAPER n
где:
n — код цвета фона. Остальное аналогично описанной выше команде INK.
FLASH
Используется для задания постоянного или мигающего отображения символов.
Общий вид команды:
FLASH m
где:
m — параметр, который может принимать значение 0, 1 или 8:
- 1 — вызывает ритмичное чередование цвета фона и символа: цвет фона становится цветом символа, и наоборот;
- 0 — отключает мигание, то есть отображаемые символы остаются неподвижными;
- 8 — сохраняет состояние, заданное ранее.
BRIGHT
Используется для задания яркости той части экрана, к которой относится команда.
Общий вид команды:
BRIGHT m
где:
m — параметр, который может принимать значение 0, 1 или 8:
- 1 — делает соответствующую часть экрана ярче;
- 0 — отключает действие команды
BRIGHT 1; - 8 — оставляет состояние без изменений.
INVERSE
Используется для управления инверсией цветов, заданных командами PAPER и INK.
Общий вид команды:
INVERSE 1
где:
1 — параметр, который может принимать значение 0 или 1:
- 1 — цвет
PAPERстановится цветомINK, и наоборот; - 0 — отключает действие команды
INVERSE 1.
OVER
Используется для управления наложением последующих символов.
Общий вид команды:
OVER 1
где:
1 — параметр, который может принимать значение 0 или 1:
- 0 — символы выводятся поверх предыдущих, при этом предыдущие стираются;
- 1 — символы выводятся поверх других символов, то есть…
ZX Учебная: BASIC (строковые функции)
Два символа печатаются друг поверх друга.
BORDER используется для задания цвета внешней области экрана.
Общий вид команды:
BORDER n
где:
n — см. пояснение к команде INK.
ATTR используется для получения визуальных атрибутов заданной позиции экрана.
Общий вид функции:
ATTR(строка,столбец)
где:
строка — номер строки, в которой находится нужная позиция; столбец — номер столбца, в котором находится нужная позиция.
Примеры команд для работы с цветами:
10 REM тест для INK
20 PRINT ;INK 2; ZX REVIJA
30 PRINT AT 1,0;INK 4; ZX SPECTRUM
10 REM тест для PAPER
20 PRINT;PAPER 4; ZX REVIJA
10 REM тест для FLASH
20 PRINT AT 1,0;FLASH 0; ZX REVIJA
30 PRINT AT 2,0;FLASH 1; ZX REVIJA
40 PRINT AT 3,0;FLASH 8; ZX REVIJA
10 REM тест для BRIGHT
20 PRINT AT 1,0;BRIGHT 0; DUGA
30 PRINT AT 2,0;BRIGHT 1; DUGA
40 PRINT AT 3,0;BRIGHT 8; DUGA
10 REM тест для INVERSE
20 PRINT AT 1,0;INVERSE 0 SPEKTRUM
;INVERSE 1; SPEKTRUM
10 REM тест для OVER
20 PRINT ZX REVIJA
30 PRINT AT 0,3;OVER 1; DUGA
10 REM тест для BORDER
20 FOR n=7 TO 0 STEP -1:PAUSE 20:BORDER n:NEXT n
30 GO TO 10
10 REM тест для ATTR
20 PRINT AT 10,10;INK 5; PAPER 0;FLASH 1; ZX REVIJA
30 PRINT ATTR (10,10)
OUT записывает данные y в устройство вывода по адресу x.
Общий вид команды:
OUT x,y
где:
x — адрес, может принимать значения от 0 до 65535;
y — данные в диапазоне от 0 до 255 (один байт).
Примеры команды OUT:
10 FOR n=0 TO 7
20 OUT 254,n
30 PAUSE 2
40 NEXT n
50 GO TO 10
10 OUT 254,16
20 OUT 254,0
30 GO TO 10
BEEP
ZX Spectrum поддерживает звуки и тоны, которые можно создавать командой BEEP.
Общий вид команды:
BEEP длительность,тон
где:
длительность — числовое выражение, задающее длительность звукового сигнала в секундах;
тон — числовое выражение, задающее высоту тона в полутонах; ноте C соответствует значение 0.
Пример команды BEEP:
10 BEEP.5,0:BEEP.5,2:BEEP.5,4:BEEP.5,5:BEEP.5,7:BEEP.5,9:BEEP.5,11:BEEP.5,12
STOP
Поделитесь вашим мнением о статье