Файл: Практическая работа Реализация алгоритма линейной структуры.docx
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 09.02.2024
Просмотров: 32
Скачиваний: 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.
9/19/39. a) Записать в файл F последовательного доступа N натуральных чисел. Получить в другом файле последовательного доступа все компоненты файла F, кроме тех, которые кратны K.
b) Дан файл, содержащий текст. Посчитать сколько слов в этом тексте.
10/20/40. a) Заполнить файл F натуральными числами. Из файла F получит файл G, исключив повторное вхождение чисел.
b) Дан файл, содержащий текст, заключающий в себе русские и английские слова. Посчитать сколько русских и сколько латинских букв в тексте.
Контрольные вопросы
Литература
Для записи файл инициируется стандартной процедурой 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(<ф.п.>,
Здесь
Процедуру нельзя применять к текстовым файлам.
Функция 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.
-
Дан файл, содержащий текст. Сколько цифр в тексте?
9/19/39. a) Записать в файл F последовательного доступа N натуральных чисел. Получить в другом файле последовательного доступа все компоненты файла F, кроме тех, которые кратны K.
b) Дан файл, содержащий текст. Посчитать сколько слов в этом тексте.
10/20/40. a) Заполнить файл F натуральными числами. Из файла F получит файл G, исключив повторное вхождение чисел.
b) Дан файл, содержащий текст, заключающий в себе русские и английские слова. Посчитать сколько русских и сколько латинских букв в тексте.
Контрольные вопросы
-
С какими типами файлов можно работать в Паскале? -
Расскажите все, что знаете о текстовых файлах, типизированных файлах, нетипизированных файлах. -
Объясните особенности применения каждого типа файлов. -
К файлам какого типа применяются процедуры ReadLn и WriteLn? -
Пусть FF – это внешний файл, состоящий из вещественных чисел. Напишите программу, которая считывает значения из файла и находит в FF четвертое по величине значение.
Литература
-
Turbo Pascal. Программирование на языке высокого уровня: Учебник для вузов. 2-е изд./ С.А. Немнюгин. – СПб.: Питер, 2003. – 544 с. -
Епанешников А.М., Епанешников В.А. Программироваие в среде Turbo Pascal 7.0 – 3-е изд., стер. – М.: «ДИАЛОГ-МИФИ», 2001. – 288 с. -
Семакин И.Г., Шестаков А.П. Основы программирования: Учебник. – М.: Мастерство, 2002. – 432.