Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Кусовая для ИВТ Основы программирования_окончат...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
80.76 Кб
Скачать

Действия с типизированными файлами к основным действиям с записями (элементами) файла относятся:

  • Поиск отдельной записи файла по некоторому условию – ключу поиска;

  • Замена содержимого отдельной записи файла;

  • Удаление некоторой записи файла;

  • Вставка новой записи в произвольное место файла.

Поиск элемента по ключу

Алгоритм поиска элемента файла по ключу.

  1. Открыть файл;

  2. В цикле перебрать все элементы, которые не удовлетворяют условию поиска;

  3. Зафиксировать позицию элемента, удовлетворяющего условию поиска;

  4. Установить файловую переменную на позицию элемента, удовлетворяющего условию поиска;

  5. Выполнить обработку найденного элемента файла;

  6. Закрыть файл.

SEEK (f, N) – функция, позволяющая явно изменить значение текущего указателя, установив его на элемент файла с заданным номером N (N - целочисленное выражение).

Замена содержимого отдельной записи файла;

Алгоритм замены элемента файла.

  1. Открыть файл;

  2. В цикле перебрать все элементы, которые не удовлетворяют условию замены;

  3. Зафиксировать позицию элемента, подлежащего замене;

  4. Установить файловую переменную на позицию элемента, удовлетворяющего условию замены;

  5. Выполнить запись нового элемента в файл по заданной позиции;

  6. Закрыть файл.

Удаление отдельной записи файла;

Алгоритм удаления элемента файла.

  1. Открыть основной файл.

  2. Найти в файле запись удовлетворяющую условию удаления, например заданный номер зачетки. Запомнить номер позиции с помощью процедуры Filepos.

  3. Установить файловый указатель в начало удаляемой записи с помощью процедуры Seek.

  4. Обрабатываем ситуации:

а) если номер удаляемой записи равен числу записей в файле, т.е. запись последняя, то с помощью процедуры Seek устанавливаем файловый указатель на начало удаляемой записи и удаляем ее с помощью процедуры Truncate.

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

  1. Закрыть основной файл.

Filesize (f) имеет тип Integer, функция, позволяющая определить размер (кол-во элементов) файла f

Вариант №2:

  1. Открыть основной и вспомогательный файлы.

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

  3. Пропустить в основном файле запись, подлежащую удалению.

  4. В цикле переписать из основного файла во вспомогательный все оставшиеся элементы.

  5. Закрыть основной и вспомогательный файлы.

  6. Уничтожить основной файл.

  7. Переименовать вспомогательный в основной.

Erase (f) – удаляет файл, связанный с файловой переменной f.

Rename (f, NewName) – присваивает файлу, связанному с файловой переменной f, новое имя NewName.

Оба варианта имеют право на существование, все зависит от условий работы:

- если база данных огромна, а места мало тогда лучше вариант №1;

- если база данных невелика, то лучше вариант №2 – по скорости он быстрее.

Вставка новой записи в произвольное место файла

Алгоритм вставки элемента файла

Пусть место задается поиском записи с заданным ключом. Вставка нового элемента производится перед найденной записью. Для вставки используют один из двух алгоритмов.

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

  1. Открыть основной и вспомогательный файлы.

  2. В цикле переписать из основного файла во вспомогательный все элементы, номера которых меньше заданного.

  3. Во вспомогательный файл записать значение, которое надо вставить.

  4. В цикле переписать из основного файла во вспомогательный все оставшиеся элементы.

  5. Закрыть основной и вспомогательный файлы.

  6. Уничтожить основной файл.

  7. Переименовать вспомогательный в основной.

Второй алгоритм вставки элемента в произвольное место файла.

Вместо вспомогательного файла используются две вспомогательные переменные например А и В того же типа что и у элементов файла, и вспомогательная переменная счетчик С типа longint для запоминания текущего места вставки. Этот способ напоминает способ вставки элемента в отсортированный массив. Алгоритм выполняется следующим образом:

  1. Первой вспомогательной переменной А присвоить значение, которое надо вставить в файл.

  2. Отыскать место вставки и установить файловый указатель на место вставки с помощью процедуры Seek.

  3. Запомнить место вставки (в переменной – счетчик С) с помощью функции Filepos

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

  5. В цикле, пока файл не прочитан:

- записать в доступный элемент файла значение первой переменной А,

- запомнить новое место вставки, увеличив счетчик С,

- первой вспомогательной переменной А присвоить значение второй

вспомогательной переменной В,

- прочитать значение того элемента, на который указывает файловый указатель,

и присвоить второй вспомогательной переменной В,

- установить файловый указатель на место вставки с помощью процедуры Seek,

используя значение счетчика С. Записать в доступный элемент файла значение первой переменной А.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]