Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Неограниченные последовательные файлы




Последовательные файлы с ограниченным полем.

При рассмотрении последовательного файла видно, что данные в файле разделяются запятыми и любые цепочки заключаются в двойные кавычки (кавычки предохраняют Вас от хлопот с вкрапленными запятыми в цепочке). Рассмотрим формирование и внутреннее представление последовательного файла ADD.BAS:

 

OPEN "ADD.BAS" FOR OUTPUT AS #1

String$="This is a string of text"

Integer%=1000

Floating!=30000.1234

WRITE #1,String$,Integer%,Floating!

String$="Appol"

Integer%=-32767

Floating!=12345.54296875

WRITE #1,Integer%,String$,Floating!

CLOSE #1

END

 

Содержимое файла ADD.BAS:

"This is a string of text",1000,30000.1234

-32767,"Appol",12345.54296875

 

Самым важным здесь является то, что оператор WRITE # записывает данные в том виде, в котором оператор INPUT # хочет их найти.

Следующая программа считывает данные из последовательного файла:

 

OPEN "ADD.BAS" FOR INPUT AS #1

String$="":Integer%=0:Floating!=0

INPUT #1,String$,Integer%,Floating!

PRINT String$,Integer%,Floating!

String$="":Integer%=0:Floating!=0

INPUT #1,Integer%,String$,Floating!

PRINT Integer%,String$,Floating!

CLOSE #1

END

 

Важно заметить,что программа не будет работать правильно,если файл был сформирован с помощью команды PRINT #,а не WRTIE #.

 

Данные в этих файлах представлены так, как они выглядят на экране дисплея ил после печати:

 

OPEN "ADD.BAS" FOR OUTPUT AS #1

String$="This is a string of text"

Integer%=1000

Floating!=30000.1234

PRINT #1,String$,Integer%,Floating!

String$="Appol"

Integer%=-32.767

Floating!=12345.54296875

PRINT #1,USING "+##### & ##.##^^^^;Integer%,String$,Floating!

CLOSE #1

END

 

Содержимое файла ADD.BAS:

This is a string of text 1000 30000.1234

-32767 Appol 12.35E+03

 

Если Вы попытаетесь считать данные из этого файла с помощью оператора INPUT #1, String$, Integer%, Floating!, то в строковую переменную будет считано слово This, а затем программа попытается считать числовое значение, наткнется на цепочку is и выдаст ошибку. Поэтому прменим здесь другие операторы для считывания:

 

OPEN "ADD.BAS" FOR INPUT AS #1

String$=""

String$=INPUT$(80,1)

PRINT String$

LINE INPUT #1,String$

PRINT String$

CLOSE #1

END

 

Сведем операторы и функции Turbo-Basic,управляющие последовательными файлами, в таблицу:

 

 

Оператор/функция Операция

 

 

CLOSE Оканчивает операции на файле(ах)

EOF Сигнализирует о достижении конца файла

INPUT # Считывает запись (строку текста) в указанную переменную(ые)

INPUT$ Считывает n знаков в цепочную переменную

LINE INPUT # Считывает целую строку в цепочную переменную

OPEN Открывает файл для режима INPUT,OUTPUT,APPEND и присваивает

ему номер

PRINT #, Заносит данные в файл без ограничительных запятых

PRINT # USING

WRITE # Заносит данные в файл без ограничительных запятых

__________________________________________________________________________________

 

Описание этих операторов представлено ниже

 

CLOSE Закрывает файл или устройство.

 

Синтаксис: CLOSE [[#]filenum[, [#]filenum]...]

 

Комментарии: filenum - номер файла, который надо закрыть.

 

CLOSE прерывает соответствие между номером файла и файлом, установленное оператором OPEN, и закрывает файл. CLOSE без аргументов закрывает все файлы и устройства.

 

EOF сигнал достижения конца файла

 

Синтаксис: EOF(номер_файла)

 

Комментарии: номер_файла - номер файла из которого происходит считывание данных.

 

Функция EOF возврщает -1 («истина»), если указатель в файле последовательного доступа дошел до его конца. Эта функция может использоваться для тестирования конца файла при вводе данных - для того, чтобы избежать ошибки.

 

INPUT# считывает данные из последовательного файла.

 

Синтаксис: INPUT filenum, variable list

 

Комментарии filenum - номер, под которым был открыт файл

variable list - одна или несколько разделенных запятыми строковых или числовых переменных, в которые INPUT# считывает данные.

Файл может быть дисковым файлом, последовательным портом COM(n) или клавиатурой KYBD. Данные в файле должны соответствовать типу переменных в variable list и разделяться запятыми или символом возврата каретки (так записывает данные оператор WRITE#).

 

INPUT$ считывает заданное число символов с клавиатуры или файла.

 

Синтаксис: s$=INPUT$ (n, [, [#]filenum])

 

Комментарии: n - число символов, которое необходимо считать из файла

filenum. - номер файла.

 

Если filenum опущен, происходит ввод с клавиатуры, при этом вводимые знаки отсылаются в строку, а не на экран. Достоинство INPUT$ состоит в том, что он позволяет считывать все знаки, включая и управляющие коды. Но при нажатии клавиши, не имеющей кода а ASCII, возвращается CHR$(0).

 

LINE INPUT# считывает строку из последовательного файла в строковую переменную, игнорируя ограничители.

 

Синтаксис: LINE INPUT #filenum,string variable

 

Комментарии: filenum - номер файла,строка из которого считывается в строковую переменную string variable с игнорированием ограничительных запятых в тексте.

 

OPEN готовит файл или устройство для считывания или записи.

 

Синтаксис: OPEN filespec [FOR mode] AS [/] filenum [LEN=record size]

OPEN mode string,[/] filenum,filespec [record size]

 

Комментарии: mode - один из:

OUTPUT - определяет последовательный файл для записи в него.

INPUT - определяет последовательный файл для считывания из него.

APPEND - определяет последовательный файл для дозаписи в конец файла.

RANDOM - определяет файл прямого считывания для чтения или записи.

BINARY - определяет двоичный файл для чтения или записи.

mode string - строковое выражение, первым знаком в котором (и обычно единственным) служит один из следующих:

O - определяет режим последовательного вывода.

I - определяет режим последовательного ввода.

A - определяет режим последовательного вывода в конец файла.

R - определяет режим случайных входных/выходных сигналов.

B - определяет режим двоичного входа/выхода.

filenum может служить любое целое число. Для изменения этого числа служит оператор FILES в файле CONFIG.SYS в DOS.

filespec - строковое выражение, определяющее спецификацию файла.

record size - целочисленное выражение в пределах от 1 до 32767, определяющее длину записи в файле прямого доступа (умолчание составляет 128 байт).

Оператор OPEN осуществляет связь между числом (filenum) и файлом или физическим устройством и подготовку устройства для считывания или записи. В дальнейшем в операторах и функциях, работающих с файлами, вместо имен файлов используется указанное число (filenum). OPEN указывает на тип файла: с произвольным доступом, двоичный или файл с последовательным доступом (причем для последнего указывается режим работы: чтение или запись). Аннулирует действия оператора OPEN оператор CLOSE, закрывающий файл.

 

PRINT # и PRINT # USING записывают форматированную информацию в файл.

 

Синтаксис: PRINT #filenum, [USING format string;]expression list[;]

 

Комментарии: filenum - номер открытого файла.

format string - необязательная последовательность форматируемых знаков (описаны в операторе PRINT USING).

expression list - последовательность числовых и/или строковых выражений, выводимых в файл.

PRINT # пересылает информацию в файл таким же образом, как PRINT пересылает ее на экран. Т.к. оператор INPUT # требует разделения значений запятой, то в операторе PRINT # надо разделять данные:

 

PRINT #1,1","2","3

 

При этом в файле будет записано: 1, 2, 3

 

Оператор WRITE # автоматически разделяет данные, выводимые в файл, запятыми.

 

WRITE# выводит данные в последовательный файл.

 

синтаксис WRITE# N_файл, список выражений

 

Коментарии N_файл - это число, ассоциируемое с устройством или файлом в момент открывания файла.

Список выражений - это последовательность числовых и/или строчных выражений, разделяемых запятыми или точками с запятой.

 

WRITE# подобно PRINT# за исключением того, что WRITE# вставляет запятые между элементами списка выражений, выдает строчные данные внутри двойных кавычек и не выводит пробел перед положительным числом. WRITE# является предпочтительным способом записи полей данных в последовательный файл, поскольку этот оператор обеспечивает автоматическое разделение переменных запятыми и простановкой кавычек с обеих сторон строк. Это упрощает использование оператора INPUT#, когда осуществляются выписки из файла.

 




Поделиться с друзьями:


Дата добавления: 2014-12-16; Просмотров: 425; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.021 сек.