praktyczny kurs delphi full.pdf

(7081 KB) Pobierz
888423741.016.png
4
Praktyczny kurs Delphi
Rozdział 17. Pliki tekstowe, czyli jak zapisa. dane w czytelny sposób ................175
Dodatek — Pliki jeszcze inaczej .....................................................182
Rozdział 18. Czym naprawd zajmuj8 si komputery...........................................185
Rozdział 19. Konkurencja dla Microsoftu?..........................................................195
Rozdział 20. Programowanie na powa2nie ..........................................................205
Rozdział 21. Jak uruchamia. oporne programy ...................................................219
Rozdział 22. Dwa (i wicej) w jednym, czyli rekordy ...........................................229
Rozdział 23. Zmienne dynamiczne i wskaBniki....................................................251
lista..............................................................265
Rozdział 25. O grafice słów kilka .......................................................................275
Rozdział 24. Rekord
wskaBnik
+
=
Rozdział 26. Od programowania strukturalnego do obiektowego.........................289
Rozdział 27. Dziedziczenie, polimorfizm i metody wirtualne.................................301
Rozdział 28. Co jeszcze warto wiedzie. o IDE.....................................................317
Rozdział 29. Kilka dobrych rad, czyli co czyni. nale2y… .....................................327
Rozdział 30. …a czego unika............................................................................337
Dodatek A Instalacja wersji próbnej Delphi 7 Architect....................................343
Dodatek B Odpowiedzi do zadaE......................................................................347
Dodatek C Kilka przydatnych poj. komputerowych.........................................365
Dodatek D Mikrosłownik angielsko-polski........................................................375
Skorowidz......................................................................................379
Rozdział 12.
Zapisujemy
wicej danych,
czyli tablice
Powtórka ze statystyki
Typy strukturalne
Tworzenie i wykorzystanie tablic
Wektory i macierze
Jak powszechnie wiadomo, komputer jest narzdziem słu cym do szybkiego prze-
twarzania duych 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 wikszo#' 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, bdzie 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 inynierskim, tote jego zaprogramowanie moe przyda' si nam
w przyszło#ci.
Jak powszechnie wiadomo, warto#' #rednia dla N liczb wyraa si wzorem:
N
1
=
x
=
x
i
N
i
1
gdzie i jest numerem kolejnej warto#ci w zestawie. Przełoenie tego zapisu na Pascal
jest na pierwszy rzut oka banalne, ale… gdzie wła#ciwie bd przechowywane kolejne
888423741.017.png 888423741.018.png
130
Praktyczny kurs Delphi
warto#ci x i ? Wykorzystanie do tego celu pojedynczych zmiennych typu prostego
(a tylko takie na razie znamy) jest praktycznie niemoliwe — nawet gdyby#my uparli
si przy zadeklarowaniu zmiennych , , …, nie wiemy ile naleałoby ich zade-
klarowa', nie mówi c ju o problemach z odwoływaniem si do nich w ptli sumuj -
cej. Zauwamy jednak, e nasze liczby tworz jednolity ci g danych tego samego ty-
pu, w matematyce zapisywany w postaci tzw. wektora:
[
]
x
,
x
,
x
,
,
x
K
1
2
3
N
By' moe kompilator potrafi posłuy' si podobn reprezentacj i zna jaki# sposób na
„poszufladkowanie” danych w pamici tak, by dało si odwoływa' do nich poprzez
kolejny numer w ci gu?
Opisane powyej rozwi zanie znane jest w programowaniu od kilkudziesiciu lat pod
nazw tablicy (ang. array). Jest ona zestawem danych tego samego typu, zajmuj cym
pewien (na ogół ci gły) obszar w pamici 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łoon z danych innego typu, dlatego te naley 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 pamici
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, moemy tworzy' „pitrowe” dane strukturalne. Dwa najwaniejsze typy da-
nych 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 kada inna zmienna, tablica identyfikowana jest w programie poprzez nazw
(np. ), natomiast dostp 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 mona to przedstawi' nastpuj co:
indeks
1
2
3
4
5
6
warto
1,43
1,66
2,01
1,23
1,98
3,11
Jak mona si domy#la', przed uyciem tablic naley zadeklarowa', do czego słuy
słowo kluczowe :
Po słowie nastpuje para nawiasów kwadratowych, w których zapisujemy indeks
pierwszego i ostatniego elementu tablicy, rozdzielone dwiema kropkami (nie dwu-
kropkiem!). Niezbdne jest równie poinformowanie kompilatora o typie poszczególnych
elementów tablicy — w naszym przypadku s to warto#ci typu . Cały powyszy
888423741.019.png 888423741.001.png 888423741.002.png 888423741.003.png 888423741.004.png 888423741.005.png 888423741.006.png 888423741.007.png 888423741.008.png 888423741.009.png
 
Rozdział 12. Zapisujemy wi cej danych, czyli tablice
131
zapis mona przetłumaczy' na polski jako „tablica o stu elementach, numerowanych
od 1 do 100, złoona z liczb rzeczywistych”. Podobnie jak w przypadku zmiennych pro-
stych, bezpo#rednio po zadeklarowaniu elementy tablicy maj warto#' przypadkow 1 .
Deklaruj c tablic naley pamita' o dwóch ograniczeniach:
indeksy musz by' stałymi (innymi słowy, w Pascalu nie mona deklarowa'
tzw. tablic dynamicznych w sensie znanym np. z BASIC-a),
indeksy musz by' typu porz dkowego (chocia nie musz by' liczbami
— mona np. zadeklarowa' tablic indeksowan warto#ci typu ).
W wikszo#ci zastosowa( tablice indeksowane s od jedynki, chocia Pascal tego nie
wymaga — równie dobrze mona indeksowa' tablic od zera (jak w jzyku C) lub ty-
si ca. Rzecz jasna, indeks ko(cowy musi by' wikszy lub równy pocz tkowemu.
Niestandardowe indeksowanie tablic moe by ródłem problemów, bowiem od-
wołanie do elementu spoza zadeklarowanego przedziału koczy si czsto trud-
nymi do wykrycia błdami wykonania. O ile nie ma naprawd wanego powodu,
najlepiej zawsze stosowa jednolity sposób indeksowania (zwykle od jedynki, cho-
cia programi%ci pisz&cy w jzyku C preferuj& indeksowanie od zera).
Warto przy okazji wspomnie' o funkcjach i , które dla tablic zwracaj odpo-
wiednio warto#' pierwszego i ostatniego indeksu. Pozwalaj one pomin ' przekazywanie
informacji o zakresie indeksów, o ile oczywi#cie mamy pewno#', e obliczenia bd
zawsze dotyczyły całej tablicy.
Poszczególne elementy tablicy mog by' dowolnego typu (ale wszystkie tego samego),
przy czym niekoniecznie musi to by' typ prosty, jak czy — równie dobrze
mona zadeklarowa' tablic złoon z elementów typu strukturalnego, np. innych tablic
lub rekordów. Przykładowa deklaracja:
utworzy dwuwymiarow tablic złoon z 50 wektorów (tablic jednowymiarowych),
z których kady zawiera 50 liczb rzeczywistych. Składnia Pascala pozwala na skrócenie
powyszego zapisu do postaci:
która lepiej odzwierciedla struktur tablicy dwuwymiarowej, a przy okazji jest prostsza
w zapisie. Moliwe jest take tworzenie tablic trój- i wicejwymiarowych (Pascal nie
narzuca ogranicze( na liczb wymiarów tablicy ani warto#ci indeksów), jednak sto-
sowane s one rzadko.
1 cilej rzecz biorc, tablice deklarowane globalnie inicjalizowane s zerami, jednak lepiej wyrobi sobie
nawyk dmuchania na zimne i nie zakłada, e wieo zadeklarowana tablica zawiera sensowne wartoci.
888423741.010.png 888423741.011.png 888423741.012.png 888423741.013.png 888423741.014.png 888423741.015.png
 
Zgłoś jeśli naruszono regulamin