Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Языки Бейсик

.pdf
Скачиваний:
0
Добавлен:
11.08.2026
Размер:
622 Кб
Скачать

Глава 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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]