Методич_стат-исправлено. Методические указания по курсу Информатика
Скачать 2.11 Mb.
|
Операции над файламиНезависимо от того, какие действия происходят с информацией, хранящейся в файле, производятся следующие обязательные операции:
Открытие файла Для открытия файла предназначен оператор open, имеющий следующий формат: OPEN имя_ файла FOR режим AS # номер файла Режим определяет доступ к данным файла. Возможны следующие режимы:
Номер файла предваряется знаком #, после которого следует целое число от 1 до 255. Запись в файл Рассмотрим пример записи в файл. OPEN "capitals.dat" FOR OUTPUT AS #1 FOR X=l TO 5 INPUT "ВВЕДИТЕ НАЗВАНИЕ СТОЛИЦЫ"; F$ WRITE #1, F$ NEXT X CLOSE #1 :END В результате работы программы мы получим (полужирным шрифтом выделены введенные с клавиатуры данные): ВВЕДИТЕ НАЗВАНИЕ СТОЛИЦЫ? МОСКВА ВВЕДИТЕ НАЗВАНИЕ СТОЛИЦЫ? САНКТ-ПЕТЕРБУРГ ВВЕДИТЕ НАЗВАНИЕ СТОЛИЦЫ? ТАЛЛИН ВВЕДИТЕ НАЗВАНИЕ СТОЛИЦЫ? РИГА ВВЕДИТЕ НАЗВАНИЕ СТОЛИЦЫ? ВИЛЬНЮС При этом на диске в текущем каталоге образуется файл, содержащий пять строковых значений. Имя файла будет capitals.dat. Удобнее всего при работе с файлами сделать текущим каталог, где эти файлы содержатся или будут содержаться, а при обращении к ним указывать только их имена. В качестве параметра имя_файла можно использовать переменную текстового типа. Это позволяет вводить имя файла с клавиатуры и является универсальным способом работы с файлами. На пример: INPUT «Введите имя файла "; FileName$ OPEN FileName$ FOR OUTPUT AS #1 После ключевого слова as указывается номер файла. Больше открыть файл с таким номером в данной программе нельзя. Для каждого последующего файла должен быть указан свой собственный неповторимый номер в пределах от 1 до 255. Сколько всего может быть открыто файлов, зависит от файла конфигурации вашего компьютера config.sys, в котором число одновременно открытых файлов определяется командой files. Представленный далее пример демонстрирует программу создания небольшой базы данных автомобилей, предназначенных для продажи. О каждом автомобиле заносится информация о его марке, номере, цвете, годе производства и продажной цене. REM Программа создания файла данных об автомобилях CLS INPUT «Введите имя файла"; F$ Открытие файла OPEN F$ FOR OUTPUT AS #1 DO INPUT "Марка автомобиля? (Для окончания работы введите QWE.); М$ IF UCASE$(M$)="QWE" OR OCASE$(М$)="ЙЦУ" THEN 1 INPUT "Номер автомобиля?"; N$ INPUT "Цвет автомобиля?"; С$ INPUT "Год производства автомобиля?"; G$ INPUT "Продажная цена автомобиля?"; S$ WRITE #1, М$, N$, C$, G$, S$ LOOP ' Закрытие файла 1 : CLOSE #1 PRINT "Файл сформирован" Программа действует следующим образом. Запрашивает имя файла, открывает его для записи, запрашивает информацию, записывает ее в файл до введения пользователем сочетания букв "QWE" или "ЙЦУ" (эти символы расположены на одних клавишах, вследствие чего пользователь может случайно набрать как одну комбинацию, так и другую). Запись в файл может производиться операторами: PRINT # номер_файла, выражение ИЛИ WRITE # номер_файла, выражение Результат работы этих операторов одинаков. Для закрытия файлов применяется оператор CLOSE # номер_файла Если номер файла в операторе CLOSE указан, то будет закрыт именно этот, вполне определенный файл. Если же номер не указан, будут закрыты все открытые файлы. Чтение из файла Чтение из файла производится аналогично записи, но — вместо режима output используется режим input. Прочитаем занесенные нами данные из файла avto.dat. REM Программа чтения файла данных об автомобилях CLS INPUT " Введите имя файла"; F$ ' Открытие файла OPEN F$ FOR INPUT AS #1 PRINT "База данных автомобилей на 17 декабря 2000 года" I=1 DO PRINT "Вывести данные об"; I; "автомобиле?" INPUT "Для окончания введите QWE, для продолжения - IF UCASE$(M$)="QWE" OR UCASE$(М$)="ЙЦУ" THEN 1 INPUT #1, M$, N$, C$, G$, S$ PRINT M$, N$, C$, G$, S$ I=I+1 LOOP UNTIL EOF(1) ' Закрытие файла 1 : close #1 PRINT "Файл закрыт" Оператор loop until eof(1) . Означает, что считывание ведется до тех пор, пока не будет обнаружен символ конца файла (end of file), а в скобках указан номер открытого файла. Изменения данных в файле Для изменения какой-либо записи, удаления старых или добавления новых данных в последовательном файле необходимо открыть два файла: подлежащий изменению и новый, в котором создается обновленная версия исходного файла. Старый файл в дальнейшем можно удалить. Приведенная ниже программа в файле avto.dat изменяет "МОСКВИЧ" на "МЕРСЕДЕС". В первых строках открываются исходный файл avto.dat и новый файл avto2.dat, сначала пустой. Очередная запись считывается из файла avto.dat и, при условии, что это не "МОСКВИЧ", переписывается без изменения в новый файл. Если же встречается значение "МОСКВИЧ", то оно заменяется на "МЕРСЕДЕС" путем присваивания нового значения переменной м$. В следующей. Строке данное значение попадает в выходной файл. После того как весь входной файл просмотрен, оба файла закрываются. OPEN "avto.dat" FOR INPUT AS #1 OPEN "avto2.dat" FOR OUTPUT AS #2 FOR i=1 TO 5 INPUT #1, M$, N$, C$, G$, S$ IF UCASE$(M$)-"МОСКВИЧ" THEN М$-"МЕРСЕДЕС" PRINT 12, M$, N$, C$, G$, S$ NEXT i CLOSE 1, 2 KILL "avto.dat" NAME "avto2.dat" AS "avto.dat" END Заключительный этап — удаление исходного и переименование нового файла, которому придается прежнее имя, что обеспечивает и в дальнейшем наличие на дискете файла avto.dat. Добавление данных в файл Указание for append в операторе open подготавливает файл для вывода данных и смещает указатель на конец файла. Последующие операторы приписывают новую информацию к уже имеющейся. В предложенной далее программе в файл данных об автомобилях добавляются сведения о двух новых поступлениях. REM Программа создания файла данных об автомобилях CLS INPUT " Введите имя файла"; F$ REM Открытие файла OPEN F$ FOR APPEND AS 1 DO INPUT "Марка автомобиля? (Для окончания работы введите QWE.); М$ IF UCASE$(M$)="QWE" OR UCASE$(М$)="ЙЦУ" THEN 1 INPUT "Номер автомобиля?"; N$ INPUT "Цвет автомобиля?"; С$ INPUT "Год производства автомобиля?"; G$ INPUT "Продажная цена автомобиля?"; S$ WRITE #1, М$, N$, C$, G$, S$ LOOP REM Закрытие файла 1 CLOSE #1 PRINT "Файл дополнен"' |