Практика программирования (Бейсик, Си, Паскаль)



         

Основные типы файлов в системе QBasic - часть 3


Строка1 2 0 2

4 0 3

6 0 4

..............

Тем не менее все объясняется достаточно просто. При считывании самой первой порции в переменную в$ заносятся первые 16 символов из строки дискового файла, завершаемые признаком конца строки (BASIC-система не настолько умна, чтобы остановиться после извлечения первых шести символов). При этом управляющие байты ODOA в переменную в$ не записываются, но пропускаются. Для формирования значения числовой переменной KI данные начинают извлекаться уже из второй строки дискового файла. Но там до первого разделителя числовых значений (пробела) расположены только нечисловые символы (слово Строка), которые игнорируются, и в переменную KI ничего не поступает (KI = о). В переменную К2 попадает первое числовое значение из второй строки (к2 = 2). При следующем повторении цикла в переменную в$ заносится остаток второй файловой строки, но лидирующие пробелы при этом игнорируются (в$ = "4"). Таким образом, к десятому повторению цикла образуется недостача одного числового значения.

Однако из приведенного примера вы должны сделать правильный вывод -нельзя просто так, без всяких разделителей, смешивать в одной строке символьные и числовые данные.

На самом деле, описанные выше проблемы снимаются, если в дисковый файл числовые и символьные данные выводятся по оператору WRITE #k. Проделайте эксперимент с программой 7_02.bas и поинтересуйтесь содержимым дискового файла bas_txt:

Программа 7_02.bas

CLS : А$ = "Строка"

OPEN "bas_txt" FOR OUTPUT AS #1

FOR J%=1 TO 10

WRITE #1,A$,J%,SQR(J%)

PRINT A$,J%,SQR(J%) NEXT J%

CLOSE #1

PRINT

OPEN "bas_txt"

FOR INPUT AS #2

FOR J%=1 TO 10

INPUT #2,B$,I%,R

PRINT B$,I%,R NEXT j% CLOSE #2

END

Записеориентированные файлы в системе QBasic

Единицей обмена информацией для записеориентированных файлов является "запись", представляющая собой заранее описанную последовательность полей жесткой структуры. На каждом из таких полей располагается одно значение соответствующего типа в машинном формате. Последнее позволяет экономить место, необходимое для хранения данных, и исключает затраты на прямое или обратное преобразование данных между машинным представлением и символьным форматом в процессе обмена. Фиксированный размер каждого поля делает ненужным использование различных разделителей.




Содержание  Назад  Вперед