Как Петя Бейсиков Тоню Соображалкину программировать учил
- Автор: Бруно Мартузан
- Жанр: Околокомпьютерная литература / Детская образовательная литература / Basic, Visual Basic, VB Script, VBA и т.п.
- Дата выхода: 1987
Читать книгу "Как Петя Бейсиков Тоню Соображалкину программировать учил"
ЛОГИЧЕСКИЙ НОМЕР ФАЙЛА
ЛОГИЧЕСКИЙ НОМЕР ФАЙЛА
— Я это понимаю так. Интерпретатор, сам будучи программой, обрабатывает этот оператор. У интерпретатора в памяти предусмотрено место для хранения сведений об открытых файлах, можно сказать, массив, содержащий символьные строки — описания файлов. А элементы массива положено нумеровать. Вот этот номер и будет номером файла. Еще его называют логическим номером файла. Просто в операторе открытия файла мы указываем номер элемента этого массива, куда надо поместить описание открываемого файла.
— Так что в каждый момент могут быть открытыми несколько файлов?
— Именно так. И притом файл с логическим номером 3 отнюдь не обязательно открывать третьим, его можно открывать и первым, до того как будут открыты файлы с логическими номерами 1 и 2. Открывая файл, интерпретатор проверяет, существует ли на указанном устройстве такой файл, и если существует, то не открыт ли он уже. Если удается обнаружить какое-то несоответствие, об этом сразу сообщается.
Помнишь ли, что означало, например, такое описание файла «DK1:FAIL»?
— Да, помню. DK1 означает дисковое устройство и его номер, a FAIL — имя файла.
— В операторе OPEN описание файла необязательно задавать явно. Его можно задать и в виде значения символьной переменной. Сразу становится понятным, что описание файла еще можно сцеплять из отдельных символьных строк. Посмотри, пожалуйста, такой кусочек программы.
100 PRINT «ВВЕДИТЕ НОМЕР ДИСКА»
110 INPUT N¤
120 PRINT «ВВЕДИТЕ ИМЯ ФАЙЛА»
130 INPUT F¤
140 OPEN «DK»+N¤+«:»+F¤ FOR INPUT AS FILE 1
Сперва вводим номер диска. Как символ! Потом вводим имя файла.
— Как символы!
— Естественно. А потом сцепляем полное описание файла.
Сейчас о слове INPUT в операторе OPEN. Вместо него может быть и OUTPUT.
— «Аутпут»… что бы это значило? Может быть, «вывод»? «Ввод» уже был.
— Да, в этом случае файл будет открыт для вывода. Одновременно для ввода и вывода на нашей машине файлы открыть нельзя. Интерпретатор это не позволяет. Чтобы в одном и том же файле сначала записать, а потом считать, нужно: во-первых, файл открыть для вывода; во-вторых, записать в нем; в-третьих, закрыть; в-четвертых, открыть для ввода и, наконец, в-пятых, считать необходимое.
— Как сложно!
— Дело в том, что считывать данные с файла можно только по порядку. И записывать в файл тоже. Когда мы считываем с файла, интерпретатор знает, сколько мы считали — до какого места в файле. И когда записываем в файл, то тоже известно, где находимся. А если в какой-то файл захотим и записывать, и с него же считывать, то может случиться, что мы захотим в один и тот же момент находиться в двух местах. А этого никто не может. Или представь, что мы считываем файл с магнитной ленты. Мы же сможем считать только с того места, где остановили перемотку ленты. Или если мы читаем данные из обычной книги, то ясно, что читать можно только с того места, где кончили листать.
— Ясно, что можно считывать с начала файла, если его закрыть и потом снова открыть. Но ты же не собираешься рассказывать, как закрыть файл.