русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Урок 9 — Файлы в Паскале (Pascal). Работа с файлами. Решение задач

Файл - это упорядоченная последовательность однотипных компонентов, расположенных на внешнем носителе. Файлы предназначены только для хранения информации, а обработка этой информации осуществляется  программами. Использование файлов целесообразно в случае:

  1. долговременного хранения данных ;
  2. доступа различных программ к одним и тем же данным;
  3. обработки больших массивов данных, которые невозможно целиком разместить в оперативной памяти компьютера.

В Паскале определены текстовые файлы, типизированные и нетипизированные. Файл, не содержащий ни одного элемента, называется пустым. Создается файл путем добавления новых записей в конец первоначально пустого файла. Длина файла, т.е. количество элементов, не задается при определении файла.

Все файлы должны быть описаны в программе либо в разделе переменных VAR, либо в разделе типов TYPE. Под чтением файла понимают ввод данных из внешнего файла, находящегося на диске, в оперативную память машины. Запись в файл - вывод результатов работы программы из оперативной памяти на диск в файл.

Работа с файлами выполняется следующими процедурами:

Assign – устанавливает связь между именем файла в программе (файловой переменной ) и физическим именем файла, принятым в ОС.
Reset  -  открывает существующий файл для чтения.
Rewrite – создает и открывает новый файл для записи на внеш­нем устройстве (если файл ранее существовал, вся предыдущая информация из него стирается).
Close  -  закрывает открытый файл.

Для определения конца файла используется стандартная встро­енная функция EOF (файловая переменная), которая принимает значение True, если достигнут конец файла, и значение False в противном случае.

 

Текстовые файлы

Текстовые файлы – файлы на диске, состоящие из символов ASCII. Для разделения строк используются символы «конец строки».  Текстовые файлы являются файлами  с последовательным доступом. В любой момент времени доступна только одна запись файла. Другие записи становятся доступными лишь в результате последовательного продвижения по файлу. Текстовые файлы внутренне разделены на строки, длины которых различны. Для разделения строк используется специальный маркер конца строки. Объявляются текстовые файлы переменной типа text. Обрабатывать их можно только последовательно и с помощью процедур и функций:

Readln  (f , st )- чтение строки st из файла f и переход на начало следующей ;
Writeln (f, st )- запись строки st в файл f и маркера конца строки ;
Append (f ) - процедура, открывающая файл f для добавления строк в конец файла;
Eoln (st )- логическая функция, результат выполнения которой равен TRUE, если достигнут маркер конца строки st.

Пример 1.  Создать текстовый файл, в который записать 3 предложения. Прочитать этот файл, вывести  его содержимое на  экран. Определить длину каждого предложения.

Program File_text;
var
f1 : text;
st : string;
n: byte;
begin
assign   (f1, 'file1.txt'); {связать с файлом file1.txt  файловую переменную f1  } 
rewrite  (f1); { создать новый файл  с именем file1.txt }
writeln ( f1, 'Очень полезно изучать'); { записать предложения в файл}
writeln ( f1, ' всем  студентам ');
writeln (f1, ' язык  Pascal ');
close (f1);    { закрыть файл для записи }
reset (f1); { открыть файл для чтения }
while not eof (f1) do { пока не конец файла  f1}
begin
readln (f1, st);    {читаем строку из файла f1 }
writeln(st);         { выводим на экран }
n:= length (st);     {определяем длину строки }
writeln ('  длина =',n);
end;
close (f1); { закрыть файл  для чтения}
end .

Типизированные файлы

Типизированные файлы – это файлы, состоящие из нумерованной последовательности объектов (записей) любого типа. С такими файлами можно работать в режиме прямого доступа, при котором выполняется непосредственное об­ращение к любой записи файла. Каждая запись файла имеет свой номер, начиная с 0 и т.д.
Процедуры и функции обработки файлов:

1)  Write и Read- записывают и читают информацию из указанного файла и перемещают  указатель файла к сле­дующей записи.
2) Seek (файловая переменная, номер записи); процедура перемещения указателя на запись файла с заданным номером.
3) Truncate (файловая переменная); процедура, усекающая файл по текущей позиции указа­теля файла, т.е. все записи, находящиеся после указателя фай­ла, удаляются.
4) Функция Filesize (файловая переменная);  имеет тип Integer и определяет размер файла, т.е. число записей. 
5) Функция Filepos (файловая переменная); имеет тип Integer и возвращает текущую позицию  указателя файла.

Для добавления записей в конец файла используются процедуры:

Readln (a );
Seek (f, filesize (f));
Write (f, a);

При этом указатель устанавливается за конец файла, т.к. нуме­рация записей начинается с нуля. После чего с помощью Write можно добавлять записи. Открывать файл можно только проце­дурой Reset (f).
Для того, чтобы в режиме произвольного доступа считать, а затем изменить значение записи, следует выполнить два вы­зова процедуры Seek.Один вызов перед операцией Read, а другой - перед операцией Write (т.к. Read после чтения записи переместит указатель к сле­дующей записи).

Пример: Cоздать файл  из списка 10 студентов с их оценками ( номер,  Ф.И.О. и три оценки). Вывести его содержимое на экран, изменить фамилию студента с номером, введенным с клавиатуры, заново прочитать файл.

Program  file;
Type
wed  =  record      {Тип wed включает 3 поля: n, fio, bal}
n : byte ;       fio : string[15] ;
bal : array [1..3] of byte;   {Поле bal – массив из 3 оценок }
end;
Var    spisok : wed ;       {Запись spicok  типа  wed}
sp : file  of wed;  {Файл записей типа wed}
procedure vvod;     { процедура создания файла}
var    i,j:byte;
begin
{ оператор assing  находится в основной прграмме }
rewrite ( sp);            {открытие файла для записи}
with spisok do
For   i:=1  to  10  do      begin
n:=i;              
writeln (' Введите фамилию -  ',  i );    readln (fio); 
writeln (' Введите 3 оценки  ', fio );    For  j:= 1 to 3 do  readln ( bal [j] );
write (sp , spisok);     { запись в файл информации о студенте}
end;
close (sp);      { закрытие файла для записи }
end;
procedure    print;  { процедура  чтения   и печати всего файла }
var    j : byte;
begin
reset ( sp);               {открытие файла для чтения}
writeln (‘                 Список студентов:  ‘);
while not eof (sp) do    
with spisok do
begin
Read (sp, spisok);   {чтение данных из файла}
write (n,'  ',fio);      {вывод записи на экран}
For  j:= 1 to 3 do  write (' ', bal [j] );
writeln ;
end;
readln;
close (sp) ;
end;
procedure       work;
var    num: integer;
begin
reset ( sp);               {открытие файла для чтения}
writeln ('номер= ');    readln (num);
seek (sp, num-1); {поиск записи с указанным номером (нумерация записей с 0)}
read (sp,spisok);{чтение и перемещение указателя к сле­д. записи}
write ('fio='); writeln (spisok.fio);
seek (sp,filepos(sp)-1); {возвращение к изменяемой записи }
writeln (‘ Введите новую фамилию’  ); readln (spisok.fio);
write (sp, spisok);  {запись в файл измененной записи}
close (sp);
end;

begin      {начало основной программы}
assign (sp,'Vedom.DAT'); {связать файловую перем-ю  sp с файлом Vedom.dat}
vvod;      print; {процедуры создания и чтения файла}    
work;   print;   {корректировка и чтение измененного файла}
readln
end.

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

Вы можете --> Заказать программу или Задать вопрос на форуме

Вернуться воглавление


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.