|
ZX Format
#07
05 декабря 1997 |
|
Программистам - Basic - 7: Окончание описания Beta-Basic.

Команды ББ.
(Окончание)
music by MIDISOFT
(C)Д.Рудовский
_______________________________
В этой статье я закончу описание ББ и
дам несколько советов по его использова-
нию.
ОС Спектрума имеет свои внутренние часы,
т.е. переменную, в которой хранится коли-
чество пятидесятых долей секунды (преры-
ваний), пришедших с момента включения
компьютера. Создатели ББ решили использо-
вать эту возможность для организации ча-
сов в программе.
Команда CLOCK "строка" - позволяет уста-
новить текущее значение времени, а также
установить будильник. Для установки бу-
дильника первым символом в строке должен
быть символ A (alarm - будить.).
Строка должна быть введена в виде:
"чч:мм:сс", для будильника секунды не
указываются.
Для использования возможностей будильни-
ка дополнительно введен формат:
CLOCK n, где:
n=0 - показания не выводить, будильник
отключить;
n=1 - указывать время в верхнем углу
экрана, будильник отключить;
n=2 - время не показывать, выдать зву-
ковой сигнал по будильнику;
n=3 - указывать время и выдавать зву-
ковой сигнал по будильнику;
n=4 - не указывать время, при срабаты-
вании будильника перейти на стро-
ку;
n=5 - аналогично n=4 с выводом времени
на экран;
n=6 - аналогично n=4 с выдачей звуко-
вого сигнала перед переходом;
n=7 - n=5 и n=6 вместе;
n=8..9999 - установить номер строки,
на которую будет произведен пере-
ход при срабатывании будильника.
Пример:
10 PRINT " 346*789=? "
20 CLOCK "00:00:00": CLOCK "A00:01"
30 CLOCK 1000: CLOCK 7
F 40 INPUT X
50 IF X=346*789 THEN PRINT
"Very Good!" ELSE "Bad rezult!":
GO TO 40
F 60 CLOCK 0
70 STOP
F1000 CLOCK 0
1010 PRINT "No more time!"
1020 STOP
Пояснения:
В 20 строке мы устанавливаем системные
часы в 0, а будильник ставим на 1 минуту.
В 30 строке мы устанавливаем строку пе-
рехода и режим работы часов ( см. выше).
Затем мы запрашиваем ввод числа и если
результат верен, и прошло меньше минуты,
то мы получим надпись "Very Good", часы
будут поставлены в пассивное состояние (
строка 60) и программа остановится.
Если результат неверен, но время еще
есть, то с выводом соответствующего сооб-
щения произойдет переход обратно на стро-
ку 40.
Если время истечет, то вне зависимости
от результата будет выдан звуковой сигнал
и произойдет переход на строку 1000.
ВНИМАНИЕ!!! Переход по будильнику проис-
ходит только после выполнения всей! теку-
щей строки. Также этот режим не работает
во время редактирования текста.
Команда SORT используется для сортировки
массивов и символьных строк. Ее формат:
SORT [INVERSE] var, где:
INVERSE - необязательный параметр, ука-
зывающий на условие сортиров-
ки, т.е. при его наличии сор-
тировка будет происходить по
убыванию значений, иначе, по
возрастанию;
var - имя массива или строки.
Сортировка происходит для символьных
массивов по первой символу по умолчанию.
Для сортировки по другому символу исполь-
-зуется конструкция: SORT S$() (N TO),где:
S$ - символьный массив;
N - номер символа по которому будет
произведена сортировка.
Для сортировки части массива используют:
SORT S$(N TO M) , где:
N,M - границы сортировки.
Пример:
10 DIM a$(100,10)
20 FOR I=1 TO 100
30 FOR J=1 TO 10
40 LET A$(I,J)= CHR$(RND*25+65)
50 NEXT J: PRINT A$(I)
60 NEXT I
70 PRINT "Sorting for 1st char:"
80 SORT A$
90 FOR I=1 TO 100
100 PRINT A$(I)
110 NEXT I
120 PRINT "Sorting for 2st char:"
130 SORT A$()(2 TO)
140 FOR I=1 TO 100
150 PRINT A$(I)
160 NEXT I
170 STOP
На этом я закончу описание команд ББ,
приведя в конце справку по соответствию
клавиш и команд (все команды набираются в
режиме псевдографики):
[A] - ALTER [6] - AUTO
[C] - CLOCK [1] - DEF KEY
[1] - DEF PROC [7] - DELETE
[D] - DO [P] - DPOKE
[0] - EDIT [E] - ELSE
[3] - END PROC [I] - EXIT IF
[F] - FILL [G] - GET
[CS]+[6] - JOIN [CS]+[6] - KEYIN
[8] - KEYWORDS 0 [9] - KEYWORDS 1
[L] - LOOP [O] - ON
[N] - ON ERROR [Q] - POP
[2] - PROC [9] - RENUM
[R] - ROLL [S] - SCROLL
[M] - SORT [T] - TRACE
[P] - USING
Функции ББ.
Кроме дополнительных команд ББ предлага-
ет несколько новых функций, которые вво-
дятся также, как и обычные, определяемые
пользователем, но воспринимаются ББ, как
внутренние.
Все функции можно условно разделить на
три группы: логические, математические и
остальные.
К логическим функциям относятся:
AND(n,m) [FN A(] - логическое И;
OR(n,m) [FN O(] - логическое ИЛИ;
XOR(n,m) [FN X(] - исключающее ИЛИ.
К математическим функциям относятся:
а) Функции преобразования форматов:
. BIN$(n) [FN B'&(] - преобразование деся-
тичного числа в дво-
ичную строку;
DEC(строка) [FN D(] - преобразование
строки, содержащей
шестнадцатиричное чис-
ло, в десятичное.
- HEX$(n) [FN H(] - преобразование деся-
тичногочислав
шестнадцатиричную
строку;
- USING$(формат, число) [FN U$(] - знако-
вая запись числа в
заданном формате.
б) расширенные стандартные функции:
. COSE(n) [FN C(] - более быстрый и более
грубый вариант cos;
SINE(n) [FN S(] - аналог. для sin;
DPEEK(n) [FN P(] - аналогично:
256*PEEK(N+1)+PEEK(N);
RNDM(n) [FN R(] - аналогично:
n*RND.
К остальным функциям относятся функции
определения объема памяти, содержимого
экрана и т.д.
CHAR$(n) [FN C$(] - преобразование чис-
ла в пределах 0-65535
в эквивалентную стро-
ку из двух знаков;
FILLED() [FN F(] - количество элементов
изображения, запол-
ненных последней ко-
мандой FILL;
INSTRING(n,стр1,стр2) [FN I(] - возвра-
щает позицию первого
знака строки 2 при
просмотре строки 1,
начиная с заданной
стартовой позиции.
Если внутри строки 1
нет строки 2, то
возвращает 0.
MEM() [FN M(] - возвращает объем сво-
бодной памяти;
MEMORY$() [FN M$(] - возвращает значе-
ние всей памяти от 0
до 65535 интерпрети-
рованное , как одна
строка;
MOD(n1,n2) [FN V(] - возвращает остаток
деления n1 на n2;
NUMBER(строка) [FN N(] - преобразование
строки из двух знаков
в двухбайтовое число,
где каждый байт со-
держит число, отвеча-
ющее заданному коду
ASCII;
SCRN$(y,x) [FN K$(] - возвращает знак,
находящийся на экране
в заданной позиции;
STRING$(n,строка) [FN S$(] - повторяет
строку заданное коли-
чество раз;
TIME$() [FN T$(] - возвращает строку,
содержащуютекущее
время.
Особенности программирвания
в ББ.
Расширяя возможности стандартного бейси-
ка, ББ изменяет и сами методы программи-
рования, поэтому при работе в среде ББ
желательно учитывать следующие моменты:
1) В результате изменения действия опе-
ратора FOR...NEXT скорость его выполнения
значительно возрастает при работе с целы-
ми числами в интервале 0..65535, следова-
тельно старайтесь обходиться целочислен-
ными циклами.
2) В результате появления процедур и
связанных с ними локальных переменных по-
явилась возможность существенно сэконо-
мить память за счет локализации перемен-
ных. Также это позволяет вам перейти к
понятию структуризации программы.
3) Наличие возможности форматированного
вывода и введение оконного интерфейса
позволяет упорядочить вывод на экран не-
обходимой информации.
4) Команда сортировки позволяет более
эффективно использовать ББ при организа-
ии баз данных.
_______________________________
Другие статьи номера:
Похожие статьи:
В этот день... 19 ноября