русс | укр

Мови програмуванняВідео уроки php mysqlПаскальСіАсемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

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


Linux Unix Алгоритмічні мови Архітектура мікроконтролерів Введення в розробку розподілених інформаційних систем Дискретна математика Інформаційне обслуговування користувачів Інформація та моделювання в управлінні виробництвом Комп'ютерна графіка Лекції


Приклади роботи з файлами


Дата додавання: 2014-11-28; переглядів: 764.


Пр. Читання числових даних з файлу – масив даних має фіксовану розмірність=5

var f,w:text; a: array [1..5] of integer; i:integer;

begin

assign (f,'data.txt');

reset (f);

for i:=1 to 5 do read (f, a[i]);

close (f);

assign (w, 'result.dat');

rewrite (w);

writeln (w,'Результати:');

for i:=1 to 5 do writeln (w,a[i]:5,sqr(a[i]):5);

close(w); end.

Файл data.txt може бути, наприклад, таким:

1 2 3

4 5

Файл result.dat буде таким:

Результати:

1 1

2 4

3 9

4 16

5 25

Пр.Перегляд будь-якого текстового файлу на екрані. По заповненню екрана до 24 рядків програма робить паузу.

var f:text; s:string; count:integer;

begin

repeat

write ('Уведіть ім'я файлу або 0 для виходу: ');

readln (s);

if s='0' then halt;

assign (f,s);

{$I-}reset (f);{$I+}

if Ioresult<>0 then begin

writeln ('Не можу відкрити файл із іменем ',s);

write ('Натисніть Enter для продовження ->');

readln;

continue; {оператор починає виконання поточного циклу з початку}

end;

count:=1;

while not eof(f) do begin

readln (f,s);

writeln (s);

count:=count+1;

if count=24 then begin

count:=1;

write ('Натисніть Enter для продовження ->');

readln;

end;

end;

write ('Натисніть Enter для нового введення ->');

readln;

close (f);

until false;

end.

Рядок s тут використовується як для введення імені файлу, так і для читання рядка файлу – адже після виконання зв'язування оператором assign ім'я файлу нам більше не потрібно! Зверніть увагу також на оператор continue, у цьому випадку він дозволяє не завершувати виконання програми після невірного введення користувача.

Пр. Працюємо з "змішаним" файлом даних.

Файл data.txt має такий вигляд:

Іванов 2

Петров 1

Сидоров 3

Попів 2

(у рядку - прізвище рабочего й через пробіл – номер ділянки, на якій він працює)

Напишемо програму для виведення прізвищ усіх працівників обраного ділянки й підрахунку їх кількості.

var f:text; s,fam:string; u,uch,p,kol,i:integer;

begin

writeln ('Ділянка?'); read (uch);

assign (f,'data.txt'); reset (f);

kol:=0;

while not eof (f) do begin

readln (f,s);

p:=pos(' ',s);

if p>0 then begin

fam:=copy (s,1,p-1);

delete (s,1,p);

val (s,u,i);

if i<>0 then begin

writeln ('Помилка в числі ',s,' – немає номера ділянки');

halt;

end;

if u=uch then begin {підрахунок робітників на ділянці}

writeln (fam);

kol:=kol+1;

end;

end

else begin

writeln ('Помилка в рядку ',s,' – немає пробілу');

halt;

end;

end;

close (f);

writeln ('kol=',kol);

end.

Більша частина цієї програми присвячена аналізу прочитаної з файлу рядка "змішаних" даних. Програму можна суттєво спростити, змінивши формат вихідних даних – наприклад, на одному рядку файлу може бути набране прізвище, а на іншій – номер ділянки. Тоді основний цикл читання файлу буде виглядати так:

while not eof (f) do begin

readln (f,fam);

readln (f,u);

if (u=uch) then begin

{ . . . }

end;

end;

Наведений приклад ілюструє, як часто вибір програмістом більш-менш зручного формату зберігання даних впливає на складність програми.

 


<== попередня лекція | наступна лекція ==>
Загальні операції | Записи. Бінарні файли


Онлайн система числення Калькулятор онлайн звичайний Науковий калькулятор онлайн