Языки Бейсик
.pdfГлава XII. Бейсик-HELP |
141 |
При вызове функции Вы можете указать, что значение аргумента не должно изменяться функцией. Для этого заключите аргумент в круглые скобки.
Пример:
Программа Cergey(см.гл.12) иллюстрирует вызов процедуры FUNCTION.
См. также DECLARE, DEF FN, EXIT, SHARED, STATIC, SUB
GET-оператор(файл)
GET считывает из файла прямого доступа в буфер или в переменную.
PUT записывает содержимое переменной или буфера в файл прямого доступа.
Формат записи:
GET [#]номер_файла%[,[номер_записи&][,переменная]]
PUT [#]номер_файла%[,[номер_записи&][,переменная]]
ãäå |
|
номер_файла% |
номер открытого файла. |
номер_записи& |
для файлов прямого доступа — номер записи для чтения или |
|
записи. Для двоичных файлов — позиция байта, где начина- |
|
ется чтение или запись. |
переменная |
для GET — переменная, используемая для приема ввода из |
|
файла. Для PUT — переменная, содержащая вывод для запи- |
|
си в файл. Переменной обычно является переменная опреде- |
|
ленного пользователем типа данных. |
Пример:
TYPE TestRecord
Student AS STRING * 20
Score AS SINGLE
END TYPE
DIM MyClass AS TestRecord
OPEN “FINAL.DAT” FOR RANDOM AS #1 LEN = LEN(MyClass)
MyClass.Student = “Олег Дворченко”
MyClass.Score = 99
PUT #1, 1, MyClass
CLOSE #1
OPEN “FINAL.DAT” FOR RANDOM AS #1 LEN = LEN(MyClass)
GET #1, 1, MyClass
PRINT “СТУДЕНТ:”, MyClass.Student
PRINT “Ñ×ÅÒ:”, MyClass.Score
CLOSE #1
KILL “FINAL.DAT”
См. также FIELD, GET, PUT (Графика), LSET, RSET, MKn$, CVn, Функции TYPE
142 |
Языки Бейсик |
GET-оператор(графический)
GET сохраняет графический образ экрана.
PUT выводит на экран образ, сохраненный GET. Формат записи:
GET [STEP](x1!,y1!)-[STEP](x2!,y2!), имя_массива[(индекс%)]
PUT [STEP] (x1!,y1!), имя_массива[(index%)] [,ключ_слово]
ãäå |
|
STEP |
указывает, что координаты задаются относительно текущей |
|
графической позиции курсора. |
(x1!,y1!) |
координаты левого верхнего угла образа, сохраненного GET, |
|
или положение на экране, где PUT выводит образ. |
(x2!,y2!) |
координаты правого нижнего угла сохраненного образа. |
имя_массива |
имя массива, в котором хранится образ. |
См. Массивы Образа Экрана и Совместимость для определения требуемого размера массива.
индекс% |
индекс массива, где начинается хранение образа. |
|
ключ_слово |
ключевое слово, обозначающее как отображается образ: |
|
|
|
|
Ключевое сло- |
Действие |
|
âî |
|
|
|
|
|
|
|
|
AND |
|
Объединяет сохраненный образ с существующим образом. |
|
|
|
OR |
|
Накладывает сохраненный образ на существующий образ. |
|
|
|
PSET |
|
Рисует сохраненный образ, стирая существующий образ. |
|
|
|
PRESET |
|
Рисует сохраненный образ в реверсивном цвете, стирая су- |
|
ществующий образ. |
|
|
|
|
XOR |
|
Рисует сохраненный образ или стирает ранее нарисованный |
|
образ,храня при этом фоновые эффекты мультипликации. |
|
|
|
|
|
|
|
Оператор PUT всегда должен выполняться в том же режиме экрана, в котором использовался оператор GET для сохранения образа или в совместимом режиме.
Используйте число бит-на-пиксел-на-плоскость число плоскостей для определения необходимого размера массива, хранящего графический образ экрана. Кроме того, число бит-на-пиксел-на-плоскость и число плоскостей вместе с разрешением по горизонтали определяют, какие режимы экрана являются совместимыми:
|
Число |
Число плос- |
Разрешение |
Режим экрана |
бит-на-пиксел-на |
по горизонт. |
|
|
плоскость |
костей |
(в пикселах) |
|
|
||
|
|
|
|
1 |
2 |
1 |
320 |
|
|
|
|
2, 4, 11 |
1 |
1 |
640 |
|
|
|
|
3 |
1 |
1 |
720 |
|
|
|
|
7 |
1 |
4 |
320 |
|
|
|
|
|
|
|
|
Глава XII. Бейсик-HELP |
|
|
143 |
|
|
|
|
|
Число |
Число плос- |
Разрешение |
Режим экрана |
бит-на-пиксел-на |
по горизонт. |
|
|
плоскость |
костей |
(в пикселах) |
|
|
||
|
|
|
|
8, 9 (> 64K видеопамяти), 12 |
1 |
4 |
640 |
|
|
|
|
9(64K видеопамяти), 10 |
1 |
2 |
640 |
|
|
|
|
13 |
8 |
1 |
320 |
|
|
|
|
|
|
|
|
Следующая формула дает требуемый размер в байтах для массива, используемого для хранения образа:
size% = 4 + INT(((PMAP (x2!, 0) — PMAP (x1!, 0) + 1) * (bits-per-pixel-per-plane%) + 7) / 8) * planes% * (PMAP (y2!, 1) — PMAP (y1!, 1) + 1)
ãäå
bits-per-pixel-per-plane% число бит-на-пиксел-на-плоскость planes% число плоскостей
Операции GET и PUT совместимы в режимах экрана, имеющих одинаковое разрешение по горизонтали и число бит-на-пиксель-на-плоскость и число плоскостей.
Например, режимы экрана 2, 4 и 11 совместимы; режимы экрана 8 и 12 также совместимы.
Пример:
'Для выполнения этого примера нужен цветной графический адаптер. SCREEN 1
DIM Box%(1 TO 200)
x1% = 0: x2% = 10: y1% = 0: y2% = 10
LINE (x1%, y1%)-(x2%, y2%), 2, BF GET (x1%, y1%)-(x2%, y2%), Box%
DO
PUT (x1%, y1%), Box%, XOR x1% = RND * 300
y1% = RND * 180
PUT (x1%, y1%), Box% LOOP WHILE INKEY$ = ““
GOSUB-оператор
Операторы GOSUB и RETURN обеспечивают переход в подпрограмму и возврат из нее.
Формат записи:
GOSUB строка1
.
.
.
RETURN [строка2]
144 |
Языки Бейсик |
ãäå
строка1 Метка или номер первой строки подпрограммы.
строка2 Метка или номер строки, в которую возвращается подпрограмма.
Если Вы не указываете метку или номер строки для RETURN, то выполнение программы продолжится с оператора, стоящего за GOSUB (при вызове подпрограммы) или там, где произошло событие (при обработке событий).
Смотрите ключевое слово “ON” для информации об операторах обработки событий.
Операторы SUB и CALL представляют собой более удобную альтернативу для подпрограмм GOSUB.
Пример:
FOR i% = 1 TO 20
GOSUB Square
NEXT i%
END
Square:
PRINT i%, i% * i%
RETURN
См. также CALL, ON Ключевое слово, ON...GOSUB, SUB
GOTO-оператор
Выполняет переход в указанную строку.
Формат записи:
GOTO строка
где строка метка или номер следующей выполняемой строки.
Операторы DO...LOOP, SELECT CASE, IF...THEN...ELSE, SUB и FUNCTION предоставляют более удобный способ контроля хода Вашей программы.
GOTO также используется в качестве ключевого слова в операторе ON ERROR и IF GOTO.
Ñì. |
также DO...LOOP, FUNCTION, IF...THEN...ELSE, ON ERROR, |
ON... |
GOTO, SELECT CASE, SUB |
HEX-функция
HEX$ возвращает шестнадцатиричное представление числа.
OCT$ возвращает восьмеричное представление числа.
Формат записи:
HEX$(числ_выражение&)
OCT$(числ_выражение&)
Глава XII. Бейсик-HELP |
145 |
ãäå
числ_выражение& Любое числовое выражение. Выражение округляется до целого или длинного целого перед оценкой.
Пример:
INPUT x
a$ = HEX$ (x)
b$ = OCT$ (x)
PRINT x; “ равно “;a$;” в шестнадцат. и “; b$;” в восьм. системах.”
IF-оператор
Выполняет оператор или блок операторов в зависимости от указанных условий. Формат записи:
1) IF условие1 THEN [блок_операторов-1]
[ELSEIF условие2 THEN [блок_ операторов-2]]...
[ELSE
[блок операторов-n]] END IF
èëè
2)IF условие THEN операторы [ELSE операторы]
3)IF условие GOTO метка
ãäå |
|
условие1 |
любое выражение, которое может быть оценено как |
условие2 |
истинное (не-ноль) или ложное (ноль). |
блок_операторов-1 один или несколько операторов в одной или |
|
блок_операторов-2 |
нескольких строках. |
блок_операторов-n один или несколько операторов, разделенных двоето-
|
чиями. |
метка |
метка оператора Бейсик, на который передается управление. |
Пример:
INPUT “1 èëè 2? “, i%
IF i% = 1 OR i% = 2 THEN
PRINT “OK”
ELSE
PRINT “Вне диапазона”
END IF
См. также ON...GOSUB, ON...GOTO, SELECT CASE
IMP-ключевое слово
Знак булевой операции импликация См. ключевое слово AND
146 |
Языки Бейсик |
INKEY$-оператор
Считывает символ от клавиатуры.
Формат записи:
INKEY$
INKEY$ возвращает нулевую строку символов, если нет символа для возврата.
Для стандартных клавиш INKEY$ возвращает 1-байтовую строку символов, содержащую считанный символ.
Для расширенных клавиш INKEY$ возвращает 2-байтовую строку символов, состоящую из символа нуля (ASCII 0) и скан-кода клавиатуры.
Пример:
PRINT “Для выхода нажмите Esc...”
DO: LOOP UNTIL INKEY$ = CHR$(27) '27 — ýòî ASCII êîä äëÿ Esc.
См.также Скан-коды клавиатуры
INP-оператор
INP возвращает байт, считанный с аппаратного порта ввода/вывода.
OUT посылает байт в аппаратный порт ввода/вывода.
Формат записи:
INP(port%)
OUT port%, data%
ãäå |
|
port% |
Число в пределах от 0 до 65 535, определяющее порт. |
data% |
Числовое выражение в пределах от 0 до 255, посылаемое в порт. |
Пример:
x% = INP(&H3FC) 'Считывает Управляющий Регистр Модема COM1.
OUT &H3FC, (x% XOR 1) 'Изменяет бит Готовности Данных
‘Терминала.
См.также WAIT
INPUT-оператор
INPUT считывает входные данные от клавиатуры или из файла.
LINE INPUT считывает строку, содержащую до 255 символов, от клавиатуры или из файла.
Формат записи:
INPUT [;] [“приглашение”{; | ,}] список переменных LINE INPUT [;] [“приглашение”;] переменная$
INPUT #номер файла%, список переменных
LINE INPUT #номер файла%, переменная$
Глава XII. Бейсик-HELP |
147 |
|
ãäå |
|
|
приглашение |
необязательная строка, отображаемая на экране перед вво- |
|
|
дом пользователем данных. Точка с запятой, стоящая сразу |
|
|
после приглашения, добавляет знак вопроса в строку при- |
|
|
глашения. |
|
список переменных одна или несколько переменных, разделенных запятыми, в
|
которых хранятся данные, введенные от клавиатуры или |
|
считанные из файла. Имя переменной может состоять из 40 |
|
символов и должно начинаться с буквы. Допустимыми яв- |
|
ляются символы A,a-Z,z, 0-9 и точка (.). |
переменная$ |
хранитстрокусимволов,введенныхотклавиатурыилисчи- |
|
танных из файла. |
номер файла% |
номер открытого файла. |
INPUT использует запятую для разделения записей.
LINE INPUT считывает все символы до символа возврата каретки.
При вводе от клавиатуры точка с запятой, стоящая сразу после INPUT, оставляет курсор в той же строке по нажатии пользователем клавиши Enter.
Пример:
CLS
OPEN “СПИСОК” FOR OUTPUT AS #1
DO
INPUT “ ИМЯ: “, name$ 'Считывает ввод от клавиатуры.
INPUT “ ВОЗРАСТ: “, age$
WRITE #1, name$, age$
INPUT “Продолжить”; R$
LOOP WHILE UCASE$(R$) = “Ä”
CLOSE #1
'Просмотр файла.
OPEN “СПИСОК” FOR INPUT AS #1
CLS
PRINT “Записи в файле:”: PRINT
DO WHILE NOT EOF(1)
LINE INPUT #1, REC$ 'Считывает записи из файла.
PRINT REC$ 'Печатает записи на экране.
LOOP CLOSE #1
KILL “СПИСОК”
См.также INKEY$, INPUT$, OPEN Режимы файла
INPUT$-функция
Возвращает строку символов, считанных из указанного файла. Формат записи:
INPUT$(n[,[#]номер_файла%])
ãäå
148 |
Языки Бейсик |
n |
число символов (байтов) для чтения. |
номер_файла% |
номер открытого файла. Если номер_файла% опущен, IN- |
|
PUT$ считывает с клавиатуры. |
Пример:
OPEN “TEST.DAT” FOR OUTPUT AS #1
PRINT #1, “Текст”
CLOSE
OPEN “TEST.DAT” FOR INPUT AS #1
PRINT INPUT$(3, 1) 'Печатает первые три символа
CLOSE
См. также INPUT, LINE INPUT
INSTR-функция
Возвращает позицию первого обнаружения строки в другой строке.
Формат записи:
INSTR([начало%,]строк_выражение1$,строк_выражение2$)
ãäå
начало% устанавливаетпозициюсимвола,откуданачинаетсяпоиск. Еслиначало%опущено,INSTRначинаетпоискспозиции1.
строк_выражение1$ Строка, которую ищут. строк_выражение2$ Строка, в которой ищут.
Пример:
a$ = “IBM DOS QBasic”
PRINT “Позиция строки =“; INSTR(1, a$, “QBasic”)
См. также LEFT$, RIGHT$, LEN, MID$
INTEGER-ключевое слово
Указываеттипданных(целое)дляпеременныхвоператорахописанияивсписке параметров.
Ñì. DOUBLE
См. также AS, COMMON, DECLARE, DEF FN, DIM, REDIM, FUNCTION, SHARED, STATIC, SUB, TYPE
IOCTL-оператор
IOCTL посылает управляющую строку драйверу устройства.
IOCTL$ возвращает информацию о текущем состоянии драйвера устройства.
Формат записи:
IOCTL [#]номер_файла%, строка$
IOCTL$([#]номер_файла%)
Глава XII. Бейсик-HELP |
149 |
|
ãäå |
|
|
номер_файла% |
номероткрытогоустройства. |
|
строка$ |
управляющаястрока,посылаемаявустройство. |
|
Управляющая строка IOCTL и информация, возвращаемая IOCTL$, зависят от драйвера устройства. Информацию об управляющей строке IOCTL и том, что возвращаетIOCTL$,смотритевдокументациинадрайверустройства.
IOCTL$-функция
СмIOCTL-оператор.
IS-ключевоеслово
Выполняетодинизнесколькихблоковоператороввзависимостиотзначениявыражения.
SELECT CASE тест_выражение CASE список_выражений1 [блок_операторов-1] [CASE список_выражений2 [блок_операторов-2]]...
[CASE ELSE [блок_операторов-n]] END SELECT
ãäå
тест_выражение Любоечисловоеилистроковоевыражение. список_выражений1Одноилинескольковыраженийдлясравнениястест_вырасписок_выражений2жением. В выражении ключевое слово IS должно стоять пе-
редлюбымзнакомотношения.
блок_операторов-1 Один или несколько операторов в одной или нескольких блок_операторов-2 строках.
блок_операторов-n
Аргументыспискавыражениймогутприниматьлюбуюизследующихформили ихкомбинациюидолжныразделятьсязапятыми:
выражение[,выражение]...
выражениеTOвыражение
ISоператор_отношениявыражение
ãäå |
|
выражение |
Любое числовое или строковое выражение, совместимое с |
|
тест_выражением. |
знак_отношения Одинизследующихзнаковотношения:<,<=,>,>=,<>или=.
Пример:
INPUT “Введите уровень риска (1-5): “, Total
SELECT CASE Total
150 |
Языки Бейсик |
CASE IS >= 5
PRINT “Максимальный риск, шансов на возвращение практически нет.” PRINT “Сходите в нотариальную контору.”
CASE 2 TO 4
PRINT “Высокий риск, шансов на возвращение немного.” PRINT “Проверьте снаряжение и припасы.”
CASE 1
PRINT “Риск отсутствует, возврат гарантирован.” PRINT “В Вас отсутствует дух авантюризма.”
END SELECT
См. также IF...THEN...ELSE
KEY-оператор(отображение)
Присваивает клавише строку символов и может отображать значения клавиш. Формат записи:
KEY клавиша%, символьное_выражение$
KEY LIST
KEY ON
KEY OFF
ãäå |
|
клавиша% |
номер функциональной клавиши. Используйте цифры |
|
от 1 до 10 для функциональных клавиш от F1 до F10. |
|
Используйте 30 и 31 для функциональных клавиш F11 и |
|
F12 на расширенной клавиатуре. |
символьное_выражение$ |
Строка длиной до 15 символов, которая отображается |
|
при нажатии функциональной клавиши. |
LIST |
Отображает установки для каждой клавиши. |
ON |
Включает строку отображения функциональных клавиш. |
OFF |
Выключает строку отображения функциональных кла- |
|
âèø. |
Пример:
KEY 4, “MENU” + CHR$ (13)
KEY LIST
KEY 4, ““
KEY LIST
См.также KEY, ON KEY(Отслеживание событий)
KEY-оператор(отслеживание)
KEY включает, выключает или приостанавливает отслеживание событий для клавиш.
При включенном отслеживании событий ON KEY обращается к подпрограмме каждый раз при нажатии клавиши.
Формат записи:
KEY(n%) ON
KEY(n%) OFF
