Автор работы: Пользователь скрыл имя, 14 Ноября 2010 в 08:37, Не определен
Лекции
Имена файлов состоят
из двух частей, разделяемых точкой:
filename.ext (имя_файла.расширение)
Имя файла может включать от 1 до 8 знаков,
а соответствующее расширение - до трех
знаков.
Имена файлов и расширения
могут содержать следующие
A-Z 0-9 () {} @ # $ % ^ ! - _ ' / ~
Файлы можно создавать, переименовывать, стирать; производить операции считывания и записи.
Basic предлагает три
различных способа сохранения
и востребования информации с
диска: последовательный, прямой
и двоичный ввод/вывод файла.
У каждого есть свои
Метод последовательных файлов - это способ прямого чтения и записи файлов. Команды последовательных файлов в Basic создают текстовые файлы: файлы ASCII-символов с парами "возврат каретки/перевод строки", разделяющими записи. Вероятно одной из основных причин использования последовательных файлов является степень их "переносимости" в другие программы, языки программирования и компьютеры. Они читаются программами подготовки текстов и редакторами, принимаются другими прикладными программами и могут посылаться через серийные порты на другие компьютеры.
В основе последовательных файлов лежит сама простота: пишите в них так, словно они - экран, и читайте с них так, словно они - клавиатура.
Создание последовательного файла:
1. ОТКРЫТЬ файл
в режиме последовательного
В последовательных файлах есть два пути подготовки файла к выводу:
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. Напишем программу для записи в файл отметки ученика на уроке. В файле будет хранится следующая информация:
|
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
Учимся программировать!
Конспекты школьника.
Под переменной в языках программирования понимают программный объект (число, слово, часть слова, несколько слов, символы), имеющий имя и значение, которое может быть получено и изменено программой. При объявлении переменных можно указать тип данных. Это делается с помощью оператора DIM. В бейсике имеется несколько встроенных типов: числовые (integer, long, single, double) и стоковые (string, string *).
При работе с большим числом данных одного типа очень удобно использовать массивы. Массив, это разновидность переменной. Он дает возможность хранить сколько угодно значений одного типа под одним и тем же именем. К каждому конкретному значению массива, необходимо обращаться через числовой индекс.
При написании программы,
возникает необходимость
Для описания объекта «ученик» могут понадобиться, например, следующие характеристики:
Для представления такой разнородной, но логически связанной информации удобно использовать комбинированный тип. Необходимо отметить, что в данном случае определенные компоненты комбинированного типа, ввиду их различной природы, не могут идентифицироваться порядковыми номерами (индексами), как в массивах, поэтому для обозначения компонентов используются идентификаторы (имена). Таким образом, описание комбинированного типа представляет собой список описаний его элементов; каждое описание похоже на описание простой переменной. Для примера, приведенного выше, описание комбинированного типа PUPIL (ученик) может выглядеть следующим образом:
TYPE Pupil
fio AS STRING * 20
age AS INTEGER
sex AS STRING * 6
class AS INTEGER
classname AS STRING * 1
END TYPE
Определив собственный тип данных, вы можете использовать его для объявления переменных этого типа.
DIM Schoolchildrens AS Pupil
DIM Group(1 TO 25) AS Pupil
Доступ к компонентам (свойствам) переменной пользовательского типа осуществляется путем указания точки после имени переменной.
Schoolchildrens.fio = "Иванов
Иван"
Schoolchildrens.age = 15
Schoolchildrens.sex = "male"
Schoolchildrens.class = 10
Schoolchildrens.classname = "А"
PRINT Schoolchildrens.fio, Schoolchildrens.age, Schoolchildrens.sex,
Schoolchildrens.class, Schoolchildrens.classname
Пример простой программы:
REM использование комбинированных
типов
REM описание типа ученик
TYPE Pupil
fio AS STRING * 20
age AS INTEGER
sex AS STRING * 6
class AS INTEGER
classname AS STRING * 1
END TYPE
REM объявление массива из 3 элементов типа
ученик
DIM Group(1 TO 3) AS Pupil
Group(1).fio = "Иванов Иван"
Group(1).age = 15
Group(1).sex = "male"
Group(1).class = 10
Group(1).classname = "А"
Group(2).fio = "Петрова Маша"
Group(2).age = 14
Group(2).sex = "female"
Group(2).class = 10
Group(2).classname = "Б"
Group(3).fio = "Сидоров Вася"
Group(3).age = 16
Group(3).sex = "male"
Group(3).class = 11
Group(3).classname = "В"
REM выводим на экран учеников 10 класса
FOR i=1 TO 3
IF Group(i).class = 10 THEN PRINT Group(i).fio
NEXT i
END