Краткий курс лекций, страница 3
Описание файла
Документ из архива "Краткий курс лекций", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лекции и семинары", в предмете "информатика" в общих файлах.
Онлайн просмотр документа "Краткий курс лекций"
Текст 3 страницы из документа "Краткий курс лекций"
A:byte;
B:char;
C:integer;
End;
Byte | Char | Integer | … | Byte | Char | integer | Eof(end of file) |
Структура файла похожа на строки массива, но имеет следующие отличия.
У файла не определено максимальное количество элементов, т.е. его длина.
Количество элементов файла в каждый момент времени неизвестно, зато известно, что в конце файла символ EOF, в качестве которого используется символ с кодом 26. Максимальная длина файла определяется емкостью устройств внешней памяти.
Определить длину файла и выполнить другие операции можно с помощью процедур, предназначенных для работы с файлами.
Классификация файлов:
-
По типу (по логической структуре):
-
Типизированные
-
Текстовые
-
Нетипизированные
-
-
По методу доступа:
-
Последовательного (Типизированные, Текстовые, Нетипизированные)
-
Прямого (Типизированные, Нетипизированные)
-
Файловый тип или переменная файлового типа задаются следующим образом
-
Типизированные файлы
Type <Имя1> = file of <тип>;
-
Текстовые файлы.
Type <Имя2> = text;
Var f1,f2:<имя1,имя2>
-
Нетипизированные файлы:
Type <имя3> = file;
Имя – это имя файлового типа, а тип это любой тип, кроме: файл и объект.
Процедуры общие для всех трех видов файлов:
-
Assignfile (f,<полное имя файла>) – связывает файловую переменную с именем файла на внешнем носителе
-
Reset(f) – открывает существующий файл, связанный с файловой переменной f. Если F текстовый файл то он будет доступен только для чтения, при последовательном доступе к элементам. Если f типизированный файл, то он будет открыт и для чтения и для записи, как при последовательном, так и при прямом доступе. В текстовый файл записываются строки, символы и числа (действительные, вещественные). В любом случае при открытии файла указатель текущей позиции файла устанавливается на его начало, то есть нулевую компоненту.
-
Rewrite(f) – открывает новый физический файл, связанный с файловой переменной F, если такой файл уже существует, то он удаляется, и на его месте создается пустой файл (файл очищается). При открытии указатель текущей позиции устанавливается на начало.
-
Eof(f) – функция возвращает значение true, если указатель текущей позиции находится за последним элементом файла или файл пустой.
-
Rename (f, name1) – процедура переименовывает файл с файловой переменной f в name1, перед использованием этой процедуры файл должен быть закрыт, если был открыт процедурами Reset, rewrite, append
-
Erase (f) – это процедура уничтожает файл, перед использованием этой процедуры файл должен быть закрыт, если был открыт процедурами Reset, rewrite, append
Closefile(f) – процедура закрывает файл, но связь файловой переменной с именем файла сохраняется, обеспечивает сохранение в файле всех новых записей и регистрацию файла в каталоге. Повторно файл открывается без использования процедуры Assignfile.
Язык Object Pascal. Классификация типов данных. Тип данных файл.Типизированные файлы. Процедуры и функции для работы с типизированными файлами. Пример задачи.
Типизированный файл – это файл, компоненты которого имеют один тип, задаваемые при объявлении файловой переменной.
Type <имя типа> = file of <тип>;
Var <имя файловой переменной>: <имя типа>;
Тип – это тип-компонент файла.
Var f: file of byte;
F1: file of string;
Компонент типизированного файла может быть любого типа кроме файлов, поскольку длина каждого компонента постоянна, возможен прямой доступ к каждой компоненте – это осуществляется с помощью процедуры Seek (f, <н.к.>), где н.к. – номер компоненты
Первая компонента имеет номер ноль, с каждым типизированным связан файловый указатель, текущим значением которого является номер компонента, подлежащий обработке, при вводе или выводе очередной компоненты, значение указателя увеличивается или уменьшается на 1, для определения текущего положения файлового указателя используется функция filepos(f), которая возвращает значение текущего номера компонента на который указывает файловый указатель. Число компонент в файле точно определяется с помощью функции filesize(f) – количество компонент в файле. Типизированный файл открывается одновременно на считывание и на запись процедурами rewrite(f) и reset(f).
Для чтения компоненты из файла используется процедура read(f, <список переменных>), где список переменных – это переменные того же типа что и компоненты файла
Для записи компонент в файл Write(f, <список переменных>), чтобы определить находится ли файловый указатель в конце файла или нет, можно использовать функцию Eof(f). True - в конце, False – нет.
Закрытие типизированного файла процедурой close(f), при каждом этапе работы с файлом нужно использовать close(f).
-
Типизированный файл практически нельзя прочесть в текстовом редакторе.
-
Типизированный файл занимает меньше места, чем текстовый файл.
-
Типизированный файл читается только нами специально записанной процедурой.
Язык Object Pascal. Классификация типов данных. Тип данных файл. Текстовые файлы. Процедуры и функции для работы с текстовыми файлами. Пример задачи.
Поскольку номер строки может иметь индивидуальную длину то нельзя указать адрес начала очередной строки, в связи с чем становится невозможной прямая обработка данных.
При работе с текстовыми файлами возможен только последовательный доступ.
Текстовый файл содержит типы: char, string, Boolean, целый, вещественный.
Можно просмотреть с помощью текстового редактора.
Процедуры и функции только для работы с текстом.
Для добавления записей к уже существующему файлу используется процедура Append(F).
Указатель файла перемещается в конец файла, добавление строк в конец файла.
В текстовых файлах в конце каждой строки формируется признак ее конца, определить ее признак можно с помощью логической функции – eoln(f), она true – если достигнут признак конца строки.
Seekeoln(f) –
Seekeof(f) – пропускает все пробелы, знаки tab, маркеры конца строки eoln до маркера конца файла и до первого значащего символа.
Write(f, список вывода) и Writeln(f, список вывода)– одно или несколько выражений типа char или Boolean, любого целого или вещественного типа, после выводимого параметра можно указать ширину поля, в котором будет выводиться write(s1[:n][:m]);
S – выводимое выражение; n – ширина поля; m – количество десятичных значений в дробной части вещественного числа.
Выражения в списке вывода обязательно должны быть отделены пробелами.
Язык Object Pascal. Классификация типов данных. Тип данных файл. Нетипизированные файлы. Процедуры и функции для работы с нетипизированными файлами. Пример задачи.
Преимущество: отсутствие делает файлы совместимыми с другими нетипизированными файлами, высокоскоростной обмен данными между дисками и файлами.
Информация представляется не записями, а блоками (байт). В оперативной памяти должен быть предусмотрен буфер длиной не менее размера блока, через который информация передается в файл
Для нетипизированные файлов применяются те же процедуры, что и для типизированных файлов, кроме процедур Read и Write, которые заменены на Blockread(f, <буф>, <N>, [<NN>]), blockwrite(f, <буф>, <N>, [<NN>])
N – количество записей которое должно быть прочитано или записано за одно обращение к диску.
NN – необязательный параметр, содержащий при выходе количество фактических обрабатываемых записей.
Нетипизированный файл совместим с типизированным и не совместим с текстовым.
Язык Object Pascal. Классификация типов данных. Тип данных классы. Основные понятия. Поля, методы, свойства.
Классы – типы, определяемые пользователем. В них описываются свойства объекта, его методы и события, на которые он может реагировать. Разработчик может сам создавать классы.
В Object Pascale классами называются специальные типы, которые содержат поля, метки и свойства, и как любой другой тип класс служит образцом для конкретной экз. реализации, которые называются объектами.
Важным отличием классов от других типов является то, что они располагаются в куче.
Язык Object Pascal. Классификация типов данных. Тип данных классы. Инкапсуляция.
Инкапсуляция – структура данных, объединяющая в себе поля методы свойства, где поля содержат данные определенного типа.
Методы – функции и процедуры, выполняющие определенные действия.
Свойства – это поля данных, которые влияют на поведение объекта. Они служат для описания объектов и отличаются от обычных полей тем, что присвоение им значений связано с вызовом методов. Объединение методов полей и свойств называется инкапсуляцией.
Инкапсуляция позволяет изолировать класс от остальных частей программы сделать его самодостаточным для решения задачи. Класс несет функциональность.
Класс TForm – инкапсулирует в себе необходимое для создания окна Windows.
Класс TMemo – полнофункциональный текстовый редактор.
Класс TTime – обеспечивает работу с таймером.
Инкапсуляция огромные средства обмена работы Delphi – набор кирпичиков для построения программ пользователя.
Язык Object Pascal.Классификация типов данных. Тип данных классы. Наследование.
Наследование – любой класс может быть порожден от другого класса, для этого указывается type TMyclass = class(tobject); tmyclass является наследником класса tobject.
Порожденный класс наследует поля методы свойства своего родителя и может дополняться новыми полями методами и свойствами. Таким образом, принципы наследования обеспечивают поэтапное разветвление классов и собственных библиотек классов. Все классы Object Pascal порождены от Tobject. Этот класс не имеет полей и свойств, но включает методы общего назначения, обеспечивающие весь цикл.
Программист не может создать не дочерний класс от Tobject.
Следующие 2 объявления идентичны.
Принцип последования приводит к созданию ветвящегося дерева классов постветвлящегося от Tobject до потомков. Каждый потомок выполняет возможности своего родителя и передает их своим потомкам.
Язык Object Pascal.Классификация типов данных. Тип данных классы. Полиморфизм.
Полиморфизм – свойство классов решать схожие по свойству программы разными методами в рамках Object Pascal. Поведенческие свойства классов определяются набором входящих в него методов, изменяя алгоритм того или иного метода в потомках класса, программист может придавать этим потомкам отсутствующие у родителей специальные свойства. Для изменения метода необходимо перекрыть его в потомке, то есть объявить в потомке одноименный метод и реализовать в нем нужные действия. В результате в объекте родителе и в объекте потомке будут действовать два одноименных метода, имеющих различную алгоритмическую основу и следовательно придающие объектам разные свойства. Это называют полиморфизмом объектов.
В Object Pascal полиморфизм достигается не только описанным выше механизмом перекрытия методом родителей, но и их виртуализацией, позволяющей родительским методам обращаться к методам своих потомков.
Язык Object Pascal.Классификация типов данных. Тип данных классы. Поля.
Поля – инкапсулированные в класс данные. Поля могут быть любого типа, в том числе данными.
Type Tmyclass = class;
aIntField:integer;
aStrField:string;
aObjField:Tobject;
end;
Каждый объект получает уникальный набор полей, но общие для всех объектов данного класса набор методов и свойств. Фундаментальный принцип инкапсуляции позволяет обращаться к полям только методов и свойств класса, но О. Паскаль позволяет обращаться к полям и напрямую.
Type Tmyclass = class;
FIntField:integer;
FStrField:string;
end;
var aObject:TMyclass;
begin aobject – имя переменной класса
aObject.FintField:=0; FintField – имя поля.
aObject.FstrField:=’строка символов’
Класс потомок получает поля всех своих предков и может дополнить их своими полями, но он не может переопределять поля или удалять их.
Язык Object Pascal. Классификация типов данных. Тип данных классы. Методы
Инкапсулированные (объединенные) в классе процедуры и функции называются методами. Они объявляются также как и обычные подпрограммы:
Type Tmyclass = class;
Function MyFunc (aPar:integer):integer;
Procedure MyProcedure;
End;
Доступ к методам класса, как и к его полям возможен с помощью составных имен.