Файл: Практическая работа Реализация алгоритма линейной структуры.docx

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 09.02.2024

Просмотров: 35

Скачиваний: 0

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
фалом будет указывать на начало файла, т.е. на компонент с порядковым номером 0. Если делается попытка инициировать чтение из несуществующего файла, возникает ошибка периода исполнения.

Для записи файл инициируется стандартной процедурой REWRITE:

Rewrite(<ф.п.>);

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

Процедуры и функции для работы с файлами.

Процедура CLOSE.

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

Форма обращения:

Close(<ф.п.>);

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

Функция EOF(<ф.п.>):Boolean

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

Функция IORESULT: WORD.

Возвращает условный признак последней операции ввода-вывода. Если операция завершилась успешно, функция возвращает 0. Функция становится доступной только при отключенном автоконтроле ошибок ввода-вывода. Директива компилятора {$I-} отключает , а директива {$I+} включает автоконтроль. Если автоконтроль отключен, а операция ввода-вывода привела к возникновению ошибки, устанавливается флаг ошибки и все последующие обращения к вводу-выводу блокируются, пока не будет вызвана функция IORESULT.

Пример: использования функции IOResult.

Var F: file of integer;

Begin

Assign( f,' myfile.dat');

{текст программы}

{SI-} {отключем контроль ошибок ввода-вывода}

reset(f);
{SI+} {включаем контроль ошибок ввода-вывода}
if IOResult<>0 then

written('файл не существует')

else

{текст программы}.....................................................{файл существует}

end.

Если не сделать отключение автоматического контроля ошибок ввода-вывода с помощью директивы компилятора {SI-}, то отсутствие файла приведет к аварийному завершению программы.
Процедура READ.

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


Формат обращения:

Read(<ф.п.>,<список ввода>);

Здесь <список ввода> - содержит одну или более переменных того же (базового) типа, что и компоненты файла.

Если файл исчерпан, обращение к Read вызовет ошибку ввода-вывода.

Процедура WRITE.

Используется для записи данных в типизированный файл.

Формат обращения:

Write(<ф.п.>,<список вывода>);

Здесь <список вывода> содержит одно или несколько выражений того же типа, что и компоненты файла.

Процедура SEEK.

Смещает указатель файла к требуемому компоненту.

Формат обращения:

Seek(<ф.п.>,);

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

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

Функция FILESIZE.

Возвращает значение типа LONGINT, которое содержит количество компонентов в файле.

Формат обращения:

FileSize(<ф.п.>);

Функцию нельзя применять к текстовым файлам.

Пример:

Прочитаем файл целых числе и выведем их на экран

Var f: file of integer;

n:integer;

Begin

Assign(f,?a int.dat?); {связь с внешним файлом}

Reset(f); {открытие на чтение}

While Not eof(f) do {пока не конец файла}

Begin

Read(f,n); {считываем очередное число}

Write(n,' ' );{выводим его на экран}

End;

Close(f); {закрываем файл}

End.

Пример: Создать файл вещественных чисел.
Type Tem=file of real,

Var. f:tem

X:real

Ch:char;

Begin

Assign(f,'a:\Danl1.Dat');

Rewrite(f);

Repeat

Write('Введите число ');

Readln(x);

Write(f,x);

Write(' Будете ли еще вводить число ( да / нет?');

Readln(ch);

Until upcase(ch)<>'Y';

Close(f);

End.
Кроме всех процедур и функций для типизированных файлов для текстовых файлов при меняются еще следующие:

1.Процедуры

а) Readln(F,<список ввода>) - чтение из текущей строки файла и переход на следующую строку

б) Writeln(F,<список вывода>)- запись информации в текущую строку файла и переход на новую строку

в) Арреnd(F)- открытие файла для добавления информации в конец файла

2.Функции

а) Еоln(F)- возвращает true если указатель находится на символе конец строки файла и false в противном случае.
Варианты заданий

1/11/21/31. а) Заполнить файл последовательного доступа F целыми числами. Получить в файле G те компоненты файла F, которые являются четными.

b) Дан файл, содержащий текст из строчных русских букв. Получить в другом файле тот же текст, записанный заглавными буквами.

2/12/22/32. a) Записать в файл F последовательного доступа N действительных чисел. Вычислить произведение компонентов файла и вывести результат в файл G.

b) Дан файл содержащий произвольный текст. Выяснить чего в нем больше: русских букв или цифр.

3/13/23/33. a) Заполнить файл последовательного доступа F целыми числами. Получить в файле G все компоненты файла F, которые делятся на m и не делятся на n.

b) Дан файл, содержащий текст на русском языке. Выяснить входит ли данное слово в указанный текст, и если да, то сколько раз?

4/14/24/34. a) Записать в файл последовательного доступа N целых чисел. Посчитать количество пар противоположных чисел среди компонентов этого файла.

b) Дан файл, содержащий текст на русском языке. В предложениях некоторые из слов записаны подряд несколько раз (предложение заканчивается точкой). Получить в новом файле отредактированный текст, в котором удалены повторные вхождения слов в предложении.

5/15/35. a) Заполнить файл последовательного доступа F целыми числами. Из файла F получить файл G, исключив повторное вхождение чисел.

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

6/16/36. a) Записать в файл последовательного доступа N произвольных натуральных чисел. Переписать в другой файл последовательного доступа те элементы, которые кратны K.

b) Дан файл, содержащий текст на русском языке. Определить сколько раз встречается в нем заданное слово.

7/17/37. a) Заполнить файл последовательного доступа N действительными числами. Найти сумму максимального и минимального элементов этого файла.

b) Дан файл, содержащий текст на русском языке и некоторая буква. Посчитать сколько слов начинается на эту букву.

8/18/38. a) Записать в файл последовательного доступа N произвольных натуральных чисел: a1, a2, … an. Сформировать новый файл последовательного доступа, элементами которого являются числа a1, a1*a2, a1*a2*a3, … , a1*a2*…*an.

    1. Дан файл, содержащий текст. Сколько цифр в тексте?

9/19/39. a) Записать в файл F последовательного доступа N натуральных чисел. Получить в другом файле последовательного доступа все компоненты файла F, кроме тех, которые кратны K.

b) Дан файл, содержащий текст. Посчитать сколько слов в этом тексте.

10/20/40. a) Заполнить файл F натуральными числами. Из файла F получит файл G, исключив повторное вхождение чисел.

b) Дан файл, содержащий текст, заключающий в себе русские и английские слова. Посчитать сколько русских и сколько латинских букв в тексте.
Контрольные вопросы

  1. С какими типами файлов можно работать в Паскале?

  2. Расскажите все, что знаете о текстовых файлах, типизированных файлах, нетипизированных файлах.

  3. Объясните особенности применения каждого типа файлов.

  4. К файлам какого типа применяются процедуры ReadLn и WriteLn?

  5. Пусть FF – это внешний файл, состоящий из вещественных чисел. Напишите программу, которая считывает значения из файла и находит в FF четвертое по величине значение.


Литература

  1. Turbo Pascal. Программирование на языке высокого уровня: Учебник для вузов. 2-е изд./ С.А. Немнюгин. – СПб.: Питер, 2003. – 544 с.

  2. Епанешников А.М., Епанешников В.А. Программироваие в среде Turbo Pascal 7.0 – 3-е изд., стер. – М.: «ДИАЛОГ-МИФИ», 2001. – 288 с.

  3. Семакин И.Г., Шестаков А.П. Основы программирования: Учебник. – М.: Мастерство, 2002. – 432.