Реферат: Описание языка Turbo Basic для студентов всех специальностей
ками дуги, то будет нарисован сектор, т.е. конечные точки дуги
будут соединены с центром. Например,
CIRCLE (160, 100), 80, 2, - PI/2, - PI
Можно изобразить сплюснутую (или наоборот вытянутую) окруж-
ность, добавив в оператор CIRCLE еще один параметр. Если значение
этого параметра меньше 1, то окружность будет сплюснута по верти-
кали, если больше 1, то - по горизонтали. Например,
CIRCLE (160, 100), 80, 2, , , 3/4
Все параметры оператора CIRCLE задаются в определенном порядке и
разделяются запятыми. Обязательными являются только параметры,
указывающие положение центра и радиус окружности. Остальные пара-
метры необязательны, однако, запятые должны быть оставлены, если
пропущены параметры в середине списка.
_Оператор PAINT . 2 0позволяет закрашивать большие области экрана.
Для закрашивания необходимо указать произвольную точку внутри
закрашиваемой области (x, y), цвет, которым нужно закрасить об-
ласть (k1) и цвет границы, которую нельзя пересекать при закраши-
вании (k2), k1 и k2 могут совпадать. Оператор PAINT имеет вид
- 19 -
PAINT (x, y), k1, k2
Например, оператор
PAINT (160, 100), 2, 2
закрасит окружность нарисованную последним оператором CIRCLE,
красным цветом, как и цвет окружности, использованный в операторе
CIRCLE.
- 20 -
3. ФАЙЛЫ. РАБОТА В БЕЙСИКЕ С ФАЙЛАМИ ПОСЛЕДОВАТЕЛЬНОГО
И ПРЯМОГО ДОСТУПА
Если необходимо использовать набор данных или программу мно-
гократно, то необходимо сохранить их на внешнем устройстве памяти
(например, диске или дискете). Для этого создается файл. Файл
должен иметь имя. Имя состоит из двух частей: собственно имя и
расширение
1имя 0. 1расширение
Имя может содержать до 8 символов, расширение 1- 0до трех.
Могут использоваться следующие символы
A - z 0 - 9 ( ) { } @ # $ 1 0% ^ & ! - _ / ' ~
Полное имя файла в MS DOS содержит весь путь по дереву от
корневой директории к нужному файлу. Например,
C:\ST\LAB\work.bas,
где C - имя диска, ST - имя директории на диске, LAB - имя подди-
ректории директории ST, work.bas - имя программы на Бейсике.
Далее речь пойдет только о файлах данных.
3.1. Файлы последовательного доступа
Последовательный файл состоит из записей, доступ к которым
осуществляется последовательно, т.е. n-я запись следует за (n -
1)-ой как при формировании файла, так и при считывании из него.
Создание последовательного файла включает следующие шаги:
открытие файла (оператор OPEN), вывод данных в файл (операторы
PRINT#, WRITE#, или PRINT# USING) и закрытие файла (оператор
CLOSE).
Считывание из последовательного файла включает следующие ша-
ги: открытие файла, ввод данных из файла (операторы INPUT#,
INPUT$, LINE INPUT#), закрытие файла.
_Оператор OPEN . 2 0подготавливает файл для чтения из файла
(INPUT) или записи в файл (OUTPUT, если создается новый файл,
APPEND, если добавляются записи в уже существующий файл).
INPUT
OPEN 1имя файла 0FOR OUTPUT 1 0 AS # 1номер файла
APPEND
_Оператор CLOSE .закрывает файл, т.е. делает невозможным чте-
- 21 -
ние или запись.
CLOSE [# 1номер файла 0]
Оператор CLOSE без параметров закрывает все открытые файлы.
Единицей информации, которая передается при записи в файл
или чтении из файла 1, 0является запись (логическая запись) 2. 0Запись
делится на поля. Каждое поле связано с одним элементом данных.
0Могут быть созданы два типа последовательных файлов:
1) с разделителями полей, когда каждое поле автоматически
отделяется специальным символом (например, запятой). Для создания
такого файла используется оператор WRITE#, для чтения из него -
оператор INPUT#.
Данные в файле хранятся в таком виде, как если бы они наби-
рались на клавиатуре при выполнении оператора INPUT, т.е. разде-
лены запятыми и каждая запись заканчивается переводом строки.
_Оператор INPUT# . 2 0имеет вид
INPUT # 1номер файла 0, 2 1список переменных
где переменные в списке по типу должны соответствовать данным в
файле.
2) поля не разделены 1, 0и каждая запись точно такая же, как
если бы эти данные отображались на экране или печатались на прин-
тере. Для создания такого файла используется оператор PRINT#, для
чтения из него - операторы INPUT$ или LINE INPUT#. _Оператор
_INPUT$ . передает из файла сразу всю строку (запись) указанной дли-
ны n в символьную переменную, например, ST$
ST$ 2 = 0INPUT$ (n, # 1номер файла 0)
_Оператор LINE INPUT# . 2 0передает в указанную переменную ST$ всю
строку независимо от ее длины
LINE INPUT # 1номер файла 0, 2 0ST$
Пример (с разделителями полей):
OPEN "SEQU.DAT" FOR OUTPUT AS #1
ST$ = " ИВАНОВ "
INT% = 1972
FLOT! = 75.3
'теперь записываем строку в файл
WRITE #1, ST$, INT%, FLOT!
ST$ = " ПЕТРОВ "
INT% = 1975
FLOT! = 62.5
'записываем другую строку в файл
- 22 -
WRITE #1, INT%, ST$, FLOT!
CLOSE #1
END
Созданный файл будет следующим
" ИВАНОВ ", 1972, 75.3
1975, " ПЕТРОВ ", 62.5
Следующая программа читает из этого файла:
OPEN "SEQU.DAT" FOR INPUT AS #1
ST$ = " "
INT% = 0
FLOT! = 0
'теперь читаем строку текста из файла
INPUT #1, ST$, INT%, FLOT!
PRINT ST$, INT%, FLOT!
ST$ = " "
INT% = 0
FLOT! = 0
'читаем другую строку
INPUT #1, INT%, ST$, FLOT!
PRINT INT%, ST$, FLOT!
CLOSE #1
END
Пример (без разделителей полей):
OPEN "SEQUEN.DAT" FOR OUTPUT AS #1
ST$ = " ИВАНОВ "
INT% = 1972
FlOT! = 73.1
'записываем строку текста в файл
PRINT #1, ST$, INT%, FLOT!
ST$ = " ПЕТРОВ "
INT% = 1975
FLOT! = 64.3
'запишем другую строку, используя оператор
PRINT #1, USING "+####$#.##^^^^"; INT%, ST$, FLOT!
CLOSE #1
END
Содержание созданного файла будет таким:
ИВАНОВ 1972 73.1
1975 ПЕТРОВ 6.43Е+01
- 23 -
Следующая программа читает из этого файла:
OPEN "SEQUEN.DAT" FOR INPUT AS #1
ST$ = " "
ST$ = INPUT$ (80,#1)
PRINT ST$
LINE INPUT #1, ST$
PRINT ST$
CLOSE #1
END
3.2. Файлы прямого доступа
Файл прямого доступа состоит из записей, доступ к которым
возможен в произвольном порядке по номеру записи.
Создание файла прямого доступа включает следующие шаги:
открытие файла (оператор OPEN); задание структуры записи файла,
или разметка буфера (оператор FIELD); передача записи в буфер
(операторы LSET 2 0или RSET); пересылка содержимого буфера в файл
(оператор PUT), при этом если номер записи в операторе PUT 2 0не
указан явно, буфер помещается на место текущей записи, при откры-
тии файла указатель текущей записи равен 1, после каждой операции
ввода или вывода указатель сдвигается на следующую запись; закры-
тие файла (оператор CLOSE).
Записи передаются в виде строк символов. Поэтому необходимо
использовать соответствующие функции преобразования данных в
строку символов и обратно.
Ниже перечислены функции и осуществляемые ими преобразова-
ния.
MKI$ (MKL$) - целое (длинное целое) в 2-х (4-х) байтовую
строку;
MKS$ (MKD$) - вещественное (вещественное двойной точности) в
4-х (8-ми) байтовую строку.
CVI(CVL) - 2-х (4-х) байтовую строку в целое (длинное це-
лое);
CVS(CVD) - 4-x (8-ми) байтовую строку в вещественное (ве-
щественное двойной точности).
Считывание из файла прямого доступа включает также пять ша-
гов: открытие файла; разметка буфера; передача записи из файла в
буфер (оператор GET); обработка данных буфера (переменные буфера
- 24 -
доступны из программы); закрытие файла.
Если вывод в файл и ввод из файла осуществляются в одной
программе, то открытие и закрытие файла осуществляется один раз
перед началом и после окончания всех операций с файлом.
_Оператор OPEN . 2 0имеет вид
OPEN 2 1имя файла 2 0AS # 1номер файла 2 0LEN 2 0= 1длина записи