Использование файлов последовательного доступа.
Операторы OPEN, CLOSE, INPUT # и PRINT #.
Оператор OPEN позволяет открывать файлы для чтения и записи. Общий вид:
OPEN"File.name" FOR { режим } AS { номер }
File.name - имя открываемого файла
режим - способ доступа к файлу
номер - целое число 1-255, которое потом используется, чтобы определить нужный файл для записи/чтения.
Рис. 2.7. Блок - схема циклического вычислительного процесса с применением двумерного массива
Режимы:
APPEND - последовательная запись в файл, начиная с конца файла, т.е. дополнение;
OUTPUT - перезапись в файл;
INPUT - чтение файла;
BINARY - режим ввода/вывода.
Если вы открыли файл для дополнения, то это делается следующим образом:
OPEN "FILE.TXT" APPEND AS #1
a$="your text here"
w=344,9
PRINT #1, a$
PRINT #1, w
CLOSE #1
В результате программа допишет в файл FILE.TXT две строки, в первой - значение переменной a$, во второй - значение переменной w. Рекомендуется в конце программы ставить CLOSE, тогда она автоматически закрывает все файлы. Если не закрыть файл, то у вас не будет к нему доступа, в нем ничего не изменится и т.д., команда CLOSE закрывает все файлы и проблем не возникнет.
Для чтения из файла используется оператор INPUT #:
OPEN "FILE.TXT" FOR INPUT AS #1
INPUT #1, D$
INPUT #1, R
CLOSE #1
PRINT D$
PRINT R
CLOSE
Еще одно хорошее свойство - команда FREEFILE - указывает следующий свободный номер для файлов, когда у вас открыто несколько файлов и вы думаете какой еще придумать номер - не мучайтесь, пишите:
n=FREEFILE
open "name" for append as #n
...
close #n
Пример 9. Найти все массива C(5,5)., большие по модулю 2.
Сформируем файл “data” содержащий элементы массива с помощью оператора PRINT #:
DIM C(5,5)
open “data” for output as #1
FOR I = 1 TO 4
FOR J = 1 TO 5
INPUT X
PRINT #1,X
NEXT J, I
close #1
Для решения нашей задачи элементы массива считываем с файла “data” с помощью оператора INPUT #.
Результаты запишем в файл “rez”.
open “data” for input as #2
open “rez” for output as #3
FOR I = 1 TO 5
FOR J = 1 TO 5
INPUT #2, C(I,J)
IF ABS(C(I,J))>2 THEN PRINT #3 C(I,J)
NEXT J, I
CLOSE
END