ZX Format #07
05 декабря 1997

Программистам - Basic - 7: Окончание описания Beta-Basic.

<b>Программистам</b> - 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)  Команда  сортировки позволяет более
эффективно  использовать ББ при организа-
ии баз данных.

_______________________________



Другие статьи номера:

От авторов - несколько слов о следующем номере.

Аторы журнала - ZX-Format No.7

Содержание номера - краткое содержание журнала ZX-Format No.7

Игрушки - обзор новинок: Los Angeles Drugs Bust, Jungle Warfare, Dragonia, 3D Starfighter, Rock star ate my hamster, Star Cobtrol, Malstese joe's pool challenge, Dynamite dux, Blood Brodthers, Galactic Games, Motor Masscre, International Kickboxing.

Игрушки - Tai-Pan: классический шедевр ZX Spectrum. Игра, совмещающая в себе quest и менеджер. Интересная новелла и достаточно подробное описание.

Игрушки - Operation R.R. Вступительная новелла к новому графическому quest'у от GALAXY.

Игрушки - Адвентюры: описание игры-пародии "Bored of the ring" - "Тошнит от колец" Можно пользоваться как описанием, а можно просто читать как пародию на Р.Р.Толкиена.

Игрушки - 3D construction kit: подробное описание редактора 3D игр типа Castle Master. В статье приведено описание внутреннего языка системмы, который, собственно, и превращает набор локаций и обьектов в полноценную игру.

Программистам - Basic - 7: Окончание описания Beta-Basic.

Программистам - библиотечка математических процедур. Цикл статей для желающих научиться программировать на ассемблере.

Программистам - Алгоритмы работы и примеры процедур для быстрых вычислений на асемблере: Умножение и деление 3-х байтовых чисел,

Программистам - Формат Mod файлов. Описания формата стандартных MOD файлов, используемых в General Sound.

Программистам - BMC 2. Eще несколько слов о конвертации PC-шных картинок в 3-color.

Обзор - Общий обзор прохождения очередной Demo-party ENLiGHT 1997 с фотографиями некоторых гостей.

Обзор - Несколько моментов с выставки видео и аудиотехники Video FAIR, проходившей осенью в С-Пб.

Железо - Капитан Nemo предлагает поделиться технологией KAY со всеми желающими заняться производством.

Железо - Информация о новом проекте фирмы Scorpion - плате расширения графики и памяти GMX.

Железо - Статья об аудиоусилителях и прайс-лист (для желающих купить готовый усилитель или набор для сборки).

Примьера - Описание нового турбо-ассемблера STORM от X-Trade.

Примьера - Riff Tracker новый Музыкальный редактор для General sound.

Примьера - Описание текстовго редактора ZX-Winword, позволяющий делать графические вставки в текст, и его утилита Sprite Cutter - для нарезки этих вставок.

Примьера - Head Ball - Головобол: Описание новой игры.

Интервью - интервью с участниками ENLiGHT'97: Digital Reality.

Интервью - интервью с участниками ENLiGHT'97: Extreme.

Интервью - интервью с участниками ENLiGHT'97: MMA, ALK.

Интервью - интервью с участниками ENLiGHT'97: Flash inc.

Интервью - интервью с участниками ENLiGHT'97: Progress.

Интервью - интервью с участниками ENLiGHT'97: Felix/Softland.

Интервью - интервью с участниками ENLiGHT'97: Slash.

Интервью - интервью с участниками ENLiGHT'97: Вячеслав Медноногов.

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

Здесь был ты - Выключатель - Небольшая философская притча.

Почта - Шедевр. Еще одно любопытное письмо - "большая часть прикладных и системных программ - полная чушь и лабуда!"

Почта - письма читателей: Николай Сергеев, Jobman, Николай Парфёнов, Дмитрий Залисский.

Почта - бесплатная реклама и обьявления.

Разное - перспективы ПО. Новая RPG игра от Одесской группы "Оберон" - НЕИЗВЕСТНЫЙ МИР.

Разное - перспективы ПО. STATE OF THE ART: новый графический редактор для спектрума.

Разное - Электронный самиздат: Несколько слов о новом виде софта - электронных книгах.

Amiga Club - Новая статья бывшего Спектрумиста Макса Петрова об Amiga.


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

Похожие статьи:
free humor - aнекдот недели от Freeman'a.
Развитие Спектрума - Система управления, которую мы назвали "Pistolet".
Coding - Компрессия картинок (screen to text).
Письма - Письма в редакцию.
Программирование - советы начинающему хаккеру.

В этот день...   21 ноября