ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы.



 

Часть 12


                               Заявление LOCATE
                               ----------------

      Функция   LOCATE    позиционирует курсор и/или определяет форму
      -------             курсора. 

      Синтаксис  LOCATE [ред] [,[колонка] [,[курсор][,пуск][,останов]]]
      ---------

      Замечания        Ряд - это целое выражение, определяющее  строку
      ---------        экрана,  в   которой  должен  позиционироваться
      курсор  (1-25).  Колонка  специфицирует  колонку (1-80). Курсор -
      числовое  значение,  которое  управляет тем, будет или нет курсор
      видимым   (0-означает   невидимый;   1-видимый).   25-ая   строка
      недоступна,  если  не выведено из активного состояния отображение
      фун- кциональных клавиш (см. о заявлении KEY OFF). 

         Пуск  и  останов  -  это  целые  выражения,  которые управляют
      размером  курсора  и  представляют сколь много строк сканирования
      будет  занимать  курсор.  Верхней  строкой  сканирования является
      строка  0;  нижней - строка 7 для цветных/графических Адаптеров и
      строка 13 для монохромных адаптеров.
         LOCATE  наиболее часто используется перед заявлением PRINT для
      управления прохождением вывода на экран.
         См. также     KEY OFF
         ---------
                       PRINT

      Пример:  CLS
               CRSLIN и POS
               INPUT "Ввести координаты X и Y:", X%, Y%
               'позиционировать курсор и изменить его форму
               LOCATE X%,Y%,1,4,5
               PRINT "Hi";
               WHILE NOT INSTAT: WEND  "ждать клавишу
               END   ' конец программы

                                ФУНКЦИЯ   LOF
                                -------------

      Функция     LOF     возвращает длину файла.
      -------
      Синтаксис   y =LOF(файланом)
      ---------
      Замечания        файланом  -  это  номер, под которым  был открыт
      ---------        файл.  LOF  возвращает  длину указанного файла в
      байтах.   Для  коммуникационных  файлов  LOF  возвращаетт  размер
      наличного пространства в коммуникационном буфере.
       Пример:  OPEN"TB.EXE" FOR BINARY AS#1
                PRINT "Размер турбо-Бейсика равен";LOF(1)
                CLOSE #1
                END

                           Функция LOG, LOG2 и LOG10
                           ------------------------

      Функция    LOG      возвращает натуральный (с основанием е) лога-
      -------             рифм;  LOG2  возвращает логарифм основания 2;
                          LOG10 - логарифм основания 10.

      Синтаксис       LOG:
      ---------
                      y=LOG (числовое выражение)
                      LOG2:
                      y=LOG2(числовое выражение)
                      LOG10:
                      y=LOG10(числовое выражение)

      Замечания  LOG   возвращает  натуральный  логарифм  (с основанием
      ---------        е, где  е=2,71828182845904523...)  своего  аргу-
      мента. Если числовое выражение меньше  или  равно  0,  это   дает
      ошибку 5 периода прогона, вызов незаконной  функции.  Натуральный
      логарифм  x  есть  показатель  степени,  в  которую  должно  быть
      возведено  основание е для  получения значения x. 
          LOG,LOG2 и LOG10 возвращают результат двойной точности.
      Пример:   FOR I!=1 TO 50 STEP 2.5
      ------    PRINT USING "Натуральный логарифм ##=## : I!, LOG(I!)
                 NEXT I!
                 END        'конец программы

                            Функция LPOS
                            ------------

      Функция   LPOS   возвращает "курсорную позицию" буфера печатающе-
      -------          го устройства.
      
      Синтаксис   y=LPOS (печатающее устройство)
      ---------

      Замечание        Печатающее устройство - это целое выражение от 0
      ---------        до 3, обеспечивающее выбор печатающего устройст-
      ва из следующего списка:
                  0,1          LPT1
                  2            LPT2
                  3            LPT3

         LPOS сообщает сколько литер уже послано на печатающее устройс-
      тво с момента вывода последней литеры возврата каретки.
         См. также  POS
      Пример: 
               'назначить ширину печатающего устройства
               'для именованных констант
                %Шир = 80
               'отобразить литеры ASCII и расширенного ASCII
               'на экране и печатающем устройстве.
                FOR I%=0 TO 255
                IF (I%>32) THEN
                  PRINT USING "1"; CHRS(I%);
                END IF
                'передвинуться на следующую строку, если имеет место 
                'выход за отведенное пространство
                IF LPOS(0)=%Шир THEN
                  LPRINT CHRS(13)+CHRS(10)
                END IF
                NEXT I%
                END  конец программы

                  Заявления LPRINT, LPRINT USING
                  ------------------------------

      Функция   LPRINT и LPRINT USING посылает данные на печатающее ус-
      -------                         тройство  (LPT1:).

      Синтаксис    LPRINT [список выражений [;] ]
      ---------    LPRINT USING формат строка; список выражений

      Замечания        Список выражений - это ряд числовых и/или строч-
      ---------        ных выражений разделяемых запятыми либо точкой с
      запятой. Формат-строка содержит  информацию о формате печати.
         LPRINT и  LPRINT  USING  выполняют  те-же  действия, что PRINT
      и PRINT USING, за исключением того,что список выражений посылает-
      ся  на  печатающее  устройство, а не на экран.
         Примечание:  По  умолчанию  Турбо-Бейсик  вставляет пару возв-
      рат каретки/подача  строки  после  распечатки  в  одной строке 80
      литер.
         Эта характеристика  может  быть  изменена  с помощью заявления
      WIDTH (ширина).
         См. также  LPOS
                    PRINT
                    PRINT USING
                    WIDTH

      Пример:   LPRINT USING"## -это мое счастливое число"; 7
                END


                           Заявление LSET
                           --------------

      Функция   LSET    перемещает срочные данные в буфер произвольного   
      -------           файла.
      
      Синтаксис   LSET переменная поля = строчное выражение
      ---------
      Замечания        LSET и родственное ему заявление RSET перемещают
      ---------        строчную информацию в переменные поля, определя-
      емые как  принадлежащие  буферу  произвольного файла.
         Если длина строчного выражения меньше размера переменной поля,
      специфицированной в заявлении FIELD, LSET выравнивает его в левую
      сторону  этого поля, заполняя оставшуюся часть пробелами.
         Это означает, что пробелы  добавляются  после последней литеры
      строчного выражения, так что после LSET- назначения LEN (перемен-
      ной поля) становится  равной ширине, определенной в соответствую-
      щем заявлении FIELD.
         RSET осуществляет выравнивание с помощью пробелов вправо (про-
      белы добавляются перед первой литерой строчного выражения).
         LSET и RSET могут также использоваться для  форматообразования
      вывода  на экран или печатающее устройство.
      Пример:
                а $=$ (20)
                RSET a$="Правое выравнивание"
                PRINT a$

         См. также  FIELD
                    LEN
                    RSET

      Пример:
       OPEN "LSET.DTA" AS#1 LEN=18      
       'Определить имена и размеры полей файла
       FIELD1,2 AS Файл цел $, 4 AS Файл  Длин $, - 4 AS Файл Един $,_
       & AS Файл Двойн $
       'назначить переменные полей и осуществить запись в файл 
       'произвольного  доступа
       FOR Счетчик% =1 TO S
       LSET Файл Цел $=MX1$ (счетчик %)
       LSET Файлдлин$=MXL $(счетчик %^2)
       LSET Файлtlby$=MXS $(счетчик %^2.1)
       lset ФайлДвойн$=MXD $ (счетчик %^4.4)
       PUT 1,счетчик %
       NEXT счетчик %
       CLOSE 1      'закрыт файл
       END          'конец главной программы

                        Заявление  MEMSET     
                        -----------------

      Заявление  MEMSET    заявляет верхнее ограничение памяти
      ---------

      Синтаксис  MEMSET адрес
      ---------

      Замечание        Адрес -это длинное целое выражение, определяющее
      ---------        абсолютный адрес  верхней  границы памяти Турбо-
      Бейсика. Адрес должен быть меньше  количества памяти, установлен-
      ной в системе. Практически адрес обычно вычисляется путем вычита-
      ния  некоторой  константы  из  значения,  возвращаемого  функцией
      ENDMEN.
         MEMSET сконструировано для установки отдельной памяти для под-
      программы  на  языке ассемблера. Если Турбо-Бейсик не в состоянии
      удовлетворить запрос в  силу  либо  неподходящего аргумента, либо
      недостаточности  памяти, возникает  ошибка 7 периода прогона, вне
      памяти.
         См. также  ENDMEN
      Пример:
       PRINT FRE (-1) 'отобразить наличное пространство для массивoв
       'хранить 128 байтов в верхней части памяти
       MEMSET ENDMEN - &H80
       PRINT FRE (-1)  'отобразить наличную память
       END              'конец программы

                            Заявление MID$
                            --------------

      Функция    MID$    возвращает литерную строку.
      -------
      Синтаксис  S$=MID$ (строчное выражение, n[,m] )
      ---------
      Замечания        n и m - это  числовые  переменные или выражения,
      ---------        которые  могут лежать в  диапазоне от 1 до 32767
      и от щ до 32767 соответственно.
         MID$ как функция, возвращает m-литерную строку, начиная с n-ой
      литеры строчного  выражения. Если m опускается или справа от n-ой
      литеры строчного выражения менее m литер, выдаются остальные  ли-
      теры  строчного  выражения  вплоть  до  n-ой и включая ее. Если n
      больше длины строчного выражения, MID$  возвращает нуль-строку.
         См. также     LEFT$
                       Заявление MID$
                       RIGHT$
      Пример:
                 INPUT 'Ввести строку:", Пустая стр$
                 Врем.Стр$ = Пустая Стр$
                 PRINT Пустая Стр $
                 'резервировать порядок литер, используя функцию и 
                 'заявление  MID$ одновременно.
                 FOR I% = 1 TO LEN (Пустая стр%)
                 MIDS (Пустая Стр %, I%,1) = MIDS (Врем Стр $,-_
                 (LEN (Врем Стр $)- I%) + 1,1)
                 NEXT I%
                 PRINT Пустая Стр%
                 END    'конец программы


                            Заявление MID$
                            --------------

      Функция   MIDS       замена литеры строки
      -------

      Синтаксис MID$ (строчнаая переменная, n[,m] )= строка-замена
      ---------
      Замечание        n  и  m - это числовые переменные или выражения,
      ---------        которые  могут  находиться  в  диапазоне от 1 до
      32767 и от 0 до 32767,соответственно.
         Как заявление, MID$ заменяет m литер строчной переменной,  на-
      чиная с литерной позиции n, сожержимым строки-замены.
         Если m включается, оно определяет сколько  литер строки-замены
      вставляется в строчную переменную.  Если опускается, используется
      вся  строка-замена. MID$ никогда не изменяет длину строки.
         См. также    LEFT$
                      Функция MID$
                      RIGHT$
      Пример:
              'MID$, заявление
              в $ = "Ураган Камилла"
              MID$ (в $,8) = "Карла--"  'опущен опциональный параметр m
              PRINT в $


                             Заявление MKDIR
                             ---------------

      Функция   MKDIR создает субсправочник (подобно DOS-команде MKDIR)
      -------
      
      Синтаксис MKDIR проход
      ---------

      Замечания        Проход -это строчное выражение, описывающее под-
      ---------        лежащий созданию справочник  (см.  информацию об
      именах и проходах файлов в главе 4)
         MKDIR (делать справочник) создает субсправочник, специфицируе-
      мый проходом.  Если  вы пытаетесь создать справочник, который уже
      существует, возникает  ошибка 5 периода прогона, вызов незаконной
      функции.

      Пример:
          'построить обработчик ошибок
          ON ERROR GOTO Спр ошибка
          PRINT "Пожалуйста введите справочник который вам нравится";
          INPUT "Создать:", Спр Имя $
          MKDIR Спр Имя $   'создать справочник
          END                'конец программы
       СпрОшибка:
       '---------
          PRINT "Возникла проблема в создании справочника"
          END

                   
                   Функции MKI$, MKL$, MKS$, MKD$
                   ------------------------------

      Функция  MKI$, MKL$, MKS$, MKD$ преобразуют числовые данные в
      -------              строки (для вывода в произвольные файлы)
      
      Синтаксис    S$=MKI$ (целое выражение)
      ---------    S$=MKL$ (длинное целое выражение)
                   S$=MKS$ (выражение единичной точности)
                   S$=MKD$ (выражение двойной точности)

      Замечания        Функция  MK (делать)  представляет  собой  часть
      ---------        процесса обработки получения числовых значений в
      файлы произвольного доступа. Поскольку заявления, которые записы-
      вают информацию в буфер произвольного файла (LSET и RSET) работа-
      ют только со строками, числовые  данные  должны  транслироваться,
      перед их обработкой заявлением PUT в произвольный  файл, в строч-
      ную форму.  MKI$(i)  возвращает двухлитерную строку, состоящую из
      двух битовых  значений, которые Турбо-Бейсик использует для внут-
      реннего представления  целого значения i. Функция MKL$ возвращает
      4-байтовый строчный эквивалент длинного целого.  MKS$  возвращает
      4-байтовый эквивалент значения единичной точности. MKD$ возвраща-
      ет 8-байтовый строчный эквивалент значения двойной точности.  До-
      полнительные функции CVI, CVL, CVD используются, когда произволь-
      ные  файлы считываются. Не путайте эти функции с STR$ и  VAL, ко-
      торые соответственно  обращают числовые выражения в распечатывае-
      мые формы и наоборот:
       i=123.45
       a$=STR$(i): в$=MKS$(i)
       'a$ содержит что-то, стоящее размещения на экране;
       'в$ - не содержит
       PRINT a$, в$
         
         См. также    СVD
                      CVI
                      CVL
                      CVS
      
      Пример:
              OPEN "MKILSD.DTA" AS#1 LEN=18
              'определить имена и размеры полей
              FIELD 1, 2AS файла цел$, 4AS файла длин$,_
              4AS файла един$,  8AS файла двойн$
             'назначить значения полям и осуществить запись в файл 
             'произвольного доступа
             FOR счетчик%  = 1TOS
             LSET Файла Цел$= MKI$ (счетчик%)
             LSET Файла Длин$= MKL$ (счетчик %^2)
             LSET Файла Един$=MKS$ (счетчик %^2.1)
             LSET Файла Един$=MKD$ (счетчик %^4.4)
             PUT 1, счетчик %
             NEXT счетчик %
             CLOSE 1        'закрыть файл
             END            'конец главной программы



                           Функции MKMD$,MKMS$
                           -------------------

      Функция  MKMD$  и  MKMS$   преобразуют числовые данные в строки
      -------                    формата Микрософт.
      
      Синтаксис       S$=MKMS$ (выражение единичной точности)
      ----------      S$\MKMD$ (выражение двойной точности)

      Замечания        Функции MKM  (делать  Микрософт)  предусмотрены
      ---------        лишь для совместимости  с существующими произво-
      льными файлами, которые  содержат значения  с  плавающей точкой в
      формате Микрософт.
         MKMS$  создает 4-байтовую строку формата Микрософт из значения
      единичной точности; 
         MKMD$ делает 8-байтовую Микрософт - форматную строку из задан-
      ного значения двойной точности.

         См.также    CVMD
         --------    CVMS

      Пример:
                    'открыть файл произвольного доступа
                    OPEN "CVMD.DTA" AS#1 LEN=12
                    FIELD#1, 4AS Единич.$, & AS Двойная $
                    МаксЦелое% =32767
                    FOR I%=1 TO 5 'записать данные в файл
                    LSET ДвойнаяS = MKMD$ (I%+МаксЦелое %)
                    PUT#1, I%
                    NEXT I%
                    FOR I% = 1TO 5  'читать данные из файла
                    GET#1, I%       'отобразить на экране
                    PRINT CVMS (Единичная$), CVMD (Двойная $)
                    NEXT I%
                    CLOSE#1        'закрыть файл
                    END            'конец программы



                        Функция и заявление MTIMER
                        --------------------------

      Функция   MTIMER   считывает или повторно устанавливает 
      -------            микротаймер.
      
      Синтаксис       Функция:       y=MTIMER
      ---------       Заявление:     MTIMER

       Замечания       MTIMER сконструированы  для  измерения истекшего
       ---------       времени, главным образом для очень коротких опе-
       раций.  Это дает значительное улучшение разрешающей способности;
       однако точность резко падает по истечение 54  миллисекунд.
          Как функция  MTIMER  возвращает число микросекунд, истекших с
       момента самого последнего заявления MTIMER.Точность MTIMER лежит
       в пределах примерно двух микросекунд.  Как заявление MTIMER пов-
       торно устанавливает микротаймер в ноль.

       Ограничения     Заявление  и функция MTIMER используются в паре.
       -----------     Вы должны выдать заявление  MTIMER, а затем выз-
       вать функцию для получения  результата.  Последующие  ссылки  на
       зту функцию будут давать значение ноль, если вы вновь  не запус-
       тили микротаймер с помощью заявления MTIMER. MTIMER и SOUND/PLAY
       используют  канал 2 таймерного типа 8255 и яиляются взаимоисклю-
       чающими. Поэтому исполнения заявленной SOUND или PLAY между  за-
       явлениями  и  функцией MTIMER вынудит повторную установку микро-
       таймера на ноль истекшего  времени.

       Пример:
                      'возбудить таймер
                      MTIMER
                      PI#=ATN(1) * 4     'вычислить "пи"
                      'получить значение таймера
                      Истекшее Время % = MTIMER
                      PRINT USING "Израсходовано #### миллисекунд";
                      PRINT "на расчет значения "пи" "
                      END   'конец программы



                       Заявление NAME
                       --------------

      Функция    NAME      Обеспечивает переименование файла
      -------              (подобно DOS-функции  REN)

      Синтаксис            NAME файласпец1AS файласпец2
      ---------

      Замечания        Файласпец1 и файласпец2 -это строчные выражения,
      ---------        удовлетворяющие DOS-соглащениям об  наименовании
      проходов и файлов.  Операция  NAME  обеспечивает передачу данных,
      представляющих файлспец1,  файлу  с  именем  файлспец2.  Так  как
      файлспец2 может содержать имя прохода, существует возможность пе-
      ремещения данных из одного справочника в другой,  но до тех  пор,
      пока вы не пытаетесь осуществить перенаименование с одного диска 
      на другой.

      Пример:
                 INPUT "Введите имя файла для перенаименования:",
                 Старое имя $
                 INPUT "Введите новое имя файла:", Новое имя $
                 выдаются старое имя $, Новое имя $
                 NAME Старое имя $ AS Новое имя $
                 END        ' конец программы



                       Функция OCT$
                       ------------

      Функция   OCT$   возвращает строку, представляющую  восьмеричную
      -------          (с основанием 8) форму числового выражения.

      Синтаксис    S$=OCT$ (числовое выражение)
      ----------

      Замечания        Числовое  выражение  находится  в  диапазоне  от
      ---------        -32768  до  65535. OCT$ возвращает строку, пред-
      ставляющую  восьмеричную форму своего целого аргумента. Если чис-
      ловое выражение имеет дробную часть,  перед  преобразованием  оно
      округляется. Для преобразования значений в  шестнадцатиричные или
      двоичные строки применяйте функции HEX$ и BIN$, соответственно.

         См.также        BIN$
                         HEX$

      Пример       PRINT OCT$(-1)
                   PRINT OCT$(65535)



                         Заявление ON COM(n)
                         -------------------

      Функция  ON COM(n)    заявляет  подпрограмму отслеживания событий 
      -------               на последовательном входном устройстве.

      Синтаксис     ON COM(n) GOSUB метка
      ---------
      Замечания        n-это номер (1 или 2) коммуникационного адаптера
      ---------        (последовательного  входного устройства), подле-
      жащего считыванию. Метка  идентифицирует  подпрограмму отслежива-
      ния. Если метка есть номер О особой строки, отслеживание запреща-
      ется.
         Заявление ON COM(n) не оказывает действия до тех пор, пока ко-
      ммуникационные события не оказываются доступными данному последо-
      вательному входному устройству, что обеспечивается подходящим за-
      явлением COM ON.  Если  заявление  COM ON  однажды уже исполнено,
      проверка имеет место между исполнениями  каждого следующего заяв-
      ления с целью установить, не поступила ли  какая-либо  литера  на
      специфицированное  последовательное  входное устройство. Если это
      произошло, выполняется GOSUB к назначенной подпрограмме.

         См. также      Приложение В,"Отслеживание событий"
       

                         Заявление ON ERROR
                         ------------------

      Функция   ON ERROR   специфицирует стандартную программу обработ-
      -------              ки ошибок и включает отслеживание ошибок.

      Синтаксис       ON ERROR GOTO метка
      ---------

      Замечания        Метка идентифицирует первую строку  подпрограммы
      ---------        отслеживания ошибок. Однажды включенная обработ-
      ка ошибок с помощью этого заявления обеспечивает переход к вашему
      коду  обработки  ошибок  при  возникновении  любых ошибок периода
      прогона вместо обычного отображения сообщения об ошибке и прекра-
      щения исполнения. Для продолжения исполнения  используйте заявле-
      ние RESUME (возобновить).
         Чтобы  запретить  отслеживание  ошибок  используйте   ON ERROR
      GOTO O. Вы  можете  воспользоваться  этим приемом, если возникает
      ошибка,  для  которой  у  вас  нет  определенного прохода на вос-
      становление; вы также можете остановить свой выбор на отображении
      в этот момент содержимого ERL  (строка  последней ошибки).
         Если вы  прогоняете  EXE-программу из DOS с выключенным отсле-
      живанием ошибок, любая ошибка периода прогона вызывает выдачу со-
      общения  о  ее  возникновении и прекращение исполнения программы.
      Сообщение имеет форму:
               EROR ошибкином at pgm-ctr = адрес
             (ошибка)          (при программном счетчике)
         Если программа запущена в рамках  Турбо-Бейсика  и  происходит
      ошибка, вы  переводитесь  в  редактор на местоположение ошибки. В
      строке состояний будет содержаться краткое описание ошибки перио-
      да прогона:
         ERROR ошибкином : сообщение об ошибках
         (ошибка)

         См. также    ERADR
                      ERL
                      ERR
                      ERROR
                      RESUME

      Пример:    'настроить обработчик ошибок
                 ON ERROR GOTO ошибок обработчик
                 WHILE I  'этот цикл оканчивается ошибкой
                 I =10/0  'это вызывает ошибку периода прогона
                 WEND
                 Ошибок обработчик
                 ------------------
                 PRINT "Обработчик захватил ошибку периода прогона"
                 PRINT ERR, "в строке" ERL
                 END


                           Заявление ON/GOSUB
                           ------------------

      Функция    ON/GOSUB    вызывает одну из нескольких возможных под-
      -------                программ  в соответствии со значением чис-
                             лового выражения.

      Синтаксис              ON n GOSUB метка [,метка]....
      ---------

      Замечания        n - это числовое выражение  в  диапазоне от 0 до
      ---------        255, а метка идентифицирует заявление на ветвле-
      ние к ней. n определяет к какой  из меток  осуществляется переход
      (например если n=4, получает управление четвертая метка в списке).
      Если n равно 0 или больше, чем число меток в списке, Турбо-Бейсик
      продолжает исполнение следующего по порядку заявления.
         Каждая подпрограмма должна оканчиваться ключевым словом RETURN
      для  обеспечения  возобнавления с того заявления, которое следует
      непосредственно за заявлением ON/GOSUB.
         Многопутевое ветвление может также реализоваться с помощью за-
      явлений  SELECT  и  IF - блоковое, причем  они  более гибкие, чем
      ON/GOSUB.

      Пример:
         FOR I% = 1 TO 3
         ON I% GOSUB обработчик один, обработчик два, обработчик три
         NEXT I%
         END     'конец главной программы
         Обработчик один
         ----------------
         PRINT "Обработчик номер" , I%
         RETURN
         Обработчик два
         ----------------
         PRINT "Обработчик номер", I%
         RETURN
         Обработчик три
         ---------------
         PRINT "Обработчик номер", I%
         RETURN


                        Заявление ON/GOTO
                        -----------------

      Функция    ON/GOTO      направляет программный поток по одному из
      -------                 нескольких  возможных  мест назначения на
                              основе значения числового выражения.

      Синтаксис               ON n GOTO метка [,метка]....
      ----------

      Замечания        n - это  числовое выражение в диапазоне от  0 до
      ---------        255, а метка идентифицирует заявление  программы
      на ветвление к ней.  n определяет к какой из меток осуществляется
      переход (например, если n=4 то управление получает четвертая мет-
      ка в списке).
         Если  n равно нулю или больше числа меток в списке, Турбо-Бей-
      сик продолжает исполнение следующего по порядку заявления.
         С большей гибкостью многопутевое ветвление может быть реализо-
      вано  с помощью заявлений SELECT и IF-блоковое.

      Пример:
          FOR I% =1 TO3
          ON I% GOTO обработчик один,обработчик два, обработчик три
          Обратно:
          NEXT I%
          END     'конец главной программы
          Обработчик один
          ----------------
          PRINT "Обработчик номер", I%
          GOTO обратно:
          Обработчик два
          ---------------
          PRINT "Обработчик номер"
          GOTO Обратно:
          Обработчик три
          ----------------
          PRINT "Обработчик номер", I%
          GOTO Обратно


                        Заявление ON KEY (n)
                        --------------------

      Функция  ON KEY (n)    заявляет подпрограмму отслеживания с целью
      -------                получения  его управления, если нажимается
                             особая клавиша.

      Синтаксис    ON KEY (n) GJSUB метка
      ---------
      Замечания        Метка идентифицирует первое значение подпрограм-
      ---------        мы отслеживания, а n - это целое выражение в ди-
      апазоне от 1 до 20, которым  описывается  подлежащая отслеживанию
      клавиша в соответствии со следующей таблицей.
       ---------------------------------------------------------------
            n                    Клавиша
       ---------------------------------------------------------------
          1-10        Функциональные клавиши F1-F10
           11         Курсор вверх
           12         Курсор влево
           13         Курсор вправо
           14         Курсор вниз
          15-25       Клавиши, определяемые заявлением KEY
           30         Функциональная клавиша F11
           31         Функциональная клавиша F12
       -----------------------------------------------------------------

         Заявление  ON KEY не имеют действия до тех пор, пока клавишные
      события  не  разрешаются заявлением KEY ON. Если заявление KEY ON
      однажды уже  исполнено,  Турбо-Бейсик осуществляет проверку между
      исполнениями  каждого  последующего заявления с целью установить,
      имело ли место нажатие специфицированной  клавиши.  Если это про-
      изошло, Турбо-Бейсик выполняет GOSUB к назначенной подпрограмме.
         Проверка клавиши n выключается заявлением KEY(n) OFF.  Исполь-
      зуйте  заявление  KEY для определения отслеживания клавиши, кото-
      рая не является функциональной или клавишей управления курсором.
         Для  высококачественного управления генерированием  Турбо-Бей-
      сиком кода проверки событий пользуйтесь метазаявлением $EVENT.

         См. также        $EVENT
                          KEY (n)

      Пример:
                   'Эта программа демонстрирует заявление KEY(n)
                   'включить проверку клавиш
                   KEY ON
                   'назначить строки для клавищ
                   KEY 1, "Алло" + CHR$(13)
                   KEY 2, "Досвидание" + CHR$(13)
                   KEY 10, CHR$ (13)
                   ' в дополнении к назначенной для этого строке
                   'построить отслеживание клавиши для F10
                   ON KEY(10) GOSUB Досвидание
                   'включить отслеживаниеF10
                    KEY(10) ON
                    'получить пользовательский ввод
                    INPUT "Нажмите F1:";Пусто$
                    INPUT "Нажмите F2:";Пусто$
                    PRINT "Теперь нажмите F10...."
                    'когда пользователь нажимает  теперь F10, будет вы-
                    'зываться  подпрограмма Досвидание
                    WHILE NOT INSTAT:WEND 'ждать клавишу F10
                    END    'конец программы
                    Досвидание:
                    KEY LIST 'перечислить определенные в данный момент 
                    'клавиши.
                    KEY(10) OFF 'выключить отслеживание
                   'теперь  когда пользователь нажимает F10, будет
                   'воспроизводиться литерная строка, назначенная 
                   'клавише
                    PRINT "Нажмите теперь F10 для того, чтобы покинуть
                           программу ......"
                    RETURN



                          Заявление ON PEN
                          ----------------

      Функция   ON PEN    заявляет  подпрограмму  отслеживания  с целью   
      -------             получения его управления, если  задействуется
                          световое перо

      Синтаксис    ON PEN GOSUB метка
      ---------
      Замечания       Метка идентифицирует новое заявление подпрограммы
      ---------       обработки  световогого  пера. Заявление ON PEN не
      имеет действия до тех пор, пока  события светового пера не разре-
      шаются заявлением  PEN ON. Если  заявление  PEN ON уже исполнено,
      осуществляется проверка между  всеми последующими  заявлениями  с
      целью проверки, было ли задействовано  световое  перо.  Если  это
      так, вызывается назначенная подпрограммая.
         Проверка светового пера выключается заявлением PEN OFF.  После
      захвата  светового  пера, с целью  удержать  от повторного вызова
      подпрограммы  отслеживания  из  нее самой (и переполнение стека),
      используется неявное  заявление PEN  STOP.  При закрытии подпрог-
      раммы обработки посредством RETURN автоматически выполняется  PEN
      ON, если стандартная подпрограмма не  исполняет  явное  заявление
      PENN OFF.
         Для более качественного управления генерированием Турбо-Бейси-
      ком  кода проверки событий пользуйтесь метазаявлением $EVENT
         См. также  $EVENT
                    PEN

      Пример:
                 ON PEN GOSUB ПераОбработчик 'установить обработчик со-
                 'бытий       
                 PEN ON   'включить отслеживание событий
                 PRINT "Нажмите для останова любую клавишу..."
                 WHILE NOT INSTAT
                 WEND
                 END        'конец программы

                 ПераОбработчик
                 ---------------
                  FOR I% = 1TO 9
                  PRINT PEN (I%)
                  NEXT 1
                  RETURN


                         Заявление ON PLAY
                         -----------------

      Функция   ON PLAY   заявляет подпрограмму  отслеживания  с  целью
      -------             получения его управления, если  буфер фоновой
                          музыки содержит менее специфицированного чис-
                          ла нот.

      Синтаксис   ON PLAY (нотсчетчик) GOSUB метка.
      ---------
      Замечания        Нотсчетчик -это целое выражение, а метка иденти-
      ---------        фицирует первое заявление в подпрограмме музыка-
      льного сопровождения.
         Заявление  ON PLAY не имеет действия до тех пор, пока проверка
      нот  не разрешается  заявлением  PLAY ON. Если PLAY ON уже испол-
      нено, Турбо-Бейсик  осуществляет проверку между исполнениями каж-
      дого последующего  заявления  с целью  проверить не меньше ли ос-
      талось нот в музыкальном буфере, чем  значение  нотсчетчика. Если
      это так, Турбо-Бейсик выполняет GOSUB к назначенной подпрограмме.
         Проверка музыкального буфера  выключается заявлением PLAY OFF.
      После  музыкальной  ловушки  исполняется  неявное  заявление PLAY
      STOP с  целью  удержать вызов  подпрограммы  отслеживания повтор-
      но из нее самой (и заполнения стека).  При  закрытии подпрограммы
      обработки посредством RETURN автоматически  выполняется заявление
      PLAY ON, если ранее в подпрограмме не было  исполнено явное заяв-
      ление PLAY OFF.
         Событие  PLAY  не  отслеживается, если  при исполнении PlAY ON
      буфер уже пуст. Для управления генерированием кода проверки собы-
      тий пользуйтесь метазаявлением  $EVENT. Для установки размера бу-
      фера фоновой музыки  пользуйтесь  метазаявлением $SOUND.
         См. также   $EVENT
                     PLAY(заявление)
                     $SOUND

      Пример:
                 Эта программа демонстрирует ON PLAY (n)
                 'разместить 30 байтов пространства звукового буфера
                  $SOUND 100
                  'включите проверку звуковых событий
                  PLAY ON
                  настройке проверку буфера музыкального сопровождения
                  ON PLAY (S)GOSUB наполнить игры буфер
                  НотыS = "GEAFDCFECFEDGGG "
                  'играть октавы со 2 по 4
                  Игры СтрS ="MB"
                  FOR октава % =2 TO 4
                  Октава S ="0" + STR$(октава%)
                  Игры СтрS = ИгрыСтрS + ОктаваS + НотыS
                  NEXT Октава %
                  PLAY Игры СтрS
                  DO
                  LOOP UNTIL INSTAT
                  CLEAR
                  END    'конец программы

                  Наполнить игры буфер
                  ---------------------
                  PRINT Игры СтрS
                  PLAY Игры cтрS
                  RETURN


                         Заявление ON STRIG
                         ------------------

      Функция   ON STRIG   заявляет  подпрограмму  отслеживания  кнопки
      -------              управления.
      
      Синтаксис   ON STRIG (n) GOSUB метка
      ---------
      Замечания       Метка идентифицирует первое заявление подпрограм-
      ---------       мы обработки "нажатой  кнопки",  а  n - это целое
      выражение, указывающее  подлежащую отслеживанию кнопку в соответ-
      ствии со следующей таблицей:
       ---------------------------------------------------------------
             n                        Кнопка
       ---------------------------------------------------------------
             0             Кнопка 1, ручка управления А
             2             Кнопка 1, ручка управления В
             4             Кнопка 2, ручка управления А
             6             Кнопка 2, ручка управления В
       ----------------------------------------------------------------

         Заявление ON STRIG не имеет действия до тех пор, пока  события
      на  кнопках  управления  не  разрешаются  с   помощью   заявления
      STRIG ON. Если  STRIG  ON уже  выполнено, проверка осуществляется
      между исполнениями всех последующих  заявлений с целью проверить,
      не была ли нажата  указанная  кнопка.  Если  это  так, вызывается
      назначенная подпрограмма.
         Для  выключения проверки указанной кнопки управления использу-
      ется заявление STRIG OFF.
         После захвата события исполняется заявление STRIG STOP c целью
      предотвратить  повторный  вызов  подпрограммы отслеживания из нее
      самой (и заполнение стека). Закрытие подпрограммы обработки с по-
      мощью  RETURN вызывает  автоматическое исполнения заявления STRIG
      ON, если ранее подпрограммой  уже  не исполнено  явное  заявление
      STRIG OFF. Для качественного генерирования кода  проверки событий
      используйте метазаявление $EVENT.
         См. также   $EVENT
                     STRING (n)

      Пример:      Ноль X =1
                   Ноль Y =1
                   Один Z
                   Два  Y =1
                   ЧетыреХ=3
                   Четыре Y=1
                   ШестьХ=Y
                   ШестьY=1
                   'настроить обработчики событий
                    ON STRIG (0) GOSUB переключить ноль
                    ON STRIG (2) GOSUB переключить два
                    ON STRIG (4) GOSUB переключить четыре
                    ON STRIG (6) GOSUB переключить шесть
                   'включить проверку событий
                    STRIG (0) ON
                    STRIG (2) ON
                    STRIG (4) ON
                    STRIG (6) ON
                    'пока кнопка не нажимается , отображать текущие
                    'координаты ручек управления
                    WHILE NOT INSTAT
                    LOGATE 15,15,0
                    PRINT STICK (0), STICK (1);
                    WEND
                    END       'конец программы

                    Переключить ноль:
                    LOGATE нольX,нольY
                    PRINT "Кнопка 1"
                    LOGATE 15,15,0
                    RETURN
                    Переключить два:
                    LOGATE ДваХ, ДваY
                    PRINT "Кнопка2"
                    LOGATE 15,15,0
                    RETURN
                    Переключить четыре:
                    LOGATE четыре Х, четыре Y
                    PRINT "Кнопка 4 "
                    LOGATE 15,15,0
                    RETURN
                    Переключить шесть:
                    LOGATE шесть Х, шесть Y
                    PRINT "КНОПКА 4"
                    LOGATE 15,15,0
                    RETURN

                          Заявление ON TIMER
                          ------------------
      Функция  ON TIMER   заявляет подпрограмму  отслеживания  с  целью
      -------             получения управления каждые n секунд.

      Синтаксис   ON TIMER(n) GOSUB метка
      ---------
      Замечания        Метка указывает  первое  заявление  подпрограммы
      ---------        обработки "истекшего времени", а n - целое выра-
      жение, указывающее  количество  секунд ожидания от 1 до 86400 (24
      часа).
         Заявление  ON TIMER  не имеет действия до тех пор, пока оно не
      разрешается заявлением  TIMER ON. Если TIMER ON уже исполнено на-
      чинается внутренний  отсчет  секунд и между исполнениями  каждого
      заявления делается проверка истечения числа секунд, идентифициро-
      ванного в заявлении. Если время истекло, вызывается подпрограмма,
      назначенная меткой.
         Заявление  TIMER OFF  включает проверку времени. После ловушки
      исполняется  неявное заявление TIMER STOP для предотвращения пов-
      торного вызова подпрограммы отслеживания из нее самой (и заполне-
      ние  стека).  При  закрывании  подпрограммы обработки посредством
      RETURN автоматически выполняется заявление  TIMER  ON,  если под-
      программа ранее не исполняет явное заявление TIMER OFF. Это озна-
      чает, что  счетчик  секунд  повторно устанавливается в ноль после
      таймерной ловушки.
         Для управления генерированием кода проверки  событий использу-
      ется метазаявление $EVENT.
         См. также     $EVENT
                       TIMER
       Пример:
                ON TIME R(1) GOSUB отобразить время
                настроить ловушку таймера
                'включить проверку таймерного события
                 TIMER ON
                 'ожидать нажатия клавиши
                 WHILE NOT INSTAT: WEND
                 END     'конец программы
                 Отобразить время:
                 LOGATE 1,70
                 PRINT TIME$: RETURN


Яндекс цитирования