|
Часть 10
Оператор INCR
-----------------------------------------------------------------
Назначение INCR увеличивает значение переменной
Синтаксис INCR числовая переменная [, приращение ]
Комментарий Приращение - необязательное числовое выражение,
эначение которого прибавляется к переменной.
Оператор INCR дает простую возможность увеличить
значение переменной, не используя оператор
присваивания.
Отличия В интерпретаторе БЕЙСИК такого оператора нет.
См. также DECR
Пример I% = -15 'инициализация переменных-счетчиков
J% = -500
WHILE I% < 0
PRINT I%,J% 'вывод значений счетчиков
INCR I% 'эначение увеличивается на 1
INCR J%, 5 'эначение увеличивается на 5
WEND
END 'конец программы
Функция INKEY$
-----------------------------------------------------------------
Назначение INKEY$ считывает коды клавиш клавиатуры без воспро-
изведения на экране их значений.
Синтаксис s$ = INKEY$
Комментарий INKEY$ присваивает переменной s$ строку из 0, 1
или 2 символов, отражающую состояние буфера
клавиатуры.
Пустая строка (LEN(s$)=0) означает, что буфер
пуст.
Если длина строки равна 1 (LEN(s$)=1), то строка
содержит код ASCII клавиши, которая была нажата
последней; например, значение I3 для клавишы Enter,
(наэываемой также "возвратом каретки", 65 для кла-
виши A.
Если длина строки равна 2 (LEN(s$)=2), то пос-
ледней была нажата клавиша расширенной клавиатуры,
значение которой не входит в стандартный код ASCII;
например, одна из клавиш HOME, PgDn или стрелки.
Первый символ такой строки 0, второй - вспомога-
тельный код. (Для определения нажатой клавиши см.
таблицу расширенных кодов ASCII в приложении F).
Если нажата функциональная клавиша, определяемая
пользователем (см. оператор KEY), INKEY$ возвращает
строку (по одному символу при каждом вызове функ-
ции), которая соответствует последовательности сим-
волов в определении функциональной клавиши.
Функция INKEY предоставляет надежный способ вво-
да пользователем данных в программу без
ограничений, имеющихся в операторе INPUT. INKEY$
возвращает результат не ожидая нажатия очредного
символа, и поэтому обычно используется в цикле в
подпрограмме низкого уровня для непрерывного конт-
роля и конструирования вводимой строки, проверка
которой выполняется процедурами более высокого
уровня.
INKEY$ пропускает без обработки и вывода на эк-
ран все нажатия клавиш, включая управляющие
(Tab,Enter и BackSpace), за исключением :
- Ctrl-Break - комбинация прерывающая выполнение
программы, кроме тех случаев, когда при компиля-
ции соответствующее прерывание было запрещено;
- Ctrl-Alt-Del - комбинация, вызывающая перезапуск
системы;
- Shift-PrtSc - комбинация, распечатывающая содер-
жимое экрана.
См. также INSTAT
Пример PRINT "Введите несколько символов и затем нажмите
:"
'чтение и воспроизведение кодов клавиш
WHILE Char$ <> CHR$(13)
Char$ = INKEY$
InputSnring$ = InputString$ + Char$
WEND
PRINT InputSnring$
END 'конец программы
Функция INP
-----------------------------------------------------------------
Назначение INP осуществляет считывание из порта ввода/вывода
Синтаксис y = INP(номер порта)
Комментарий INP считывает один байт из порта ввода/вывода с
заданным номером. Номер порта соответствует
аппаратному порту ввода и может иметь значения от 0
до 65535.
Функция INP полезна при считывании информации о
состоянии различных аппаратных подсистем, таких,
как порт связи.(Описание распределения портов для
имеющейся модели компьютера см. в техническом спра-
вочном руководстве.)
Для вывода в порт ввода/вывода следует использо-
вать оператор OUT
См. также OUT
Пример 'считывая регистр состояния,
'подавляя и пропуская биты управления,
'программа порождает пронзительный звуковой сигнал
'в динамике.
'Из порта 61 (шестнадцатиричное) считывается
'значение
StatusReg% = INP(&H61)
StatusReg% = StatusReg% AND &H00FC
'на считываемое значение накладывается маска
'удлинить звук, чтобы его можно было услышать
FOR J = 1 to 1000
StatusReg%= StatusReg% XOR 2
OUT &H61,StatusReg%
delay .001
NEXT J
END
Оператор INPUT
-----------------------------------------------------------------
Назначение INPUT подсказывает пользователю, что нужно ввести
значение одной или нескольких переменных.
Синтаксис INPUT [;] [текст подсказки {;|,}] список переменных
Комментарий Текст подсказки - это необязательная символьная
константа. Список переменных - одна или несколько
символьных или числовых переменных, разделенных за-
пятыми.
Оператор INPUT ждет, пока пользователь не введет
данные с клавиатуры, и затем присваивает значения
заданным переменным.
Если за текстом подсказки указана точка с запя-
той, ТУКБО БЕЙСИК выводит знак вопроса вслед за
текстом. Для того, чтобы знак вопроса не выводился,
нужно поставить запятую.
Вводимые данные должны соответствовать типам пе-
ременных в операторе INPUT, т.е. нечисловые данные
недопустимы для числовых переменных. Если типы не
согласованы, ТУРБО БЕЙСИК потребует повторного
ввода даннах. Так, при вводе нецифрового символа
для числовой переменной появится сообщение ? Redo
from start (повторите сначала )
Если оператор INPUT содержит несколько перемен-
ных, данные для них должны отделяться друг от друга
запятыми.
Если непосредственно за ключевым словом INPUT
указана точка с запятой, то при нажатии клавиши
Enter после окончания ввода курсор останется в той
же строке. В противном случае на дисплее будут вы-
полнены возврат каретки и перевод строки.
Отличие В ТУРБО БЕЙСИКе данные, вводимые по запросу опе-
ратора INPUT, могут разделяться запятыми или
пробелами. В интерпретаторе BASIC требуется, чтобы
входные данные разделялись запятыми.
Пример INPUT "Введите Ваш возраст и вес: ", Age, Weight
PRINT USING "Вам ### лет, Ваш вес ###";_
Age, Weight
END 'конец программы
Оператор INPUT #
-----------------------------------------------------------------
Назначение Оператор INPUT # присваивает переменным значения из
последовательного файла
Синтаксис INPUT # номер файла, список переменных
Комментарий Номер файла определяется при открытии файла.
Список переменных - одна или несколько символьных
или числовых переменных, разделенных запятыми.
В качестве файла может использоваться дисковый
файл, последовательный порт (COMn:) или клавиатура
(KYBD:).
Данные в файле должны соответствовать типам пе-
ременных в операторе INPUT #. Значения в файле
задаются в том же виде, что и для оператора INPUT,
то есть разделяются запятыми, последним указывается
возврат каретки. Файлы такого вида создаются с по-
мощью оператора WRITE #.
См. также WRITE #
Пример SUB Makefile
'Открытие последовательного файла INPUT # для вывода
'Запись в файл строк, состоящих из данных различных
'типов, с помощью оператора WRITE #
'файлу переменных присваивается значение #1
OPEN "INPUT#.LTA" 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#.LTA" FOR INPUT AS #1
StringVariable$ = " " 'определение и
Integer$ = 0 'инициализация
FloatingPoint! = 0 'переменных
'чтение строки текста из последовательного файла
INPUT# 1, StringVariable$, Integer$, FloatingPoint!
PRINT StringVariable$, Integer$, FloatingPoint!
CLOSE #1 'закрытие файла переменных
END SUB 'конец процедуры Readfile
CALL MakeFile
CALL ReadFile
END 'конец программы
Функция INPUT$
----------------------------------------------------------------
Назначение INPUT$ читает заданное число символов с клавиатуры
или из файла
Синтаксис s$=INPUT$(n [,[#] номер-файла])
Комментарий n - число читаемых символов, номер-файла указы-
вает файл, из которого выполняется чтение. Если
номер файла опущен, символы читаются с клавиатуры.
При чтении с клавиатуры символы на экране не
воспроизводятся, а передаются непосредственно в
строку s$. Основное достоинство функции INPUT$, так
же, как и других способов чтения из файлов или с
клавиатуры, состоит в возможности чтения любых
символов, в том числе управляющих. Более гибкие
возможности дают файлы типа BINARY.
Примечание:
Некоторые клавиши и их комбинации (например,
функциональные клавиши или клавиши управления
курсором) не записываются в стандартном коде ASCII.
При нажатии таких клавиш INPUT$ генерирует пустую
строку CHR$(0); этого ограничения не имеет функция
INKEY$.
См. также INKEY$
Пример OPEN "INPUT#.DTA" FOR INPUT AS #1
S$ = INPUT$(15, #1)
PRINT S$
CLOSE #1
END
Функция INSTAT
----------------------------------------------------------------
Назначение INSTAT определяет состояние клавиатуры
Синтаксис y = INSTAT
Комментарий INSTAT возвращает информацию о состоянии клавиа-
туры. При нажатии произвольной клавиши переменной
y присваивается значение -1, в противном случае 0.
INSTAT не очищает буфер, т.е., если функция приняла
значение TRUE (-1), оно не изменится до тех пор,
пока строка не будет перемещена с помощью INKEY$
или другой команды чтения с клавиатуры.
См. также INKEY$
Пример WHILE NOT INSTAT ' проверка нажатия клавиши
LOCATE 1,1
PRINT "нажмите клавишу"
WEND
PRINT INKEY$ ' вывод нажатой клавиши
END ' конец программы
Функция INSTR
-----------------------------------------------------------------
Назначение INSTR ищет в исходной строке заданную подстроку
Синтаксис y = INSTR ([n,] исходная-строка, искомая-строка)
Комментарий n - целочисленное выражение, значение которого
от 1 до 32767, исходная-строка и искомая-строка -
символьные переменные, выражения или константы.
INSTR определяет номер позиции искомой-строки в
исходной-строке. Если в исходной строке нет ис-
комой подстроки, INSTR возвращает 0. Если задан
необязательный параметр n, поиск начинается с n-ой
позиции исходной строки.
Если искомая строка пустая (длины 0), INSTR
возвращает 1 или n, если оно указано.
INSTR контекстно зависима.
Пример ' ввод данных пользователя
LINE INPUT "Введите, пожалуйста, строку:";DummyStr$
PRINT "Теперь введите подстроку, имеющуюся";
INPUT " в первой строке:";SubStr$
' вывод номера позиции подстроки
PRINT USING "Строка '&' начинается с";_
SubStr$;
PRINT USING "позиции ### в строке &";_
INSTR(1,DummyStr$,Substr$),DummyStr$
END 'конец программы
Функция INT
-----------------------------------------------------------------
Назначение INT преобразует числовое выражение в целое число
Синтаксис y = INT (числовое выражение)
Комментарий INT возвращает наибольшее целое, которое меньше
или равно числовому выражению.
См. также CEIL CINT FIX
Пример PRINT "x","INT(x)"
PRINT
FOR N=1 TO 6
READ x#
PRINT x#,INT(x#)
NEXT N
DATA 3.1,-3.1,3.5,-3.5,3.9,-3.9
END
Оператор IOCTL, функция IOCTL$
-----------------------------------------------------------------
Назначение IOCTL и IOCTL$ осуществляют связь с драйвером уст-
ройства
Синтаксиc Оператор|
IOCTL [#] номер-файла, символьное-выражение
Функция|
s$ = IOCTL$ [#] номер-файла
Комментарий Номер-файла относится к нужному драйверу устрой-
ства, символьное-выражение содержит информацию, по-
сылаемую драйверу устройства. Формат символьных
данных, передаваемых или получаемых от драйвера
зависит от конкретного драйвера.
IOCTL передает данные драйверу устройства.
Функция IOCTL$ принимает данные от драйвера.
Для более детальной информации, см. раздел о
драйвере устройства в справочном руководстве по DOS
IBM.
Оператор KEY
-----------------------------------------------------------------
Назначение KEY устанавливает и воспроизводит назначение функ-
циональных клавиш и определяет значения прерываний
по клавишам
Синтаксис KEY {ON | OFF | LIST}
KEY n,символьное выражение
KEY n,CHR$(код состояния регистров)+CHR$(скэн-код)
Комментарий KEY ON и KEY OFF включают и выключают воспроиз-
ведение функциональных клавиш в нижней строке эк-
рана. Обратите внимание, что выключение воспроиз-
ведения не влияет на определение функциональных
клавиш. KEY LIST выводит на экран текущие определе-
ния функциональных клавиш. При выводе значений
функциональных клавиш 25-ая строка экрана никогда
не перемещается, и попытка поместить в нее курсор
(с помощью оператора LOCATE) является неверным
вызовом функции (ошибка исполнения 5).
KEY n,символьное-выражение - устанавливает зна-
чение функциональной клавиши n эквивалентной
символьному выражению, длина которого не не должна
превышать 15 символов (в строке вывода состояния
воспроизводятся только первые 6). Для того чтобы
отменить значение функциональной клавиши следует
присвоить ей пустую строку. Возврат каретки
(CHR$(13)) в строке воспроизводится как маленькая
левая стрелка.
KEY n,CHR$(код состояния регистров)+CHR$(скэн-код)
связывает клавишу или их комбинацию с числом (n, от
15 до 20) для организации прерываний с помощью
последующих операторов ON KEY и KEY(n). Формат
имеет следующий вид| - код состояния регистров -
целочисленное выражение от 0 до 255, которое
управляет срабатыванием прерывания в зависимости от
состояния клавиш Ctrl, Caps Lock, Num Lock, Alt и
обеих клавиш SHIFT. скэн-код (порядковый номер
клавиши) - числовое значение от 1 до 83, задающее
согласно таблице скэн-кодов в приложении F клавишу,
которая вызывает прерывание. Обратите внимание, что
прерывание для клавиш с номерами от 59 -
68,72,75,77 и 80 (функциональные клавиши и клавиши
управления курсором) уже определены, и повторное
определение их с помощью оператора KEY не имеет
смысла.
Для кода состояния регистра следует иметь ввиду
следующую таблицу:
-----------------------------------------------------------
клавиша,модифиц.регистр |двоичное значение|16-ричн.значение
-----------------------------------------------------------
Right Shift | 0000 0001 | 01
Left Shift | 0000 0010 | 02
Gtrl | 0000 0100 | 04
Alt | 0000 1000 | 08
Num Lock | 0010 0000 | 20
Caps Lock | 0100 0000 | 40
-----------------------------------------------------------
Предположим, например, что мы хотим, чтобы кла-
виши SHIFT - ESCAPE вызывали прерывание, т.е., мы
хотим, чтобы, когда бы ни были одновременно нажаты
клавиши ESCAPE и SHIFT, управление передавалось
некоторой подпрограмме. Первоначально следует
построить маску кода состояния регистра. Если
необходимо, чтобы распознавались оба SHIFT-ключа,
маски складываются: 01H+02H=03H. Далее, по таблице
скэн-кодов в приложении F можно определить, что
скэн-код клавиши ESC равен 1. Следующий оператор
сообщает о наших намерениях ТУРБО БЕЙСИКУ
KEY 15, CHR$(& 03)+CHR$(1)
При этом n равно 15, поскольку первые 14
значений уже отведены функциональным клавишам и
клавишам управления курсором. Затем определяется
подпрограмма обработки прерывания, вызываемая
всякий раз при нажатии клавиши SHIFT-ESC:
ON KEY (15) GOSUB ShiftEscape
где ShiftEscape - метка начала подпрограммы
обработки прерывания.
Наконец, следует включить клавишное прерывание
15 с помощью оператора:
KEY (15) ON
См.также KEY (15) ON KEY
Пример ' В этой программе показано использование
' операторов KEY ON/OFF и символьных
' выражений KEY n.
' Выключить воспроизведение функциональных клавиш
KEY OFF
' Присвоить функциональным клавишам символь-
' ные выражения
FOR N%=1 TO 10
READ A$
KEY N%,A$+CHR$(13)
NEXT N%
KEY LIST ' Воспроизведение значений функциональных
' клавиш
' Включить воспроизведение функциональных клавиш
KEY ON
' Ждать, пока пользователь не нажмет клавишу
WHILE NOT INSTAT
WEND
' Данные, используемые оператором READ
DATA Help,Enter,Edit,Change,Report,Print,Setup
DATA DOS, Copy, Quit
END ' конец программы
Оператор KEY(n)
-----------------------------------------------------------------
Назначение KEY(n) включает или выключает прерывание при нажа-
тии заданной клавиши
Синтаксис KEY(n) {ON | OFF | STOP}
Комментарий n - целочисленное выражение, которое указывает
на клавишу, вызывающую прерывание, в соответствии
со следующей таблицей:
----------------------------------------------------
n Клавиша
----------------------------------------------------
1-10 Функциональные клавиши F1 - F10
11 Курсор вверх
12 Курсор влево
13 Курсор вправо
14 Курсор вниз
15-25 Клавиши, определяемые в операторе KEY
30 Функциональная клавиша F11
31 Функциональная клавиша F12
----------------------------------------------------
KEY(n) ON включает прерывание по клавише с номе-
ром n. Это означает, что между каждыми двумя опера-
торами выполняется проверка, была ли нажата клавиша
n, и, если была, то управление передается из выпол-
няемой программы в процедуру, заданную для этой
клавиши в операторе KEY.
KEY(n) OFF запрещает прерывание по клавише n.
KEY(n) STOP также запрещает прерывание, но
запоминает все нажатия клавиши n, так, что при
последующем выполнении оператора KEY ON немедленно
возникает прерывание.
См.также $EVENT ON KEY
Пример ' Включение проверки ключа
KEY ON
' Назначение строк клавишам
KEY 1, "Hello"+CHR$(13)
KEY 2, "GoodBye"+CHR$(13)
KEY 10,CHR$(13)
' Определить прервание по клавише F10
' Назначить строку
ON KEY(10) GOSUB GoodBye
' Включить прерывание по F10
KEY(10) ON
' Запрос для пользователя
INPUT "Нажмите F1:";Dummy$
INPUT "Нажмите F2:";Dummy$
PRINT "Теперь нажмите F10..."
' Управление будет передано подпрограмме
' GoodBye
WHILE NOT INSTAT:WEND ' Ожидание клавиши F10
END ' конец программы
GoodBye:
KEY(10) OFF ' Выключение прерывания
' теперь значение F10 вновь будет равно
' символьной строке
PRINT "Нажмите F10 для завершения программы..."
RETURN
Оператор KILL
----------------------------------------------------------------- Назначение KILL удаляет файл (подобно команде DEL DOS)
Синтаксис KILL имя-файла
Комментарий Имя-файла - символьное выражение, которое пред-
ставляет удаляемый файл или файлы и может включать
(или не включать ) маршруты и/или символы шаблонов.
Оператор KILL аналогичен команде DEL (ERASE) в
операционной системе DOS.
Так же, как и DEL, оператор KILL не может
удалять каталоги. Для удаления каталога, после
уничтожения всех входящих в него файлов, следует
использовать RMDIR.
Пример ' обработка простых ошибок
ON ERROR GOTO FileError
' ввод имени файла
INPUT " укажите, пожалуйста, удаляемый файл:",_
FaleName$
' удаление файла
IF FaleName$<>"" THEN
KILL FileName$
END IF
END ' конец программы
FileError: ' сообщение об ошибке
PRINT "ошибка";
PRINT Err " возникла при удалении файла "
END
Функция LBOUND
-----------------------------------------------------------------
Назначение LBOUND возвращает значение нижней границы (наимень-
шего индекса), допустимой для массива заданной
размерности.
Синтаксис LBOUND ( массив(размерность))
Комментарий Массив - имя массива, нижняя граница которого
подлежит определению. Размерность - целое число от
1 до числа измерений массива. Для определения раз-
мера массива вместе с LBOUND следует использовать
UBOUND.
Если диапазон индексов не задан (см.DIM), по
умолчанию нижняя граница равна 0. Нижнюю границу,
установленную по умолчанию,можно переопределить с
помощью оператора OPTION BASE.
См.также DIM OPTION BASE UBOUND
Пример ' задание размерности массива
' с нижней и верхней границами
DIM Array$ (1900:2000,10:20)
' ввести нижнюю границу массива
PRINT " нижняя граница массива размерности 2";_
LBOUND (Array%(2))
END
Функция LCASE$
-----------------------------------------------------------------
Назначение LCASE$ возвращает строку, состоящую только из
строчных букв
Синтаксис s$ = LCASE$ (символьное-выражение)
Комментарий LCASE$ возвращает строку идентичную символьному
выражению, за исключением того, что все заглавные
буквы символьного выражения заменяются на строчные.
См.также UCASE$
Пример PRINT LCASE$("Зачем нужен этот АРБУЗ?")
Функция LEFT$
-----------------------------------------------------------------
Назначение LEFT$ возвращает n левых символов строки
Синтаксис s$ = LEFT$ (символьное - выражение,n)
Комментарий n - целочисленное выражение, задающее число воз-
вращаемых символов символьного-выражения. n должно
быть заключено в диапазоне от 0 до 32767.
LEFT$ возвращает строку, состоящую из n самых
левых символов аргумента. Если n больше или равно
длине символьного выражения, возвращается все сим-
вольное выражение. Если n равно 0, LEFT$ возвращает
пустую строку.
См.также MID$ RIGHT$
Пример PRINT LEFT$ (" Эй, вы там, в космосе! ",5)
Функция LEN
-----------------------------------------------------------------
Назначение LEN возвращает длину строки
Синтаксис y = LEN (символьное - выражение)
Замечания LEN возвращает целое от 0 до 32767, соответству-
ющее числу символов в символьном выражении.
Обратите внимание, что диапазон значений суще-
ственно превышает максимальную длину строки интер-
претатора BASIC, равную 255.
Пример INPUT "Введите строку:",DummyStr$
PRINT USING "Длина строки = ###";_
LEN (DummyStr$)
END ' конец основной программы
Оператор LET
-----------------------------------------------------------------
Назначение LET присваивает переменной значение
Синтаксис [LET] переменная = выражение
Комментарий Переменная может быть символьной или числовой,
тип выражения должен соответствовать типу пере-
менной (т.е. символьные для символьной переменной,
числовое для числовой).
Ключевое слово LET в операторе присваивания не
является обязательным и на практике часто
опускается.
Пример INPUT "Введите строку :", DummyStr$
'с помощью LET присвоить
'значение TempStr$
LET TempStr$ = DummyStr$
PRINT TempStr$,DummyStr$
END
Оператор LINE
-----------------------------------------------------------------
Назначение LINE рисует прямую линию, закрашенный или незакра-
шенный прямоугольник
Синтаксис LINE [(x1,y1)]-(x2,y2) [,[цвет] [,B[F]] [,шаблон]]
Комментарий (x1,y1) и (x2,y2)- координаты двух точек на гра-
фическом экране, которые могут быть заданы либо в
абсолютном, либо в относительном виде. (Для более
детальной информации об абсолютных и относительных
координатах см. главу 4).
Цвет- целочисленное выражение, указывающее цвет
рисуемой линии или прямо-угольника.
Шаблон- целочисленная маска, управляющая видом
линии или контуром прямоугольника.
Для того, чтобы нарисовать отрезок из LPR в
точку (x,y) в цвете, установленном по умолчанию,
введите :
LINE -(x,y)
Для того, чтобы нарисовать линию другим
цветом, введите:
LINE -(x,y),2
Отрезок из точки (x1,y1) в точку (x2,y2)
рисуется командой:
LINE (x1,y1)-(x2,y2)
Для того, чтобы нарисовать контур прямоу-
гольника с верхней левой вершиной (x1,y1) и нижней
правой вершиной (x2,y2) введите:
LINE (x1,y1) - (x2,y2),,B
Чтобы закрасить прямоугольник цветом 2,
введите:
LINE (x1,y1) - (x2,y2),2,BF
Для изображения прерывистой линии, исполь-
зуется аргумент шаблона. Например, для того, чтобы
нарисовать пунктирную линию, следует использовать
шаблон &HAAAA (двоичное значение 1010 1010 1010
1010 ). Обратите внимание, что шаблоны не влияют на
закрашивание прямоугольников.
LINE (x1,y1) - (x2,y2),,,маска
После выполнения оператора LINE LPR принимает
значение второй из двух точек оператора LINE.
См.также FILL
Пример ' Диагональ экрана
SCREEN 1,0
LINE (0,0) - (319,199)
' горизонтальная штриховая пунктирная линия
LINE (0,100) - (319,100),,,&HCCCC
' квадрат со стороной 50 пикселов,закрашенный
' цветом 2, c левой верхней вершиной в точке (10,20)
LINE (10,20) - (60,70),2,BF
' соединение части штрихов
READ X,Y
PSET (X,Y) ' установить LPR
FOR N=1 TO 11
READ X,Y
LINE - (X,Y)
NEXT N
LOCATE 9,9
PRINT " ORLAND "
END ' конец программы
DATA 10,20 50,20 55,25 55,40 50,45 10,45
DATA 50,45 55,50 55,65 50,70 10,70 10,20
Оператор LINE INPUT
----------------------------------------------------------------
Назначение LINE INPUT читает, игнорируя разделители, строку с
клавиатуры в символьную переменную
Синтаксис LINE INPUT [;] [текст-подсказка;] символьная пере-
менная
Замечания Текст-подсказка - необязательная символьная кон-
станта, посылаемая на экран в ожидании ответа.
Символьная переменная загружается вводимыми с
клавиатуры данными. При вводе символьных данных с
разделителями (например, запятыми) следует пользо-
ваться не оператором INPUT, при выполнении которого
возникает ошибка, а LINE INPUT. Например, на запрос
INPUT "Введите адрес пациента:";a$
ответ
101 Main Street, Apt 2
вызовет сообщение
? Redo from start (Выполните сначала)
LINE INPUT допускает запятые наравне с
остальными символами. Если за оператором LINE
INPUT указана точка с запятой, то при нажатии
клавиши Enter после окончания ввода возврат каретки
выполнен не будет (т.е. курсор останется в той же
строке).
Пример PRINT "Введите несколько полей данных"
LINE INPUT "беспокоится о разделителях не нужно:"_
DummyStr$
PRINT DummyStr$
END 'конец программы
Оператор LINE INPUT#
-----------------------------------------------------------------
Назначение LINE INPUT# считывает строку из последовательного
файла в символьную переменную, игнорируя разделители
Синтаксис LINE INPUT# номер-файла, символьная-переменная
Комментарий Номер файла- задает файл для считывания данных,
символьная-переменная - адресат данных из файла.
LINE INPUT# подобен оператору LINE INPUT за ис-
ключением того, что данные читаются не с клавиату-
ры, а из последовательного файла. Текущая запись в
файле считывается и загружается в символьную
переменную. Наряду с LINE INPUT для ввода данных с
разделителями (запятыми) можно использовать
оператор LINE INPUT#.
Если данные в файл были записаны оператором
WRITE#, т.е. они отделяются друг от друга
правильным образом, то наилучший способ чтения их в
этом случае - оператор INPUT.
Пример SUB MakeFile
' LINE INPUT# открывает последовательный
' файл для вывода
' PRINT# и PRINT# USING записывают в файл
' данные различных типов.
' присвоение переменной файла значения #1
OPEN " LINEINP#.DTA " FOR OUTPUT AS #1
' определение и инициализация переменных
StringVariable$="в городе River-беспорядки"
Integer% = 1000
FloatingPoint! = 30000.1234
'запись строки текста в последовательный файл
PRINT# 1,StringVariable$, Integer%,FloatingPoint!
CLOSE #1 'закрытие переменной файла
END SUB 'конец процедуры MakeFile
SUB ReadFile
'Открытие последовательного файла для ввода
'Использование LINE INPUT# и INPUT$ для
'чтения из файла строк с данными
'различных типов
'присвоение переменной файла значения #1
OPEN "LINEINP#.DTA" FOR INPUT AS #1
StringVariable$=""
'ввод всей строки независимо от ее длины
LINE INPUT #1, StringVariable$
PRINT StringVariable$
CLOSE #1 ' закрытие переменной файла
END SUB ' конец процедуры ReadFile
CALL MakeFile
CALL ReadFile
END ' конец программы
Функция LOC
----------------------------------------------------------------
Назначение LOC возвращает текущую позицию в файле
Синтаксис y = LOC (номер-файла)
Коммен6тарий Номер-файла определяется при его открытии.
Значение, возвращаемое LOC, зависит от режима, в
котором файл был открыт.
Для файлов произвольного доступа LOC
возвращает номер записи, прочитанной или записанной
последней.
Для последовательных файлов LOC возвращает
номер последнего с момента открытия файла
прочитанного или записанного 128-байтового блока.
По соглашению, если с момента открытия чтение или
запись в файл не происходили, LOC возвращает первый
блок.
Для двоичных файлов LOC возвращает номер
позиции поиска SEEK.
Для коммуникационных файлов LOC возвращает
число символов в буфере ввода.
Пример OPEN "LOC.DTA" FOR BINARY AS #1
PUT$ #1, "ТУРБО-БЕЙСИК"
PRINT LOC(1)
CLOSE
END
Оператор LOCAL
----------------------------------------------------------------
Назначение LOCAL объявляет локальные переменные в процедуре
или функции.
Синтаксис LOCAL список-переменных
Замечания Оператор LOCAL допустим только в описаниях фун-
кций и процедур, где он должен использоваться до
любых выполняемых операторов. LOCAL определяет одну
или несколько переменных как "локальные", использу-
емые только внутри данной процедуры или функции.
Локальные переменные могут иметь одинаковые имена с
переменными в других частях программы или с локаль-
ными переменными в описаниях других функций и про-
цедур, не вызывая при этом конфликтных ситуаций,
так как все они являются различными переменными.
Для того, чтобы объявить локальный массив, сле-
дует его имя с пустой парой скобок указать в списке
переменных, а затем установить размерность массива
с помощью оператора DIM.
Локальные переменные размещаются в стеке и уста-
навливаются в ноль (символьным переменным присваи-
вается пустая строка) при каждом вызове включающей
их функции или процедуры.
Необъявленные переменные в процедурах по умолча-
нию считаются статическими (неперемещаемыми), одна-
ко, рекомендуется каждую переменную объявлять явно.
См.также DIM SHARED STATIC
Пример SUB Locals
LOCAL a(), i%
DIM DYNAMIC a(10:20)
FOR i%=10 TO 20
a(i%)=i%
NEXT i%
END SUB
Оператор LOCATE
-----------------------------------------------------------------
Назначение LOCATE устанавливает курсор и/или определяет форму
указателя
Синтаксис LOCATE [строка][,колонка][,курсор][,начало][,конец]
Комментарий строка - целочисленное выражение, указывающее
строку экрана (1-25), на которую должен быть
установлен курсор, колонка задает номер позиции от
начала строки (1-80), курсор - числовое значение,
которое управляет тем, видим указатель или невидим
(0 - невидим, 1 - видим). На 25 строку
устанавливать курсор нельзя до тех пор, пока
воспроизведение значений функциональных ключей
разрешено (см.оператор KEY OFF);
начало и конец - целочисленные выражения, управ-
ляющие размерами указателя и определяющие, какое
количество последовательных строк будет отмечено
указателем. Верхняя сканируемая строка - 0, нижняя:
для цветных графических адаптеров - 7; для
монохромных адаптеров - 13.
Наиболее часто оператор LOCATE используется для задания
места на экране, где будут размещены выводимые данные.
См.также KEY OFF PRINT
Пример CLS
CRSLIN and POS
INPUT "Введите координаты x и y:",x%,y%
'размещение указателя и задание его формы
LOCATE x%,y%,1,4,5
PRINT "Hi";
WHILE NOT INSTAT:WEND 'ожидание нажатия клавиши
END 'конец программы
Функция LOF
-----------------------------------------------------------------
Назначение LOF возвращает длину файла
Синтаксис y = LOF(номер файла)
Комментарий номер файла - число, которое было задано при от-
крытии файла.
LOF возвращает длину в байтах указанного файла.
Для файлов связи LOF возвращает размеры доступного
пространства в буфере связи.
Пример OPEN "TB.EXE" FOR BINARY AS #1
PRINT "Размеры ТУРБО БЕЙСИКА равны";LOF(1)
CLOSE #1
END
|
|