Начало » Конспекты школьника » Часть 1 » [Учимся программировать][Файлы]
Учимся программировать!
Конспекты школьника.
Работа с файлами.
Файлы широко применяются для решения различных задач. В них размещаются данные, предназначенные для длительного хранения. Каждому файлу присваивается уникальное имя, которое используется для обращения к нему. Использование файлов освобождает разработчика от хранения требуемых данных в тексте программы или многократном вводе их с
клавиатуры, что само по себе весьма утомительно и приводит к появлению различных ошибок в программах. Гораздо удобнее ввести эту информацию один раз и сохранить ее в файле на диске.
Имена файлов состоят из двух частей, разделяемых точкой: filename.ext (имя_файла.расширение)
Имя файла может включать от 1 до 8 знаков, а соответствующее
расширение - до трех знаков.
Имена файлов и расширения могут содержать следующие символы:
A-Z 0-9 () {} @ # $ % ^ ! - _ ' / ~
Файлы можно создавать, переименовывать,
стирать; производить операции считывания и
записи.
Basic предлагает три различных способа сохранения и востребования информации с
диска: последовательный, прямой и двоичный
ввод/вывод файла. У каждого есть свои преимущества и недостатки.
Метод последовательных файлов - это способ прямого чтения и
записи файлов. Команды последовательных файлов в
Basic создают текстовые файлы: файлы ASCII-символов с парами "возврат
каретки/перевод строки", разделяющими записи. Вероятно одной из основных причин использования
последовательных файлов является степень их "переносимости" в
другие программы, языки программирования и компьютеры.
Они читаются программами подготовки текстов и редакторами,
принимаются другими прикладными
программами и могут посылаться через серийные порты
на другие компьютеры.
В основе последовательных файлов лежит сама простота: пишите
в них так, словно они - экран, и читайте с них так, словно они -
клавиатура.
Создание последовательного файла:
1. ОТКРЫТЬ файл в режиме последовательного ВВОДА. Для создания файла
необходимо использовать оператор OPEN.
В последовательных файлах есть два пути подготовки файла к выводу:
OUTPUT (ВЫВОД): Если файл не существует- создается новый
файл. Если файл уже существует, его содержание уничтожается, а сам файл рассматривается как новый.
APPEND (ДОБАВИТЬ В КОНЕЦ): Если файл не существует- создается новый файл. Если файл уже существует,
любые данные дописываются в конец этого файла.
2. Ввод данных в файл. Используйте WRITE# PRINT# или
PRINT#USING для записи данных в последовательный файл.
3. ЗАКРЫТИЕ файла. Оператор CLOSE закрывает файловую переменную после завершения всех операций ввода/вывода.
Для чтения последовательного файла:
1. ОТКРЫТЬ файл в режиме последовательного ВВОДА. Подготовить файл для считывания.
2. Считывать данные с файла. Использовать операторы
INPUT#, INPUT$, или LINE INPUT#.
3. ЗАКРЫТЬ файл. Оператор CLOSE закрывает файловую переменную после
выполнения всех операций ввода/вывода.
Недостаток последовательных файлов в том, что возможен
только последовательный доступ к данным.
Можно создавать последовательные файлы двух типов:
1 - последовательные файлы с разделенными полями,
где все поля на каждой строке файла разделяются (ограничиваются)
особыми символами, и 2- неразделенные последовательные файлы,
когда каждый файл выглядит абсолютно одинаково и на экране, и на
распечатке. Эти два типа файлов создаются с помощью операторов
WRITE# и PRINT#. соответственно. Используйте
INPUT#, INPUT$, или
LINE INPUT# для обратного считывания информации с последовательного файла любого типа.
Пример 1: записать строку в файл, считать
строку из файла.
REM Работа с файлами. Пример 1.
REM Запись в файл
OPEN "file01.dat" FOR OUTPUT AS #1
A$ = "Это наша текстовая строка"
PRINT #1, A$
CLOSE #1
REM Чтение из файла
OPEN "file01.dat" FOR INPUT AS #1
INPUT #1, B$
PRINT b$ 'вывод на экран
CLOSE #1
В результате выполнения программы будет
создан файл "file01.dat" и файл будет
содержать строку Это наша текстовая
строка. Затем файл будет открыт для
чтения и из него будет прочитана и выведена
на экран данная строка.
Пример 2. Напишем программу для записи в
файл отметки ученика на уроке. В файле будет
хранится следующая информация:
ФИО |
дата |
отметка |
Иванов Иван |
22 февраля |
4 |
Петров Петя |
3 марта |
5 |
... |
... |
... |
REM Работа с файлами. Пример 2.
REM Запись в файл
OPEN "journal.dat" FOR APPEND AS #1
INPUT "Введите ФИО", FIO$
INPUT "Введите дату", DAY$
INPUT "Введите отметку", MARK
WRITE #1, FIO$, DAY$, MARK
CLOSE #1
REM Чтение из файла
OPEN "journal.dat" FOR INPUT AS #1
INPUT #1, FIO$, DAY$, MARK
PRINT FIO$, DAY$, MARK 'вывод на экран
CLOSE #1
Эта программа будет создавать файл journal.dat,
записывать введенные пользователем данные,
а затем считывать из файла journal.dat
данные и выводить их на экран. Но в данной
версии программы из файла мы будем получать
всегда первую строчку (порцию) данных.
Исправим это. Будем использовать функцию EOF,
проверяющую достигнут ли конец файла.
REM Работа с файлами. Пример 2_2.
REM Запись в файл
OPEN "journal.dat" FOR APPEND AS #1
INPUT "Введите ФИО", FIO$
INPUT "Введите дату", DAY$
INPUT "Введите отметку", MARK
WRITE #1, FIO$, DAY$, MARK
CLOSE #1
REM Чтение из файла
OPEN "journal.dat" FOR INPUT AS #1
DO WHILE NOT EOF(1)
INPUT #1, FIO$, DAY$, MARK
PRINT FIO$, DAY$, MARK 'вывод на экран
LOOP
CLOSE #1
Теперь программа выводит из файла все
данные.
Продолжим работу. Упростим задачу
пользователя - дату будем получать с
помощью функции DATE$, которая возвращает
текущую дату в формате mm-dd-yyyy.
REM Работа с файлами. Пример 2_3.
REM Запись в файл
OPEN "journal.dat" FOR APPEND AS #1
INPUT "Введите ФИО", FIO$
INPUT "Введите отметку", MARK
WRITE #1, FIO$, DATE$, MARK
CLOSE #1
REM Чтение из файла
OPEN "journal.dat" FOR INPUT AS #1
DO WHILE NOT EOF(1)
INPUT #1, FIO$, DAY$, MARK
PRINT FIO$, DAY$, MARK 'вывод на экран
LOOP
CLOSE #1
Итак, что у нас получилось? Мы написали
программу для заполнения и вывода на экран
классного журнала (для простоты мы не стали
разделять эти две части программы).
Данные журнала хранятся в файле на диске.
Результат работы программы:
Примечание: Кроме операторов для создания, считывания
и записи файлов, Basic имеет средства для осуществления
определенных DOS-подобных сервисных программ внутри программы.
Оператор NAME переименовывает файлы, KILL - стирает файлы,
MKDIR - создает
каталоги, CHDIR - меняет текущий каталог,
RMDIR - уничтожает
каталоги.
Примечание: рассмотрим еще два примера (назначение
ясно из коментариев).
'Пример открыть файл, назначенный принтеру
OPEN "LPT1:" AS #1
'послать строку на принтер
PRINT# 1,"THIS IS A TEST"
CLOSE# 1 'закрыть переменную файла
'открыть два разных файла
OPEN "CLOSEFIL.ONE" FOR AS #1
OPEN "CLOSEFIL.TWO" FOR AS #2
'вписать строку в каждый файл
PRINT# 1,"THIS IS A TEST"
PRINT# 2,"THIS IS A TEST"
'закрыть все файлы
CLOSE
END
предыдущий урок
:: содержание :: следующий
урок
|