[ Pobierz całość w formacie PDF ]
.ÿþ Do dzieÅ‚a! 91Do dzieÅ‚a!Po tym nieco przydÅ‚ugim teoretyzowaniu wiÄ™kszość Czytelników zapewne Å›wierzbiÄ…już rÄ™ce, żeby wziąć siÄ™ do programowania.W niniejszym rozdziale spróbujemy przed-stawić podstawowe elementy skÅ‚adowe naszego programu i powiÄ…zać je w dziaÅ‚ajÄ…cÄ…caÅ‚ość.Zaczniemy od rzeczy podstawowych, czyli zdefiniowania struktur danych, naktórych program bÄ™dzie operowaÅ‚.program Biblioteka;usestypestring30 = string[30]; { potrzebne do przekazywania }{ parametrów }string25 = stringKsiazka = recordTytul : string30;Autor : string25;Wypozyczajacy : string25;Licznik : word;end;const{ w bajtach }POJEMNOSC = MAX_PAMIEC div SizeOf(Ksiazka);varKatalog : array[1.Pojemnosc] of{ katalog }LbPoz : integer; { liczba pozycji w katalogu }Podstawowym warunkiem użytecznoÅ›ci katalogu jest możliwość wprowadzania doniego informacji (z klawiatury) i wyprowadzania jej (na ekran/drukarkÄ™).PonieważpodstawowÄ… jednostkÄ… organizacyjnÄ… katalogu jest rekord, powinniÅ›my zdefiniowaćprocedury pozwalajÄ…ce na wprowadzenie i wyprowadzenie jego zawartoÅ›ci.W myÅ›ltego, co powiedzieliÅ›my poprzednio, procedury te powinny operować na parametrzeodpowiedniego typu rekordowego:92 Turbo Pascal programowanieprocedure WprowadzDane(var r : Ksiazka);{ wprowadza pojedynczy rekord z klawiatury }beginwith r dobeginwrite('Tytul: '); readln(Tytul);write('Autor: '); readln(Autor);write('Wypozyczajacy: '); readln(Wypozyczajacy);end;end;procedure WypiszDane(r : Ksiazka);beginwith r dobeginwrite('Tytul: '); writeln(Tytul);write('Autor: '); writeln(Autor);if Wypozyczajacy = '' thenwriteln('Ksiazka znajduje sie na polce.')elsewrite('Wypozyczajacy: '); writeln(Wypozyczajacy);end;writeln;end;Mimochodem przyjÄ™liÅ›my konwencjÄ™, w myÅ›l której książce nie wypożyczonej odpo-wiada puste pole Wypozyczajacy (co jest dość naturalne).Powyższe definicje wyko-rzystamy do utworzenia kilku dodatkowych procedur pozwalajÄ…cych na wprowadzenieopisu nowej książki do katalogu oraz wyprowadzenie caÅ‚ej zawartoÅ›ci katalogu naekran (co w przypadku wiÄ™kszej liczby książek jest raczej maÅ‚o sensowne, chyba żezamiast ekranu użyje siÄ™ drukarki).Przy okazji warto też zdefiniować procedurÄ™pozwalajÄ…cÄ… na usuniÄ™cie książki z katalogu, co najproÅ›ciej zrobić przez przepisanieostatniego elementu katalogu w miejsce elementu usuwanego.procedure DodajKsiazke;beginwriteln('Nowa pozycja w katalogu: ', LbPoz);end; Do dzieÅ‚a! 93procedure UsunKsiazke(Numer : integer);beginend;procedure WypiszKatalog;vari : integer;beginfor i := 1 to LbPoz dobeginwriteln('Pozycja katalogu nr ', i,':');WypiszDane(Katalog[i]);end;end;PorzÄ…dny program powinien również zapewniać możliwość zmiany opisu książki; kon-strukcjÄ™ odpowiedniej procedury pozostawiam Ci jako ćwiczenie (zobacz też poniżej).KolejnÄ… sprawÄ… jest obsÅ‚uga wypożyczenia i zwrotu książki.W tym celu należy popierwsze odszukać wybranÄ… książkÄ™ (wedle wczeÅ›niejszych zaÅ‚ożeÅ„ wedÅ‚ug tytuÅ‚u),a nastÄ™pnie, w zależnoÅ›ci od potrzeb, wprowadzić, sprawdzić lub usunąć nazwiskowypożyczajÄ…cego.JeÅ›li chodzi o wyszukiwanie książki, to sensownym wydaje siÄ™zaprojektowanie funkcji, której argumentem bÄ™dzie zadany fragment tytuÅ‚u, a wartoÅ›ciÄ…zwracanÄ… numer książki w katalogu lub 1, jeÅ›li książki nie znaleziono (numeryksiążek sÄ… zawsze dodatnie, a wiÄ™c liczba 1 nigdy nie bÄ™dzie opisywaÅ‚a rzeczywiÅ›cieistniejÄ…cej w katalogu książki).Ponieważ katalog może zawierać kilka książek o tymsamym tytule, musimy zaprojektować funkcjÄ™ wyszukujÄ…cÄ… tak, by umożliwiaÅ‚a znale-zienie wszystkich podejrzanych.W tym celu wyposażymy jÄ… w możliwość szukaniaod zadanej pozycji:function Szukaj(Tekst : string; Pozycja : integer) : integer;{ szuka od zadanej pozycji katalogu }vari : integer;begini := Pozycja; { szukaj od zadanej pozycji }94 Turbo Pascal programowaniewhile (Pos(Tekst, Katalog[i].Tytul) = 0) and (i
[ Pobierz całość w formacie PDF ]