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



 

Часть 5

                                ГЛАВА 4

                           ТУРБО-БЕЙСИК ЯЗЫК

                          Структура программы

         Программы на Т.Б. состоят  из  одной или более строк исходного
      текста, каждая из которых имеет следующий формат: 
           [номер строки]оператор[:оператор]...['коментарий] 
          или, 
          метка: 
          или, 
          метаоператор 
         Номер  строки  есть  целое  в диапазоне от 0 до 65535, которое
      опционально   может   идентифицировать   строки  программы.  Т.Б.
      относится не строго к установке номеров строк. Они свободно могут
      перемешиваться с метками, использоваться в одних частях программы
      и  не  использоваться в других. По существу, им нет необходимости
      быть  в  числовой последовательноси, хотя ни одна строка не может
      иметь и метку и номер. По сути номера строк являются метками. 
         Операторы - строительные  блоки,  образующие программы. В Т.Б.
      имеется  приблизительно  100  типов  операторов.  Строка может не
      содержать   вовсе,   содержать  одно  или  несколько  операторов,
      разделяемых двоеточием. 
            Все представленное ниже есть законные строки Т.Б.: 
           START:                     'только метка 
           10                         'только номер строки 
           $INCLUDE "CONST.TBS"       'метазаявление 
           20 A=A+1                   'номер строки плюс оператор 
           A=A+1:B=B+1                'два оператора 
           30 A=A+1:B=B+;:C=A+B       'номер строки и три оператора 
         Ширина  в  249  колонок  Т.Б.  есть  единственное ограничение,
      накладываемое  на  число  операторов,  которые могут появляться в
      одной   строке.  Следует,  однако,  знать,  что  некоторые  школы
      программирования  придерживаются правила, что устанавливать более
      одного  оператора  в  строке, если это не требуется особенностями
      синтаксической   конструкции   (например,  IF/THEN/ELSE),  плохая
      практика.   В  отличии  от  интерпретаторного  Бейсика,  Т.Б.  не
      накладывает  ограничений периода прогона за щедро расставленные в
      ваших  программах  пробелы и комментарии, они просто игнорируются
      компилятором. 
         Все  школы  придерживаются мнения, что плохая форма для записи
      строк,  если  ее  ширина больше 80-колонной ширины окна редактора
      (несмотря на возможности горизонтальной скрутки). Перейдете за 80
      колонок и вы ничего уже не сможете увидеть одновременно. Получить
      аккуратную распечатку тоже не удается. 
         В  ситуациях,  где  синтаксические  требования  вынуждают  вас
      строить  строку длинее 80 литер, ставьте литеру подчеркивания (_)
      в конце строки. 
         Это   приведет   к  рассмотрению  т.Б.  следующей  строки  как
      продолжение   первой.   Эта   строка  также  может  продолжаться.
      Например: 
         FIELD  $1, AS ADDRESS 1$, 30 AS ADDRESS 2$, -15 AS CITY$, 2 AS
      STATE$, 5 AS_ 2IP$, -30 AS COMMENTS$ 
         Как  только  к этому приступит компилятор, весь текст окажется
      одной  большой  строкой  начинающейся  с  FIELD  и оканчивающийся
      COMMENTS$ без литер подчеркивания. 
         Комментарием  может  быть  любой  текст,  добавляемый  в конце
      строки  и  отделяемый  от самой программы единичной кавычкой (').
      Единичная  кавычка  может использоваться вместо REM для отделения
      коментариев от операторов в такой строке, если она не находится в
      конце  оператора DATA (который может принять комментарий за часть
      строки).  В отличии от REM, нет необходимости отделять отмеченные
      одной  кaвычкой  комментарий  от соответствующих операторов с по-
      мощью   двоеточия.  Например,  следущие  строки  для  компилятора
      равнозначны: 
           AREA=RADINS 2*3.14159 'вычислить площадь 
           AREA=RADINS 2*3.14159 :REMвычислить площадь 
         Метка  должна  появляться  в  строке сама по себе (хотя за ней
      может   следовать   комментарий)   и  служить  для  идентификации
      оператора,   следущего   непосредственно  за  ней.  Метки  должны
      начинаться  с  буквы  и  могут содержать любое число букв и цифр.
      Регистр  не  имеет  значения:  THISLABEL  и THISLABEL эквивалент-
      ны.За  меткой  должно  следовать  двоеточие,  однако операторы, в
      которых  имеется  ссылка  на  метку  (например, GOSUB), не должны
      включать двоеточие. 
         Примеры:
          SORTSUBROUTINE:
          EXITPOINT: A=A+1 'незаконно ,метка должна быть в строке одна
          SORTINVOICES:
          GOSUB SORTINVOICES        'ссылочная метка
         $метаоператоры-это   операторы,  которые  работают  на  другом
      уровне,  чем  стандартные  операторы.  Они  независимые директивы
      компилятора  и  начинаются  со  знака  доллара  ($).  Стандартные
      операторы управляют компилятором в период прогона; метаоператоры,
      подобно  выбору  в  меню  опций,  управляют компилятором в период
      прогона компилирования. 
         Примером  метаоператора  является  $INCLUDE,  которое вызывает
      включение   компилятором   содержимого  другого  файла  в  точке,
      указанной  в  текущем  файле. Следует заметить, что метаоператоры
      Т.Б.  не появляются в REMARKS (коментариях) подобно тому, как это
      характерно  некоторым  другим бейсик-компиляторам. В одной строке
      может быть один метаоператор. 


                         Литерный набор Турбо-Бейсика

         Т.Б.  в  чем-то  схож  со строительным набором для составления
      программ.  Он  обеспечивает  вас набором документальных элементов
      языка  (резервными  словами и символами), которые можно соединять
      вместе  бесчисленными  способами  для  создания  любого мыслимого
      программного обеспечения машины. 
         Буквы  от  А  до  Z  и  цифры  от  0 до 9 можно использовать в
      формирующих идентификаторах (именах меток, переменных, процедур и
      функций). 
         Числа  от  0  до  9;символы  .,+  и =; а также буквы Е,D можно
      использовать при формировании числовых констант. 

          Следущие символы в Т.Б. имеют специальное смысловое значение:
..page35
      -----------------------------------------------------------------
      символы                           описание/функция
      -----------------------------------------------------------------
         =    знак равенства (оператор назначения, оператор отношения)
         +    знак плюс (оператор сложения и сцепления строк) 
         -    знак минус (оператор вычитания и отрицания) 
         *    звездочка (оператор умножения) 
         /    косая черта (оператор деления) 
         \    обратная косая черта (оператор деления нацело) 
         ^    знак вставки (оператор возведения в степень) 
         %    знак процента (литера оператора целого типа) 
         &    амперсанд (литера оператора типа длинного целого и
              дескриптор недесятичной базы) 
         !    восклицательный знак (литера оператора типа
              единичной точности 
         #    знак номера (литера оператора типа двойной точности) 
         $    знак   доллара (литера   оператора   строчного
              типа, префикс метаоператора) 
         ()   круглые скобки (аргументы функций/процедур, 
              массивы, приоритетность в выражениях) 
         []   квадратные скобки (законны только для массивов)
              пробел (разделитель) 
         ,    запятая (общецелевой разделитель) 
         .    точка (десятичная точка, разделитель 
              в удлинении имени файла 
         '    единичная кaвычка (ограничитель примечаний) 
         ;    точка с запятой (общецелевой разграничитель) 
         :    двоеточие (разграничитель операторов) 
         ?    знак вопроса (замена PRINT (печать)) 
         >    меньше чем (оператор отношения) 
         <    больше чем (оператор отношения) 
         "    двойная кавычка (строчный разграничитель) 
         _    знак подчеркивания (литера продолжения строки) 
      -----------------------------------------------------------------



                            Резервированные слова

         В  Т.Б.  резервируется  использование  определенных  слов  для
      заранее  определенных  синтаксических  целей. Эти резервированные
      слова   не   могут  применяться  в  качестве  меток,  переменных,
      именованных   констант   или   процедур   и  функций,  хотя  ваши
      идентификаторы могут содержать их. 
         Например, END является незаконным именем переменной, поскольку
      оно  вступает  в противоречие с синтаксисом функций, определяемых
      пользователем. 
         Попытки   использовать   резервированное   слово   в  качестве
      идентификатора   дают   синтаксическую   ошибку  периода  прогона
      компилирования. 
                    таблица 4-1.Резервированные слова Турбо-Бейсика
      -----------------------------------------------------------------
            слово                        описание
      -----------------------------------------------------------------
      $COM               коммуникация 1 (метаоператор)
      $COM2              коммуникация 2 (метаоператор)
      $DEBUG             отладка (метаоператор)
      $DYNAMIC           динамический (метаоператор)
      $ELSE              иначе (метаоператор)
      $ENDIF             конец если (метаоператор)
      $EVENT             событие (метаоператор)
      $IF                если (метаоператор)
      $INCLUDE           включать (метаоператор)
      $INLINE            в строке (метаоператор)
      $LIST              перечень (метаоператор)
      $OPTIONS           опция (метаоператор)
      $SEGMENT           сегмент (метаоператор)
      $SOUND             звук (метаоператор)
      $STACK             стек (метаоператор)
      $STATIC            статический (метаоператор)
      ABC                абсолютное значение (функция)
      ABSOLUTE           абсолютный (ключевое слово)
      AND                и (логическое отношение)
      APPEND             прибавить
      AS                 переменная файла
      ASC                код ASCII (функция)
      AT
      ATN                арктангенс (функция)
      BASE               база (атрибут)
      BEEP               звуковой сигнал (оператор)
      BIN$               двоичный эквивалент числа (функция)
      BINARY             двоичный (ключевое слово)
      BLOAD              загрузка в сохраняемую память (оператор)
      BSAVE              диапазон памяти на диске (оператор)
      CALL               вызов (оператор)
      CASE               регистр (ключевое слово)
      CDBL               преобразование в двоичную точность
      CEIL               наименьшее целое (функция)
      CHAIN              цепочка (оператор)
      CHDIR              смена справочника (оператор)
      CHR$               символ на экран
      CINT
      CIRCLE             окружность (оператор)
      CLEAR              очистить (оператор)
      CLNG               преобразовать в длинное целое (функция)
      CLOSE              закрыть (оператор)
      CLS                очистить (оператор)
      COLOR              цвет (оператор)
      COM                отслеживание коммуникации (оператор)
      COMMAND$           командная строка (функция)
      COMMON             общие переменные (оператор)
      COS                косинус (оператор)
      CSNS               преобразование в единичную точность (функция)
      CSRLIN             позиция курсора по вертикали (функция)
      CVD                !
      SVI                !преобразование строчных произвольного
                         !файла в числовую форму (функция)
      CVL                !
      CVMD                 !преобр. строчных МИКРОСОФТв числовую форму
      CVMS                 !(функция)
      DATA               данные  (оператор)
      DATE$              дата (системная переменная)
      DECR               сбрасывание (оператор)
      DEF                определение (оператор)
      DEFDBL             !
      DEFINT             !оператор типа идентификатора переменной
      DEFLNG             ! по умолчанию (двойная точность, целое,
      DEFSNG             !длинное целое, единичная точность, строка,
      DEFSTR             !соответственно)
      DELAY              задержка (оператор)
      DIM                образмерить массив (оператор)
      DO                 исполнять цикл (оператор)
      DRAW               чертить (оператор)
      DYNAMIC            динамический (атрибут)
      ELSE               иначе (ключевое слово)
      ELSEIF             иначе если (ключевое слово)
      END                конец (оепратор)
      ENDNEM             адрес конца адреса
      ENVIRON            модифицировать информацию в таблице
                         среды (оператор)
      ENVIRON$           восстановление нормативов таблицы среды
                         (функция)
      EOF                конец файла (функция)
      EQV                равно (отношение)
      ERADR              адрес последней ошибки (функция)
      ERASE              стереть динам. массив (оператор)
      ERDEV              !информация драйвера устройства (функция)
      ERDEV$             !
      ERL                  !строка и код последней ошибки (функция)
      ERR                  !
      ERROR              ошибка (оператор)
      EXIT               выход (оператор)
      EXP10              !
      EXP2               !експонента (Е,2,10) (функция)
      FIELD              !
      FILES              переменная поля (оператор)
      FIX                усечение до целого (функция)
      FN                 функция (ключевое поле)
      FOR                для (оператор цикла)
      FRE                свободная память (функция)
      GET                считать запись из произвольного файла
                         (оператор) 
      GET$               считать графику с экрана (оператор), строку
                         из двоичного массива (функция)
      GOSUB              идти к подпрограмме (оператор)
      GOTO               идти к (оператор)
      HEX$               преобразовать в шестнадцатиричный (функция)
      IF                 если (оператор)
      IMP
      INCR               приращение (оператор)
      INKEY$             считать клавиатуру (функция)
      INLINE             в строке (ключевое слово)
      INP                считать с входного устройства (функция)
      INPUT              ввести (оператор)
      INPUT#             загрузить из последовательного
                         файла (оператор)
      INPUT$             считать определенное число литер (функция)
      INSTAT             состояние клавиатуры (функция)
      INSTR              поиск по строке (функция)
      INT                преобразование к целому (функция)
      INTERRUPT          прерывание (ключевое слово)
      IOCTL              !коммуникация с драйвером устройства
      IOCTL$             !
      KEY                клавиша (оператор)
      KILL               стереть файл (оператор)
      LBOUND             нижняя граница (функция)
      LCASE$             только нижний регистр (функция)
      LEFT$              левые литеры (функция)
      LEN                длина строки (функция)
      LET                присвоить значение (оператор)
      LINE               линия/строка
      LIST               список (ключевое слово)
      LOC                позиция в файле (функция)
      LOCAL              локальная переменная (оператор)
      LOF                длина файла (функция)
      LOG                !логарифм (Е,10,2) (функция)
      LOG10              !
      LOG2               !
      LOOP               конец цикла (оператор)
      LPOS               позиция буфера принтера (фукция)
      LPRINT             строчная печать (оператор)
      LPRINT#
      LSET               данные в буфер произвольного файла (оператор)
      LOCATE             позиционировать курсор (оператор)
      MEMSET             верхний предел памяти (оператор)
      MID$               литерная строка (функция), замена
                         строки (оператор)
      MKDIR              субсправочник (оператор)
      MKD$               !
      MKI$               !преобразование чисел в строки (функция)
      MKL$               !
      MKMD$              !
      MKMS$              !
      MKS$               преобразование единичной точности в
                         строку (функ.)
      MOD
      MTIMER             микротаймер (функция и оператор)
      NAME               имя файла (оператор)
      NEXT               следующий (оператор цикла)
      NOT                не (логическое отношение)
      OCT$               восьмеричное представление (функция)
      OFF                выключить (ключевое слово)
      ON                 включить (ключевое слово)
      OPEN               открыть (оператор)
      OPTION             опция
      OR                 или (логическое отношение)
      OUT                запись на выходное устройство (оператор)
      OUTPUT             вывод
      PAINT              окрасить (оператор)
      PALETTE            !цветовая палитра (оператор)
      PALETTE USING      !
      PEEK               байт из ячейки памяти (функция)
      PEN                световое перо (функция/оператор)
      PLAY               игра (функция/оператор)
      PMAP               преобразование координат (функция)
      POINT              точка (функция)
      POXE               запись байта (оператор)
      POS                позиция курсора (функция)
      PRESET             установка точки (оператор)
      PRINT              данные на экран (оператор)
      PRINT#             запись в файл (оператор)
      PSET               точка на экран (оператор)
      PUT                запись в произвольный файл (оператор)
      PUT$               запись в двоичный файл (функция)
      RANDOM             произвольный (ключевое слово)
      RANDOMIZE          случайные числа (оператор)
      READ               загрузка переменных (оператор)
      REG                регистры (функция и оператор)
      REM                примечания (оператор)
      RESET              повторная установка (оператор)
      RESTORE            восстановление (оператор)
      RESUME             возобновление (оператор)
      RETURN             возврат (оператор)
      RIGHT$             правые символы (функция)
      RMDIR              удаление справочника (оператор)
      RND                случайное число (функция)
      RSET               помещение строки в буфер (оператор)
      RUN                прогон (оператор)
      SAVE               хранить (ключевое слово)
      SCREEN             экран (функ./оператор)
      SEEK               позиция в двоичном файле (оператор)
      SEG                сегмент (кл.слово)
      SELECT             выбор (оператор)
      SERVISE            сервисная (кл.слово)
      SGN                знак (функция)
      SHARED             разделение переменных (оператор)
      SHELL              "детский процесс"
      SIN                синус (функция)
      SOUND              звук (оператор)
      SPACE$             все пробелы (функция)
      SPC                пропуск пробелами (функция)
      SQR                квадратный корень (функция)
      STATIC             статические переменные (оператор)
      STEP               шаг (кл.слово)
      STICK              положение ручки управления (функция)
      STOP               останов программы (оператор)
      STR$               строчный эквивалент числа (функция)
      STRIG              кнопки управления (функ./оператор)
      SUB                подпрограмма (оператор)
      SWAP               обмен значений (оператор)
      SYSTEM             системное управление (оператор)
      TAB                табуляция (функция)
      TAN                тангенс (функция)
      THEN               то (кл.слово)
      TIME$              время (системная переменная)
      TIMER              таймер (функция/оператор)
      TO                 к (ключевое слово)
      TROFF              !вкл/выкл слежения за исполнением
      TRON               !
      UBOUND             верхняя граница (функ.)
      UCASE$             нижняя граница (функ.)
      UTIL               пока (кл.слово)
      USING              используя (кл.слово)
      USR                !
      USR0               !
      USR1               !
      USR2               !
      USR3               ! регистры
      USR4               !
      USR5               !
      USR6               !
      USR7               !
      USR8               !
      USR9               !
      VAL                числовой эквивалент строки (функ.)
      VARPRT             адрес переменной (функ.)
      VARPRT$            указатель переменной в строке (функ.)
      VARSEG$            сегментный адрес переменной (функ.)
      VIEW               активная зона экрана (оператор)
      WAIT               ожидать (оператор)
      WEND               !операторы цикла с параметром
      WHILE              !
      WIDTH              логический линейный размер (оператор)
      WINDOW             графическая координатная система (оператор)
      WRITE              запись данных на экран (оператор)
      WRITE#             вывод в последовательный файл (оператор)
      XOR                исключающее или (логическое отношение)
      -----------------------------------------------------------------


                            Числа в Турбо-Бейсике

           Забота  о  числах  составляет  важную  часть  любой  системы
      программирования.   Т.Б.,   как   принято   в  традиции  Бейсика,
      структурирован  так,  чтобы  позволить вам в значительной степени
      игнорировать   технические  соображения  о  внутренней  обработке
      чисел.  Если  вы  никогда  не  задумывались  о  таких  вещах, как
      скорость   вычислений,  точность  и  требования  к  памяти,  ваши
      программы  все  равно  будут  работать так как вероятнее всего вы
      ожидаете.  Однако  понимание  того, что лежит в основе получаемых
      результатов поможет вам писать программы, которые быстрее, точнее
      и требуют меньше памяти. 
           В целях повышения эффективности Т.Б. обеспечивает хранение и
      обработку  чисел  в четырех разных форматах; т.е. он обеспечивает
      четыре  уникальных  "типа" чисел: целые, длинные целые, плавающую
      точку единичной точности и плавающую точку двойной точности. 


                                    Целые

           Простейшими  и  самыми  быстрыми  числами,  циркулирующими в
      программах на Т.Б., являются целые. Для Т.Б. целое есть число без
      десятичной   точки  (т.е.  то,  что  математики  называют  целыми
      числами) в диапазоне от -32768 до 32767. Эти значения проистекают
      из  основополагающего 16 битового представления целых; 32768 есть
      2^15. 
           Хотя  этот  диапазон ограничивает использование целых чисел,
      почти  наверняка  в  любой  программе,  которую вы будете писать,
      найдется  несколько  переменных  (таких  как  счетчики  в  циклах
      FOR/NEXT),  которые  могут  функционировать в указанных пределах.
      Если  это  так,  использование целых дает исключительно быстрый и
      компактный  код.  Ваш  компьютер необычайно удобен для выполнения
      арифметических  операций  над  целыми  (например,  он  удобен для
      выполнения  арифметических  операций  над  целыми,  а для каждого
      числа требуется только 2 К памяти. 
           Переключатель  отладки  переполнения  в меню опций позволяет
      вам  создавать  программы, которые автоматически проверяют случаи
      переполнения целых переменных и сообщают о них. 


                                Длинные целые

           Значительным  расширением интерпретаторного бейсика является
      то, что Т.Б. поддерживает тип чисел, известных как длинные целые.
      Чтобы  избегать ошибок округления в финансовых операциях, длинные
      целые  представляют  собой  идеальный тип данных. Подобно обычным
      целым,  данные  не  могут  содержать  десятичные  точки. Однако в
      отличии   от   обычных  целых  они  имеют  громадный  диапазон,от
      -2147483648  до  +21474883647  (от (-2)^ 31 до 2^31). Для длинных
      целых  требуется 4 байта памяти, а расчеты с ними занимают больше
      времени чем с целыми. 
           Длинные  целые  относительно  эффективны, а при приближенном
      рассмотрении  определенно  ценны, особенно на машинах, которые не
      имеют 8087. В зависимости от вашей области применения, десятичные
      точки могут оказаться менее важными, чем вы думаете. Например, вы
      можете  определять денежные суммы в пенсах и делить их на 100 для
      отображения  в долларах. Таким образом можно выражать значения до
      20 миллионов долларов. 


                      Плавающая точка единичной точности

           Плавающая  точка  единичной  точности  (или просто единичная
      точность)  возможно  наиболее  гибкий  тип чисел в Т.Б.. Значения
      единичной  точности  могут  содержать  десятичные  точки  и иметь
      диапазон : от 10^(-38) до 10^38. Вам придется усердно поработать,
      прежде  чем откопать число которое не уложиться в число единичной
      точности.  Скорость  вычислений не так уж мала, для каждого числa
      требуется 4 байта. 
           Оборотной  стороной единичной точности является то, что хотя
      и   возможно   представление   как  ненормально  больших,  так  и
      микроскопических  чисел,  их  невозможно обрабатывать с точностью
      более  шести  значащих цифр. Единичная точность хорошо работает с
      числами  вроде  451.21  доллара  и  6411.92 доллара. Но 671421.22
      доллара   невозможно   представить  точно,  поскольку  это  число
      содержит  слишком  много  цифр.  Ни  число  234.56789,  ни  число
      0.00123456789   в   представлении  единичной  точности  не  будут
      представляться  столь  же  точно, как в случае шести цифр: 671421
      доллара  или  234.567,  или  0.00123457.  В  зависимости от вашей
      области  применения,  это  округление  может быть тривиальным или
      приносящим вред недостатком. 


                       Плавающая точка двойной точности

           Двойная  точность также соотносится с единичной, как длинные
      целые  с  целыми.  Числа  занимают в памяти вдвое больше места (8
      байт  ),  а  следовательно  и дольше вычисляются, и имеют больший
      диапазон  (10) и большую точность (16 цифр против 6 для единичной
      точности). 
           Требования  по  хранению  чисел  двойной точности становятся
      особенно  заметны,  когда  приходится иметь дело с массивами. При
      двойной  точности  для  массива  с 5000 элементов требуется 40000
      байтов.  Массив  целых при том же числе элементов занимает только
      10000  байтов.  Примечание:  в  Т.Б.  для  арифметики с плавающей
      точкой  используется  стандарт  1ЕЕЕ,  а  не  собственный  формат
      МИКРОСОФТ,  используемый  Интерпретаторным  Бейсиком.  Поэтому вы
      должны   применять  специальные  функции  для  трансляции  МИКРО-
      СОФТ/1ЕЕЕ (CVMS, CVMD, MKMS$, MKMD$) для чтения и записи данных с
      плавающей   точкой,   содержащихся  в  массивах,  созданных  И.Б.
      (Интерпретаторным  Бейсиком)  (Дополнитнльную информацию смотри в
      разделе "Произвольные файлы" далее в этой главе). 
           Если  вы  не уверены какой тип плавающей точки использовать,
      мы рекомендуем двойную точность. Т.Б. наиболее эфективно работает
      на двойной точности.Его трансцедентные функции, такие как SRS или
      LOG,  возвращают  значения  двойной  точности. Единичная точность
      может  оказаться  не лучшей для больших массивов, однако именно в
      них ее размерные преимущества становяться наиболее очевидными. 


                              Вычисления и 8087

           Сопроцессор  8087  (80287  на  машинах  АТ-типа) впечатляюще
      сужает  различие  в  скорости  вычислений  для предложенных типов
      чисел.  Поскольку все вычисления 8087 делает с двойной точночтью,
      независимо  от  типа,  он  делает  двойную  точность  даже  более
      привлекательной. 
           В  отличии  от  И.Б., Т.Б. не всегда округляет дробную часть
      числа  в  большую  сторону. Т.Б. особым образом анализирует любое
      число,  содержащее  5  в  его  дробной части. Число округляется в
      направлении  ближайшего  четного числа. Например, число 0.5 будет
      округляться  до  0,  как  ближайшего  четного  числа.Поскольку  в
      большинстве методов округления числа всегда округляются в большую
      сторону,   метод   Т.Б.   действительно  дает  более  равномерное
      распределение. 

                                  Константы

           Програмами  Т.Б.  оьраьатывается  два  разных класса данных:
      константы   и   переменные.  Переменные  допускают  изменение  их
      значения   по   мере   прогона   программы.   Значение  константы
      фиксировано  во  время компилирования и не может быть изменено во
      время  исполнения программы. Т.Б. поддерживает три типа констант:
      строчные  константы,  числовые  константы и, в порядке расширения
      И.Б., специальную форму целой константы, именованные константы. 


                              Строчные константы

           Строчные   константы-это  просто  группы  литер,  окруженные
      двойными кавычками; например 
           "THIS IS STRING"   (это строка)
           "3.14159"
           "TIM TONES,ATTORNEY OF LAW"   (ТИМ ДЖОНС,юрист)
           Если  строка  оканчивается  строчной константой, закрывающие
      кавычки можно опустить: 
        PRINT "THIS IS LOPPY BUT LEGAL (Это небрежность,но она законна)


                              Числовые константы

           Числовые   константы  представляются  числовыми  значениями,
      поэтому  они  состоят прежде всего из цифр от 0 до 9 и десятичной
      точки.  Для  отрицательных констант проставляемый перед ними знак
      минус (-); знак (+) для положительных констант можно ставить и не
      ставить.   Величина   точности,   которую   вы  предусматриваете,
      определяется  внутренним  представлением (целое, длинное це- лое,
      единчная  или  двойная  точность), которое Т.Б. будет исползовать
      при обработке этой константы. 
           Если  значения  не  содержат  десятичную  точку  и  лежит  в
      диапазоне  от  2^(- 31) до 2^(31-1), что превышает диапазон, Т.Б.
      использует  свой  тип длинного цело го. (Примечание: тип длинного
      целого невозможен в И.Б.) 
           Если  значение  содержит  десятичную  точку и имеет до шести
      цифр,   Т.Б.   использует  свой  тип  плавающей  точки  единичной
      точности. 
           Числовая  константа  с  десятичной  точкой и более чем шесть
      цифр  или  целое  число,являющееся  слишком  большим,  чтобы быть
      длинным  целым,  храниться  в  формате  плавающей  точки  двойной
      точности. Например: 
           345.1 единичная точность
           1.103221 единичная точность
           1.1032137 двойная точность
           3456783.1234 двойная точность


               Идентификация целых констант в других основаниях

           Иногда   удобно   выражать  целые  в  основаниях,  иных  чем
      десятичное.  Это  в частности верно, когда выражается информация,
      являющаяся  двоичной  по  своему  характеру;  например,  машинные
      адреса.Т.Б.   позволяет   вам   специфицировать  целые  данные  в
      шестнадцатиричном,  восьмеричном  и  двоичном  основании. Следует
      заметить,  что  длинные  целые  нельзя  представлять с изменением
      нотации. 
           Шестнадцатиричная  константа  содержит до четырех литер, где
      каждая  литера  имеет  установки  от 0 до 9 и от А до F, и должны
      предшествоваться &H. 
           Восьмеричные  константы  состоят  только из литер от 0 до 7,
      могут иметь до 6 цифр и должны предшествовать &О (либо просто &).
           Двоичные константы содержат только 0 и 1. Могут быть длинной
      до 16 цифр и должны предшествовать &B. 
           Каждая  следущая  константа представляет одно и то же целое,
      десятичное число 256: 
           &h100
           &O400
           &400
           &b100000000


                            Именованние константы

           Т.Б.  позволяет  ссылаться  вам на целые константы по имени.
      Это представляет собой некоторое усиление И.Б., чем то похожее на
      возможность CONST в Паскале. Таким образом можно именовать только
      целые. 
           Чтобы именовать целую константу предпошлите ей идентификатор
      со  снаком процента (%) и назначте ему целую константу. В отличии
      от  переменной,вы  можете  использовать  именованную  константу в
      левой   части  оператора  назначения  точно  однако  и  ей  может
      назначаться  только  постоянное  значение  (  не  переменная  или
      выражение).
      Например:      %DEBUG=-1    'именованная константа
                     DEBAG%=1234  'целая переменная
           Используйте   именованные   константы  для  флагов  условных
      вычислений  для повышения читабельности ваших программ. (Вы также
      можете  использовать именованние константы для уменьшения случаев
      "магических  чисел"  в  ваших  программах.  "Магическими числами"
      являются  фантастические значения, которые что-то значат для вас,
      когда вы впервые пишете программу, но не шестью меся- цами позже,
      когда вы к ней возвращаетесь). 


                                  Переменные

           Переменная   представляет   собоц   идентификатор,   которым
      представляются   числовые   и   строчные  значения.В  отличии  от
      константы,   значение   переменной   может  меняться  в  процессе
      исполнения  программы.  Подобно  меткам  имена  переменных должны
      начинаться  с буквы и могут содержать любое число букв и цифр. Не
      скупитесь в назначении имен важных переменных. В отличии от И.Б.,
      в  Т.Б.  длинные  имена  переменных  не  крадут  память  в период
      прогона.  Для переменных ENDOFMONTHTOTALZ (итоги на конец года) и
      EMT (акроним того же имени) одинаково требуется ровно 4 байта для
      хранения в период прогона. 
           Т.Б.  педдерживает  пять  типов  переменных:  строка, целое,
      длинное  целое,  единичная точность. Имя переменной определяет ее
      тип.  Обычно  набор  переменной сопровождается добавлением литеры
      оператора типа к имени переменной. 
           Строчные переменные заканчиваются знаком доллара ($):
           a$="turbo basic"
           в целых переменных используют знак процента (%):
           a%=100
           в качестве идентификатора длинных целых используют амперсанд
           (&): a&=7000 
           переменные    с    плавающей   точкой   единичной   точности
           сопровождаются восклицательным знаком: 
           a!=1.1
           переменные  с плавающей точкой двойной точности оканчиваются
      знаком номера (#): 
           а#=1.031
           Если  вы не вкючаете в имя переменной литеру оператора типа,
      Т.Б.  будет  использовать  тип  по  умолчанию-единичная точность.
      Чтобы  тип по умолчанию изменить на другой, используется оператор
      DEFTYPE: 
           например,
           A#=1.031  'А# есть переменная двойной точности
           B=16.5    'B имеет единичную точность
           A%=3      'A% есть целая переменная; A#-это
                       отдельная переменная 
           DEFINTM   'тип по умолчанию для переменных, начиная
                       с М, теперь целый
           M=16      'М есть целое
           Следует  отметить,  что  А%,  A#,  A&,  A$  и  A! - это пять
      отдельных переменных.


                                  Массивы

           Массив-это  группа  строчных или числовыхданных, разделяющих
      между  собой  одно  и  то  же  имя переменной. Отдельные значения
      которые  образуют  массив,  называются элементом. Элемент массива
      может  использоваться  в  операторе  или  выражении всюду, где вы
      использовали  строчную  или числовую переменную. Другими словами,
      каждый элемент массива сам по себе является переменной. 
           Во  время запуска программы каждый элемент числового массива
      устанaвливается   в  нуль.  Строчные  массивы  устанавливаются  в
      нуль-строку  ("").  Образмеривание  динамического  массива  также
      очищает   кажый   элемент.   Если   программа   позднее  повторно
      запускается с помощью оператора RUN, это возбуждение повторяется.
           Заявление имени и типа массива, так же как определение числа
      и организации его элементов, выполняется посредством оператора: 
           DIMENSION
           DIM PAYTENTS(55)
           создает  массив  переменных PAYMENTS (выплаты), состоящий из
      56 элементов единичной точности, нумеруемых от нуля до 55. Массив
      PAYMENTS  и какая либо переменная единичной точности, именованная
      также являются отдельными переменными. 


                             Подстрочные индексы

           Отдельные  элементы массива выбираются с помощью подстрочных
      индексов,  целых  выражений  в  круглых  скобках  справа от имени
      массивной  переменной, например, PAYMENTS(1) и PAYMENTS(22) - это
      два  из  56  элементов  массива  PAYMENTS.  Обычно первый элемент
      массива  выбирается  со значением подстросного индекса ноль, хотя
      это  можно  изменить  с  помощью  оператора  DIM или OPTION BASE:
      например 
           'заявляется массив из 56-ти  элементов
           'с границами подстрочных индексов от 0 до 55
           dim payments(55)
           - - - - - - - - -
           option base 1
           'этим оператором dim заявляется  55-ти злементный массив
           'c  границами  от  1 до 55 ,т.к. имеет место оператор option
            base dim payments(55) 


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