4PP T5

background image

PODST AWY PROGRAM OWANIA

Pliki elementowe cz. 1

1

Pliki elementowe (zdefiniowane) są to pliki, w których przechowywane informacje są przedstawione w postaci
zakodowanej niemożliwej do bezpośredniego odczytania. Zasady obsługi pliku elementowego są takie same jak
dla pliku tekstowego. Dostęp do pliku jest sekwencyjny, tzn. dostępny jest tylko jeden element określony przez
aktualne położenie wskaźnika, zaś inne elementy mogą być udostępniane tylko po wykonaniu pewnych operacji
na pliku (np. przesuwanie wskaźnika). Rozmiar pliku jest dynamiczny. Zmienną typu plikowego można kojarzyć
kolejno z różnymi plikami dyskowymi. Deklaracja zmiennej plikowej ma postać:

var nazwa zmiennej plikowej: file of

typ składowy

Typ składowy nie może być typem plikowym i wskaźnikowym.

Podobnie jak dla plików tekstowych przyporządkowanie nazwy pliku dyskowego do zmiennej plikowej
dokonuje się przy pomocy procedury

assign

, otwieranie pliku dokonuje się przy pomocy procedur

rewrite

(do zapisu) i

reset

(do odczytu i zapisu), a zamykanie przy pomocy procedury

close

. Dla plików

elementowych nie można użyć procedury

append

.

Czytanie z pliku odbywa się przy pomocy procedury

read

, a zapisywanie do pliku przy pomocy procedury

write

, mają one następującą postać:

read(zmienna plikwa, lista zmiennych typu bazowego)

write(zmienna plikowa, wyr

ażenie typu bazowego)

Dla plików elementowych nie można używać procedur

readln

i

writeln

.

Procedury pomocnicze

seek(zmienna plikowa, pozycja)

– ustawia wskaźnik pliku przed elementem o numerze pozycja

truncate(zmienna plikowa)

– kasuje plik od pozycji bieżącej do końca

Funkcje pomocnicze

filesize(zmienna plikowa)

– podaje liczbę elementów pliku

filepos(zmienna plikowa)

– podaje pozycję elementu bieżącego


Ćwiczenie 1

Napisz program, który:

tworzy na dysku w katalogu bieżącym dwa pliki elementowe: do jednego zapisuje 100 losowych liczb
całkowitych, do drugiego zapisuje 100 losowych liczb rzeczywistych.

Wyświetla oba pliki.

program pliki1_e;
uses crt;
const n = 100;
var fcal: file of integer;
frzecz: file of real;
i, m : integer;
x, y : real;
begin
clrscr;
assign(fcal, 'pcal');
rewrite(fcal);
assign(frzecz, 'przecz');
rewrite(frzecz);

{zapisywanie do plikow}

randomize;
for i := 1 to n do
begin
m := random(100);
write(fcal, m);
x := random(100) * 0.25;
write(frzecz, x);

background image

PODST AWY PROGRAM OWANIA

Pliki elementowe cz. 1

2

end;
close(fcal);
close(frzecz);

{odczytywanie z plikow}

reset(fcal);
writeln('liczby calkowite');
while not eof(fcal) do
begin
read(fcal, m);
write(m:3);
end;
writeln;
writeln('liczby rzeczywiste');
reset (frzecz);
while not eof(frzecz) do
begin
read(frzecz, x);
write(x:5:1);
end;
close(fcal);
close(frzecz);

readln;

end.

Ćwiczenie 2

Napisz program, który otworzy do odczytu plik zawierający liczby całkowite i wyświetli jego zawartość.
Na końcu programu dopisz poniższy ciag instrukcji.


reset(fcal);
writeln('liczby calkowite');
for i := 1 to 10 do

begin

write('filepos' ,filepos(fcal):4);
write ('filesize ', filesize(fcal):4);

read(fcal, m);
writeln(m:4);
end;

seek(fcal, 5);
read(fcal, m);
writeln(' seek 5 ', m);
seek(fcal, 100); {1}
read(fcal, m); {disk read error}
writeln(m:4);
close(fcal);

Zastąp instrukcję oznaczoną {1} instrukcją:

seek(fcal, filesize(fcal));

Wytłumacz uzyskany efekt.


Uwagi:

Po otwarciu pliku funkcja

filepos

przyjmuje wartość 0, po zapisaniu pierwszego elementu zmienia

wartość na 1 itd.. Elementy w pliku są, więc numerowane od 0.

Funkcja

filesize

zawsze pokazuje liczbę elementów w pliku.

Instrukcja oznaczona {1} ustawia wskaźnik pliku po 100 (ostatnim) elemencie, dlatego kolejna instrukcja

czytania próbuje czytać poza końcem pliku i powoduje błąd.

Liczbę 100 w instrukcji {1} możemy zastąpić wartością funkcji

filesize

, (najczęściej jest to konieczne,

bo nie znamy dokładnej liczby elementów w pliku).

background image

PODST AWY PROGRAM OWANIA

Pliki elementowe cz. 1

3

Zastąp instrukcję {1} instrukcją:

seek(fcal, 99);

a następnie instrukcją:

seek(fcal, filesize(fcal) - 1);


W obu przypadkach program zakończy się poprawnie i zostanie odczytany z pliku ostatni element.

Ćwiczenie 3

Usuń z pliku 10 ostatnich liczb i ponownie wyświetl plik.
Następnie ustaw wskaźnik pliku na końcu i dopisz 10 innych liczb losowych z zakresu (100, 200).

{usunięcie

ostatnich 10 elementów z pliku}

reset(fcal);
seek(fcal, 89);
truncate(fcal);
close(fcal);

{dopisanie elementów na końcu pliku}

reset(fcal);
seek(fcal, filesize(fcal));
for i := 1 to 10 do

begin

m := random(100) + 100;

write(fcal, m);

end;

close(fcal);

Ćwiczenie 4

Napisz procedurę, która skopiuje plik zawierający liczby rzeczywiste do innego pliku pomijając podczas
kopiowania wszystkie liczby większe od zadanej liczby i policzy ile takich liczb było w pliku wejściowym.
Zastosuj procedurę do skopiowania pliku przecz z pominięciem liczb większych od 20.

Ćwiczenie 5

1. Napisz funkcję, która wyznaczy największą liczbę w pliku.
2. Napisz funkcję, która wyznaczy liczbę najmniejszą w pliku.
3. Napisz funkcję, która obliczy sumę wszystkich elementów w pliku. Zastosuj tę funkcję w programie,

w którym z pliku wejściowego zawierającego liczby, utworzysz drugi plik, do którego zapiszesz tylko tyle
liczb z pliku pierwszego, aby ich suma nie przekroczyła określonej liczby. Zastosuj te funkcje w programie,
w którym w pliku wejściowym zostanie tylko tyle elementów, żeby ich suma nie przekroczyła zadanej
liczby.

4. Napisz program, który będzie realizował menu:

Operacje na plikach zawierających liczby:

1.

Zakładanie pliku

2.

Dopisanie liczb na końcu pliku

3. Usuwanie z pliku wybranych liczb
4. Obliczanie liczby elementów w pliku
5. Obliczanie sumy elementów w pliku
6. Obcinanie pliku do zdanej liczby elementów
7. Obcinanie pliku do zadanej sumy elementów
8.

Wyświetlanie pliku

9. Koniec

Wybierz opcję:


Wszystkie opcje zrealizuj w postaci funkcji lub procedur.



Wyszukiwarka

Podobne podstrony:
4PP T5
T5 UKŁAD HYDRAYLICZNY PODNOSZENIA OSPRZĘT DODATKOWY
T5.BADANIA EMPIRYCZNE, LICENCJAT
ZARZĄDZANIE ZASOBAMI LUDZKIMI WYK T5
ERGONOMIA I HIGIENA PRZEMYSŁOWA WYK T5
t5
T5
T5 Produkcja i rozkład w przyrodzie
ZARZĄDZANIE PRODUKCJĄ WYK T5
SOCJOLOGIA ORGANIZACJI ĆW T5
FINANSE PRZEDSIĘBIORSTWA WYK T5
BADANIA MARKETINGOWE WYK T5
ZARZĄDZANIE KAPITAŁEM I RYNKI FINANSOWE WYK T5
FINANSE WYK T5
PODSTAWY ZARZĄDZANIA WYK T5
4pp t4
wid6 dod k pracy r iii t5 osiagniecia ii rzeczypospolitej ii

więcej podobnych podstron