Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Максимова алгоритмизация.doc
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
2.17 Mб
Скачать

Тема 14 «Файлы. Типы файлов. Методы работы с файлами»

Цель: Познакомиться с организацией файлов.

Вопросы к допуску и защите:

  1. Что такое файл? Для каких целей используются файлы?

  2. Какими причинами диктуется целесообразность применения файлов?

  3. Каким образом в Паскале объявляютсяфайлы?

  4. Назовите общие и отличительные особенности текстовых, типизированных и нетипизированных фыайлов.

  5. Зачем используется специальная файловая переменная? Как устонавливается соответствие файловой переменной файлу во внешней памяти?

  6. Что общего у процедуры Reset и Rewrite и чем они отличаются?

  7. Зачем применяется процедура Close?

  8. Какие процедур ы применяются для переименования и удаления файлов? Каковы особенности их использования?

  9. В чем заключается специфика текстовых файлов? Назначение процедуры Append.

  10. Чем отличаются процедуры Read и Write от Readln и Writeln .

  11. Назначение функций Eoln, Eof, Seek .

Примеры решения задач

Задача 1. Поставим задачей, записать в один файл произвольный массив чисел, затем прочесть их из файла, отсортировать по не убыванию методом пузырьковой сортировки и записать отсортированный массив в новый файл.

Решение

1 Способ

Program Problem1; { Обработка массивов с помощью файлов }

uses WinCrt; { пузырьковая сортировка }

const

name = 'd:\Bp\prakt\p23\array1.dat';

name1 = 'd:\Bp\Prakt\p23\array1.int';

n = 100;

type

v = file of integer;

t = array[1..n] of integer;

var

f, f1 : v;

a : t;

i : integer;

{----------------------------------------------------------------------------------------}

{ Открытие файла f, соответствующего на диске файлу arra1.dat

и процедура заполнения его массивом произвольных целых чисел }

Procedure create(n : integer; var a : t; var f : v);

var

i : integer;

begin

assign(f, name); { доступ к файлу f }

{$i-}

rewrite(f); { открытие его для записи }

{$i+}

if ioresult <> 0 then writeln('Такой файл не существует');

randomize;

for i := 1 to n do

begin

a[i] := random(201) - 100;

write(f, a[i]) {запись элементов массива в файл f}

end;

close(f); {закрытие файла f}

end;

{---------------------------------------------------------------------------------------}

{Процедура, читающая элементы из файла f, сортирующая

элементы методом "пузыря" и записывающая отсортированный

массив в новый файл array1.int}

Procedure bubble(n : integer; var f1 : v);

var

i, j, p : integer;

begin

assign(f, name); {доступ к файлу f}

assign(f1, name1); {доступ к файлу f1}

create(n, a, f);

{$i-}

reset(f); {открытие файла f для чтения}

{$i+}

if ioresult <> 0 then writeln('Такой файл не существует');

rewrite(f1); {открытие файла f1 для записи}

{$i+}

if ioresult <> 0 then writeln('Такой файл не существует');

for i := 1 to n do read(f, a[i]); {чтение из файла f}

for i := 2 to n do

for j := n downto i do

if a[j] < a[j - 1] then

begin

p := a[j];

a[j] := a[j - 1];

a[j - 1] := p

end;

for i := 1 to n do write(f1, a[i]); {запись отсортированного

массива в файл f1 }

close(f); close(f1) {з закрытие файла f, закрытие файла f1 }

end;

{----------------------------------------------------------------------------------------}

{Основная программа, вызывающая отсортированные элементы

из файла f1 и выводящая их на экран}

begin

assign(f1, name1); { доступ к файлу f1 }

bubble(n, f1); { вызов процедуры сортировки }

{$i-}

reset(f1); { Открытие файла f1 для чтения }

{$i+}

if ioresult <> 0 then writeln('Такой файл не существует');

writeln('Отсортированный по не убыванию массив');

for i := 1 to n do

begin

read(f1, a[i]); { Чтение элементов массива из файла f1 }

write(a[i], ' ') { Вывод их на экран }

end;

writeln;

close(f1) {Закрытие файла f1}

end.