Co jeszcze warto wiedzieć o IDE..................................................... 317 Rozdział 29. Kilka dobrych rad, czyli co czynić należy… ..................................... 327 Rozdział 30. …a czego unikać ........................................................................... 337 Dodatek A Instalacja wersji próbnej Delphi 7 Architect.................................... 343 Dodatek B Odpowiedzi do zadań...................................................................... 347 Dodatek C Kilka przydatnych pojęć komputerowych......................................... 365 Dodatek D Mikrosłownik angielsko-polski ........................................................ 375 Skorowidz...................................................................................... 379 Rozdział 12. Zapisujemy więcej danych, czyli tablice Powtórka ze statystyki Typy strukturalne Tworzenie i wykorzystanie tablic Wektory i macierze Jak powszechnie wiadomo, komputer jest narzędziem służącym do szybkiego prze- twarzania dużych ilości danych. Przedstawione do tej pory programy nie dawały naszemu wielkiemu kalkulatorowi specjalnego pola do popisu — dane, na których operowali- śmy, sprowadzały się zwykle do kilku liczb. Nikogo jednak nie trzeba przekonywać, że większość zadań, z którymi mierzą się komputery w praktyce, wymaga wprowa- dzania, przechowywania i przetwarzania ogromnych ilości danych. Cel, który posta- wimy sobie na początku tego rozdziału, będzie znacznie mniej ambitny — spróbuje- my mianowicie rozwiązać prosty problem statystyczny, jakim jest obliczenie wartości średniej i miary rozrzutu w zadanej grupie pomiarów pewnej wielkości. Obliczanie średniej i odchylenia standardowego (ono właśnie jest miarą rozrzutu) jest również typowym zadaniem inżynierskim, toteż jego zaprogramowanie może przydać się nam w przyszłości. Jak powszechnie wiadomo, wartość średnia dla N liczb wyraża się wzorem: N x = 1N ∑xi i=1 gdzie i jest numerem kolejnej wartości w zestawie. Przełożenie tego zapisu na Pascal jest na pierwszy rzut oka banalne, ale… gdzie właściwie będą przechowywane kolejne 130 Praktyczny kurs Delphi wartości xi? Wykorzystanie do tego celu pojedynczych zmiennych typu prostego (a tylko takie na razie znamy) jest praktycznie niemożliwe — nawet gdybyśmy uparli się przy zadeklarowaniu zmiennych , , …, nie wiemy ile należałoby ich zade- klarować, nie mówiąc już o problemach z odwoływaniem się do nich w pętli sumują- cej. Zauważmy jednak, że nasze liczby tworzą jednolity ciąg danych tego samego ty- pu, w matematyce zapisywany w postaci tzw. wektora: [x1, x2, x3,K, xN ] Być może kompilator potrafi posłużyć się podobną reprezentacją i zna jakiś sposób na „poszufladkowanie” danych w pamięci tak, by dało się odwoływać do nich poprzez kolejny numer w ciągu? Opisane powyżej rozwiązanie znane jest w programowaniu od kilkudziesięciu lat pod nazwą tablicy (ang. array). Jest ona zestawem danych tego samego typu, zajmującym pewien (na ogół ciągły) obszar w pamięci i pozwalającym na odwoływanie się do po- szczególnych elementów poprzez podanie ich numeru, czyli tzw. indeksu. Mówiąc ogólniej, tablica jest strukturą złożoną z danych innego typu, dlatego też należy ona do grupy tzw. strukturalnych typów danych. Zmienna typu strukturalnego składa się z innych danych, zorganizowanych zgodnie z regułami obowiązującymi dla danego typu (w przypadku tablic jednowymiarowych dane ustawiane są po prostu w pamięci jedna za drugą). Poszczególne elementy zmiennej strukturalnej mogą być typu pro- stego (np. liczby całkowite) lub strukturalnego (np. tablice lub rekordy) — innymi słowy, możemy tworzyć „piętrowe” dane strukturalne. Dwa najważniejsze typy danych strukturalnych, którymi zajmiemy się w naszej książce, to tablice (grupujące elementy tego samego typu) oraz rekordy (grupujące elementy różnych typów). Jak każda inna zmienna, tablica identyfikowana jest w programie poprzez nazwę (np. ), natomiast dostęp do jej poszczególnych elementów odbywa się poprzez podanie ich indeksu. Ten ostatni jest po prostu numerem danego elementu tablicy, za- pisanym w nawiasach kwadratowych, np.: Graficznie można to przedstawić następująco: indeks 1 2 3 4 5 6 wartość 1,43 1,66 2,01 1,23 1,98 3,11 Jak można się domyślać, przed użyciem tablicę należy zadeklarować, do czego służy słowo kluczowe : Po słowie następuje para nawiasów kwadratowych, w których zapisujemy indeks pierwszego i ostatniego elementu tablicy, rozdzielone dwiema kropkami (nie dwu- kropkiem!). Niezbędne jest również poinformowanie kompilatora o typie poszczególnych elementów tablicy — w naszym przypadku są to wartości typu . Cały powyższy Rozdział 12. ♦ Zapisujemy więcej danych, czyli tablice 131 zapis można przetłumaczyć na polski jako „tablica o stu elementach, numerowanych od 1 do 100, złożona z liczb rzeczywistych”. Podobnie jak w przypadku zmiennych pro- stych, bezpośrednio po zadeklarowaniu elementy tablicy mają wartość przypadkową1. Deklarując tablicę należy pamiętać o dwóch ograniczeniach: indeksy muszą być stałymi (innymi słowy, w Pascalu nie można deklarować tzw. tablic dynamicznych w sensie znanym np. z BASIC-a), indeksy muszą być typu porządkowego (chociaż nie muszą być liczbami — można np. zadeklarować tablicę indeksowaną wartością typu ).
|