Metody i jezyki programowania -- zbiór zadan lista 2

Transkrypt

Metody i jezyki programowania -- zbiór zadan lista 2
Uniwersytet Zielonogórski
Instytut Sterowania i Systemów Informatycznych
Metody i języki programowania
Lista 2 — Pliki
1
Wstęp
1. Napisać i uruchomić program, który wpisuje N liczb typu integer do pliku:
program Z a p i s 1 ;
c o n s t N=10;
type TPlik = f i l e o f i n t e g e r ;
var p l i k : TPlik ;
x , y : integer ;
begin
a s s i g n ( p l i k , ’ p l i k . dat ’ ) ;
{ $I −}
rewrite ( plik );
{ $ I+}
i f i o r e s u l t <>0 then b e g i n
w r i t e l n ( ’ Problem z otwarciem p l i k u ! ’ ) ;
halt (1);
end ;
f o r x:=1 t o N do b e g i n
w r i t e ( ’ Podaj l i c z b e nr ’ , x , ’ : ’ ) ;
readln (y ) ;
write ( plik , y ) ;
end ;
close ( plik );
end .
2. Napisać i uruchomić program, który odczytuje N liczb typu integer z pliku, zapisanych przy
pomocy programu 1.
program Odczyt1 ;
c o n s t N=10;
type TPlik = f i l e o f i n t e g e r ;
var p l i k : TPlik ;
x , y : integer ;
begin
a s s i g n ( p l i k , ’ p l i k . dat ’ ) ;
{ $I −}
reset ( plik );
{ $ I+}
i f i o r e s u l t <>0 then b e g i n
w r i t e l n ( ’ Problem z otwarciem p l i k u ! ’ ) ;
1
halt (1);
end ;
f o r x:=1 t o N do b e g i n
read ( plik , y ) ;
w r i t e l n ( ’ L i c z b a nr ’ , x , ’= ’ , y ) ;
end ;
close ( plik );
end .
3. Poprawić program 2. tak, aby wyświetlone zostały wszystkie liczby zapisane w pliku, niezależnie od ich ilości
program Odczyt2 ;
type TPlik = f i l e o f i n t e g e r ;
var p l i k : TPlik ;
x , y : integer ;
begin
a s s i g n ( p l i k , ’ p l i k . dat ’ ) ;
{ $I −}
reset ( plik );
{ $ I+}
i f i o r e s u l t <>0 then b e g i n
w r i t e l n ( ’ Problem z otwarciem p l i k u ! ’ ) ;
halt (1);
end ;
x :=1;
w h i l e not e o f ( p l i k ) do b e g i n
read ( plik , y ) ;
w r i t e l n ( ’ L i c z b a nr ’ , x , ’= ’ , y ) ;
x:=x+1;
end ;
close ( plik );
end .
4. Napisać i uruchomić program, którego zadaniem jest wczytanie z klawiatury tablicy N liczb
typu integer a następnie wpisanie tej tablicy do pliku. Ponadto program powinien umożliwić
odczyt tak utworzonego pliku i wypisanie zawartości tablicy na ekran.
program OdczytZapis1 ;
c o n s t N=10;
type T p l i k = f i l e o f i n t e g e r ;
TTab = a r r a y [ 1 . . N] o f i n t e g e r ;
var p l i k : TPlik ;
x , y : integer ;
tab : TTab ;
begin
a s s i g n ( p l i k , ’ p l i k . dat ’ ) ;
{ $I −}
rewrite ( plik );
{ $ I+}
i f i o r e s u l t <>0 then b e g i n
w r i t e l n ( ’ Problem z otwarciem p l i k u ! ’ ) ;
2
halt (1);
end ;
f o r x:=1 t o N do b e g i n
w r i t e ( ’ Podaj l i c z b e nr ’ , x , ’ : ’ ) ;
r e a d l n ( tab [ x ] ) ;
end ;
f o r x:=1 t o N do b e g i n
w r i t e ( p l i k , tab [ x ] ) ;
end ;
close ( plik );
{ ========================== ODCZYT =================}
a s s i g n ( p l i k , ’ p l i k . dat ’ ) ;
{ $I −}
reset ( plik );
{ $ I+}
i f i o r e s u l t <>0 then b e g i n
w r i t e l n ( ’ Problem z otwarciem p l i k u ! ’ ) ;
halt (1);
end ;
f o r x:=1 t o N do b e g i n
r e a d ( p l i k , tab [ x ] ) ;
end ;
close ( plik );
f o r x:=1 t o N do b e g i n
w r i t e l n ( ’ L i c z b a ’ , x , ’ = ’ , tab [ x ] ) ;
end ;
end .
2
Zadania
1. Na podstawie programów 1..4 zawartych we Wstępie, opracować procedury do otwierania
i zamykania plików wraz z kontrolą błędów.
2. Przerobić program 4. ze Wstępu tak, aby korzystał z procedur do otwierania, zamykania,
wpisywania i odczytywania tablicy z pliku.
3. Dany jest plik zawierający znaki ASCII. Napisać procedurę zwracającą liczbę wystąpień
każdego znaku z tabeli ASCII w postaci tablicy. Założyć, że długość pliku jest mniejsza
od maksymalnej wartości liczb typu longint.
4. Wygenerować w sposób losowy plik zawierający 13542 liczby typu LongInt (proszę zwrócić
uwagę na zakres, jaki może przyjmować funkcja random). Napisać procedurę, która po
utworzeniu nowego pliku umieści w nim wartości sum każdych dwóch kolejnych liczb z
pliku źródłowego.
5. Napisać program służący do kopiowania plików o nazwach podanych z klawiatury. Program ma posiadać zabezpieczenie przed skopiowaniem nieistniejącego pliku. Zastosować
funkcję blockread i blockwrite. Odczytywać pliki znak po znaku.
6. Przerobić program z punktu (5) tak, aby odczyt pliku odbywał się blokowo, po 10 kB.
3
7. Dany jest plik tekstowy, gdzie w każdej linii znajduje się słowo o dowolnej długości. Obliczyć średnią długość słów oraz wyświetlić słowo najkrótsze i najdłuższe. Zastosować
funkcję blockread. Wskazówka: odczytywać znak po znaku. Koniec linii oznacza się znakami o kodach ASCII 13 i 10 (znaki CR i LF ).
8. Podać definicję rekordu opisującego jeden wpis do ksiażki teleadresowej (oprócz telefonu,
adresu można dodawać także inne dane np.: wzrost, kolor oczu). Podać definicję typu
plikowego dla tego typu rekordowego.
9. Przygotować zestaw procedur do obsługi prostej bazy teleadresowej:
• procedura do usuwania pliku z bazą
• procedura do zakładania pustej bazy
• procedura do dopisania nowego rekordu do bazy
• procedura do usunięcia rekordu do bazy
• procedura do przeszukiwania bazy według nazwiska.
Wskazówka: Do usuwania rekordu z bazy można zastosować znacznik (pole rekordu) wskazujący, czy określony rekord został usunięty.
4

Podobne dokumenty