Бейсик

Автор работы: Пользователь скрыл имя, 14 Ноября 2010 в 08:37, Не определен

Описание работы

Лекции

Файлы: 1 файл

Бейсик.doc

— 354.00 Кб (Скачать файл)

Имена файлов состоят  из двух частей, разделяемых точкой: 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

Учимся программировать! 
Конспекты школьника.

Комбинированные типы.

Под переменной в языках программирования понимают программный объект (число, слово, часть слова, несколько слов, символы), имеющий имя и значение, которое может быть получено и изменено программой. При объявлении переменных можно указать тип данных. Это делается с помощью оператора DIM. В бейсике имеется несколько встроенных типов: числовые (integer, long, single, double) и стоковые (string, string *).

При работе с большим  числом данных одного типа очень удобно использовать массивы. Массив, это разновидность переменной. Он дает возможность хранить сколько угодно значений одного типа под одним и тем же именем. К каждому конкретному значению массива, необходимо обращаться через числовой индекс.

При написании программы, возникает необходимость описать  характеристики (свойства) некоторого объекта, представляемого и обрабатываемого в программе. Таким объектом может быть человек, некоторый вычислительный комплекс, письмо, посылаемое по почте и т. д. Во всех подобных случаях свойства объекта представляются значениями различных типов и поэтому для их описания не могут быть использованы массивы. 

Для описания объекта  «ученик» могут понадобиться, например, следующие характеристики:

  • фамилия, имя и отчество (строки);
  • возраст (integer);
  • пол (строка);
  • класс (integer);
  • буква класса (символ); 
    и т.д.

Для представления  такой разнородной, но логически  связанной информации удобно использовать комбинированный тип. Необходимо отметить, что в данном случае определенные компоненты комбинированного типа, ввиду их различной природы, не могут идентифицироваться порядковыми номерами (индексами), как в массивах, поэтому для обозначения компонентов используются идентификаторы (имена). Таким образом, описание комбинированного типа представляет собой список описаний его элементов; каждое описание похоже на описание простой переменной. Для примера, приведенного выше, описание комбинированного типа 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

Информация о работе Бейсик