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