Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
программирование 2 семестр 1 курс.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
982.53 Кб
Скачать

Удаление текущего узла списка.

Пусть требуется удалить узел на который указывает С.

А) запомнить адрес узла на следующего за удаляемым.

Б) содержимое узла следующего за удаляемым перенести в удаляемый.

В) освободить память по запомненному адресу.

Пример:

Tmp:=c^.next;

C^:=c^.next^.

Dispose(tmp);

Недостаток: требуется дополнительная проверка при удаление последнего элемента.

Пример проверки:

Tmp:=c;

E^.next:=c^.next;

Dispose(c);

C:=e^.next;

Удаление всего списка.

Пример:

C:=b;

While c<>nil do

Begin

Tmp:=c;

C:=C^.NEXT;

DISPOSE(TMP);

End;

Удаление всего списка, возможно используя процедуру Mark перед созданием списка и процедуры Release после работы со списком.

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

Файлы ввода-вывода.

Лекция №11

Файлы ввода/вывода. Понятие физического и логического файлов. Основные операции работы с файлами. Типы файлов и общие принципы работы с ними. Буфер ввода/вывода

Файл представляет собой именную область памяти, где сосредоточены различного рода данные.

С понятием файлов также связывают логические устройства: порты ввода-вывода, печатающие устройства, консоль и т.д. Любому файлу соответствует имя, файлы содержа компоненты одного и того же типа. Длина файла ограничена размером внешней памяти.

Понятие физического и логического файла.

Под физическим файлом понимают любой файл операционной системы. С понятием логического файла связывается переменная одного из файловых типов определенных в языке программирования, файловая переменная используется для обращения к физическому файлу. В Паскале существует три типа файловых переменных.

Пример описание файлов:

Var

F:text;{текстовый}

F1:file of <>{типизированный}

F2:file; {бинарный файл}

Для осуществления связи файловой переменной с физическим файлом используется процедура Assign(<файловая переменная>,<имя физического файла>);

assign(f,‘d.txt‘);

Если в процедуре assign вместо имени файла указать логическое устройство о файловая переменная буде связанна с этим устройством

Assign(f,‘LPT1‘);

Assign(f,’Com’);

После выполнения процедуры assign разрешается работа с физическим файлом, который перед работой необходимо проинициализировать – указать направление передачи файлов.

Открытие файла для чтения Reset;

Reset(<файловая переменная>).

пример

Var

F:text;

.

.

Assign(f,’a.dat’);

Reset(f);

Если файл a.dat существует, то он будет открыт для чтения, при этом файловый указатель в файле будет указывать на 1 компонент.

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

Пример использования IOresult

Var

F:text;

.

.

Assign(f,’t.txt’);

{$I-}

Reset(f);

{$i+}

if ioresult <>0 then write(‘ошибка обращения к файлу’);

Открытие файла на запись (перезапись).

Rewrite(f); при открытии на запись не пустого файла содержимое файла уничтожается, и указатель устанавливается на начало файла.

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

Открытие файла для добавления записи.

Append(f); данная процедура используется при необходимости добавить в непустой файл данные, данные добавляются в конец файла. Данная процедура применима только для текстовых файлов, если текстовый файл ранее был открыт с помощью reset или rewrite, то использование процедуры Append приведет к закрытию этого файла и открытию его вновь но уже для добавления записи.

Набор оющих процедур для работы с файлами.

Close(f); закрывает файл оставляет связь файловой переменной с именем физического файла.

Erase(f); уничтожает файл, перед удалением файл должен быть закрыт.

Rename(f,<новое имя файла>); переименовывает файл.

Eof(f):Boolean; возвращает true если конец файла, иначе false.