((7 17))
В данном примере сначала выполняется подпрограмма «sub1», так как переменная i1% принимает значение 1, затем подпрограмма «sub2», так как переменная i1% в цикле принимает значение 2.
ON… GOTO - переход по меткам по условию. Действие данного оператора аналогично оператору: ON… GOSUB. Отличие в том, что будет выполняться не подпрограмма, а произойдет переход по метке или номеру программы.
Пример. ON i1% GOTO m1, m2
Если значение переменной i1% равно 1, то произойдет переход на метку «m1», если равно 2, то на метку «m2».
OPEN - открытие файла или устройства.
Примеры. 1. OPEN “Rab1.dan” FOR OUTPUT AS #1 2. OPEN “Rab2.dan” FOR INPUT AS #1 3. OPEN “Rab3.dan” FOR APPEND AS #1 4. OPEN “Rab4.dan” FOR BINARY AS #1 5. OPEN “Rab5.dan” FOR RANDOM AS #1 LEN=80
В первом примере имя открываемого файла - «Rab1.dan», тип данных определяется ключевым словом, находящимся за «FOR». В данном случае - это «OUTPUT»
или файл с последовательной организацией, в который выводится
информация. Если файл не существовал, то он будет образован. Если файл
существовал, то все данные файла будут уничтожены и запись данных будет
проводиться с начала файла. В дальнейшем, как для этого примера, так и
для других, ссылка на этот файл будет производиться как «#1» или просто «1» (параметр «AS #1»).
Во втором примере открывается последовательный файл под именем «Rab2.dan» для ввода данных из файла (ключевой слово «INPUT») с его начала.
В
третьем примере открывается файл с последовательной организацией данных
для вывода в него данных, которые будут располагаться после имеющихся
данных в файле. В четвертом примере открывается файл с двоичными
данными, а в пятом - с произвольной организацией данных, с длиной
записи - 80 байт. Существует возможность открытия файлов для работы в
сети, которую можно узнать из справочной системы языка Бейсик.
OPEN "COMn: - открытие последовательного канала для ввода/вывода данных. Пример см. в справочной системе языка Бейсик.
OPTION BASE - установка нижней границы размерности массива.
Примеры. 1. OPTION BASE 0 2. OPTION BASE 1
В примерах устанавливается нижний предел размерности массива как 0 или 1. Если массив будет определен как «DIM a(10)»,
то в первом примере количество элементов массива равно одиннадцати, от
0 до 10, а во втором десяти, от 1 до 10. Если массив определен как «DIM a(2 TO 10)», то вне зависимости от определения в операторе «OPTION BASE», размерность массива будет от 2 до 10 и содержать 9 элементов.
OUT - посылка данных в порт.
PAINT - заполнение графической фигуры определенным цветом.
Пример. SCREEN 9: CLS: CIRCLE (30, 30), 20, 1: CIRCLE (100, 30), 20, 1
CIRCLE (30, 100), 20, 1: CIRCLE (100, 100), 20, 1
PAINT (30, 30), 2, 1: a$ = CHR$(2) + CHR$(3) + CHR$(4): PAINT (30, 100), a$, 1
PAINT STEP(70, 0), 3, 1: PAINT (100, 30), 4, 1
В примере на экран выводятся четыре окружности синим цветом (параметр «1»). Далее оператор «PAINT» закрашивает внутренность окружности зеленым цветом до тех пор, пока не встретится синий цвет («PAINT (30, 30), 2, 1»). Следующий оператор закрашивает внутренность окружности как черепицу, для чего используется переменная а$, в которой используется три байта (2,3,4), всего может использоваться до 64 байт. В операторе «PAINT STEP(70, 0), 3, 1»
указываются не абсолютные координаты, а относительные, которые равны
сумме предыдущей позиции, где находился курсор плюс смещение, указанное
в операторе. То есть координаты равны (30,100)+(70,0)=(100,100) и
последний оператор закрашивает внутренность четвертой окружности
красным цветом.
PALETTE и PALETTE USING - изменяют цвет палитры. Всего в языке Бейсик можно использовать одновременно 16 цветов. В то же время, адаптер EGA имеет возможность работы с 64, а VGA
с 256 цветами. Данная команда позволяет изменить палитру цветов, с
которыми работает Бейсик на новые 16 цветов. Отметим, что разные режимы
работы экрана по оператору «SCREEN» могут по иному реагировать на данные операторы.
PCOPY - копирует одну видеостраницу в другую.
Пример. SCREEN 9
FOR i1% = 1 TO 8
LINE (i1% * 10, i1% * 10)-(i1% * 10 + 10, i1% * 10 + 10), i1%, BF
NEXT i1%
PCOPY 0, 1
FOR i1% = 9 TO 15
LINE (i1% * 10, i1% * 10)-(i1% * 10 + 10, i1% * 10 + 10), i1%, BF
NEXT i1%
INPUT i1$
PCOPY 1, 0
В
данном примере на экран сначала выводятся 8 прямоугольников и образ
текущего экрана под номером 0 запоминается на странице под номером 1.
Далее выводятся еще 7 прямоугольников (цикл по переменной i1% от 9 до 15). После ввода символьной переменной (i1$)
образ экрана копируется из страницы под номером 1 на 0 и на экране
появляются снова восемь прямоугольников, а не 15, которые были до ввода
текста.
PEEK - возвращает значение байта из оперативной памяти.
PEN - чтение положения светового пера (если он имеется).
PLAY - проигрывание мелодии. Более подробно описание нот приведено в уроках ранее. PLAY ON - позволяет начать проигрывать мелодию, PLAY OFF - приостановить проигрывание мелодии до следующего оператора «PLAY ON», PLAY STOP - прекратить проигрывание мелодии, ON PLAY GOSUB - позволяет проигрывать мелодию в фоновом режиме (пример см. в справочной системе языка Бейсик).
Примеры. 1. PLAY "MS L8 ff ee dd de ff ee d4 d4 cc < bb aa ab > cc < bb a4 a4" 2. a$= "MS L8 ff ee dd de ff ee d4 d4 cc < bb aa ab > cc < bb a4 a4": PLAY "X" + VARPTR$(a$)
В данных примерах приведена мелодия песни «Во саду ли, во огороде», причем в первом варианте мелодия задана явно, а во втором - через переменную, для чего используется команда «Х» в операторе «PLAY» и функция «VARPTR$».
PMAP - возвращает логические координаты окна, в которое выводится информация, определенное оператором WINDOW (см. описание оператора WINDOW).
POINT - возвращает текущие координаты курсора и цвет пиксела в графическом режиме.
Пример. SCREEN 1
WINDOW SCREEN (0, 0)-(100, 100)
LINE (20, 20)-(50, 50), , BF
PRINT POINT(0), POINT(1), POINT(2), POINT(3)
PRINT POINT(2, 2), POINT(310, 170) ((319 175 50 50 15 -1))
В
данном примере выводятся сначала физические координаты: х = 319, у =
175, затем логические координаты: х = 50, у = 50. Следующее значение
(15) задает номер цвета в этой координате, а -1 указывает, что
координата задана сверх допустимых пределов координат.
POKE - записывает значение байта в определенную область памяти.
POS - возвращает текущее положение столбца курсора.
Пример. PRINT: PRINT POS(0) ((1))
В данном примере курсор находится на первом столбце, так как предыдущий оператор «PRINT» установил на эту позицию курсор.
PRESET - установка цвета фона в пикселе по указанным координатам.
Пример. SCREEN 9: CLS : COLOR 2
FOR i1% = 1 TO 300
PSET (i1%, i1%)
FOR i2% = 1 TO 500: i1 = SIN(i1%): NEXT i2%
PRESET (i1%, i1%)
NEXT i1%
В
примере, на первой строчке устанавливается зеленый цвет, как цвет
основного фона (2) и остается цвет фона - черный, который действует по
умолчанию. Оператор PSET устанавливает цвет основного фона по указанным координатам в цикле от (1,1) до (300, 300). Цикл по переменной i2% организует задержку по времени, чтобы можно было видеть, как выводятся точки. Далее оператор PRESET по тем же координатам, что и оператор PSET устанавливает цвет фона (черный) и точка исчезает. В результате точка перемещается по экрану. Оператор PRESET можно указать и по другому, например, PRESET STEP(0, 0), 0, в котором указаны относительные координаты (0,0), то есть будет выводить точку там же, где курсор был установлен по оператору PSET.
PRINT - выводит данные в файл или на экран.
Пример. PRINT: PRINT 1; 2, 3; 4, 5, 6, 7, 8, 9, 0,
В
примере информация выводится на экран дисплея, при этом выводятся цифры
одна за другой до тех пор, пока не будет достигнут конец строки. После
этого вывод производится на следующей строчке. Первый оператор PRINT
не имеет ни одного аргумента, поэтому он только переводит курсор на
следующую строчку. Второй оператор имеет аргументы, которые перечислены
между собой через точку и точку с запятой. Если стоит точка с запятой,
то следующий текст будет следовать непосредственно за предыдущим
значением. Если стоит запятая, то следующее значение будет выводиться с
определенной позиции. Экран делится на пять одинаковых по ширине
областей (по горизонтали) и следующее значение будет выводиться на
первой позиции следующей зоны (знак табуляции). Запятая, которая
находится после последнего аргумента свидетельствует о том, что
следующий оператор PRINT будет выводить очередное значение на той же строчке, что и последний выведенный текст (после символа «0»).
Оператор PRINT для вывода в файл имеет такие же возможности, что и при выводе на экран. Пример вывода показан в описании оператора EOF.
PRINT USING - выводит форматированные данные на экран или в файл. Оператор примерно также работает, как и PRINT, за исключением того, что можно использовать дополнительное описание формата, которое может быть:
# - позиция для одной цифры,
. - десятичная точка, разделяющая целую и дробную часть числа,
+ - позиция для знака,
^ - позиция для значений экспоненты,
$ - печать вместо лидирующих нулей символа $,
* - печать вместо лидирующих нулей символа *,
& - печать всех символов,
! - печать только первого символа,
\ \ - печать первых символов символьной переменной, число которых равно: 2+количество пробелов между символами «\».
Пример. i1% = 33 / 7: i2# = 33 / 7: i3# = -330000 / 7: a$ = "Моя программа"
PRINT i1%, i2#, i3#, a$: PRINT USING "###.#####"; i1%
PRINT USING "###.####"; i3# : PRINT USING "+###.##^^^^"; i2#
PRINT USING "$$##.####"; i2#: PRINT USING "**#.####"; i2#
PRINT USING "!"; a$: PRINT USING "\ \"; a$
В первом операторе PRINT USING выводится значение целочисленной переменной i1%.
В формате указано, что необходимо вывести пять цифр после нуля, а в
переменной дробная часть отсутствует, поэтому выводится пять нулей как
дробная часть.
Далее выводится значение переменной i3#,
причем для целой части отводится три позиции. Так как целая часть
требует шесть позиций (одну на знак числа, пять на целую часть), то
программа выводит все число не по формату. Поэтому впереди числа
имеется символ «%», который указывает об этом несоответствии. Третье выводимое число по данному формату имеет шаблон: «+###.##^^^^»,
в котором одна позиция выделена на знак числа, шесть на значение числа
и четыре на значение степени числа. В независимости от того, какое
имеется число: положительное или отрицательное, знак всегда будет
выводиться, если указана позиция для него. Если позиция для знака не
указана, то выводится только знак минус. При указании позиции для
степени числа она будет представлена в виде «D+nn» или «E+nn», где D - обозначает двойную точность числа, Е - простую точность, на месте знака плюс может быть как знак плюс, так и минус, а nn - значение степени числа.
Следующие
два числа выводятся с лидирующими символами: «$» и «*». То есть, если
число занимает меньше позиций целой части числа, чем ему выделено,
например, содержит одну значащую цифру, а выделено 3 или 4, то перед
числом будут выведены символы, указанные в формате (знак доллара и
звездочка).
Далее
выводится сначала первый символ, а затем три элемента символьной
переменной. При указании формата как «\ \», на экран будет выведено
столько символов, сколько их имеется в формате. Так, в примере их
имеется: один символ «/», один пробел и один символ «/», то есть, всего
три символа. Столько же символов и будет выведено на экран из
символьной переменной.
PSET
- выводит на экране точку, цвет которой равен либо основному цвету,
либо указанному явно в данном операторе (пример см. в описании
оператора PRESET).
PUT - 1. запись данных в файл произвольного доступа (примеры см. в описании операторов FIELD и LOC).
PUT - 2. вывод на экран графической области, ранее сохраненной в памяти при помощи оператора GET (пример см. в описании оператора GET).
RANDOMIZE - позволяет создать новую последовательность случайных чисел. Случайные числа вычисляются при помощи оператора RND,
который имеет специальный для этого алгоритм. Если первоначальное число
для этой последовательности не изменяется, то не изменяется и
последовательность случайных чисел. Для того, чтобы изменить
первоначальное значение и получить новую последовательность случайных
чисел используется оператор RANDOMIZE TIMER, который применяется до оператора RND.
READ - считывает данные, которые установлены при помощи оператора DATA (пример см. в описании оператора DATA).
REDIM - переопределяет размерность массива. Для того, чтобы это было возможным, массив должен быть определен как динамический.
Пример. ' $DYNAMIC
DIM A%(10, 20)
…
REDIM A(2 TO 8, 14)
В данном примере массив А% определен как динамический, так как его определение находится за ключевым словом «' $DYNAMIC» и поэтому можно менять его размерность. Изменение размерности происходит при помощи оператора REDIM, в котором устанавливается первая размерность от 2 до 8, а вторая от 0 до 14.
REM
- комментарий. Следующий за данным ключевым словом текст будет
воспринят, как комментарий к программе и выполняться не будет. Данный
оператор имеет аналог: символ «'», который действует таким же образом.
Примеры. 1. PRINT i1% REM вывод на экран значений переменной i1%
2. PRINT i1% ' вывод на экран значений переменной i1%
Данные примеры идентичны друг другу.
RESET - закрывает все открытые файлы и устройства. Отличие от оператора CLOSE в том, что закрывает не только файлы, но и устройства.
RESTORE - позволяет заново считывать данные из оператора DATA.
Пример. DATA 1,1,1
DATA 0,0,0
FOR i1% = 1 TO 2: READ i2%, i3%, i4%: PRINT i2%, i3%, i4%,
RESTORE
NEXT i1% ((1 1 1 1 1 1))
В данном примере сначала считываются данные из первого оператора DATA, затем по команде RESTORE
происходит сброс текущего состояния считывания данных на их начало и во
втором шаге цикла снова происходит считывание тех же данных, что и
раньше. Таким образом второй оператор DATA не принимает участия в считывании данных.
RESUME - продолжение работы программы в случае возникновения ошибки (пример см. в описании оператора ERDEV).
RETURN - возврат управления в конце работы подпрограммы (пример см. в описании оператора GOSUB).
RIGHT$ - возвращает символы справа, находящиеся в символьной переменной.
Пример. a$ = "Моя первая программа"
PRINT RIGHT$(a$, 9) ((программа))
В данном примере на экран выводятся 9 символов, находящихся справа в символьной переменной.
RMDIR - удаление директории.
Пример. MKDIR "TEMP": FILES
RMDIR "TEMP": FILES
В примере сначала создается директория «TEMP» при помощи оператора «MKDIR» и выводится на экран содержимое текущей директории. Далее эта директория уничтожается при помощи оператора «RMDIR» и содержимое текущей директории выводится на экран.
RND - возвращает случайное число в промежутке от 0 до 1.
Пример. RANDOMIZE TIMER
x% = INT(RND * 100) + 1
y% = INT(RND * 100) + 1
PRINT " координата х - "; x%; " координата у - "; y%
((координата х - 37 координата у - 43))
Данный
пример выводит случайным образом координаты х и у в диапазоне от 1 до
100. Первый оператор позволяет изменить начальное число
последовательности случайных чисел. Если бы этого оператора не было, то
каждый раз при запуске программы, она выдавала бы одну и ту же
последовательность чисел. По оператору выдается число от 0 до 1, не
включая значение 1. Поэтому, умножая данное значение на 100, получим
число от 0 до 99. При помощи оператора INT
убирается дробная часть числа, к которому прибавляется значение 1. В
результате получаем число в диапазоне от 1 до 100, которое и выводится
на экран дисплея.
RSET - занесение значений в поле, образованное оператором FIELD (пример см. в описании оператора FIELD). Кроме того, производит перенос значения из одной переменной в другую, также как и в операторе LSET.
RTRIM$ - убирает лидирующие пробелы с правого края символьной переменной.
Пример. a1$ = " 123456 ": a2$ = "7 8"
PRINT "=="; RTRIM$(a1$); "=="; RTRIM$(a2$) ((== 123456==7 8))
Как видно из примера, убираются только пробелы, находящиеся справа от текста.
RUN - запуск программы на выполнение.
Примеры. 1. RUN "C:\DOS\TEST.BAS" 2. RUN 40
В
первом примере запускается программа, которая находится в другом файле,
имя которой указано в аргументе оператора. Во втором примере происходит
запуск текущей программы, начиная с линии под номером 40 (конечно, если
строки перенумерованы). Если параметры не указать, то текущая программа
будет выполняться сначала. При начале выполнения закрываются текущие
файлы и инициализируются переменные, то есть для числовых переменных
происходит присвоение им нулевого значения, а для символьных переменных
- отсутствие символов, находящихся в них.
SCREEN - 1. возвращает код символа и его цвет.
Пример. COLOR 0, 7: CLS: PRINT "Привет";
PRINT "код первого символа слова Привет - "; SCREEN(1, 1)
PRINT " цвет и атрибут - "; SCREEN(1, 1, 1)
((Привет код первого символа слова Привет - 143
цвет и атрибут - 112))
В данном примере первый оператор PRINT выводит код символа «П», а второй оператор PRINT выводит цвет и атрибут, которые находятся в одном числе. Код 112 обозначает цвет 0, код 113 - цвет 1, 114 - 2 и т.д.
SCREEN - 2. установка режима работы дисплея и некоторых его характеристик. Существуют следующие режимы работы дисплея:
SCREEN 0 - только для вывода текста. Всего может быть (столбцов х строк): 40 x 25, 40 x 43, 40 x 50, 80 x 25, 80 x 43, 80 x 50.
SCREEN 1 - графика 320 x 200 пикселов, текст 40 (столбцов) x 25 (строк), символы размером 8 x 8 пикселов.
SCREEN 2 - графика 640 x 200 пикселов, текст 80 x 25, символы 8 x 8.
SCREEN 3, 4, 5, 6 - для старых видов видеоадаптеров.
SCREEN 7 - графика 320 x 200 пикселов, текст 40 x 25, символы 8 x 8.
SCREEN 8 - графика 640 x 200 пикселов, текст 80 x 25, символы 8 x 8.
SCREEN 9 - графика 640 x 350 пикселов, текст 80 x 25 или 80 x 43, символы 8 x 14 или 8 x 8.
SCREEN 10 - графика 640 x 350 пикселов, текст 80 x 25 или 80 x 43, символы 8 x 14 или 8 x 8.
SCREEN 11 - графика 640 x 480 пикселов, текст 80 x 30 или 80 x 60, символы 8 x 16 или 8 x 8.
SCREEN 12 - графика 640 x 480 пикселов, текст 80 x 30 или 80 x 60, символы 8 x 16 или 8 x 8.
SCREEN 13 - графика 320 x 200 пикселов, текст 40 x 25, символы 8 x 8.
В
данных режимах может существовать от одной до нескольких видеостраниц,
что можно проверить экспериментальным путем при помощи оператора PCOPY,
однако их изменение на практике довольно редко используются. Количество
цветов, которые поддерживаются в данных режимах, может несколько
отличаться от количества цветов, указанных в справочной системе.
Пример. 1. SCREEN 9 2. SCREEN 9,,1,0
Первый пример позволяет установить режим дисплея. Как
правило, он и используется. Во втором примере имеются и другие
необязательные параметры, например, второй параметр (в примере
отсутствует, предназначен для вывода на черно-белый монитор, равен 0),
третий параметр устанавливает номер видеостраницы, на которую
производится вывод графики и текста, а четвертый - номер страницы,
которая будет выводиться на экран дисплея.
SEEK - устанавливает или выводит текущее положение в файле произвольного доступа.
Пример. OPEN "Rab.txt" FOR RANDOM AS #1
FOR i1% = 1 TO 5: PUT #1, , i1%: NEXT i1%
SEEK #1, 3: GET #1, , i1%
PRINT "Данное - "; i1%; " следующая запись - "; SEEK(1)
((Данное - 3 следующая запись - 4))
В данном примере открывается файл произвольного доступа под именем «Rab.txt», в который записываются 5 записей со значением, равным номеру записи. Далее по оператору «SEEK»
происходит установка на третью запись, которая и считывается. Так как
запись под номером три была считана, то указатель текущего положения
установится на следующей записи, то есть на четвертой. Последний
оператор выводит при помощи оператора «SEEK» номер текущей записи.
SELECT CASE - позволяет вычислять разные операторы в зависимости от условия.
Пример. m1: a$ = INPUT$(1)
SELECT CASE a$
CASE "1": PRINT " первый шаг "
CASE "2": PRINT " второй шаг "
CASE "в": GOTO m2
CASE ELSE: PRINT " неверный ввод ": GOTO m1
END SELECT: GOTO m1
m2: STOP
В примере в переменную а$
заносится из клавиатуры один символ и затем в зависимости от введенного
символа выполняются определенные операторы. Если введен символ «1», то выполняется оператор «PRINT " первый шаг "», если введен символ «2», то - «PRINT " второй шаг "», если «в», то происходит выход из программы. При введении другого символа, отличного от предыдущих, выполняется оператор «PRINT " неверный ввод "» и снова происходит запрос для ввода нового символа по оператору перехода (GOTO m1).
SGN - возвращает значение -1, если число отрицательное, 0 - если 0 и 1 - если число положительное.
Пример. i1% = 9: PRINT SGN(-5), SGN(0), SGN(i1%) ((-1 0 1))
SHARED - разрешает программам совместный доступ к переменным.
SHELL - позволяет выполнять команды ДОС или командные файлы.
Пример. SHELL "mkdir rab"
Данный пример позволяет создать новую директорию под именем «mkdir rab».
SIN - вычисление синуса. Аргумент задается в радианах.
Пример. PRINT SIN(0), SIN(1) ((0 .841471))
Для
того, чтобы вычислить значение, данное в градусах, нужно перевести его
в радианы, а затем вычислить значение синуса, например, SIN(i1 * 3.1415/180), где i1 - аргумент, заданный в радианах.
SLEEP - задержка выполнения программы.
Примеры. 1. SLEEP 2 2. SLEEP
В
первом примере производится задержка выполнения программы на две
секунды. Во втором примере задержка производится до тех пор, пока не
будет нажата какая-нибудь клавиша.
SOUND - генерирует звук, который воспроизводится громкоговорителем в системном блоке.
Пример. SOUND 65, 6
В
примере производится звук частотой 65 герц в течении 6 тактов. Частота
может быть указана в пределах от 37 до 32767 герц. Продолжительность
звука указывается в тактах, где 18.2 такта равняются одной секунде.
SPACE$ - определяет количество пробелов.
Пример. a$ = "123": PRINT a$ + SPACE$(5) + a$ ((123 123))
В примере переменной «а$» присваивается значение «123» и затем оно два раза выводится на экран, между которыми находится пять пробелов.
SPC - указывает количество пробелов для вывода на экран.
Пример. a$ = "123": PRINT a$; SPC(5); a$ ((123 123))
Данный
пример выполняет те же действия, что и в предыдущем операторе. Однако,
он работает только для вывода пробелов на экран, в то же время оператор
SPACE$ позволяет присваивать символьным переменным определенное число пробелов. Таким образом оператор SPACE$ имеет большие возможности, чем оператор SPC.
SQR - возвращает значение корня квадратного от аргумента.
Пример. PRINT SQR(4), SQR(9) ((2 3))
STATIC - позволяет определить переменные как статические.
Пример.
|