Файлы с прямым и последовательным доступом (Лабораторная работа № 15), страница 5

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

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

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

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

Во втором алгоритме вместо вспомогательного файла исполь­зуются две вспомогательные переменные того же типа, что и у элементов файла, и вспомогательная переменная-счетчик типа Longlntдля запоминания текущего места вставки.

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

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

Запомнить место вставки в переменной-счетчике с помощью функ­ции FilePos.

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

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

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

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

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

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

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

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

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

Еще интереснее будет, если в вызове Seek задать номер, больший количества элементов в файле, а потом попробовать записать информацию в этот будто бы доступный элемент файла. Ошибки не возникнет, но в файле почему-то появятся совершенно непонятные данные, “мусор”. Проверьте это и подумайте, почему так получается! И будьте внимательны, когда записываете второй аргумент процедуры Seek.

2. Порядок выполнения работы

1. Изучить принципы организации и правила работы с файлами на ПЭВМ с использованием алгоритмического языка Turbo Pascal.

2. Получить у преподавателя вариант задания.

3. Составить и выполнить программу.

4. Предъявить преподавателю результаты работы программы.

5. Провести анализ полученных результатов, оформить отчет.

6. Защитить и сдать преподавателю лабораторную работу.

Задание для самостоятельного выполнения:

При создании файлов, использовать данные типа запись из лабораторной работы №12 (Ввести информацию из Л.Р.№12 в массив записей).

Программа должна состоять из трёх частей:

    Часть 1:   Программа создания файла с прямым доступом;

    Часть 2:   Программа создания файла с последовательным доступом;

    Часть 3:   Программа поиска и корректировки  данных в существующем файле;

1.  Контрольные вопросы

1.  Что такое файл? Какие существуют виды файлов?

2.  Какими стандартными процедурами и функциями располагает Turbo Pascal для работа с файлами?

3.  Каково должно быть содержание программы по созданию файла и его корректировке (замена элементов, добавление новых элементов, удаление элементов)?

4.  Каковы особенности работы с файлами прямого и последовательного доступа?