ЭЛЕКТРОННАЯ БИБЛИОТЕКА КОАПП |
Сборники Художественной, Технической, Справочной, Английской, Нормативной, Исторической, и др. литературы. |
Часть 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) |