Примеры подпрограмм по обработке файлов
Unit Unit1; interface const line='-----------------------------------------------------------------------'; type //струтура записи типизированного файла tkassa=record nomer:word; FIO:string[20]; num:word; sum:real; data:string[10]; end; ttxt=textfile; //тип для текстового файла ttype=file of tkassa; //тип для типизированного файла из записей tf=file of integer; //типизированный файл из целых значений //создание типизированного из текстового procedure create_tf(var f1:ttxt; var f2:ttype); //поиск в типизированном файле procedure search(var f2:ttype;fam:string); //вставка записи в середину тип. ф. procedure insert_mid(var f2:ttype; x:tkassa; s1:string); //вставка перед первой записью procedure insert_first(var f2:ttype; x:tkassa; s1:string); //вставка в конец файла procedure insert_end(var f2:ttype; x:tkassa); //вывод файла procedure out(var f2:ttype); //удаление из записи по указанной позиции procedure delete_pos (var f2:ttype; pos:integer); implementation procedure create_tf(var f1:ttxt; var f2:ttype); var w: tkassa; begin reset(f1); rewrite(f2); while not eof(f1) do begin readln(f1,w.nomer); readln(f1,w.FIO); readln(f1,w.num); readln(f1,w.sum); readln(f1,w.data); write(f2,w); end; closefile(f1); closefile(f2); end; procedure insert_first(var f2:ttype; x:tkassa; s1:string); var f3:ttype; i:integer; begin assignfile(f3,'tmp.doc'); rewrite(f3); write(f3,x); reset(f2); for i:=1 to filesize(f2) do begin read(f2,x); write(f3,x); end; closefile(f2); closefile(f3); erase(f2); rename(f3, s1); end; procedure insert_mid(var f2:ttype; x:tkassa; s1:string); var f3:ttype; i:integer; x1:tkassa; begin assignfile(f3,'tmp.doc'); rewrite(f3); reset(f2); for i:=1 to filesize(f2)div 2 do begin read(f2,x1); write(f3,x1); end; write(f3,x); for i:=filesize(f2)div 2+1 to filesize(f2) do begin read(f2,x); write(f3,x); end; closefile(f2); closefile(f3); erase(f2); rename(f3, s1); end; procedure insert_end(var f2:ttype; x:tkassa); var f3:ttype; i:integer; x1:tkassa; begin reset (f2); seek(f2, filesize(f2)); write(f2, x); closefile(f2); end; procedure out(var f2:ttype); var x:tkassa; i:integer; begin reset(f2); writeln; shapka; for i:=1 to filesize(f2) do begin read(f2,x); writeln ('| ', x.nomer:6,' | ',x.FIO:7,' | ',x.num:16,' | ',x.sum:9,' | ',x.data:6,' |'); end; closefile(f2); end; procedure delete_pos (var f2:ttype; pos:integer); var i:integer; x:tkassa; begin reset(f2); if pos<=filesize(f2) then begin for i:=pos to filesize (f2)-1 do begin seek (f2, i); read(f2,x); seek(f2, filepos (f2)-2); write(f2,x); end; seek(f2, filesize(f2)-1); truncate(f2); closefile(f2); end; end; procedure writey(var x:tkassa); var y:real; begin writeln('Vvedite nomer kassi'); readln (x.nomer); writeln('Vvedite FIO'); readln (x.FIO); writeln('Vvedite kol-vo'); readln (x.num); writeln('Vvedite stoimost bileta'); readln (y); x.sum:=y*x.num; writeln('Vvedite daty'); readln (x.data); end; procedure search(var f2:ttype;fam:string); var x:tkassa; k,i:integer; begin reset(f2); k:=0; for i:=1 to filesize (f2) do begin read(f2, x); if x.FIO=fam then begin if k=0 then shapka; k:=k+1; writeln ('| ', x.nomer:6,' | ',x.FIO:7,' | ',x.num:16,' | ',x.sum:9,' | ',x.data:6,' |'); end; end; if k=0 then writeln ('Takix kassirov net'); end; procedure vivf(var f:tf); var i,x:integer; begin writeln; reset(f); for i:=1 to filesize (f) do begin read(f,x); write(x,' '); end; closefile(f); Reset(f); end; end. Контрольные вопросы 1. Что такое файл? (определение файла на логическом и физическом уровнях) 2. Как устанавливается связь логического и физического файлов? 3. Какие вы знаете способы ввода в программу имени физического файла? 4. Что значит:– открыть файл: - закрыть файл? 5. Для чего используется директива {$I+/-}? 6. Что понимается под текстовым файлом на логическом уровне? 7. Как можно создать текстовый файл? 8. Что является компонентой текстового файла? Чем отделяется одна компонента от другой? Что можно сказать о длине компонент? 9. Какие процедуры осуществляют запись данных в текстовый файл и их особенности? 10. Какие процедуры читают данные из текстового файла и их особенности? 11. Как переопределить буфер обмена для текстового файла? На что влияет размер буфера? 12. Какие операции следует включить в программу для создания текстового файла А.txt на диске D:, в который записываются четыре значения: число, число, символ, строка (причем, три первых на одной строке файла, а третье на другой), предусмотрев все для последующего считывания этих значений. (разработайте программу и отладьте ее) 13. Каково назначение функций EOF, EOLN, SEEKEOF,SEEKEOLN? Процедуры FLUSH? 14. Как организовать добавление новых данных в уже существующий текстовый файл? (Приведите фрагмент программы) 15. Что объясняет эта программа? Текстовый файл F.txt построчно содержит информацию: Этот файл содержит 3 строки. С этой строки вы считали 22 символа. А что стало с остальными? А это уже третья строка. { Это текст программы } Var f:Filetext; A:string[22]; name_file: string; Begin Repeat Writeln(‘ВВЕДИТЕ ИМЯ ФАЙЛА’); readln(name_file); AssignFile(f, name_file); {$I-} Reset(f); {$I+} if Ioresult<>0 then begin writeln(‘Ошибка открытия файла с именем ’, name_file); writeln(‘Введете заново имя файла? Y/N’); readln(OK); if (OK=’N’) or (OK=’n’) then Halt(1); end; until Ioresult=0; Readln(f); readln(f,a); writeln(a); readln(f,a); write(a); close(f); End. 16. Пусть существует файл c.txt, из М (1<=M<=10) строк. Каждая строка содержит данные: год рождения и Фамилию И.О.. Разработайте программу заполнения массива A, определенного следующим образом: type rec=record уеаr:1800..5000; fio:string[40] end; var A: array[1..N] of rec; 17. Как описать типизированный файл в программе? 18. Как можно создать типизированный файл? Что является значением компоненты типизированного файла? Что можно сказать о длине всех компонент типизированного файла? Имеются ли в типизированном файле символы разделители компонент? 19. Приведите описания типизированных файлов · Из компонентов вещественные числа · Из компонентов символьного типа · Из записей со структурой rec из вопроса 15. 20. Как определить длину компоненты типизированного файла? 21. Что определяет указатель типизированного файла? 22. Если указатель равен 3, то над какой (по номеру) записью будет выполняться операция ввода – вывода? (при ответе на вопрос изобразите схемой файл из 7 компонент, длина компонента 2 байта) 23. Какие операции можно выполнять над компонентами типизированного файла, если он открыт · процедурой Reset · процедурой Rewrite? 24. Какие операции выполняют процедуры SEEK, TRUNCATE? Что является значениями функций FILESIZE, FILEPOS? Что будет результатом выполнения процедур: Seek(f,0); seek(f,filesize(f)); seek(f,filepos(f)-1); {считать, что filepos(f)>0) 25. Как вводиться в программу файл без типа? Что считается компонентой такого файла? Когда устанавливается размер компоненты для файла без типа?
БИБЛИОГРАФИЧЕСКИЙ СПИСОК
1. Рапаков Г. Г., Ржеуцкая С. Ю "Turbo Pascal для студентов и школьников.". БХВ-Петербург, 2007. – 300 с. 2. Кандзюба С.П. Delphi 7. Базы данных и приложения. Лекции и упражнения / С.П.Кандзюба, В.Н.Громов. – СПб.: ООО «ДиаСофтЮП», 2005. – 570 с. 3. Бобровский С. И."Delphi 7. Учебный курс". - Питер, 2007. – 735 с. 4. Фаронов В. В."Delphi: программирование на языке высокого уровня." - Питер, 2005. – 639 с. 5. Фаронов В.В. Система программирования DELPHI. - Санкт-Петербург: БХВ, 2003. – 640 с 6. Альфред В.Ахо и др. Структуры данных и алгоритмы: Пер.с англ.: “Издательский дом “Вильямс, 2001. – 384 с.: ил.--Парал. Тит. Англ. 7. Кнут Д. Искусство программирования для ЭВМ т.1 – 3, М.: Мир, 1976. – 384 с. 8. Криницкий А.Н. Алгоритмы вокруг нас.М.: Наука, 1977 г. 9. Вирт Алгритмы+структуры данных = программы, Пер. с английского - М.: Мир, 1985. – 300 с. 10. Климова Л.М. PASCAL 7.0, Практическое программирование. Решение задач, Учебно методическое издание, М.: Кудиц-Образ, 2000 г. 11. В.Н.Пильщиков. Сборник упражнений по языку Паскаль.Учебное пособие для вузов, - М.: Наука, 1989. – 160 с.
[1] При вводе данных в строковые поля предусмотреть преобразование их к формату: первая буква большая, остальные маленькие)
|