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



 

Часть 13

                 Операторы PRINT# и PRINT#  USING
-----------------------------------------------------------------     
Назначение    PRINT# и PRINT# USING  записывают в файл форматиро- 
              ванные данные
              
Синтаксис     PRINT# номер файла, [USING строка формата:]  список
                     выражений [;]

Комментарий      Номер файла - значение,  определяемое при откры- 
              тии файла.
                 Строка формата -  необязательная  последователь- 
              ность форматирующих символов (описание см. в опера- 
              торе PRINT USING).  
                 Список выражений -  последовательность  числовых 
              и/или символьных выражений, выводимых в файл.  

                 PRINT#  записывает  данные  в файл точно так же, 
              как оператор PRINT выводит их на экран.  Однако вы- 
              вод с помощью PRINT# требует внимания, иначе вы мо- 
              жете заполнить большой  объем  дискового  простран- 
              ства лишними пробелами или,  что еще хуже,  размес- 
              тить данные так близко друг к другу,  что их невоз- 
              можно  будет  разделить  при  последующем  вводе  с 
              помощью оператора INPUT#.  
              
              Например: 
                        PRINT#1 1,2,3 
                        посылает в файл #1
                        1             2             3

                 Символы размещаются в 14-знаковых зонах, поэтому 
              в файл посылается  огромное  количество  избыточных 
              пробелов. 
                 С другой стороны: 
                                  PRINT#1 1;2;3 
                                  посылает в файл #1
                                  1 2 3

              причем нельзя прочитать отдельные числовые значения 
              из этой записи, так как оператор INPUT# требует за- 
              пятых в качестве  разделителей.  Наиболее  надежный 
              способ  разделения полей состоит в указании запятых 
              между каждыми  двумя  полями,  например,  оператор: 
              PRINT#1, 1","2","3 
                                 записывает данные в файл в виде:
                                 1 ,2 ,3
              тут  нет  лишних  пробелов  и данные легко читаются 
              оператором INPUT#.  Оператор WRITE#  отделяет  поля 
              запятыми автоматически.  
              
Пример        SUB MakeFile
              ' INPUT открывает последовательный файл для ввода
              ' используется оператор WRITE#, 
              ' записывающий строки,
              ' состоящие из различных типов данных, в файл
              ' переменной файла присваивается значение #1

              OPEN "INPUT#.DTA" FOR OUTPUT AS #1
              
              ' определение и инциализация переменных
              StringVariable$ = "я вернусь"
              Integer% = 1000
              FloatingPoint! = 30000.1234
              
          ' строка текста записывается в последовательный файл
           WRITE# 1, StringVariable$, Integer%, FloatingPoint!
              
              CLOSE 1   'закрыть файл переменных

              END SUB   'конец процедуры MakeFile
              
              SUB ReadFile
              ' эта процедура открывает последовательный файл
              ' для ввода используется оператор INPUT#,
              ' читающий строки из файла, состоящие из
              ' данных различных типов
              
              ' переменной файла присваивается значение #1
              OPEN "INPUT#.DTA" FOR INPUT AS #1
              
              StringVariable$ = ""   'определяются и
              Integer% = 0           'инициализируются
              FloatingPoint! = 0     'переменные
              
           ' читать строку текста из последовательного файла
            INPUT# 1, StringVariable$, Integer%, FloatingPoint!
              
              PRINT StringVariable$, Ineger%, FloatingPoint!
              
              CLOSE #1      'закрыть файл переменных
              
              END SUB       'конец процедуры ReadFile
              
              CALL MakeFile
              CALL ReadFile
              
              END           'конец программы

                       Оператор PRINT USING
-----------------------------------------------------------------              
Назначение    PRINT USING  посылает на экран сформатированную ин- 
                           формацию.
              
Синтаксис     PRINT USING строка формата; список выражений [;].
              
Комментарий      Строка формата - это  символьное  константа  или 
              переменная,  задающая способ форматирования  инфор- 
              мации в списке выражений.  
                 Список  выражений - это выводимые символьные или 
              числовые  данные,  разделенные запятыми,  пробелами 
              или  точками  с  запятой.   Оператор  PRINT   USING 
              игнорирует знаки пунктуации в выражениях из списка.  
                 
                       Поля строки формата.
                       --------------------
                 Вывод первых n символов строки: если строка фор- 
              мата состоит из символов косая черта  ("/"),  между 
              которыми указаны (или не указаны) пробелы, то ТУРБО 
              БЕЙСИК  выводит столько символов в выходной строке, 
              сколько  символов,  включая  символы  косой  черты, 
              задано  в  строке  формата.  Например,  если строка 
              формата "//" (нет пробелов,  длина равна  2)  выво- 
              дятся два символа;  для строки  формата "/  /" (два 
              пробела, длина равна 4) выводятся 4 символа.  
              
              a$ = "кошки и собаки"
              
              PRINT USING "/ / "; a$   напечатает: кош 
              PRINT USING "//", a$     напечатает: ко
              
                 Строка формата "!" задает печать  только  одного 
              символа выводимой строки: 
              
              a$ = "кошки и собаки"
              PRINT USING "!"; a$      напечатает: к
                                    
                 Для  того,  чтобы  вывести всю строку ,  следует 
              указать в строке формата амперсенд (&): 
              
              a$ = "кошки и собаки"
              PRINT USING  "&"; a$    напечатает: кошки и собаки
                            
                         Форматирование числовых значений.
                         ---------------------------------
                 Знаки номера (#) в строке  формата  представляют 
              цифры числа.  Десятичная точка и другие специальные 
              символы (например, знаки доллара) размещаются таким 
              образом, чтобы указать вид форматного вывода числа, 
              в частности, число цифр справа от десятичной точки.  
              
              Например:
              
              PRINT USING  "##.##"; 3.14159,.01032
              
              PRINT USING  "+##.##"; 12.0101,-6.2
              (включение знака перед числом)
              
              PRINT USING  "##.##-"; 12.0101, -6.2
              (для отрицательных  чисел  знак  указывается  после 
              числа) 
              
              PRINT USING  "$$##.##"; 12.0101
              (вывести знак доллара слитно с числом)
              
              PRINT USING  "**##.##"; 12.0101
              (заполнение звездочками лидирующих пробелов)

              PRINT USING  "**$##.##"; 12.0101
              (комбинация предыдущих форматов)
              
              PRINT USING  "#####,.##", 6666.66
              (запятая    перед    десятичной   точкой   означает 
              группировку цифр по три) 
              
              PRINT USING  "#.####^^^^"; 34567.12
              (четыре знака вставки означают использование научного
              представления)
              
              PRINT USING  "_###.##"; 12.1010
              (знак  подчеркивания,   предшествующий  символу   в 
              строке  формата,  означает,  что этот символ должен 
              быть выведен без изменения,  а не  использован  для 
              форматирования).  
             
                 Если   значение  слишком  велико  для  заданного 
              формата, перед ним печатается знак процента (%).  
              
              PRINT USING "#.#"; 27.4

                          Оператор PSET
-----------------------------------------------------------------              
Назначение    PSET изображает точку на графическом экране.

Синтаксис     PSET (x,y) [,цвет]
              
Комментарий      (x,y)  абсолютные  или  относительные координаты 
              изображаемой точки на графическом экране.  

                 Цвет - это целое выражение, определяющее,  каким 
              цветом должна быть изображена точка.  В зависимости 
              от режима экрана на цвет накладываются соответству-
              ющие ограничения.  В режиме со средним  разрешением 
              допустимы  значения  цветов  от 0 до 3.  В режиме с 
              высоким разрешением допустимы лишь значения  цветов 
              0 и 1.  
                 Если цвет задан,  то оператор PSET и дополняющий 
              его  оператор PRESET действуют одинаково.  Различие 
              между ними состоит в том, что по умолчанию значение 
              цвета оператора PRESET равно 0 (цвет  фона),  тогда 
              как  у  оператора PSET оно равно максимально допус- 
              тимому в текущем режиме значению (т.е.  3 для сред- 
              него разрешения и 1 для высокого разрешения).  Дру- 
              гими словами,  если цвет не  задан,  PSET  зажигает 
              пикселы, а PRESET гасит их.  
              
См.также      POINT    PRESET
              
Пример        ' включение графического режима 
              ' со средним разрешением
              SCREEN 1
              
              FOR I% = 0 TO 359
                FOR J% = 0 TO 199
                  DELAY 0.01
                  PSET (I%, J%)
                NEXT J%
              NEXT I%
              
              FOR I% = 0 TO 359
                FOR J% = 0 TO 199
                  DELAY 0.01
                  PRESET (I%, J%)
                NEXT J%
              NEXT I%
              
              END        'конец программы

                       Оператор PUT (файлы)
-----------------------------------------------------------------              
Назначение    PUT заносит запись в файл с произвольным доступом
              
Синтаксис     PUT [#] номер файла [,номер записи]
              
Комментарий      Номер файла задается при открытии файла. 

                 Номер  записи -числовое выражение в диапазоне от 
              1 до 16777216, описывающие заносимую запись.  

                 Оператор PUT является дополнительным по  отноше- 
              нию к оператору GET.  Оператор PUT заносит одну за- 
              пись  в файл с произвольным доступом,  номер записи 
              не является обязательным.  Если он не задан,  ТУРБО 
              БЕЙСИК использует значения,  определенного для пос- 
              леднего оператора PUT или GET плюс 1.  
              
Пример        ' открытие файла с произвольным доступом
              OPEN "GET.DTA" AS# 1 LEN=18
              
              ' задание двух определений FIELD 
              ' для каждого элемента поля
              FIELD #1, 2 AS Integer$, 4 AS LongInt$, _
                        4 AS SinglePre$, 8 AS DoublePre$
              FIELD #1, 2 AS A$, 4 AS B$, 4 AS S$, 8 AS D$
              MaxInt% = 32767
              FOR I% = 1 TO 5    'запись данных в файл
              ' преобразование данных и запись в буфер,
              ' предшествующие записи в файл
              LSET Integer$ = MKI$ (I%)
              LSET LongInt$ = MKL$ (I%)+CLNG(MaxInt%))
              LSET SinglePre$ = MKS$ (CSNG(I$*CSNG(MaxInt%)))
              LSET DoublePre$ = MKD$ (MaxInt% - I%)
              PUT #1, I%
              NEXT I%
              
              FOR I% = 1 TO 5     'чтение данных из файла
              GET #1, I%          'вывод на экран
                PRINT CVI(A$), CVL(B$), CVS(C$), CVD(D$)
              NEXT I%
              
              CLOSE #1            'закрытие файла
              
              END                 'конец программы

                      Оператор PUT (графика)
-----------------------------------------------------------------              
Назначение    PUT изображает содержимое числового массива на гра-
              фическом экране
              
Синтаксис     PUT(x,y), массив [,вариант]
              
Комментарий      (x,y) - абсолютные или  относительные координаты 
              верхнего  левого  угла  прямоугольника,  в  который 
              будет переведено содержимое массива.  

                 Массив - числовой массив, содержащий графические 
              данные, которые будут размещены на экране.  
 
                 Вариант - одно из слов следующей таблицы, управ- 
              ляющих тем,  как данные массива будут соотнесены  с 
              уже имеющимся изображением на экране: 
             
        ---------------------------------------------------------
        Вариант для                   Действие
        PUT                                     
        ---------------------------------------------------------
              
        PSET       размещает точную копию изображения из массива
             
        PRESET     размещает комплементарную копию изображения из
                   массива
              
        XOR        выполняет операцию XOR между изображением из
                   массива и экраном
              
        OR         выполняет операцию OR между изображением из
                   массива и экраном
              
        AND        выполняет операцию AND между изображением из
                   массива и экраном
              
        ---------------------------------------------------------
                                                           
                 Вариант PSET изображает на экране данные из мас- 
              сива,  не выполняя никаких преобразований,  незави- 
              симо от того, что в данный момент изображено на эк- 
              ране.  PRESET изображает комплементарную копию мас- 
              сива. Например, если  некоторый  пиксел  в  массиве 
              имеет цвет 3,  его изображение на экране с  помощью 
              оператора PUT с атрибутом PRESET будет иметь цвет 0 
              и, наоборот.  Аналогично, цвет 1 будет преобразован 
              в цвет 2 и, наоборот.  
                 Варианты AND, OR и XOR выполняют логические опе- 
              рации  между  каждым пикселом,  уже изображенным на 
              экране, и изображаемым пикселом из массива.  
                 Вариант XOR (установленый по умолчанию) особенно 
              полезен при изображении движения объектов на соста- 
              вном  фоне.  Первый  оператор  PUT  XOR  изображает 
              объект на экране,  второе выполнение того же опера- 
              тора восстановит фон в  соответствии  с  предыдущим 
              состоянием.  

                 В основе стратегии оживления изображения  с  по- 
              мощью операторов GET и PUT лежат следующие этапы: 
             
            1. Нарисовать (DRAW) объект в прямоугольной области
            2. Занести    (GET)  изображение объекта в массив
            3. Выполнить  (DO)
            4. Стереть (ERASE) изображение объекта в старом месте
            5. Поместить (PUT) изображение объекта на новое место
            6. Цикл (LOOP)

Пример        ' выделить буфер для хранения графического
              ' изображения
              DIM Buffer% (143)
              
              ' переключение в графический режим 
              ' со средним разрешением
              SCREEN 1
              
            CIRCLE (16,16), 8, 2         'нарисовать круг
              
            GET (0,0) - (31,31), Buffer% 'занести круг в массив
              
              ' копировать круги по всему экрану
              FOR I% = 0  TO 9
                PUT(I% * 32,100), Buffer%
              NEXT I%
              
              END                          'конец программы

                           Функция PUT$
-----------------------------------------------------------------              
Назначение    PUT$ записывает строку в файл типа BINARY.
              
Синтаксис     PUT$ [#] номер файла, символьное выражение
              
Комментарий      PUT$ записывает содержимое символьного выражения
              в файл,  с заданным номером, в позицию, установлен- 
              ную  для  этого  файла  оператором  SEEK.  Файл,  в 
              который  производится запись,  должен быть открыт в 
              режиме BINARY 
              
См.также      GET$   OPEN    SEEK
              
Пример        OPEN "BASIC.DOS" FOR BINARY AS 1
              PUT$ #1, "компилятор БЕЙСИКА - это 99%"
              PUT$ #1, "труда и 1% вдохновения"
              CLOSE #1
              
              END

                        Оператор RANDOMIZE
-----------------------------------------------------------------              
Назначение    RANDOMIZE устанавливает начальное число в генерато-
              ре псевдослучайных чисел
              
Синтаксис     RANDOMIZE [числовое выражение]
              
Комментарий      Если числовое выражение опущено, выполнение про-
              граммы останавливается  на  операторе  RANDOMIZE  и 
              пользователь  получает  запрос  на  ввод начального 
              числа: 
              
            RANDOM NUMBER SEED?
            (начальное число генератора псевдослучайных чисел ?)
               
              О случайных числах
              
                 Без задания всякий раз нового  начального  числа 
              значения  функции RND вовсе не являются случайными; 
              для данного начального числа RND всегда дает одну и 
              ту же последовательность  значений.  Без  изменения 
              начального  числа  имитация  бросания  костей будет 
              приводить к одному и тому же результату всякий раз, 
              когда запускается программа.  
                 Удобным способом обеспечить уникальность каждого 
              прогона (при условии,  что программа не запускается 
              каждый день точно в одно и то  же  время)  является 
              задание начального числа с помощью функции TIMER: 
              
              RANDOMIZE TIMER
              
                 Другой  способ состоит в использовании оператора 
              высокого разрешения MTIMER (микросчетчик  времени), 
              которым   замеряется  время,   истекшее  с  момента 
              нажатия некоторой клавиши в начале  программы.  Это 
              время  используется  для  задания  начального числа 
              датчика случайных чисел: 
              
              MTIMER
              PRINT "Нажмите любую клавишу, чтобы начать..."
              WHILE NOT INSTAT : WEND
              RANDOMIZE MTIMER
              
См.также      RND
              
Пример        ' инициализация микротаймера
              MTIMER
              
              PRINT "Нажать любую клавишу, чтобы начать..."
              
              WHILE NOT INSTAT
              WEND
              
              Dummy$ = INKEY$
              ' установить начальное значение 
              ' датчика случайных чисел
              RANDOMIZE MTIMER
              
              FOR I% = 1 TO 5 STEP RND(1.5)
                PRINT I%
                IF INSTAT THEN STOP
              NEXT I%
              END     'конец программы

                          Оператор READ
-----------------------------------------------------------------              
Назначение    Оператор READ загружает переменные значениями  кон-
              стант из списка оператора DATA
              
Синтаксис     READ переменная [, переменная] ...
               
Комментарий      Переменная может быть числовой или символьной.
              
                 READ загружает  заданные  переменные  значениями 
              констант, следующих за служебным словом DATA.                
                 Во время выполнения программы оператор READ счи- 
              тывает константы из оператора DATA в том порядке, в 
              котором они появляются.  Наиболее  распространенной 
              ошибкой, связанной с использованием операторов DATA 
              и READ, является несовпадение типов константы и со- 
              ответствующей переменной;  например, попытка загру- 
              зить значение символьной константы в числовую пере- 
              менную.  В этом  случае  появляется  синтаксическая 
              ошибка (ошибка выполнения).  
                 Сообщение об ошибке не появляется,  если, наобо- 
              рот,  вы пытаетесь загрузить числовую  константу  в 
              символьную переменную.  
                 Если вы пытаетесь считать оператором READ больше
              констант,  чем объявлено в вашей программе операто- 
              рами DATA,  ТУРБО БЕЙСИК регистрирует ошибку выпол- 
              нения 4, Out of Data (не хватает данных).  
                 Оператор RESTORE позволяет заново  считать  кон- 
              станты,  заданные первым или каким-то другим опера- 
              тором DATA.  
              
См.также      RESTORE
              
Пример        ' эта программа демонстрирует оператор READ
              
            SUB ProgressResults (StudentName$, StudentAverage%)
              LOCAL Total%, Value%, I%
                Total% = 0
                READ StudentName$
                FOR I% = 1 TO 10
                  READ Value%
                  Total% = Total% + Value%
                NEXT I%
                StudentAverage% = Total% / 10
              END SUB
              
              FOR Student% = 1 TO 3
                CALL ProgressResults(SName$,Average%)
            PRINT USING "&'s average is ###" : SName$,Average%
              NEXT Student%
              
              END
              
       DATA W.Perry, 78, 65, 35, 79, 86, 93, 79, 85, 99, 96
       DATA P.Watson, 98, 94, 70, 88, 99, 100, 75, 96, 100, 95
       DATA M.Ciccone, 60, 65, 59, 75, 82, 56, 79, 82, 76, 69

                      Функция и оператор REG
-----------------------------------------------------------------              
Назначение    REG  возвращает или задает значение в буфере задан- 
              ного регистра
              
Синтаксис     Функция:
              
              y = REG (номер регистра)
              
              Оператор:
              
              REG номер регистра, значение
              
Комментарий      Номер регистра задает процессорный регистр  сог-
              ласно следующей таблице 
              
              ---------------------------------
               номер
               регистра        регистр
              ---------------------------------
              
                  0           флаги
                  1           AX
                  2           BX
                  3           CX
                  4           DX
                  5           SI
                  6           DI
                  7           BP
                  8           DS
                  9           ES
              ------------------------------------
                                
                 Если  номер  регистра меньше 0 или больше 9,  то 
              возникает ошибка выполнения 5 Illegal Function Call 
              (неверный вызов функции).  
                 Значение - это числовая переменная или выражение 
              в диапазоне от 0 до 65536.  

                 Функция REG возвращает значение выбранного  эле- 
              мента в регистровом буфере. Оператор REG, наоборот, 
              загружает  выбранный  элемент  в регистровом буфере 
              значением заданной целой переменной.  
                 Оператор и функция REG используются для передачи 
              информации от одной программы, написанной на ассем- 
              блере к другой. Содержимое регистрового буфера заг- 
              ружается в  процессорные  регистры  непосредственно 
              перед вызовами ABSOLUTE или INTERRUPT. Обратная за- 
              грузка осуществляется непосредственно после возвра- 
              та. В каждый данный момент времени содержимое буфе- 
              ра соответствует процессорным регистрам  на  момент 
              выхода из последней внутренней программы.  
              
 Пример       DEFINT a-z
              DIM a(100)
              DIM fillRoutine(10)
              
              FillRoutine (0) = &HFZFC
              FillRoutine (1) = &HCBAA
              
              REG 1,-1
              REG 3, 101 -2
              REG 9, VARSEG(a(0))
              REG 6, VARPTR(a(0))

              DEF SEG = VARSEG(FillRoutine(0))
              PRINT a(I)
              WHILE NOT INSTAT:WEND
              FillAdr = VARPIR(FillRoutine(0))
              CALL ABSOLUTE FillAdr  '(REG)
              
              PRINT a(I)
              END

                           Оператор REM
-----------------------------------------------------------------              
Назначение    REM отделяет комментарии в программе
              
Синтаксис     REM комментарий
              
Комментарий      Комментарий - это любая последовательность  сим- 
              волов.  В  отличие от комментариев в интерпретаторе 
              БЕЙСИКА, комментарии ТУРБО БЕЙСИКА появляются толь- 
              ко  в исходной версии программы и,  соответственно, 
              никоим образом не влияют на ее выполнения.  
                 В Н И М А Н И Е!  комментарии могут появляться в 
              одной строке с другими оператороми,  но комментарий 
              неприменно   должен  быть  последним  оператором  в 
              строке. Так, например, следующая последовательность 
              операторов не будет выполняться: 
              
              REM теперь сложим числа : a = b+c,
              
              так как компилятор не сможет отделить конец
              комментария от начала следующего оператора.
              
                 Правильным вариантом записи такой последователь-
              ности операторов будет: 
              
              a = b+c| REM теперь складываем числа...
  
                 Другим обозначением  комментария  является  знак 
              апострофа  (').  Если  используется  апостроф,  нет 
              необходимости  отделять  двоеточием  предшествующий 
              комментарию оператор.  
                 Не  следует  использовать апостроф для отделения 
              комментария от оператора DATA,  пользуйтесь  вместо 
              этого последовательностью :REM.  
                 Компилятор игнорирует комментарии,  они не зани- 
              мают места в объектных программах, поэтому вы може- 
              те их щедро использовать.  
              
Пример        REM эта программа демонстрирует оператор REM
              
              PRINT "эта программа демонстрирует оператор REM"
              
              REM "END"
              
              END
              
              DATA 1, 2, 3   Я вернусь!: REM комментарий
              'заметьте, что одиночный апостроф в данном случае
              'не считается разделителем комментария

                          Оператор RESET
-----------------------------------------------------------------              
Назначение    RESET закрывает и делает скрытыми для программы все
              дисковые файлы.
              
Синтаксис     RESET
              
Комментарий     RESET эквивалентен оператору CLOSE без аргументов.

                         Оператор RESTORE
-----------------------------------------------------------------              
Назначение    RESTORE позволяет повторно читать константы, задан-
              ные в операторе DATA.  
              
Синтаксис     RESTORE [метка]
              
Комментарий      Наличие  метки  необязательно.  Метку  указывает 
              оператор   DATA,   который   будет   использоваться 
              следующим оператором READ.  
                 Оператор RESTORE вынуждает ТУРБО  БЕЙСИК  заново 
              устанавливать  счетчик  операторов  DATA,  так  что 
              следующий оператор READ будет повторно использовать 
              данные первого (или  задан-ного  меткой)  оператора 
              DATA.  
              
См.также      READ
              
Пример        ' чтение данных и восстановление указателя
              READ A$, B$
              RESTORE
              
              ' чтение еще некоторых данных
              READ C$, D$
              
              ' вывод данных
              PRINT A$, B$, C$, D$
              
              ' установка указателя на первый оператор DATA
              ' после метки
              RESTORE MoreData
              
              ' чтение и вывод данных
              READ A$, B$
              PRINT A$, B$
              
              END        'конец программы
              
              ' определение данных
              DATA CAT, DOG
              MoreData|
                DATA MONKEY, GNU

                         Оператор RESUME
-----------------------------------------------------------------              
Назначение    RESUME  перезапускает  выполнение  после  обработки 
              ошибки
              
Синтаксис     RESUME [{0 | NEXT | метка}]
              
Комментарий      RESUME  или  RESUME 0  возобновляют выполнение с 
              оператора, вызвавшего ошибку.  
                 RESUME  метка возобновляет выполнение с помечен- 
              ного оператора.  
                 Если оператор RESUME выполняется  не  в  подпро- 
              грамме,  обрабатывающей  ошибку,  возникает  ошибка 
              выполнения 20 
              
              RESUME WITHOUT ERROR
              
                 В Н И М А Н И Е!   При наличии  операторов  ERL, 
              RESUME и  RESUME  NEXT,  компилятор  генерирует  4-
              байтовый указатель для каждого оператора программы. 
                 Программисты,  для которых важен размер програм- 
              много кода, генерируемого компилятором, должны при- 
              нять это к сведению.  Использование RESUME  [строка 
              #]  генерирует  простую  инструкцию  перехода.  ERL 
              обычно используется в целях отладки  так,  что  это 
              обстоятельство не слишком важно.  
              
Пример        ' установить обработку ошибок
              ON ERROR GOTO ErrorHandler
              
              ' этот оператор вызывает ошибку выполнения
              I# = LOG(-1)
              
              PRINT "произошло прерывание по ошибке"...
              
              END
              
              ErrorHandler:
                PRINT "ошибка" ERR "в операторе"  ERL
                RESUME NEXT

                         Оператор RETURN
-----------------------------------------------------------------
              
Назначение    RETURN возвращает управление из подпрограммы в выз-
              вавшую ее программу 
              
Синтаксис     RETURN [метка]
              
Комментарий      Метка  указывает строку, на которую, по желанию, 
              вы можете передать управление.  
            
                 RETURN прерывает выполнение подпрограммы и пере- 
              дает управление оператору,  непосредственно следую- 
              щему за вызовом подпрограммы (GOSUB).  
                 Необязательная  метка предназначена для облегче- 
              ния возвращения из подпрограмм обработки прерываний 
              и ошибок.  RETURN метка очищает  адрес  на  вершине 
              стека  и выполняет оператор перехода (GOTO) на опе- 
              ратор, идентифицируемый меткой. В некоторых версиях 
              БЕЙСИКА  эта  операция выполняется с помощью опера- 
              тора POP и GOTO.  
              
                 Выполнение RETURN без предварительного обращения 
              GOSUB вызовет неожиданные и  трудно  обнаруживаемые 
              ошибки.    Мы    советуем   включить   тест   стека 
              (Stacktest) в  спускающемся  меню  "вариантов"  для 
              обнаружения подобных ошибок.  
              
См.также      GOSUB        GOTO
              
Пример        См. пример к оператору GOSUB

                         Функция  RIGHT$
-----------------------------------------------------------------
              
Назначение    Функция RIGHT$  возвращает n правых символов задан- 
              ной строки
              
Синтаксис     s$ = RIGHT$ (символьное выражение, n)
              
Комментарий      n - целое выражение, задающее число возвращаемых 
              знаков символьного выражения;  n должно быть в диа- 
              пазоне от 0 до 32767.  
              
                 RIGHT$  возвращает указанное число знаков своего 
              символьного аргумента,  начиная  с  самого  правого 
              символа. Если n больше длины строки символьного вы- 
              ражения,  возвращается все символьное выражение це- 
              ликом. Если n=0, RIGHT$ возвращает пустую строку.  
              
См.также      LEFT$     MID$
              
Пример        RIGHT$ ("JOHN JONES",5)

                          Оператор RMDIR
-----------------------------------------------------------------              
Назначение    RMDIR удаляет каталог (аналог команды RMDIR DOS)
              
Синтаксис     RMDIR маршрут
              
Комментарий      Маршрут -  стандартная строка описания маршрута.
              RMDIR  удаляет  каталог,  соответствующий маршруту.  
              Этот оператор эквивалентен команде  RMDIR  DOS  (за 
              исключением того,  что служебное слово оператора не 
              может быть сокращено). На оператор распространяются 
              те же ограничения,  а именно,  что  маршрут  задает 
              существующий,  пустой  каталог.   Если  каталог  не 
              является пустым,  возникает  ошибка  выполнения  75 
              Path/File    Access   Error   (ошибка   доступа   к 
              маршруту/файлу).  
              
Пример        ' установить обработку ошибок
              ON ERROR GOTO ErrorHandler
              
           INPUT "Введите имя каталога, подлежащего удалению:",D$
              
              RMDIR D$    'удаление каталога
              
              END         'конец программы
              
              ErrorHandler:
                PRINT "Ошибка " ERR " в операторе " ERADR
                RESUME NEXT

                           Функция  RND
-----------------------------------------------------------------              
Назначение    RND возвращает псевдослучайное число
              
Синтаксис     y = RND [(числовое выражение)]
              
Комментарий      RND  возвращает псевдослучайное число  от 0 до 1
              с двойной точностью.
              
                 Числа,  генерируемые с  помощью  RND,  на  самом 
              деле, вовсе не являются случайными,  а являются ре- 
              зультатом   применения  алгоритма  псевдослучайного 
              преобразования к начальному  значению  (к  значению 
              "посева").  Если  даны  одни и те же начальные зна- 
              чения,  алгоритм  RND ТУРБО БЕЙСИКА производит оди- 
              наковые цепочки "случайных" чисел.  
              
                 Действие функции RND зависит от  необязательного 
              числового значения, заданного в качестве аргумента.  
              Если   аргумент  не  задан  или  положителен,   RND 
              генерирует  следующее  число  в  последовательности 
              случайных чисел, зависящей от начальной установки.                
                 Если аргумент равен 0, RND повторяет число, сге- 
              нерированное функцией последним.                
                 Отрицательный аргумент  задает  новую  начальную 
              установку датчика случайных  чисел  так,  что  пос- 
              ледующие  вызовы  функции  RND  без аргумента или с 
              положительным  аргументом  будут  возвращать  новую 
              последовательность значений.                
                 В общем,  используйте RANDOMIZE TIMER один раз в 
              начале программы для того, чтобы оператор RND выда- 
              вал  новую последовательность значений.  Не следует 
              использовать нулевое или отрицательное значения ар- 
              гумента за исключением тех случаев,  когда  вам  не 
              нужны вызываемые или особые последствия.                
                 Для того, чтобы получить случайное целое от 1 до 
              n   включительно,   можно   использовать  следующий 
              способ: 
              
              randomNo% = INT(RND + n) + 1
              
                   Еще лучше создать функцию:
              
              DEF FNRndInt% (x%) = INT (RND + x%) + 1
              
См.также      RANDOMIZE
              
Пример        FOR I% = 1 TO 10 STEP 1.34
                PRINT USING "###.##^^^";RND(I%)
              NEXT I%
              END

                          Оператор RSET
-----------------------------------------------------------------              
Назначение    RSET  перемещает  символьные данные в буфер файла с
              произвольным доступом
              
Синтаксис     RSET переменная-поле = символьное выражение
              
Комментарий      Операторы RSET и LSET пересылают символьные дан-
              ные  в переменную-поле,  которая определена в пред- 
              шествующем операторе  FIELD  и  принадлежит  буферу 
              файла с произвольным доступом.  
                 Если  длина  символьного  выражения меньше,  чем 
              длина переменной-поле,  оператор RSET выполняет вы- 
              равнивание по правому  знаку,  дополняя  поле  про- 
              белами. Это означает, что пробелы добавляются перед 
              первым  знаком  символьного выражения с тем,  чтобы 
              функция  LEN  (переменная-поле)  возвращала  то  же 
              значение,   которое   указано   в   соответствующем 
              операторе FIELD.  
              
                 LSET выполняет выравнивание по левому знаку, до-
              полняя поле пробелами  (пробелы  добавляются  после 
              последнего знака символьного выражения).  
                 RSET может также использоваться для форматирова-
              ния выводимых на экран или на принтер данных: 
              
              a$ = space$(20)
              RSET a$ = "Right-just"
              PRINT a$
              
См.также      LSET
              
Пример        OPEN "RSET.DTA" AS #1 LEN=18
              
              ' определение имен и размеров полей
              FIELD 1,2 AS FileInt$, 4 AS FileLong$,_
                      4 AS FileSngl$, 8 AS FileDbl$
              
              ' присвоение некоторых значений полям и
              ' занесение записи в файл с произвольным доступом
              FOR Count% = 1 TO 5
                RSET FileInt$ = MKI$(Count%)
                RSET FileLong$ = MKL$(Count%^2)
                RSET FileSngl$ = MKS$(Count%^2.1)
                RSET FileDbl$ = MKD$(Count%^4.4)
                PUT 1, Count%
              NEXT Count%
              
              CLOSE 1    'закрытие файла
              
              END        'конец программы

                           Оператор RUN
-----------------------------------------------------------------              
Назначение    RUN перезапускает программу
              
Синтаксис     RUN [имя файла]
              
Комментарий      Оператор RUN без аргумента перезапускает с нача-
              ла программу на ТУРБО БЕЙСИКЕ.  Все числовые  пере- 
              менные (включая элементы массива) устанавливаются в 
              0,   а  всем  символьным  переменным  присваивается 
              пустая строка.  
               
                 Имя файла, если оно задано, - это символьное вы-
              ражение,  представляющее файл типа .TBC  или  .EXE, 
              (которые являются результатом команды Chain или EXE 
              из  меню "варианты",  устанавливающей режимы работы 
              компилятора).  Если в имени файла не указано расши- 
              рение,  то  по умолчанию предполагается .TBC;  если 
              расширение указано, оно и используется.  
                 При запуске или связывании в .EXE файл следует в 
              явном виде присоединить .EXE к имени файла.  
              
Пример        ' компиляция этой программы в файл, названный
              ' MASTER.EXE
              
              ' ввод имени SLAVE в ответ на подсказку
              INPUT "Введите имя запускаемой программы:", N$
              
              RUN N$      'прогон заданной программы
              
              END         'конец программы
              
              ' компиляция этой программы в SLAVE.TBC
              ' по команде "компиляция в цепной файл"
              ' в меню "Варианты"
              PRINT "Теперь мы в программе SLAVE"
              
              END         'конец программы

                          Функция SCREEN
-----------------------------------------------------------------              
Назначение    SCREEN возвращает ASCII-код символа, находящегося в 
              указанной строке и позиции
              
Синтаксис     y = SCREEN (строка, позиция [, вариант])
              
Комментарий      Строка и позиция - целые выражения  в  диапазоне 
              от 1 до 25 и от 1 до 80, соответственно.
              
                 Функция SCREEN в текстовом режиме - двойник фун- 
              кции POINT в графическом режиме.  SCREEN возвращает 
              информацию о символе в заданной  позиции  указанной 
              строки;  например,  SCREEN 1,1 возвращает ASCII-код 
              символа в первой позиции первой строки.  

                 Если необязательный параметр "вариант" равен  1, 
              SCREEN  возвращает  атрибут,  хранимый  в  заданной 
              позиции (строка, колонка), а не код символа.  
              
Пример        LOCATE 10,10
              PRINT "ASCII"
              
              ' ASCII-код для A - 65,
              ' по умолчанию атрибут экрана (белый на черном)
              ' равен 7
              PRINT SCREEN (10,10), SCREEN (10,10,1)
              
              END         'конец программы

                                      




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