[ Pobierz całość w formacie PDF ]
.Jak zapamiętywać i odczytywać informację z rekordu? Zauważ, że każdy element opisuidentyfikowany jest dwiema nazwami: nazwą samego rekordu (Katalog[.]) orazodpowiedniego pola (np.Tytul).Aby odwołać się do konkretnego pola rekordu,musisz podać obydwie nazwy rozdzielając je kropką:nazwa-rekordu.nazwa-polaChcąc więc wstawić do rekordu numer 45 nazwisko autora książki, wykorzystamyinstrukcjęKatalog[45].Autor := 'Mrozek Slawomir';zaś instrukcjawriteln(Katalog[29].Wypozyczajacy);poinformuje nas, w czyim posiadaniu znajduje się obecnie książka opisana rekordemnumer 29. Typy strukturalne, czyli jak przechowac wiecej danych 83W przypadku wykonywania kilku operacji na polach tego samego rekordu używanie zakażdym razem notacji z kropką jest nieco uciążliwe.Pascal umożliwia uproszczenieodwołań do pól rekordu przez wykorzystanie tzw.instrukcji wiążącej with:with Katalog[120] dobeginTytul := 'Paragraf 22';Autor := 'Heller Joseph';Wypozyczajacy := 'Yossarian John';Licznik := 1254;end;Instrukcja wiążąca wydatnie upraszcza zadania podobne do pokazanego wyżej, musiszjednak pamiętać o ujęciu wszystkich instrukcji operujących na polach rekordu w in-strukcję złożoną begin end (w przeciwnym przypadku operacja będzie dotyczyłatylko pierwszego pola, a próba skompilowania kolejnych instrukcji najpewniej skończysię błędem).W zamian za to możesz wykorzystać instrukcję with do operowania nakilku rekordach naraz.Jeśli np.zadeklarowałeś następujące struktury:DaneKlienta : array[1.1000] of recordnazwisko : string[30]; { nazwisko klienta }SumaZakupow : real; { suma zakupów w danym roku }end;Zakup : array[1.1000] of recordIdKlienta : integer; { identyfikator klienta }IdTowaru : integer; { identyfikator towaru }end;to operacjafor i := 1 to LiczbaZakupow dowith DaneKlienta[50], Zakup[i] doif IdKlienta = 50 thenbeginSumaZakupow := SumaZakupow + Naleznosc;Saldo := Saldo Naleznosc;end;spowoduje przeszukanie tablicy zakupów i ustalenie sumy, jaką klient numer 50 zapła-cił za wszystkie swoje zakupy oraz pomniejszenie jego salda o tę sumę.Zauważ, że opisklienta nie zawiera pola identyfikatora, który zastąpiony został indeksem w tablicyrekordów.Aby skopiować wszystkie pola rekordu do innego rekordu tego samego typu, niemusisz w ogóle używać odwołań z kropką ani instrukcji with.Turbo Pascal umożliwiacałościowe kopiowanie rekordów, np.DaneKlienta[132] := DaneKlienta[1];84 Turbo Pascal programowanieNiestety, operacji tego typu nie da się użyć do wprowadzenia zawartości rekordu z kla-wiatury ani wyprowadzenia jej na ekran.Operacje te należy wykonywać pole po polu(użyteczna jest tu instrukcja with), jak w poniższym przykładzie:writeln('Pozycja w katalogu: ', i);with Katalog[i] dobegin{ odpowiednich pól }writeln('Autor: ', Autor);writeln('Wypozyczajacy: ', Wypozyczajacy);end;W analogiczny sposób można wprowadzać dane do rekordu.W ten sposób przedstawiliśmy dwa najpopularniejsze typy strukturalne dostępne w Pas-calu i zaprojektowaliśmy podstawową strukturę służącą do przechowywania informacjiw naszym programie.W kolejnych rozdziałach zajmiemy się metodami przetwarzaniainformacji (czyli algorytmami i ich realizacją w postaci procedur i funkcji) oraz wyni-kającymi z tych zagadnień problemami.Zapamiętaj" Do przechowywania większych ilości danych służą typy strukturalne." Dwa najważniejsze typy strukturalne w Pascalu to tablice i rekordy." Tablice pozwalają na grupowanie danych tego samego typu.Zawarte w tablicydane są dostępne poprzez indeksy." Tablice mogą być jedno- lub wielowymiarowe.Zakres indeksów tablicy jestdowolny, ale nie może przekraczać zakresu dozwolonego dla liczb całkowitych." Do obsługi tablic wykorzystuje się często pętle for." Rekordy grupują dane różnych typów.Zawarte w rekordzie dane są dostępnepoprzez nazwy pól.
[ Pobierz całość w formacie PDF ]