программирование на языке бейсик

 

LOC - возврат текущей позиции в файле.

Пример. OPEN "Rab.dat" FOR RANDOM AS #1

FOR i1% = 2 TO 10 STEP 2

PUT #1, , i1%

NEXT i1%

FOR i1% = 1 TO 5

GET #1, i1%, i2%

PRINT " Данное - "; i2%; " Текущая запись - "; LOC(1)

NEXT i1%

В первой строчке программы открывается файл произвольного доступа под именем «Rab.dat». Далее в него в пять первых записей заносятся четные числа, в запись под номером 1 - значение 2, в запись 2 - 4, 3 - 6, 4 - 8, 5 - 10. Следующие операторы считывают данные из записи под номером 1, 2 …5 и выводят их на экран вместе с номером текущего положения в файле.

LOCATE - устанавливает курсор в текстовом режиме на определенное положение на экране.

Пример. LOCATE 10, 40

PRINT " Пробная печать "

LOCATE 11, 40, 1, 1, 14

Первый оператор устанавливает курсор на 10й строке, 40й столбец. Далее с этой позиции происходит печать текста «Пробная печать». Третий оператор устанавливает курсор на 11 строке, 40 столбце, делает курсор видимым (0 - невидимый), причем курсор будет выведен на всю позицию знакоместа, то есть в виде прямоугольника (1, 14). Для того, чтобы вывести курсор как символ подчеркивания, следует указать эти параметры как «13, 14», а чтобы он занимал верхнюю часть знакоместа - «1, 2».

LOCK - запрет доступа к файлам при работе в сети.

LOF - возвращает длину файла в байтах.

Пример. OPEN "Rab.txt" FOR INPUT AS #1

PRINT LOF(1) ((29))

LOG - возврат значения натурального логарифма.

Пример. PRINT LOG(1), LOG(5) ((0 1.609438))

LPOS - возвращает количество символов, посланных на принтер со времени последнего сигнала возврата каретки (переход на следующую строчку).

Пример. LPRINT " 123 ",

PRINT LPOS(1) ((15))

В первой строчке на принтер выводится некоторое значение, состоящее из пробела, символов «123» и пробела. Так как далее находится символ «,», то следующей позицией будет позиция номер 15. Если указать вместо запятой символ «;», то выведется значение 6. В операторе LPOS(1) указана единица, что обозначает номер параллельного порта, а именно: LPT1.

LPRINT - вывод информации на принтер. Данный оператор по синтаксису сходен с оператором PRINT для вывода на экран дисплея (см. оператор PRINT).

LPRINT USING - вывод форматированной информации на принтер. Данный оператор по синтаксису сходен с оператором PRINT USING для вывода на экран дисплея (см. оператор PRINT USING).

LSET - занесение значений в поле, образованное оператором FIELD (пример см. в описании оператора FIELD). Кроме того, производит перенос значения из одной переменной в другую, как это показано на примере ниже.

Пример. a1$ = "123456": a2$ = "78": LSET a2$ = a1$

PRINT LEN(a2$), a1$, a2$ ((2 123456 12))

В данном примере переменная а2$ принимает значение «12» потому, что ее длина до операции присвоения была равна двум (два символа: «78»), поэтому оператор «LSET» присваивает значение этой переменной в виде двух символов из переменной а1$: «12».

LTRIM$ - убирает лидирующие (с левого края) пробелы.

Пример. a1$ = " 123456": a2$ = "7 8"

PRINT "=="; LTRIM$(a1$); "=="; LTRIM$(a2$) ((==123456==7 8))

Как видно из примера, убираются только пробелы, находящиеся слева от текста.

MID$ - замена символов в символьной переменной.

Пример. a1$ = "Моя первая программа "

PRINT MID$(a1$, 5, 16)

MID$(a1$, 5) = "вторая ": PRINT a1$

((первая программа))

((Моя вторая программа))

 

В данном примере во второй строчке происходит печать переменной, начиная с 5й позиции, всего 16 символов. В третьей строке происходит замена текста: «Моя первая программа» на текст «Моя вторая программа», при котором меняется середина текста, начиная с 5й позиции.

MKD$, MKI$, MKL$ и MKS$ - упаковка числовых данных, которые могут использоваться в поле FIELD. Обратное их преобразование происходит при помощи команд: CVD, CVI, CVL и CVS. (пример см. в описании оператора CVI).

MKSMBF$ и MKDMBF$ - упаковка числовых данных. Обратное их преобразование происходит при помощи команд: CVSMBF и CVDMBF (пример см. в описании оператора CVSMBF).

MRDIR - создание новой директории.

Пример. 1. MKDIR "rab2" 2. a$ = "c:\zbook\rab1": MKDIR a$

В первом примере создается директория с именем «rab2» в текущей директории, а во втором создается новая директория, путь которой явно указан. Причем этот путь заносится в переменную, которая является аргументом оператора «MKDIR».

MOD - возвращает остаток от деления двух чисел.

Пример. PRINT 5 MOD 2, 2 MOD 5, 2.2 MOD 5, 5 MOD 2.2 ((1 2 2 1))

NAME - переименование директории.

Пример. MKDIR "rab": NAME "rab" AS "rab1"

В примере сначала в текущей директории образуется поддиректория под именем «Rab», а затем она меняет свое имя на «rab1».

OCT$ - преобразование числа из десятичной системы в восьмеричную.

Пример. i1% = 17: PRINT OCT$(i1%), OCT$(55) ((21 67))

ON ERROR - передача управления подпрограмме для ее обработки в случае ошибки (пример см. ERDEV)

ONGOSUB - вызов подпрограммы по условию.

Пример.

i2% = 3

FOR i1% = 1 TO 2

ON i1% GOSUB sub1, sub2: PRINT i2%,

NEXT i1%

END

sub1: i2% = i2% + 4

RETURN

sub2: i2% = i2% + 10

RETURN


 

((7 17))

В данном примере сначала выполняется подпрограмма «sub1», так как переменная i1% принимает значение 1, затем подпрограмма «sub2», так как переменная i1% в цикле принимает значение 2.

ONGOTO - переход по меткам по условию. Действие данного оператора аналогично оператору: ONGOSUB. Отличие в том, что будет выполняться не подпрограмма, а произойдет переход по метке или номеру программы.

Пример. 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 - позволяет определить переменные как статические.

Пример.

DECLARE SUB aa ()

i1 = 1

aa

aa

END

SUB aa

STATIC i1

i1 = i1 + 2

PRINT i1,

END SUB





((2 4))

 

В примере переменные «i1» в основной программе и подпрограмме разные, так как эта переменная не передается подпрограмме. При первом вызове подпрограммы «аа» переменной «i1» будет назначено значение 0 и после работы подпрограммы оно увеличится на 2, которое и будет выведено на экран дисплея. При втором вхождении в подпрограмму данное значение останется и будет увеличено на 2, станет равным 4 и будет выведено на экран. Если убрать оператор STATIC, то на экран будут выведены значения: ((2 2)), так как переменная «i1» будет перед каждым входом инициализироваться и будет равна нулю.

' $STATIC - определение массива статическим, то есть в процессе выполнения программы нельзя переопределять его размерность.

STICK - возвращает координаты джойстика. Команда «STICK(0)» возвращает координату х первого джойстика, «STICK(1)» - возвращает координату у первого джойстика, «STICK(2)» - возвращает координату х, а «STICK(3)» - координату у второго джойстика. Если присвоить значение какой-либо переменной, например, «i1%=STICK(3)», то переменной «i1%» будет присвоено значение координаты у второго джойстика.

STOP - остановка программы. Если программа приостановила работу, встретив этот оператор, то продолжить работу программы можно, нажав на клавишу F5.

STR$ - преобразование числа в символы.

Пример. i1% = 15: a$ = "--"

a1$ = a$ + STR$(i1%) + a$

PRINT a1$ ((--15--))

В примере переменной «i1%» присвоено значение 15, которое хранится в числовой форме. Далее в переменную «а1$» заносится значение текста «--», потом текста в виде числа и снова текст «--», которое затем выводится на экран.

STRIG - возвращает статус джойстика, а также подключает, приостанавливает выработку состояния его работы. Значения, синтаксис и пример можно посмотреть в справочной системе Бейсика.

STRING$ - выдает повторяющуюся последовательность символов.

Пример. а$=”--“: a1$ = a$ + STRING$(5, "+") + a$: PRINT a1$

((--+++++--))

В указанном примере происходит вывод на печать переменной «a1$», содержимое которой равно два символа тире, пять плюсов и два символа тире. Если указать в операторе «STRING$» не “+”, “+a”, то есть два символа, то будет повторяться все равно один первый символ, а не два.

SUB - определение подпрограммы.

Пример.


DECLARE SUB aa (i1)

i1 = 1

CALL aa(i1)

CALL aa(i1)

END

SUB aa (i1)

i1 = i1 + 2

PRINT i1,

END SUB

((3 5))

     В примере определена подпрограмма «аа», которая имеет один аргумент - переменную «i1». Эта подпрограмма дважды вызывается из основной программы («CALL aa(i1)»). В подпрограмму передается переменная «i1», которая в ней увеличивается на 2 и выводится на экран. Если бы она не передавалась, то эта переменная, несмотря на одно имя, была бы разная в основном теле программы и в подпрограмме и результат был бы другим, как это показано ниже.

DECLARE SUB aa ()

i1 = 1

CALL aa

CALL aa

END

SUB aa

i1 = i1 + 2

PRINT i1,

END SUB

((2 2))

 

В примере переменная «i1» в основной программе и подпрограмме - это разные переменные. Переменная «i1» при входе в подпрограмму будет каждый раз инициализирована, то есть ей будет присвоено значение 0. Для того, чтобы ей сохранить свое значение, можно использовать ключевое слово «STATIC» (см. пример. в описании оператора «STATIC»).

SWAP - обмен значений двух переменных.

Пример. i1% = 1: i5% = 5: PRINT i1%, i5%,

SWAP i1%, i5%: PRINT i1%, i5% ((1 5 5 1))

SYSTEM - по описанию справочной системы: закрытие всех файлов и передача управления операционной системе. На практике эквивалентен оператору END.

TAB - установка позиции печати текста при выводе на экран или принтер.

Пример. PRINT TAB(41); "первая строка": PRINT "вторая строка"

В примере символы «первая строка» выводятся с 41 позиции, а текст «вторая строка» - с первой позиции на следующей строчке.

TAN - вычисление тангенса, в котором аргумент задан в радианах.

Пример. PRINT TAN(1); TAN(0) ((1.557408 0))

TIME$ - вывод и установка текущего времени на компьютере.

Примеры. 1. PRINT TIME$ ((09:00:00)) 2. TIME$ “9:00” 3. a$=”09:00:02”: TIME$=a$

В первом примере на экран выводится значение текущего времени. Во втором примере внутренние часы компьютера устанавливаются на 9 часов. В третьем примере время устанавливается через переменную «a$», в которой оно указывается с точностью до секунд.

TIMER - 1. возвращает количество секунд, пройденных с полуночи. Кроме того, данный оператор используется с оператором RANDOMIZE.

Пример. PRINT TIMER ((32399.99))

В данном примере выведенное значение зависит от текущего времени.

TIMER - 2. позволяет включить, отключить таймер. Команда «TIMER ON» позволяет включить событие, при котором начнет выполняться команда «ON TIMER(n%) GOSUB метка». Команда «TIMER STOP» позволяет приостанавливать событие, связанное с таймером, а команда «TIMER OFF» отключает данное событие. Параметр n% в операторе «ON TIMER(n%) GOSUB метка» определяет, через какое время в секундах будет снова вызвана подпрограмма, на которую указывает метка. Неплохой пример для данного оператора находится в справочной системе языка Бейсик.

TRON, TROFF - производит трассировку работы программы. Отладчик языка Qbasic не поддерживает данные команды на достаточном уровне, поэтому лучше воспользоваться другими командами.

TYPE - определяет тип данных.

Пример. RANDOMIZE TIMER

TYPE Card

mast AS STRING * 1

value AS INTEGER

END TYPE

DIM koloda(1 TO 52) AS Card

FOR i1% = 1 TO 13

koloda(i1%).value = i1%: koloda(i1%).mast = "П"

koloda(i1% + 13).value = i1%: koloda(i1% + 13).mast = "К"

koloda(i1% + 26).value = i1%: koloda(i1% + 26).mast = "Б"

koloda(i1% + 39).value = i1%: koloda(i1% + 39).mast = "Ч"

NEXT i1%

i1% = INT(RND * 52) + 1

PRINT i1%, koloda(i1%).mast, koloda(i1%).value ((40 Ч 1))

Результат данного примера: вывод на экран произвольной карты из колоды. В ней сначала инициируется счетчик случайных чисел, а затем определяется пользовательский тип данных под названием «Card», который состоит из двух полей: «mast» - масть карты, содержащая один символ и «value» значение карты, как целое. Предполагается, что значение карты будет от 1 до 12, как обычно туз - 1, двойка - 2,…, король - 12. Далее определяется массив из 52 элементов под названием «koloda», каждый из элементов имеет запись «Card». Приведем пример обращения к элементу данной записи: koloda(5).value, которая обозначает - поле «value» пятого элемента массива. Далее идет заполнение элементов массива, выбирается произвольный элемент от 1 до 52 (в примере сороковой) и его значение выводится на экран дисплея.

UBOUND - выдает номер первого элемента массива.

Пример. DIM a1%(10), a2%(3 TO 7, 5 TO 8)

PRINT UBOUND(a1%, 1), UBOUND(a2%, 1) ((10 7))

В данном примере определено два массива а1% и а2%. Массив а1% имеет одиннадцать элементов: а1%(0), а1%(1), а1%(2)…а1%(10), поэтому максимальный номер, который выводится для этого массива, равен десяти. Массив а2% имеет двойную размерность, первая от 3 до 7, вторая от 5 до 8. На экран выводится максимальный номер по первой размерности, который равен 7.

UCASE$ - переводит символы из маленьких (прописных) в большие (строчные).

Пример. a$ = "THE city Москва",

PRINT a$,: PRINT UCASE$(a$); " оператор UCASE"

((THE city Москва THE CITY Москва оператор UCASE))

Как видно из примера, программа переводит маленькие (прописные) в большие (строчные) символы, однако, к сожалению, только для английских символов. Символы «осква» как были строчными, так ими и остались.

UNLOCK - оператор восстановления доступа к файлам, запрещенный командой «LOCK» при работе в сети компьютеров.

VAL - преобразование числа, находящегося в символьной переменной в численное представление.

Пример. a$ = "151": i1% = VAL(a$)

PRINT i1% + 1 ((152))

В данном примере переменной «i1%» присвоено значение 151, которое хранится в символьной переменной. Далее на экран выводится значение переменной «i1%» на единицу больше.

VARPTR - возвращает адрес смещения переменной.

VARSEG - возвращает адрес сегмента переменной.

VARPTR$ - возвращает адрес строковых данных для операторов DRAW и PLAY (Примеры см. в описании «DRAW» и «PLAY»).

VIEW - определение области графического вывода.

Пример. SCREEN 9

CLS : CIRCLE (20, 20), 10, 2

VIEW (10, 10)-(100, 100), 8, 1

CIRCLE (95, 95), 10, 3

VIEW SCREEN (10, 10)-(50, 50), , 1

CIRCLE (45, 45), 10, 8

В примере вначале производится очистка экрана, затем вывод окружности зеленого цвета. При этом предполагается, что можно выводить фигуру на весь экран по координатам: от (0, 0) до (640, 350). Далее оператор VIEW выводит область на экран, в которую будет производиться вывод графики. Эта область имеет координаты от (10, 10) до (100, 100). Граница области выделена синим цветом (1), а сама область закрашена серым цветом (8). Далее в этой области выводится окружность красного цвета (3), которая не помещается в область вывода, поэтому выводится только дуга. По оператору VIEW SCREEN также устанавливается область вывода, как и в предыдущем операторе, однако, координаты в этой области будут другими. Так, точка с координатами (10, 10) (левый верхний угол области) станет иметь координаты (0, 0), а остальные координаты вычисляются относительно этой начальной точки. При этом координаты правого нижнего угла станут не (50, 50), а (40,40) и вычисляется по формуле: старая координата - координата левого верхнего угла = (50, 50) - (10, 10) = (40, 40).

VIEW PRINT - установка границ для вывода текстовой информации.

Пример. VIEW PRINT 5 TO 10

FOR i1% = 1 TO 10: PRINT i1%: NEXT i1%

В примере устанавливает область вывода текстовой информации с пятой по десятую строчку. Далее в эту область происходит печать десяти первых целых чисел. После того, как будут выведены шесть первых чисел от 1 до 5, число 6 появится внизу области (десятая строчка), а предыдущие числа станут на одну строчку выше, кроме числа «1», которое исчезнет с экрана. То есть произойдет так называемый скроулинг, при котором числа перемещаются на строчку выше. Аналогично для других чисел, больших шести и в результате на экране останутся числа от 6 до 10.

WAIT - приостановление работы программы до тех пор, пока не будет получен определенный сигнал из указанного в операторе порта.

WHILE - выполнение операторов внутри цикла до тех пор, пока условие будет истинным.

Пример. i1% = 1

WHILE i1% < 5

PRINT i1%,: i1% = i1% + 1

WEND ((1 2 3 4 5))

В данном примере цикл выполняется четыре раза до тех пор, пока выполняется условие «i1% < 5». Операторы, которые выполняются в цикле, ограничены ключевыми словами «WHILE» и «WEND».

WIDTH - назначение ширины для вывода на экран, в файл и на принтер.

Примеры. 1 WIDTH 40 2. WIDTH LPRINT 50: FOR i1% = 1 TO 10: LPRINT i1%,: NEXT i1% 3. OPEN "Rab.txt" FOR OUTPUT AS #1: WIDTH #1, 20: FOR i1% = 1 TO 10: PRINT #1, i1%, : NEXT i1%

Первый пример устанавливает ширину экрана дисплея для вывода информации и может устанавливать 40 или 60 столбцов. Второй пример устанавливает ширину вывода на принтер в 50 колонок и выводит первые десять натуральных чисел. Третий пример устанавливает ширину вывода в файл в 20 столбцов и выводит первые десять натуральных чисел.

WINDOW - устанавливает логические координаты для вывода графической информации на экран дисплея.

Пример. SCREEN 9

VIEW (50, 50)-(300, 300), 2, 7

WINDOW SCRREN (-50, -50)-(50, 50)

CIRCLE (0, 0), 45, 0

В примере при помощи оператора VIEW устанавливается область вывода с координатами: (50, 50) - (300, 300). В этой области оператором WINDOW определяются логические координаты: (-50, -50) - (50, 50). То есть точка на экране, которая имеет логические координаты (-50, -50) будет иметь физические координаты (50, 50). Следующий оператор выводит окружность, причем ее центр определяется логической координатой (0, 0), что соответствует физической координате: (100, 100). Оператор WINDOW без аргументов снова устанавливает равенство логических координат физическим.

Если оператор WINDOW изменить на «WINDOW (-50, -50)-(50, 50)» без ключевого слова SCRREN, то логическая координата (-50, -50) будет соответствовать физической: (50, 100), то есть нижнему левому углу, а координата (50, 50) будет соответствовать верхнему правому углу области.

WRITE - вывод данных на экран или в последовательный файл.

Примеры. 1. i1%=5: WRITE i1%, 6, 7, "---", 8 2. OPEN "Rab.txt" FOR OUTPUT AS #1: i1% = 5: WRITE #1, i1%, 6, 7, "---", 8 ((5,6,7,"---",8))

Первый пример позволяет выводить данные на экран, а второй - в файл с именем «Rab.txt», причем данные выводятся несколько иначе, чем по оператору PRINT. Таким образом текст выводится в кавычках.


(переход на оглавление)

 

О↙О↘О↙О↘О↙О↘О↙О↘О↙О↘О↙О↘О↙О↘О↙О↘О











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

Запрещается использовать материалы для получения личной финансовой выгоды, а также размещать на сайтах в интернете.


 
 
 
Яндекс.Метрика


Каталог@MAIL.RU - каталог ресурсов интернет