Delphi __ Kompendium __ Roz2.pdf

(714 KB) Pobierz
Delphi :: Kompendium :: Roz...
Delphi :: Kompendium :: Rozdział 2 - 4programmers.net
http://4programmers.net/Delphi/Kompendium/Rozdzia%C5%82_2
Logowanie | Rejestracja | Forum | Pomoc | Reklama | Szukaj
Strona główna :: Delphi :: Kompendium
Rozdział 2
Edytuj
Historia
Delphi
Artykuły
Kompendium
Gotowce
FAQ
.NET
Turbo Pascal
FAQ
PHP
FAQ
Java
FAQ
C/C++
Artykuły
FAQ
C#
Wprowadzenie
Assembler
FAQ
(X)HTML
CSS
JavaScript
Z pogranicza
Algorytmy
WIĘCEJ »
Język Object Pascal
Rozdział ten stanowi wstęp do programowania w Delphi. Poznanie zasad działania języka Object Pascal jest
niezbędnym warunkiem kontynuowania nauki środowiska Delphi. Wszystkie informacje postaram się przekazać
dokładnie, przedstawiając je krok po kroku. Zacznę oczywiście od spraw podstawowych.
Spis treści
1 Plik źródłowy projektu
1.1 Najprostszy program
2 Podstawowa składnia
2.1 Wielkość liter
2.2 Pamiętaj o średniku!
2.3 Bloki begin i end
2.4 Dyrektywa program
3 Komentarze
4 Zmienne
4.1 Deklaracja zmiennych
4.2 Typy zmiennych
4.3 Deklaracja kilku zmiennych
4.4 Przydział danych
4.4.1 Przydział dynamiczny
5 Stałe
5.1 Domyślne typy stałych
6 Używanie stałych i zmiennych w programie
7 Tablice danych
7.1 Tablice jako stałe
7.2 Tablice wielowymiarowe
7.3 Tablice dynamiczne
7.3.1 Polecenia Low i High
8 Operatory
9 Aplikacje konsolowe
10 Instrukcje warunkowe
10.1 Instrukcja if..then
10.1.1 Pobieranie tekstu z konsoli
10.1.2 Kilka instrukcji po słowie then
10.1.3 Kilka warunków do spełnienia
10.2 Instrukcja case..of
10.2.1 Zakresy
10.2.2 Brak możliwości korzystania z łańcuchów
10.2.3 Kilka instrukcji
10.3 Instrukcja else
10.3.1 Kiedy stosować średnik, a kiedy nie ?
10.3.2 Kilka instrukcji if i else
10.3.3 Kilka instrukcji po słowie begin
10.3.4 Instrukcja else w case..of
11 Procedury i funkcje
11.1 Procedury
12 Funkcje
12.1 Zmienne lokalne
12.2 Parametry procedur i funkcji
12.2.1 Kilka parametrów procedur lub funkcji
12.3 Parametry domyślne
12.3.1 Parametry tego samego typu a wartości domyślne
12.3.2 Kolejność wartości domyślnych
12.4 Przeciążanie funkcji i procedur
12.5 Typy parametrów przekazywanych do procedur i funkcji
12.5.1 Przekazywanie parametrów poprzez stałą
12.5.2 Przekazywanie parametrów przez referencję
12.5.3 Dyrektywa out
12.6 Procedury zagnieżdżone
13 Własne typy danych
13.1 Tablice jako nowy typ
14 Aliasy typów
15 Rekordy
15.1 Przekazywanie rekordów jako parametr procedury
15.2 Deklaracja rekordu jako zmienna
15.3 Instrukcja packed
16 Instrukcja wiążąca with
17 Moduły
17.1 Tworzenie nowego modułu
17.2 Budowa modułu
17.2.1 Nazwa
17.2.2 Sekcja Interface
17.2.3 Sekcja Implementation
17.3 Włączanie modułu
17.4 Sekcja Initialization oraz Finalization
18 Konwersja typów
19 Rzutowanie
20 Pętle
20.1 Pętla for..do
20.1.1 Odliczanie od góry do dołu
20.2 Pętla while..do
20.3 Pętla repeat..until
Delphi
C/C++
Turbo Pascal
Assembler
PHP
Programy
Dokumentacja
Kursy
Komponenty
WIĘCEJ »
1 z 32
2009-03-14 15:25
77983110.008.png 77983110.009.png 77983110.010.png 77983110.011.png 77983110.001.png 77983110.002.png
Delphi :: Kompendium :: Rozdział 2 - 4programmers.net
http://4programmers.net/Delphi/Kompendium/Rozdzia%C5%82_2
20.4 Procedura Continue
20.5 Procedura Break
21 Zbiory
21.1 Przypisywanie elementów zbioru
21.2 Odczytywanie elementów ze zbioru
21.2.1 Zaprzeczanie
21.2.2 Przekazywanie zbioru jako parametru procedury
21.3 Dodawanie i odejmowanie elementów zbioru
21.3.1 Include i Exclude
22 Wskaźniki
22.1 Tworzenie wskaźnika
22.2 Przydział danych do wskaźników
22.2.1 Uzyskiwanie adresów zmiennej
22.3 Do czego to służy?
22.3.1 Tworzenie wskaźników na rekordy
22.4 Przydział i zwalnianie pamięci
22.5 Wartość pusta
23 Pliki dołączane
24 Etykiety
25 Podsumowanie
Copyright © 2000-2006 by Coyote Group 0.9.3-pre3
Czas generowania strony: 9.0395 sek. (zapytań SQL:
12)
W tym rozdziale:
poznasz podstawową składnię języka Object Pascal;
nauczysz się pisać programy konsolowe;
poznasz takie niezbędne pojęcia, jak pętle, instrukcje warunkowe czy zmienne.
Plik źródłowy projektu
Z menu File wybierz polecenie New/Application , co spowoduje utworzenie nowego projektu — powinieneś
pamiętać to z poprzedniego rozdziału.
W rozdziale tym porzucimy na chwilę projektowanie obiektowe (wizualne), nie będzie tu więc przykładów
wykorzystania komponentów — tym zajmiemy się w rozdziale trzecim.
Z menu File wybierz polecenie Close — zostaniesz zapytany, czy nie chcesz zapisać zmian w pliku Unit1.pas .
Kliknij przycisk No — nie chcemy zapisywać pliku formularza. W tym momencie Edytor kodu powinien zostać
zamknięty. Z menu Project wybierz View Source . Polecenie to spowoduje wyświetlenie w Edytorze kodu
zawartości pliku głównego — *.dpr .
Zapisz projekt pod nazwą dprFile. Zauważ, że tym razem nie zostałeś zapytany o nazwę formularza, gdyż
wcześniej zamknęliśmy go.
Zawartość pliku DPR przedstawiona jest w listingu 2.1.
Listing 2.1. Zawartość pliku DPR
program dprFile;
uses
Forms;
{$R *.res}
begin
Application. Initialize ;
Application. Run ;
end .
Kod przedstawiony powyżej jest generowany automatycznie przez Delphi. Nie przejmuj się nim na razie — nie
wszystko będzie nam potrzebne.
Najprostszy program
Rozłożymy zawartość pliku głównego na części, dzięki czemu będziesz miał możliwość dowiedzenia się, jakie
funkcje pełnione są przez konkretne elementy kodu źródłowego.
Kod źródłowy najprostszego do napisania programu przedstawiony jest poniżej:
end .
To nie żart! Najprostszy program składa się właśnie z instrukcji end, z kropką na końcu. Możesz to sprawdzić
— naciśnij klawisz F9, uruchamiając w ten sposób program. Oczywiście żadne polecenia oprócz end nie są
wpisane, dlatego program zaraz po uruchomieniu zostanie zamknięty.
Podstawowa składnia
Kod źródłowy musi składać się z określonych poleceń, zakończonych określonymi znakami. Nie można
pozostawić w kodzie żadnego bałaganu — nawet pominięcie jednego znaku czy zwykła literówka mogą
spowodować niemożliwość uruchomienia programu. Na szczęście Delphi dysponuje na tyle dobrym
kompilatorem, że miejsce błędu zostanie wskazane, a problem opisany. Przykładowo brak słowa kluczowego
end przy próbie kompilacji spowoduje wskazanie błędu: [Error] dprMin.dpr(3): Declaration expected but end
of file found .
Zapamiętaj pierwszą zasadę: program musi być zawsze zakończony poleceniem end. (kropka na końcu!).
Wielkość liter
W języku Object Pascal — w odróżnieniu od C++ czy Javy — wielkość liter nie jest istotna. Dla kompilatora nie
jest istotne, czy nazwa funkcji będzie pisana w taki czy inny sposób. Na przykład polecenie ShowMessage
będzie znaczyło to samo, co showmessage. Można je także zapisywać w inny sposób:
showMessage
showMEssaGe
2 z 32
2009-03-14 15:25
RSS | Forum | Pastebin |
Regulamin | Pomoc | Usuń
cookies | Prawa autorskie |
Kontakt | Reklama
77983110.003.png 77983110.004.png
Delphi :: Kompendium :: Rozdział 2 - 4programmers.net
http://4programmers.net/Delphi/Kompendium/Rozdzia%C5%82_2
itd....
Nie jest zalecane pisanie kodu z wykorzystaniem jedynie małych liter - np. showmessage .
Wielu początkujących programistów, zafascynowanych nauką Delphi, nie pamięta o sposobie
pisania kodu — projektanci ci nie stosują wcięć w kodzie, a wszystkie polecenia piszą
małymi literami. Uwierz mi, że właśnie po sposobie pisania kodu można rozpoznać
początkującego programistę — ci bardziej zaawansowani przyjęli takie zasady tworzenia
kodu, aby był on bardziej przejrzysty. Z moją propozycją pisania kodu możesz zapoznać się
w dodatku A.
Pamiętaj o średniku!
Zapamiętaj, że każda instrukcja w Delphi musi być zakończona znakiem średnika (;). Jest to informacja dla
kompilatora, że w tym miejscu kończy się jedna instrukcja. Znak średnika jako symbol zakończenia instrukcji
obowiązuje w większości języków programowania (Java, C/C++, Delphi, PHP).
Oczywiście istnieją pewne wyjątki od tej reguły. Na samym początku tego rozdziału zaprezentowałem Ci
najprostszy program, który zakończony był znakiem kropki, a nie średnika!
Bloki begin i end
Właściwy kod programu zawsze wpisywany jest pomiędzy instrukcje begin i end .
Słowo end może oznaczać zarówno zakończenie jakiegoś bloku instrukcji, jak i zakończenie programu. W
pierwszym przypadku na końcu tego słowa stawiamy znak średnika, a w drugim przypadku — znak kropki.
Program podczas uruchamiania zawsze „czyta” instrukcje rozpoczynające się od słowa begin — jest to jakby
początek programu i właściwych poleceń, które mają być wykonane po starcie aplikacji.
Pamiętaj, aby ilość instrukcji begin była równa ilości instrukcji end — w przeciwnym razie kompilator wyświetli
błąd:
[Error] dprMin.dpr(9): 'END' expected but end of file found.
Taki kod jest jak najbardziej prawidłowy:
begin
begin
begin
end ;
end ;
end .
Natomiast brak jednego ze słów end spowoduje wyżej wspomniany błąd. Jeżeli natomiast zabraknie jednego ze
słów begin, Delphi wyświetli błąd: [ Error] dprMin.dpr(10): '.' expected but ';' found .
Dyrektywa program
Typowy program powinien składać się z głównej dyrektywy program oraz słów begin i end . Co prawda
najprostszy program to jedynie słowo end , ale w prawidłowo zaprojektowanej aplikacji powinien znajdować się
także nagłówek program, identyfikujący jej nazwę.
Po utworzeniu projektu dyrektywa program zawiera jego nazwę. Przykładowo jeżeli plik główny projektu nosi
nazwę project.dpr, to pierwszy wiersz owego pliku wygląda tak:
program project;
Dyrektywa powinna być oczywiście zakończona znakiem średnika.
Komentarze
Komentarze są chyba najprostszym elementem każdego języka programowania. Jest to blok tekstu, który nie
jest interpretowany przez kompilator. W komentarzach możesz zawrzeć swoje przemyślenia oraz uwagi
dotyczące kodu źródłowego.
program project;
begin
{ to jest komentarz }
end .
Typowy komentarz Delphi zawarty jest pomiędzy znakami {}. W edytorze kodu komentarz jest wyróżniony
kursywą i kolorem ciemnoniebieskim.
Istnieje kilka typów komentarzy — np. komentarz jednowierszowy:
// to jest komentarz jednowierszowy
Wiele osób ten rodzaj komentarzy nazywa komentarzami w stylu C, gdyż został on zapożyczony z języka C. Jak
sama nazwa wskazuje, komentarzem jest tylko jeden wiersz kodu źródłowego:
program project;
begin
// tu jest komentarz
3 z 32
2009-03-14 15:25
77983110.005.png
Delphi :: Kompendium :: Rozdział 2 - 4programmers.net
http://4programmers.net/Delphi/Kompendium/Rozdzia%C5%82_2
a tu już nie ma komentarza
end .
Drugi wiersz w bloku begin nie jest komentarzem — podczas kompilacji Delphi wskaże błąd.
Istnieje jeszcze jeden typ komentarzy — najrzadziej używany przez programistów:
program project;
begin
(*
komentowany kod
*)
end .
Zaletą tego typu komentarza jest to, że może on w sobie zawierać również znaki {.
program project;
begin
(*
komentarz...
{ jakiś tekst }
*)
end .
Jak widzisz, taki sposób pozwala na umieszczanie komentarzy w komentarzu, ale zapewne rzadko będziesz z
niego korzystał.
Zmienne
Czym byłby program, który nie mógłby zapisywać danych do pamięci komputera — Praktycznie każdy program
podczas działania korzysta z pamięci, aby przechować różne dane, potrzebne do dalszego jego działania.
Zmienne to obszar w pamięci komputera, który służy do przechowywania danych
tymczasowych (obecnych w pamięci do czasu wyłączenia programu), mających postać liczb,
tekstu itp.
Deklaracja zmiennych
Przed przydzieleniem danych do pamięci zmienną należy zadeklarować w kodzie programu. Deklaracja
zmiennej powinna być umieszczona przed blokiem begin . Przykładowa deklaracja może wyglądać tak:
program varApp;
var
Zmienna : String ;
begin
end .
W razie potrzeby zadeklarowania zmiennej konieczne jest zastosowanie słowa kluczowego var (skrót od słowa
variable — zmienna). Stanowi to informację dla kompilatora, że po tym słowie kluczowym zostanie
umieszczona deklaracja zmiennych.
Zmienna zawsze musi mieć nazwę! Dzięki tej nazwie możemy łatwo odwołać się do poszczególnych danych
zapisanych w pamięci. Pierwszym członem deklaracji zmiennej musi być unikalna nazwa (nie mogą istnieć dwie
takie same zmienne w programie). Po znaku dwukropka należy wpisać typ zmiennej (o typach zmiennych
powiem później).
Z punktu widzenia kompilatora nie ma znaczenia, w jaki sposób zapiszesz (zadeklarujesz) zmienną — może
więc odbyć się to tak:
var
zmienna: string ;
lub tak:
var zmienna: string ;
Dla zachowania przejrzystości kodu zalecane jest jednak stosowanie deklaracji w formie przedstawionej w
pierwszym przykładzie.
Typy zmiennych
Typy zmiennych określają rodzaj danych, który będzie zapisywany w pamięci. W poprzednim podpunkcie
podczas deklarowania zmiennej skorzystałem z typu String . Ten typ danych służy do przechowywania tekstu i
tylko tekstu! Tak więc chcąc w pamięci komputera umieścić np. liczbę, należy skorzystać z innego typu
zmiennej.
Typy zmiennych przedstawiłem w tabeli 2.1. Oczywiście tych typów jest więcej, ale nie musisz znać ich
wszystkich — wystarczą te podstawowe.
Tabela 2.1. Typy zmiennych w Object Pascalu
Nazwa Opis
Integer -2 147 483 648 — 2 147 483 647
4 z 32
2009-03-14 15:25
77983110.006.png
Delphi :: Kompendium :: Rozdział 2 - 4programmers.net
http://4programmers.net/Delphi/Kompendium/Rozdzia%C5%82_2
Int64 -2 63 — 2 63 - 1
SmallInt -32 768 — 32 767
ShortInt -128 — 127
Byte 0 — 255
Word 0 — 65 535
LongWord 0 — 4 294 967 295
Char pojedynczy znak
Boolean TRUE lub FALSE
ShortString 255 znaków
AnsiString 2 31 znaków
String 2 31 znaków
Extended 3,6 × 10 -4951 — 1,1 × 10 4932
Double 5,0 × 10 -324 — 1,7 × 10 308
Single 1,5 × 10 -45 — 3,4 × 10 38
Currency -922 337 203 685 477,5808 — 922 337 203 685 477,5807
Niektóre z tych typów służą do przechowywania tekstu, inne do przechowywania liczb. Różni je „pojemność”.
Przykładowo chcąc zapisać w pamięci jakąś dużą liczbę, nie skorzystasz z typu Byte , ponieważ do tego typu
mogą być przypisywane jedynie wartości z zakresu od 0 do 255. Możesz za to skorzystać z typu Int64 .
Oprócz, jak to wcześniej nazwałem, „pojemności” powyższe typy danych różni także ilość zajmowanej pamięci
operacyjnej. Przykładowo typ Byte „zżera” jedynie 1 bajt pamięci, a typ Int64 — 8 bajtów. Możesz pomyśleć,
że to nieduża różnica, ale jeśli zmiennych 8 —bajtowych jest kilkadziesiąt (kilkaset?)— Jest to zwykłe
marnowanie pamięci!
Podczas czytania tej książki oraz podczas przeglądania różnych kodów źródłowych możesz
zauważyć, że dla typów liczbowych programiści często stosują zmienną Integer. Jest to
jakby uniwersalny typ zmiennej liczbowej, gdyż jej zakres jest w miarę duży, a nie
wykorzystuje ona aż tak dużo pamięci.
Deklaracja kilku zmiennych
Po wpisaniu słowa kluczowego var możesz zadeklarować tyle zmiennych, ile będzie Ci potrzebne — nie musisz
za każdym razem używać dyrektywy var .
program varApp;
var
Zmienna1 : String ;
Zmienna2 : String ;
Zmienna3 : String ;
begin
end .
W powyższym przypadku zadeklarowałeś trzy zmienne typu String . Od tej pory dla kompilatora słowa
Zmienna1 , Zmienna2 , Zmienna3 nie są już konstrukcjami nieznanymi — wiadome będzie, że w tym przypadku
chodzi o zmienne.
Podczas deklaracji kilku zmiennych tego samego typu można wpisać wszystkie zmienne razem, oddzielając ich
nazwy przecinkami:
program varApp;
var
Zmienna1, Zmienna2, Zmienna3 : String ;
begin
end .
Z punktu widzenia kompilatora w tym wypadku również następuje deklaracja trzech zmiennych typu String.
Chcąc jeszcze zadeklarować zmienne innego typu, należy to zrobić w ten sposób:
program varApp;
var
Zmienna1, Zmienna2, Zmienna3 : String ;
Liczba1, Liczba2 : Integer ;
begin
end .
Przydział danych
Przydzielenie danych dla zmiennej musi odbyć się w bloku begin . Istnieje jednak możliwość przydzielenia
danych w trakcie pisania programu.
Przydział statyczny
5 z 32
2009-03-14 15:25
77983110.007.png
Zgłoś jeśli naruszono regulamin