Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Основи програмування Паскаль.docx
Скачиваний:
51
Добавлен:
12.05.2015
Размер:
511.7 Кб
Скачать

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

Пр.Читання числових даних з файлу – масив даних має фіксовану розмірність=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;

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

21.3 Робота з параметрами командного рядка

Програма в DOS або Windows може запускатися з параметрами командного рядка, через які звичайно передають імена файлів або вказують режими роботи програми.

turbo.exe vasya.pas

- тут програмі Турбо-Паскаль передане ім'я файлу vasya.pas

my /s /a

- програмі з іменем my передані параметри /s і /a

Існує дві стандартні функції для роботи з параметрами:

Paramcount - поверне число параметрів командного рядка

Paramstr(i)- поверне рядок, що містить параметр номер i

Пр.: Перегляд текстового файлу на екрані. Ім'я файлу передається програмі параметром.

var fil:text; name:string;

begin

if Paramcount<>1 then begin

writeln ('Запускайте так: FILEVIEW ім'я_файлу');

halt; end;

assign (fil,Paramstr(1));

reset (fil);

while not eof(fil) do begin

readln (fil,name);

writeln (name);

end;

end.