![]() Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву ![]() Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Написание программы на языке Паскаль с использованием с использованием файловых переменных.Содержание книги
Поиск на нашем сайте
Разработка программы для работы с текстовым файлом Цель работы: формирование знаний и умений по работе с файловыми переменными. Приобретение навыков работы с текстовыми файлами. Краткие теоретические сведения Большие совокупности данных, например сведения обо всех учащихся школы или телефонный справочник, удобно иметь записанными во внешней памяти в виде последовательности сигналов. Любой язык программирования должен содержать средства для организации хранения информации на внешних запоминающих устройствах и доступа к этой информации. В Паскале для этих целей предусмотрены специальные объекты - файлы. Файлом называется совокупность данных, записанная во внешней памяти под определенным именем. Любой файл имеет три особенности. Во-первых, у него есть имя, что дает возможность программе работать одновременно с несколькими файлами. Во- вторых, он содержит компоненты одного типа. Таким компонентом может быть любой тип Паскаля, кроме файлового. Например, допускается файл записей или файл строк, но нельзя создать файл файлов. В-третьих, длина вновь создаваемого файла никак не оговаривается при его объявлении и ограничивается только емкостью устройств внешней памяти. Для доступа к файлу описывается специальная файловая переменная, которая считается представителем файлов в программе. Формат описания файлового типа Type <имя типа> =<тип компонентов>; Var <F >: file of <имя типа>;
Файл можно представить как список значений одного и того же (базового) типа. Все элементы файла считаются пронумерованными, начальный элемент имеет нулевой номер. В любой момент времени программе доступен только один элемент файла, на который ссылается текущий указатель (указатель обработки). Часто позицию размещения доступного элемента называют текущей позицией. Как правило, все действия с файлом (чтение из фала, запись в файл) производятся поэлементно, причем в этих действиях участвует тот элемент файла, который обозначается текущим указателем. В результате совершения операций текущий указатель может перемещаться. По способу доступа к элементам различают фалы последовательного и прямого доступа. Файлом последовательного доступа называется файл, к элементам которого обеспечивается доступ в такой же последовательности, в какой они записывались. Фалом прямого доступа называется файл, доступ к элементам которого осуществляется по адресу элемента. Например, для поиска нужного элемента в последовательном файле необходимо, начиная с нулевого, перемещать указатель обработки до тех пор, пока он не будет указывать на искомый элемент, а при поиске нужного элемента в файле прямого доступа достаточно указать номер его позиции.
При организации данных в файл последовательного доступа нельзя одновременно читать данные из файла и записывать данные в файл, т.к. для чтения некоторого элемента последовательного файла указатель обработки помещен на данный элемент, а для записи нового элемента этот указатель одновременно должен быть в конце файла. В Паскале имеется 3 класса файлов: · Текстовые · Типизированные · Нетипизированные Средства обработки файлов Каждому файлу в языке ставится в соответствие файловая переменная, которая должна быть связана с конкретным внешним файлом. Поэтому перед началом работы с файлом необходимо установить данное соответствие. Для этого в языке используется процедура: Assign(Var F; Name:String); где F - переменная любого файлового типа, а строковое выражение Name содержит полное имя файла, удовлетворяющее требованиям операционной системы. Процедура Assign всегда предшествует другим процедурам работы с файлами, так как ставит в соответствие конкретному файлу на внешнем устройстве логическую файловую переменную языка, к которой впоследствии будут обращаться все другие файловые процедуры. Недопустимо использование процедуры Assign для уже открытого файла. Это значит, что если было назначено имя конкретного набора данных файловой переменной с помощью процедуры Assign, а затем этот файл был открыт, то, прежде чем использовать ту же файловую переменную для нового набора данных, необходимо с помощью процедуры Close закрыть этот файл. Для работы с файлом прежде всего необходимо его открыть. В языке Паскаль предусмотрены для этого две процедуры: Reset(var F: file); - открывает существующий файл; Rewrite(var F: file); -создает и открывает новый файл. При описании обеих процедур параметр file означает файловую переменную любого типа. Открытие внешнего файла с помощью процедуры Reset в случае его отсутствия на диске может привести к ошибке при выполнении программы.
Пример1. Стандартное открытие файла Assign(F, ' '); Reset(F); Процедура Rewrite создает и открывает новый файл. Использование этой процедуры требует особого внимания. При попытке создать и открыть новый файл с именем уже существующего на диске набора данных действие процедуры Rewrite сведется к удалению этого набора и созданию нового пустого файла с тем же именем. Если процедура Rewrite используется для текстового файла, то к открываемому новому набору данных в дальнейшем могут быть применимы только операции записи. Операция закрытия файла является логическим окончанием работы с любым открытым файлом. Для этого служит процедура Close (Var F); Использование процедуры Close позволяет устранить связь файловой переменной с внешним файлом, установленную с помощью процедуры Assign. Пример 2. Полная цепочка команд для создания простого текстового файла с именем WORK.TXT: … Var F: text; begin Assign(F, ' WORK. ТХТ'); Rewrite(F); Write(F, 'Простой текстовый файл'); Close(F); end. К языковым средствам обслуживания файлов необходимо отнести процедуры переименования и удаления неоткрытых файлов. Использование этих процедур не зависит от типа файла. Rename(var F; NewName: string); Процедура переименовывает неоткрытый файл F любого типа. Новое имя задается строкой NewName. ] Erase(var F); Процедура удаляет неоткрытый внешний файл любого типа, задаваемый переменной F. Обе процедуры нельзя использовать для уже открытых файлов. Операции удаления и переименования осуществляются только для реально существующих файлов, иначе возникает ошибка выполнения программы. Пример 3. Удаление или переименование файла Var F: file; Ch: char; St: string; begin Write('Введите имя файла: '); Readln(St); {Чтение имени} Assign(F, St); {Назначить имя файловой переменной} Write('Удалить файл (У), Переименовать(П), Выход(В)'); Readln(Ch); case Ch of 'У ', ' y': Erase(F); {Удаление файла} 'П','п': begin Write('Введите новое имя файла: '); Readln(St); Rename(F, St); {Переименование файла} end; 'В','в': Halt(1); end; end. В приведенном примере альтернативный выбор тех или иных действий зависит целиком от того, что будет введено с клавиатуры. Этот вариант программы не позволяет обработать ошибочные ситуации в случае, если файла с именем St не существует на диске. Для того чтобы файловые операции выполнялись без ошибок, необходимо использовать специальную функцию IOresult. Функция работает без параметров и возвращает значение типа integer, представляющее статус последней выполненной операции ввода-вывода. Использование этой функции в программах возможно лишь в том случае, если на время выполнения файловых операций отключена стандартная проверка операций ввода-вывода. Для этих целей используется либо специальная опция в интегрированной системе, либо директива компилятора {$I}, которая может задаваться внутри текста программы. Пример 4. Вариант программы для проверки существования файла на диске Var F: file; St: string; begin Write('Введите имя файла: '); Readln(St); Assign(F, St); {$I-} {Отключить стандартную обработку ошибок} Reset(F); {Открыть файл} {$I+} {Включить стандартную обработку ошибок} if IOresult = 0 then begin Writeln('Файл существует и нормально открыт'); Close(F); {Закрыть файл} end else Writeln('Файла с именем '+St+' на диске нет'); end. После корректного выполнения операции ввода-вывода функция IOresult возвращает значение, равное нулю, в остальных случаях функция возвращает соответствующий код ошибки.
Рассмотренные операции ввода-вывода охватывают все типы файлов в Турбо Паскале и характеризуют взаимоотношения файловой и операционной систем. Итак, для работы с любым типом файлов используются следующие процедуры и функции:
Текстовые файлы Текстовые файлы представляют собой совокупность символов, разделенных на строки, причем в конце каждой строки стоит признак конца строки. Особенностью работы с текстовыми файлами является то, что параметры, значения которых вводятся и выводятся с помощью процедур READ или WRITE, могут быть не только типа String или Char, но и других типов (целых, вещественных - при вводе, целых, вещественных, логических - при выводе). При работе с текстовыми файлами необходимо, прежде всего, объявить соответствующую файловую переменную: Var F:text; Начало работы с текстовым файлом - стандартное: файловой переменной ставится в соответствие имя файла (процедура Assign), а затем открывается новый текстовый файл (процедура Rewrite) или открывается существующий текстовый файл (процедура Reset). Далее в таблице представлены процедуры и функции для работы с текстовыми файлами.
Пример программы работы с текстовым файлом
Program Txt_file; {Пример обработки текстового файла} Type fil = text; Var Fl, Fl_New: fil; Name, New_Name: string[12]; Txt: string; Ch: char; procedure Read_Text; {Считывание текста из файла} begin {$I-} {Директива компилятору на отключение стандартной проверки операций ввода-вывода} Repeat Write('Введите имя файла для считывания текста: '); Readln(Name); Writeln; Assign(Fl,Name); Reset (Fl); if IOresult<>0 then begin Writeln('Файл не найден...'); Close(Fl); end;Writeln; Until IOresult=0;
{$I+} {Директива компилятору на включение стандартной проверки операций ввода-вывода} Writeln('Файл ',Name, ': ');Writeln; while not Eof(Fl) do begin Readln(Fl, Txt); Writeln(Txt); end; Close(Fl);Writeln; Write('Файл считан, нажмите Enter...');Readln; end; {конец процедуры Read_Text } procedure App_Text; {Добавление текста в файл} begin Append(Fl); {Открыть файл для присоединения нового текста} Writeln('Файл ',Name,' открыт для присоединения нового текста '); Writeln('Вводите текст для записи(для окончания нажмите Enter):'); Writeln; Repeat Write (':>'); Readln(txt); Writeln(fl,txt); Until txt=' '; Close(Fl);Writeln; Writeln('Присоединение нового текста окончено, нажмите Enter...'); Readln; end; {конец процедуры App_Text} procedure Erase_File; {Удаление файла} begin Erase(Fl); {Удаление файла} Writeln('Файл ',Name,' удален с диска, нажмите Enter...'); Readln; end; {конец процедуры Erase_File} procedure Rename_File; {Переименование файла} begin Write('Введите новое имя файла: '); Readln (New_Name); Rename(Fl,New_Name); {Переименование файла} Writeln('Файл',Name,'переименован в ',New_Name,',нажмите Enter...'); Readln; end; {конец процедуры Rename_File} procedure Copy_File; {Копирование текстового файла} begin Write('Введите имя файла, в который копируется файл ', Name); Readln(New_Name); Reset(Fl); Assign (Fl_New,New_Name); Rewrite(Fl_New); while not Eof(Fl) do begin Readln(Fl,Txt); Writeln (Fl_New, Txt); end; Close (Fl); Close (Fl_New);Writeln; Write('Файл ',Name,' скопирован в ',New_Name,', нажмите Enter...'); Readln; end; {конец процедуры Copy_File} Begin {Начало основной программы} Inp_Text; App_Text; Write('Удалить файл (D),переименовать(R),скопировать(С),Выход(Е) '); Readln(Ch); case Ch of 'D','d': Erase_File; 'R','r': Rename_File; 'С','с': Copy_File; 'E', 'e': Halt(1); end; end. Порядок выполнения работы 1. Изучить теоретические сведения по теме “Написание программы на языке Паскаль с использованием файловых переменных. Разработка программы для работы с текстовым файлом”. 2. Получить у преподавателя индивидуальное задание и разработать программу для работы с текстовым файлом согласно заданному варианту. 3. Показать работающую программу преподавателю. 4. Ответить на контрольные вопросы. Контрольные вопросы
1. Понятие файла. Описание файлового типа данных. 2. Файлы последовательного и прямого доступа. Средства обработки файлов. 3. Текстовые файлы. Процедуры и функции работы с текстовыми файлами.
Лабораторная работа № 29
|
||||||||||||||||||||||||||||||||||||||||||||||
Последнее изменение этой страницы: 2016-08-12; просмотров: 359; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 3.145.71.171 (0.011 с.) |