Работа с текстовыми файлами
Рассмотрение приёмов записи и чтения текстовых файлов с помощью процедур и функций Турбо Паскаля. Определение сущности файла. Исследование особенностей текстового файла. Изучение максимальной длины файла. Ознакомление с процессом инициации файла.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | лабораторная работа |
Язык | русский |
Дата добавления | 19.09.2019 |
Размер файла | 24,3 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Лабораторная работа
Работа с текстовыми файлами
Введение
Цель и задача работы: изучить приёмы записи и чтения текстовых файлов с помощью процедур и функций Турбо Паскаля.
Файлы. Под файлом понимается либо именованная область внешней памяти ПК (жесткого диска, дискеты) либо логическое устройство - потенциальный источник и приемник информации.
Любой файл имеет три характерные особенности. Во-первых, у него есть имя, что дает возможность программе работать одновременно с несколькими файлами. Во-вторых, он содержит компоненты одного типа. В-третьих, длина вновь создаваемого файла никак не оговаривается при его объявлении и ограничивается только емкостью устройства внешней памяти.
Файловый тип, или переменную файлового типа можно задать одним из трех способов:
<имя> = FILE OF <тип>;
<имя> = TEXT;
<имя> = FILE;
Здесь <имя> - имя файлового типа (правильный идентификатор)
FILE, OF - зарезервированные слова (файл, из)
<тип> - любой тип Турбо Паскаля, кроме файлов.
Например
type
product = record
name: string;
code: word;
price: real;
end;
text80 = file of string[80];
var
f1: file of char;
f2: text;
f3: file;
f4: text80;
f5: file of product;
В зависимости от способа объявления можно выделить три вида файлов:
· типизированные (задаются предложением FILE OF …);
· текстовые файлы (определяются типом TEXT);
· нетипизированные файлы (определяются типом FILE).
В нашем примере f1, f4, f5 - типизированные файлы, f2 - текстовый файл, f3 - нетипизированный файл. Вид файла, вообще говоря, определяет способ хранения информации в файле. Однако в Турбо Паскале нет средств контроля вида ранее созданных файлов. При объявлении уже существующих файлов программист сам должен следить за соответствием вида объявления характеру файла.
Доступ к файлам
Любые файлы становятся доступны программе только после выполнения особой процедуры открытия файла. Эта процедура заключается в связывании ранее объявленной файловой переменной с именем существующего или вновь создаваемого файла, а также в указании направления обмена информацией: чтение из файла или запись в него.
Файловая переменная связывается с именем файла в результате обращения к стандартной процедуре ASSIGN:
ASSIGN (<ф.п.>, <имя файла>);
Здесь <ф.п.> - файловая переменная (правильный идентификатор объявленный в программе как переменная файлового типа);
<имя файла> - текстовое выражение, содержащее имя файла.
Имена файлов
Имя файла - это любое выражение строкового типа, которое строится по правилам определения имен в MS-DOS (операционной системе ПК).
· Имя содержит до восьми разрешенных символов - прописных и строчных латинских букв, цифр и символов: !, @, #, $, %, ^, &, (, ), ~, -, _
· За именем может следовать расширение - последовательность до трех разрешенных символов; расширение, если оно есть, отделяется от имени точкой.
· Перед именем может ставиться так называемый путь к файлу: имя диска и/или имя текущего каталога и имена каталогов вышестоящих уровней.
· Максимальная длина имени файла вместе с путем - 79 символов.
Например
const
name='e:\student\2-ai-11\try.txt';
var
f: Text;
begin
assign(f,name);
...
Если указывается только имя файла (имеется в виду имя.расширение), то при выполнении процедуры ASSIGN программа добавляет к имени файла в качестве пути путь текущего каталога.
После связывания файловой переменной с файлом процедура работы с файлом состоит из следующих этапов:
· инициация файла;
· чтение и/или запись информации; (может повторяться сколько угодно раз)
· закрытие файла.
Инициация файла
Инициировать файл означает указать для этого файла направление передачи данных. В Турбо Паскале можно открыть файл для чтения, для записи информации, а также для чтения и для записи одновременно.
Для чтения файл инициируется с помощью стандартной процедуры RESET:
RESET(<ф.п.>);
Здесь <ф.п.> - файловая переменная, связанная ранее процедурой ASSIGN с уже существующим файлом.
При выполнении этой процедуры дисковый файл подготавливается к чтению информации. В результате специальная переменная-указатель, связанная с этим файлом будет указывать на начало файла, т.е. на компонент с порядковым номером 0.
Если делается попытка инициировать чтение из несуществующего файла, возникает ошибка периода исполнения, которая приведет к аварийному завершению программы.
Стандартная процедура REWRITE(<ф.п.>) инициирует запись информации в файл, связанный ранее с файловой переменной <ф.п.>. Процедурой REWRITE нельзя инициировать запись информации в ранее существовавший дисковый файл: при выполнении этой процедуры старый файл уничтожается и никаких сообщений при этом в программу не передаётся. Новый файл подготавливается к приему информации и его указатель принимает значение 0. файл текстовый паскаль
Стандартная процедура APPEND(<ф.п.>) инициирует запись в ранее существовавший текстовый файл для его расширения, при этом указатель файла устанавливается в его конец. Процедурой APPEND нельзя инициировать запись в типизированный или нетипизированный файл. Если текстовый файл ранее уже был открыт с помощью RESET или REWRITE, использование процедуры APPEND приведет к закрытию этого файла и открытию его вновь, но уже для добавления записей.
Закрытие файла
Процедура CLOSE закрывает файл, однако связь файловой переменной с именем файла, установленная ранее процедурой ASSIGN, сохраняется. Формат обращения:
CLOSE(<ф.п.>)
При создании нового или расширении старого файла процедура обеспечивает сохранение в файле всех новых записей и регистрацию файла в каталоге. Функции процедуры CLOSE выполняются автоматически по отношению ко всем открытым файлам при нормальном завершении программы. Поскольку связь файла с файловой переменной сохраняется, файл можно повторно отрыть без дополнительного использования процедуры ASSIGN.
Текстовые файлы
Текстовый файл связывается с файловой переменной, принадлежащей к стандартному типу TEXT. Текстовые файлы предназначены для хранения текстовой информации (например, исходные тексты программ).
Текстовый файл трактуется в Турбо Паскале как совокупность строк переменной длины. Доступ к каждой строке возможен лишь последовательно, начиная с первой. При создании текстового файла в конце каждой записи (строки) ставится специальный признак конца строки, а в конце всего файла - признак конца файла. Эти признаки можно протестировать специальными логическими функциями:
EOF(<ф.п.>): boolean - возвращает TRUE , если файловый указатель стоит в конце файла.
EOLN(<ф.п.>): boolean - возвращает TRUE , если файловый указатель стоит в конце строки.
Чтение из текстового файла осуществляется с помощью процедур
READ (<ф.п.>, <сп. ввода> )
READLN (<ф.п.>, <сп. ввода> )
Здесь <сп. ввода> - список ввода: последовательность одной или более переменных типа CHAR, STRING, а также любого целого или вещественного типа.
Запись в текстовый файл осуществляется с помощью процедур
WRITE (<ф.п.>, <сп. вывода> )
WRITELN (<ф.п.>, <сп. вывода> )
Здесь <сп. вывода> - список вывода: последовательность одного или более выражений типа CHAR, STRING, а также любого целого или вещественного типа.
Пример 1.
Вывод на экран исходного текста программы
var
f: text;
s: string;
begin
assign(f,'myprog.pas');
reset(f);
while not eof(f) do
begin
readln(f,s);
writeln(s);
end;
close(f);
end.
Пример 2.
Считывание массива значений из файла
const N = 1000;
var
f: text;
m: array[1..N] of real;
i: integer;
begin
assign(f,'prog.dat');
reset(f);
i := 1;
while not eof(f) do
begin
read(f,m[i]); {весь файл рассматривается как одна длинная строка}
i := i+1;
end;
close(f);
Пример 3.
Запись текста в текстовый файл.
var
f: text;
s: string;
begin
assign(f,'MyText.txt');
rewrite(f);
repeat
readln(s);
if length(s)>0 then writeln(f,s);
until length(s)=0;
close(f);
end.
Задания для самостоятельной работы
Разработать программу на Турбо Паскале, которая обеспечивает решение поставленной задачи в соответствии с предложенным вариантом. Первая цифра номер задания, вторая номер варианта.
1. Выполнить обработку текстового файла по указанному алгоритму.
1.1. Вывести на экран самую длинную строку файла.
1.2. Вывести на экран все строки длиной не менее X символов. Значение X задаётся пользователем.
1.3. Вывести на экран все строки, в которых находится слово, заданное пользователем.
1.4. Вывести на экран каждую пятую строку файла.
1.5. Вывести на экран все строки длиной не более X символов. Значение X задаётся пользователем.
1.6. Вывести на экран самую короткую строку файла.
1.7. Вывести на экран три строки с номерами, заданными пользователем. Если строк с такими номерами нет, выдать сообщение.
1.8. Вывести на экран все строки, которые начинаются со слова, заданного пользователем.
1.9. Вывести на экран все строки, которые не заканчиваются символом «.» <точка>.
1.10. Вывести на экран все строки, в которых нет слова, заданного пользователем.
2. Разработать программу преобразования исходного текстового файла в новый файл, которая будет выполнять заданную обработку строк исходного файла.
2.1. После каждой десятой строки добавлять пустую строку, номер страницы, который должен последовательно увеличиваться с единицы. За номером должны следовать ещё две пустые строки.
2.2. Из двух исходных строк, идущих друг за другом сформировать одну, если их суммарная длина менее 70 символов.
2.3. Если исходная строка заканчивается символом «:» <двоеточие> или «;» <точка с запятой>, то в начало следующей строки добавить « » <дефис>.
2.4. Записывать в файл только первые 70 символов каждой строки. Если строка оказывается длиннее 70 символов, то в конце строки добавлять «…» <многоточие>.
2.5. Если исходная строка начинается со слова «Рисунок», то до и после неё вставить пустые строки.
2.6. Если в исходном файле встречается несколько идущих подряд пустых строк, то их нужно заменить одной пустой строкой.
2.7. При записи строк в новый файл, менять местами соседние строки, например: исходный порядок следования 1, 2, 3, 4, …; после выполнения программы: 2, 1, 4, 3, …
2.8. Строки нового файла формируются по принципу: исходная строка +<пробел>+ длина исходной строки.
2.9. Первые десять строк исходного файла записать в конец нового файла. Программа должна корректно работать с исходными файлами, содержащими меньше 10 строк.
2.10. В начало каждой строки добавлять столько пробелов, чтобы её длина равнялась 50 символов. Если исходная длина строки больше 50 символов, то никаких преобразований выполнять не надо.
3. Разработать программу для заполнения и обработки типизированного файла.
3.1. Дан файл student.dat. Поля записи содержат следующие данные: фамилия, имя, отчество, шифр группы, пол, семейное положение (0/1), номер комнаты в общежитии (0-если не в общежитии). Обработка следующих запросов:
· по номеру комнаты вывести список жильцов;
· вывести список всех семейных студентов;
· по ФИО и шифру группы указать N комнаты проживания;
· выдать список студентов с фамилией на заданную букву.
3.2. База данных heap.dat. Структура записей: номер изделия, наименование изделия, количество изделий, цена 1 изделия, стоимость. Обработка следующих запросов:
· по номеру изделия выдать справку о наличии его на складе;
· выдать общую стоимость всех изделий, хранящихся на складе
· выдать список всех изделий c номерами в заданном интервале;
· найти изделие с самой большой ценой.
· выдать список изделий на складе, наименование которых начинается с заданной буквы.
3.3. Записи файла plan.dat имеют вид: шифр специальности, наименование дисциплины, шифр кафедры [БукваЦифраЦифра], количество лекций, количество практик, количество лабораторных, признак: 2 - экзамен, 1 - зачет, 0 - нет ничего. Обработка следующих запросов:
· по шифру кафедры подсчитать общее количество проводимых ею занятий;
· вывести список дисциплин для заданной специальности;
· найти план занятий по заданным специальности и дисциплине;
· вывести список дисциплин, читаемых заданной кафедрой.
3.4. Записи файла plan.dat имеют вид: шифр специальности, наименование дисциплины, шифр кафедры [БукваЦифраЦифра], количество лекций, количество практик, количество лабораторных, признак: 2 - экзамен, 1 - зачет, 0 - нет ничего. Обработка следующих запросов:
· выдать расписание на всю неделю для указанной группы;
· выдать расписание для указанной группы в указанный день;
· найти выходные дни для указанной группы;
· выдать номера аудиторий, где проходят занятия по заданному предмету.
3.5. Справочная gai.dat содержит записи следующего наполнения: марка автомобиля, номер, цвет, год регистрации в ГАИ, фамилия владельца. Обработка следующих запросов:
· выдать фамилии владельцев и номера автомобилей заданной марки;
· выдать количество автомобилей заданной марки;
· выдать список всех а/м заданной марки, зарегистрированных не раньше заданного года;
· поиск владельца а/м по цвету, по марке и по первой букве номера а/м.
3.6. База данных study.dat содержит записи вида: номер зачетки, фамилия И.О., номер варианта, отметка о выдаче задания 1 (1/0), отметка о выполнении задания 1 в баллах, отметка о выдаче задания 2 (1/0), отметка о выполнении задания 2 в баллах, отметка о выдаче задания 3 (1/0), отметка о выполнении задания 3 в баллах. Требуется обеспечить выдачу:
· общей ведомости;
· справки о студенте по номеру зачетки;
· ведомости о выполнении студентами задания с указанным номером;
· списка студентов с заданным номером варианта, имеющих заданную сумму баллов по всем 3 задачам;
· списка студентов, не получивших задание с указанным номером.
3.7. База данных table.dat содержит данные о расписании занятий на факультете. Структура записей: шифр группы, день недели, время начала занятия, предмет, номер аудитории, фамилия преподавателя. Обработка следующих запросов:
· выдать расписание на всю неделю для указанного преподавателя;
· выдать номер аудитории для указанной группы в заданные день и время;
· найти выходные дни для указанного преподавателя;
· выдать список групп, занимающихся в указанный день в заданной аудитории.
3.8. В базе book.dat хранятся записи, содержащие: номер каталога, номер книги, наименование книги, год издания, цена 1 экземпляра. Обеспечить выдачу следующих справок:
· по автору книги найти все его книги;
· по номеру книги найти наименование книги и автора;
· выдать список книг, изданных в указанном году;
· найти книги по фамилии автора, году издания.
3.9. В базе bus.dat хранятся записи, содержащие: номер маршрута, начало маршрута, конец маршрута, тип автобуса, количество автобусов на линии, номер автобазы. Обработка следующих запросов:
· определить общее число городских автобусов;
· по номеру автобуса определить его маршрут;
· выдать список номеров автобусов, маршруты которых проходят через заданный пункт;
· выдать список маршрутов, которые обслуживает автобаза с указанным номером.
3.10. В базе export.dat содержатся сведения об экспорте товаров: наименование товара, страна, импортирующая товар, объем поставляемой партии в штуках, страна-производитель. Обработка следующих запросов:
· найти страны, в которые экспортируется данный товар;
· вывести список товаров, поставляемых указанной страной;
· вывести наименование товаров, начинающихся с заданной буквы;
· вывести общий объем товаров, поставляемых в указанную страну.
Контрольные вопросы
1. Для чего используются подпрограммы?
2. В каких случаях разумно использовать структурированный тип запись?
3. В каких случаях используются массивы?
4. Какой оператор цикла лучше использовать при работе с массивами? Почему?
5. Чем различаются способы использования процедур и функций?
6. Дайте понятие рекурсивного вызова функций?
7. Что такое библиотеки подпрограмм?
8. Каков формат описания библиотек в Турбо Паскале?
9. Какие преимущества даёт использование библиотек?
10. Какие функции и процедуры содержит библиотека Турбо Паскаля CRT?
11. Сформулируйте основные особенности использования строкового типа в Турбо Паскале?
12. Опишите последовательность действий, выполняемых при работе с файлами.
13. В чём разница между типизированными, нетипизированными и текстовыми файлами?
Библиографический список
1. Фаронов В.В. Turbo Pascal 7.0. Начальный курс. Учебное пособие. - 2000 г.
2. Долинский М.С. Алгоритмизация и программирование на Turbo Pascal: от простых до олимпиадных задач: Учебное пособие. - СПб.: Питер, 2005.
3. Зуев Е.А. Turbo Pascal. Практическое программирование - М.: «Издательство ПРИОР», 1999.
Размещено на Allbest.ru
...Подобные документы
Проверка существования и статуса файла. Определение его размера. Открытие файла для чтения, записи, добавления. Закрытие файловых дескрипторов. Запись из переменной в файл. Загрузка файла из сети. Создание и удаление каталога. Функции работы с каталогами.
презентация [133,9 K], добавлен 21.06.2014Описание используемых в программе операторов, процедур, функций. Директива include. Правила объявления и определения функций в СИ++. Блок-схема алгоритма программы. Подпрограммы чтения из файла и записи в файл. Использование заголовочных файлов.
курсовая работа [346,8 K], добавлен 26.04.2012Структура заданного исходного файла и структуры данных, соответствующие данным файла. Подпрограмма проверки принадлежности текста к одной из шести кодовых таблиц. Алгоритмы перекодировки файла в cp1251. Алгоритм сортировки записей исходного файла.
курсовая работа [63,7 K], добавлен 12.12.2010Описание типизированных файлов. Принципы работы с файлами, создание и открытие на запись нового файла. Чтение из файла, открытие существующего файла на чтение. Определение имени файла. Запись в текстовый файл. Описание множества и операции над ними.
реферат [86,4 K], добавлен 07.02.2011Алгоритм и код программы для создания исходного двоичного файла чисел с произвольным количеством элементов, чтения из файла действительных восьмибайтных элементов и подсчёта общего количества элементов файла. Вывод результата работы программы на экран.
контрольная работа [1,0 M], добавлен 23.11.2014Назначение команды "diskcomp". Текст и запуск командного файла. Сравнение команды в Windows 7 и Windows XP. Разработка файла-сценария в ОС Linux. Создание файла в подкаталоге. Создание файла "oglavlenie.txt" с отсортированным по времени списком файлов.
курсовая работа [1,6 M], добавлен 22.08.2012Особенности и основы разработки и реализации гипертекстового транслятора, позволяющего на основе исходного текстового файла формировать гипертекстовую базу данных и использовать ее для просмотра исходного текстового файла с помощью перекрестных ссылок.
дипломная работа [411,1 K], добавлен 02.03.2011Принципы программирования файловой структуры в операционной системе Windows. Свойства и методы класса Tstream. Пример создания, чтения и записи потока. Чтение, запись и внутренняя структура файла. Пример чтения из файла, начиная с заданной позиции.
курсовая работа [251,6 K], добавлен 18.05.2011Файловый ввод/вывод с использованием разных классов. Вызовы операционной системы. Использование вызовов операционной системы. Основные способы открытия файла. Замена файла, связанного со стандартными устройствами ввода/вывода. Операции чтения файла.
курсовая работа [1,1 M], добавлен 09.12.2016Понятия файлов и каталогов. Область внешней памяти, группа файлов на одном носителе. Древовидная структура файлов на диске. Имя и местонахождение файла. Маршрут или путь по файловой системе. Запись имени файла в DOSе. Шаблоны. Структура каталога.
лабораторная работа [15,2 K], добавлен 30.09.2008Процедура ввода исходных данных в программу, вывод результатов работы программы на экран. Принцип организации хранения логически связанных наборов информации в виде файлов. Параметры характеристики файла, способы обращения к нему, соглашения по типу.
реферат [14,5 K], добавлен 06.12.2011Разработка программы, представляющей собой простой текстовый редактор, использующий структуру данных для промежуточного хранения редактируемого файла. Функциональное описание разработки. Внутренняя структура двоичного файла нового класса "bin_file".
курсовая работа [254,6 K], добавлен 26.01.2013Работа с файлами, папками WINDOWS: понятие файла, папки, сохранение, переименование. Вычисление суммы порядковых номеров фамилии и имени. Алгоритм расчета себестоимости. реализация в других программах алгоритма и отчета по нему. Файлы, папки WINDOWS.
контрольная работа [17,9 K], добавлен 05.06.2008Особенности создания и распечатки на принтере текстового файла (документа), содержащего таблицу, с использованием шрифта Times New Roman черного цвета размером 12 пунктов. Алгоритм создания справочно-поисковой системы и баз данных в Бейсик-программе.
контрольная работа [462,1 K], добавлен 04.04.2012Редактирование аналоговых и цифровых изображений. Описание графических форматов файла. Алгоритм отображения файла и реализации эффектов. Программа для работы с графическими форматами. Назначение и взаимодействие модулей. Перечень процедур и функций.
курсовая работа [516,8 K], добавлен 28.05.2013Генерирование и сохранение мелодии в виде звукового файла формата wav. Проведение частотного анализа полученного сигнала. Зависимость объема wav-файлов от разрядности кодирования сигнала. Спектр нот записанного wav-файла с заданной разрядностью.
лабораторная работа [191,0 K], добавлен 30.03.2015Разработка приложения Win32, с помощью которого можно получить атрибуты файла (функция GetFileAttributes). Определение даты и времени создания, последнего доступа и последней записи данных в файл. Получение информации о файле по его идентификатору.
курсовая работа [187,3 K], добавлен 27.06.2014Создание программного обеспечения с использованием принципа посредника. Разработка интерфейса и исходного кода главного окна. Обработчики событий нажатия на кнопки формы. Принципы решения задач по проверке валидности XML-файла с помощью DTD-файла.
лабораторная работа [139,2 K], добавлен 04.12.2013Реализация программы-конвертера для создания на основе передаваемых dbf файлов файла формата XML (по заданному пользователем шаблону). Создание шаблонов при помощи кода и при помощи конструктора. Проектирование архитектуры программного продукта.
дипломная работа [1,6 M], добавлен 27.06.2013Создание программного продукта на языке Pascal в визуальной среде программирования Borland Developer Studio в консольном приложении. Разработка типизированного файла для записи данных и их вывод на экран, добавление данных в конец файла, поиск информации.
курсовая работа [1,0 M], добавлен 04.12.2011