informatika (663579), страница 2
Текст из файла (страница 2)
Var fio:string[20]; x:string[1]; pol:string[3]; godro:integer;
Таким образом это означает, что фио в программе занимают 20 символов, если 20, то при печате количество символов нужно довести до 20. Это можно сделать путем добавления пробелов.
Следовательно диапазон фио в 20 символов должен занят только фамилией. С 21 символа должен начинатся год рождения. Цифры года рождения пишется без провелов. Количество символов года рождения доложно быть рарно 4.Так как число находится в середине строки, то после него должен ити пробел х , который равен одному символу. Далее идет пол равный трём символам. Следует иметь в виду, что Fio, godro, x, pol являются полями написаной строки. Таким образом любое поле в записе строкив файле должно содержать столько символов, сколько их обозначено в описании переменных при составлении программы.
Билет №13 Функции и процедуры используемые в текстовых файлах.
Settexbuf(fp,buf,bufsize) – эта функция устанавливает размер буфера файла fp до его открытия. Здесь файловая переменная имеет только тип text, а bufsize являются числами только целого типа.
Flush(fp)-принудительно записывает данные из буфера файла fp в физический файл.
Append(fp)-эта функция открывает существующий текстовый файл для добавления записей.
EOLN[(var fp)]-эта функция логического типа выдает значение true, если достигнут конец строки.
SeekEoln(fp) – эта функция логического типа выдает значение true, если достигнут конец строки или файла, или перед ним имеются только пробелы или символы табуляции т.е. как бы предчувствует окончание строки.
SeekEof(fp)-сама функция является функцией логического типа и выдает значение true, если достигнут конец файла или перед ним имеются пробелы, признаки конца строки и символы табуляции т.е. эта функция предчувствует конец файла.
Билет № 14 Чтение файла с помощью программы.
Под чтением из файла подразумевается ввод данных из файла в оперативную память ЭВМ. Для чтения из файла нужно выполнить следующие действия:
1.Открыть файл для чтения (оператором RESET)
2.Ввести данные из файла в программу (readln)
3.Закрыть файл оператором close.
Общая структура программы ввода данных в память машины из файла имеет вид:
Reset (fp);
………………………
readln (fp, x1, x2, …, xn)
………………………
close (fp), end.
Тип переменных x1, x2,…xn должен соответствовать базовому типу элементов файла.
В этом фрагменте программы процедура RESET(fp) осуществляет подготовку к чтению из файла (т.е. открывает файл и устанавливает указатель на первый элемент этого файла.
Оператор readln (х1, х2…хn) последовательно присваивает переменным х1, х2,…хn значения из файла. Количество этих переменных не должно превышать количества данных, которые могут быть выведены из файла.
Место оператора READLN можно написать так:
Read (fp, x1)
Read (fp, x2)
Read (fp, xn)
Билет № 15 Особенность вывода данных из файла с помощью программы.
При выводе компонентов (чисел) из текстового файла эти числа должны иметь каждое свою переменную. Это значит, что переменные должны иметь следующие величины i1:=3, i2=4; i3=5. и под этими именами они будут выв вводится из файла. Это значит, что написав цикл:while not seekeof (fp) do readln (fp, i); мы сможем вывести только первое число записанное в этом файле, поэтому чтобы вывести например 3 числа из этого файла, нужно в программе написать переменные всех (трех в нашем случае) чисел, которые будут принимать участия в вычислениях:while not seekeof (fp) do readln (fp, i1, i2, i3). Таким образом классического цикла при выводе данных организовать нельзя
Билет № 16 Создание текстового файла с помощью программы.
Создание текстового файла с учетом особенности его написания весьма затруднительно. Намного проще создать текстовый файл используя для этих целей специальную программу. Принцип ее создания (программы) следующий: после включения и загрузки ЭВМ на экране появляются синие окна среды Нортон Командор. Для создания текстового файла также используем дискету. Для этого надо:
-вставить дискету в системный блок, перевести курсор в любое из окон;
- нажать Alt+F9 (или Alt+F2).
-появляется окно с надписью «выбери левый (правый) диск.
-устанавливаем курсор на «А» и нажимаем ENTER. Появляется окно с надписью а:\
-теперь клавишей Tab переводим курсор в другое окно и входим в среду Турбо Паскаль.
-набираем программу. Нажимаем ctrl+F9, при этом появляется окно редактора среды Турбо Паскаль с надписью «введи имя файла»
-вводим «КО» и нажимаем ENTER при этом на экране появляются две записи: а) введи текст б)завершения ввода в файл обозначим символами многоточия (…)
-вводим текст: «Я помню
чудное
мгновенье»
-переходим на экран редактора файла для этого: а)нажимаем alt+x б)переводим имя файла test.dat в)нажимаем F3. на экране появляется на текст.
-для выхода из файла нажимаем Esc.
Билет № 17 Отладка программы с помощью которой создан файл.
-программа пишется после установки дискеты в системный блок, при этом имя файлу не дается.
-после набора программы нажать Ctrl +F9 при этом на экране появляется запись «введи имя файла».
-вводим имя «КО» и нажимаем ENTER при этом появляется две строчки.
1.Введи текст
2.Завершение ввода данных в файл – ввод многоточия.
-после записи текста нажимаем ENTER и файл создан.
Билет №11 Буферизация файла.
Файл – это поименованная область памяти на диске или на другом внешнем носителе информации. Память диска разбивается на блоки.
Блок – это участок памяти диска размер которого может быть равен 512 байтов, 4496 и более.
Устройства обмена (дисководы) сделаны так, что именно блоками данные копируются на диск или с диска. Таким образом блок является единицей физического обмена между дисками и оперативной памятью. Для обмена данными большими порциями используется специальный участок памяти программы который называется буфером. В буфер копируется целый блок или несколько блоков данных из файла попадают в переменные программы не из файла, а из буфера. Т.е. эти данные идут из файла через буфер. Буфер можно рассматривать как своеобразное окно, сквозь которое из программы «виден» файл. При этом записи из файла записываются сначала в буфер до его заполнения, а затем обрабатывается в файл.
Билет №12 Буферизация текстов
С текстовыми файлами связаны не один а два буфера
-внешний буфер
-внутренний буфер
Внешний буфер обрабатывается путем буферизации файла. Работа со вторым внутренним буфером ведется иначе. При чтении данные копируются из текста во внешний буфер, а оттуда часть их копируется во внутренний буфер. Какая именно часть зависит от размера внутреннего буфера. При чтении символы текста берутся из внутреннего буфера, а если он исчерпан, то в него копируется следующая часть внешнего буфера и чтение продолжается.
Внутренний буфер текстов имеет в турбо Паскале имеет возможность изменять его размер в пределах от 1 байта до 65536 байтов с помощью процедуры settexbuf . это процедура может быть оформлена двумя способами:
Settexbuf(fp, buf, bufsize).
Здесь fp – файловая переменная типа text.
Buf – имя переменной любого типа.
Bufsize – размер буфера представляет собой выражение целого типа, величина которого может изменятся в пределах от 1 до65536 байтов.
Здесь переменная buf используется как внутренний буфер, поэтому целесообразно чтобы ее длина была кратна длине блока. Если размер буфера bufsize в вызове не указано, то он определяется длиной переменной buf.
Если значение переменной bufsize указано и является меньше длины переменной buf, то оно задает длину буфера в пределах переменной buf.
Билет №18. Типизированные файлы. Прямой доступ к компонентам файла.
Типизированный (компонентный) файл рассматривается как последовательность записи, т.е. компонент. Следует иметь в виду, что это последовательность записи должна быть одного типа. Задание файловой переменной для такого файла осуществляется так: var <имя ф.п.>:file of <базовый тип компонентов>;
В отличие от файлов тепа tex типизированный файл имеет строгую внутреннюю структуру. При записи в него записывается машинное представление копанента, будет то число, символ, строчка, запись, массив или другая структура данных. Файл заполняется последовательно от начала до конца. Структура файла при этом линейна, что означает: запись следует записью и компоненты ни чем ни отличаются друг от друга. Число компонент файла может изменятся, т.е. заранее не фиксируется. Добавление записи осуществляется только в конец файла. Замещение же компонент производит в любом месте файла. Только понятие как конец строчки в типизированном файле не существует. Поэтому ввод и вывод данных осуществляется только процедурами read и write.
Для типизированного файла обе процедуры RESET и rewrite устанавливает одновременно как режим чтения так и режим записи. Таким образом допускается чередование таких операций не использованная в этих программах не зависимо от выбора процедуры открытия.
В типизированном файле все компоненты одного типа, а значит и одного размера, то становится возможным произвольный или прямой доступ к ним. Этот доступ осуществляется по номерам, которые автоматически присваивается в каждом компоненте при составлении файла.
Прямой доступ к компонентам означает возможность установки внутри файла текущего указателя на заданную запись. Текущий указатель – это не явно описанная переменная, которая указывает на условную границу между элементами файла. Нумеруется позицией текущего указателя целыми числами начиная с нуля, поэтому реальный номер записи компонентов всегда на единицу больше номера позиции указателя. В операции будет участвовать тот элемент, на которой переместится указатель. Так если номер текущий указатель установлен в позицию «6», что можно прочитать или заменить 7ю компоненту в файле
Билет № 19 Функции реализующии прямой доступ к компанетам в типизированных файлах.
Filesize(fp)-эта функция выдает реальное число записей в открытом файле.
Filepos(fp)-эта функция выдает номер записи на которую установлен текущий указатель файла.
Seek(fp,n)- эта функция назначает текущую позицию номер которой n указателя файла
Truncate(fp) – обеспечивает удаление всех записей в файле fp от позиции текущего указателя до конца файла.
Eof(fp) – это функция в типизированном файле выдает значение true, только в том случае, когда позиция указателя совпадает с концевой границей файла.
Билет №22 Сравнительная оценка текстового и типизированного файлов
Основное преимущество текстового файла – это возможность хранить в нем разнотипные данные.
Основное преимущество типизированного файла – это прямой доступ к его компонентам. Кроме того в типизированном файле имеется возможность чередования операций чтения и записи. Это чередование можно осуществлять независимо от того, какая процедура открытия файла использована в программе.
Обмен данными между файловой переменной и ЭВМ возможен только между дисками и рабочей памятью программы. Следует иметь в виду, что прямой вывод данных из файла на экран пользователя минуя память машины не возможен.
1.Вывод данных в файл должен осуществляется оператором write (fp, I)
2.Вывод данных из файла на экран пользователя или на принтер должен осуществляется с помощью следующих операторов: read (fp, I) write (i).
Билет №23 Последовательная обработка компанентов типизированного файла.
При открытии файла указатель файла устанавливается всегда на начальный компонент, который имеет компонент с № «0».
При выполнении оператора read или write указатель файла смещается на столько компонентов, сколько их введено в ЭВМ (или выведено).
В этом случае, когда указатель файла установлен на нулевой отметке, т.е. обработка записей происходит с самого начала, оператор seek в программе не нужен. Но если необходимо сделать дополнения к файлу надо использовать этот оператор: seek (fp, n).
Для этого надо открыть файл для чтения, а затем выполнить оператор seek. В данном случае «n» - будет число компонентов файла, после которых начнется добавление компонент. Но программисту не обязательно знать это число «n». Имеется функция filesize, которая будет выдавать значения n. При этом файл должен быть отрыт и указатель файла будет установлен на номер конца файла. При добавлении компонента старые маркер конца файла затирается новый маркер конца этого файла.
При последовательной обработке может понадобится номер текущего компонента файла. Этот номер может быть определен с помощью функции filepos(fp). При этом в программе нужно записать так: n:=filesize (fp).
Для устранения записей с занесением маркера конца файла осуществляет процедура: truncate(fp).
Билет №20 Компоненты типизированного файла.
Компомпонентом такого файла может быть значение простого типа или строка или же другая структура, но не файл.
В текстовом файле, чтобы выбрать некоторые данные просматривается все предыдущие данные. На это уходит много времени, чтобы исключить потери времени применяются типизированные файлы. Компоненты файла с типом (типизированные) пронумерованы (начиная от нуля). При этом оператор seek (fp, n) обеспечивает возможность прямого доступа к компоненту. Этот оператор не выполняет ни каких действий с компонентом. Он только обеспечивает к нему доступ для ввода компонента т.е. для передачи его из файла в память машины должен использоваться оператор read, при этом он записывается так: read(fp,<список переменных с однотипными компонентами файл>).
Для вывода компонента из машины в файл должен использоваться оператор write(fp,<список…>);
В списке оператора write допускаются и выражаются, но они обязательно должны быть однотипными с компонентами файла.
Билет №21 Описание типизированного файла.
Файловая переменная типизированного файла должна описываться так: var <имя фп>:file of <тип компонентов файла>.