Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
АВТИ информатика по паскалю / METOD2 / Организация Файла.doc
Скачиваний:
23
Добавлен:
31.03.2015
Размер:
126.46 Кб
Скачать

. . .

Seek (f, k) {t поиска}

Обработка

Данных в ОП {T обработки}

Read(f, P) {T чтения}

Последовательная работа устройств:

Т = Т поиска + Т обработки + Т чтения

Параллельная работа устройств:

Т = max(Т поиска, Т обработки) + Т чтения

. . .

Таким образом, в программе можно так разделить операцию «поиск» от операции «чтение», чтобы процессор не простаивал в ожидании необходимой порции данных. Другими словами, надо стараться поиск данных и их чтение разделить действием обработки, которое не связано с ожиданием этих данных.

Пример 1. Создание файла.

{Элемент файла - вся таблица}

program vedom (input,output,fved);

const max = 100; nax = 10;

type ved = array [1..max,1..nax] of real;

var fved : file of ved; D : ved;

fv:text;

S,S1, dmax :real;

m, i : 1..max; n,j : 1..nax;

begin {Создание типизированного файла fved из текстового fv}

assign ( fved,'c:\ved.txt');

writeln('Введите размер таблицы: число строк и столбцов');

read(m,n);

assign(fv,'c:\v.txt');

reset(fv);

rewrite(fved);

for i:=1 to m do

begin

for j:=1 to n do

read (fv,d[i,j]);

readln(fv)

end;

write(fved,D); {Записывается весь массив как один элемент}

close(fved);

close(fv);

Пример 2. Запрос по покупателям.

Прямой доступ к элементам массива.

Тпоиска = 0

Vоп = max*nax

reset(fved);

read(fved,D);

writeln('Bведите dmax');

readln(dmax);

{ Покупатели, долг которых больше dmax}

writeln ('Покупатели, у которых долг больше',dmax)

for i:=1 to m do

begin S := 0;

for j:=1 to n do

S:= S + d[i,j];

If S > dmax then writeln(i)

end;

Пример 3. Запрос по товарам.

{Запрос об оплаченных товарах }

Прямой доступ к элементам массива.

Тпоиска = 0

Vоп = max*nax

writeln('Оплаченные товары');

reset(fved);

for j :=1 to n do

begin S1:=0;

for i:=1 to n do

S1 := S1 + d[i,j];

if S1 = 0 then writeln(j)

end

end.

Пример 4.

{Элемент файла - строка в ведомости}

program vedom_D(fved);

const max = 10;

type str = array [1..nax] of real;

var fved : file of str; D : str;

S, dmax :real;

m,n,i,j : 1..max;

begin {Покупатели, долг которых больше dmax}

...

reset(fved);

.

Тпоиска = 0

Vоп = nax

for i:=1 to m do

begin read (fved, D); S := 0;

for j:=1 to n do

S:= S + D[j];

If S > dmax then writeln(i)

end

end.

Пример 5.

{Элемент файла - элемент таблицы}

{Упорядоченность по покупателям, запрос по покупателям}

program vedom_d(fved);

var fved : file of real;

d :real;

m,n,i,j : integer;

begin {Покупатели, долг которых больше dmax}

...

reset(fved);

Тпоиска = 0

Vоп = 1

for j :=1 to n do

begin S:=0;

for i:=1 to n do

begin read (fved,d);

S := S + d;

end;

if S1 > dmax then writeln(j)

end

end.

Пример 6a.

d

d

. . .

d

d

d

. . .

d

. . .

d

d

. . .

d

P1 P2 Pn

{Элемент файла - элемент таблицы}

{Упорядоченность по покупателям, запрос по товарам}

program vedom_d(fved);

var fved : file of real;

d :real;

m,n,i,j,l : integer;

begin {Поиск оплаченных товаров }

...

for j :=1 to n do

{Просмотр j-го товара}

begin

reset(fved); {В начало файла}

{Сдвиг к 1-му элементу -го товара}

k:=1;

while k<j do read(fved, d);

S:=0;

for i:=1 to m do

{Выбор информации о j-м товаре}

begin read (fved,d);

S := S + d;

for l:=1 to m do

{Скачок на (n-1) элементов}

read (fved,d);

end;

if S = 0 then writeln(j)

end

end.

Пример 6b.

{Прямой способ организации файла}

{Элемент файла - элемент таблицы}

{Упорядоченность по покупателям, запрос по товарам}

begin{Поиск оплаченных товаров}

. . .

for j:=1 to n do

begin {к началу j-го товара}

seek(fved, j-1);

S:=0;

for i:=1 to m do

begin

read(fved,d);

S:=S+d;

seek(fved, FilePos(fved)+n-1)

end

end;

if S=0 then writeln(j)

Соседние файлы в папке METOD2