[ Pobierz całość w formacie PDF ]
Inaczej niż w przypadku pętli blok kodu zawarty w pętli jest zaw-
sze wykonywany przynajmniej raz, ponieważ warunek pętli jest sprawdzany dopiero na
jej końcu. Stosowana w języku programowania Delphi pętla jest w ogól-
ności równoważna znanej z języka C# konstrukcji z tą różnicą, że odwrócony
jest warunek przerwania wykonywania pętli.
Przykładowo, w poniższym fragmencie kodu instrukcja zwiększająca licznik o jeden
jest powtarzana w pętli do momentu, w którym wartość tego licznika
przekroczy :
In u
Wywołanie instrukcji z wnętrza pętli , lub powoduje na-
tychmiastowe przejście na koniec aktualnie wykonywanej pętli. Ta metoda opuszczania
bloku kodu wewnątrz pętli jest szczególnie przydatna w sytuacjach, w których z uwagi
na pewne okoliczności wykryte wewnątrz pętli musimy przerwać jej wykonywanie. Do-
stępna w języku Delphi instrukcja jest odpowiednikiem znanej z języka progra-
mowania C# instrukcji oraz stosowanej w języku Visual Basic .NET instrukcji
. W poniższej pętli wykorzystano instrukcję do przerwania wykonywania pętli
już po pięciu iteracjach:
In u n nu
Instrukcję wywołujemy wewnątrz pętli w sytuacji, gdy chcemy pominąć na-
stępujący po niej blok kodu i przekazać sterowanie do kolejnej iteracji pętli. Zwróć
uwagę na sposób wykorzystania tej instrukcji w poniższym przykładzie kodu część
118 Część ll Język programowania Delphi for .NET
kodu występująca po instrukcji zostanie pominięta w pierwszej iteracji użytej
pętli :
u un
Jako programista z pewnym doświadczeniem w pracy z językami programowania powi-
nieneś już teraz znać podstawy stosowania procedur i funkcji. Procedura jest wyodrębnio-
ną częścią programu, która po swoim wywołaniu wykonuje określone zadanie i zwraca
sterowanie do części kodu, w której została wywołana. Funkcja działa w ten sam sposób
z jedną różnicą po zakończeniu działania wraz ze sterowaniem przekazywanym do
wywołującej części programu funkcja zwraca także swoją wartość (patrz listing 5.1).
n Przykładowy program wykorzystujący funkcję i procedurę
Rozdział 5. Język Delphi 119
Zmienna Res lt
Wykorzystana w funkcji zmienna lokalna wymaga krótkiego omówienia.
Każda funkcja języka programowania Delphi zawiera deklarowaną niejawnie zmienną lokalną
nazwaną , która przechowuje wartość zwracaną przez tę funkcję. Zauważ, że w przeciwień-
stwie do znanej z języka C# instrukcji przypisanie wartości do zmiennej nie jest
równoważne z zakończeniem działania danej funkcji.
Jeśli chcesz otrzymać w języku Delphi podobną funkcjonalność, jaką w języku C# daje instrukcja
, możesz bezpośrednio po przypisaniu wartości do zmiennej wywołać instrukcję ,
która powoduje natychmiastowe opuszczenie bieżącej funkcji lub procedury.
Alternatywnym sposobem zwracania wartości funkcji jest użycie wewnątrz jej kodu operacji
przypisania wartości do nazwy funkcji. Jest to standardowa składnia języka programowania Delphi,
która pochodzi jeszcze ze starszych wersji języka Borland Delphi. Jeśli zdecydujesz się użyć nazwy
funkcji w jej ciele, musisz pamiętać o zasadniczej różnicy pomiędzy jej umieszczeniem po lewej
stronie operatora przypisania, a dowolnym innym miejscem w tworzonym kodzie. Nazwa funkcji
wykorzystana w roli lewego operandu operatora przypisania oznacza, że przypisujemy funkcji zwra-
caną pózniej wartość. Wykorzystanie tej nazwy w dowolnym innym miejscu kodu będzie oznacza-
ło rekurencyjne wywołanie danej funkcji!
Pamiętaj także, że wykorzystywanie niejawnie deklarowanej zmiennej nie będzie akcepto-
wane przez kompilator, jeśli na zakładce Compiler okna dialogowego ustawień projektu (wywo-
ływanego przez wybór opcji Project/Options) wyłączymy opcję Extended Syntax lub jeśli w naszym
kodzie użyjemy dyrektywy (bądz dyrektywy ).
n
Język programowania Delphi umożliwia nam przekazywanie parametrów funkcji i proce-
dur przez wartości lub przez referencje. Przekazywane przez nas parametry mogą być
zmiennymi typu prostego, zmiennymi typu użytkownika lub tablicami otwartymi (tablice
otwarte omówimy w dalszej części tego rozdziału). Jeśli dana funkcja lub procedura nie
modyfikuje otrzymywanych parametrów, możemy je przekazać w formie wartości stałych.
w o ow
Stosowanie parametrów wartościowych jest w języku Delphi domyślnym trybem prze-
kazywania parametrów do funkcji i procedur. Kiedy przekazujemy jakiś parametr przez
wartość, automatycznie tworzona jest lokalna kopia tej zmiennej, na której możemy
potem operować z poziomu kodu funkcji lub procedury. Przeanalizujmy teraz poniższy
przykład:
Kiedy wywołamy tak zadeklarowaną procedurę, zostanie utworzona lokalna kopia
przekazanej zmiennej całkowitoliczbowej właśnie na tej kopii będzie operował kod
procedury . Oznacza to, że możemy z poziomu tej procedury modyfikować war-
tość lokalnej kopii zmiennej , nie zmieniając przy tym oryginalnej zmiennej przekaza-
nej do procedury .
120 Część ll Język programowania Delphi for .NET
× ×
Język Delphi umożliwia przekazywanie do funkcji i procedur zmiennych przez ich refe-
rencje; parametry przekazywane w ten sposób są także nazywane parametrami zmien-
nymi. Przekazywanie przez referencje oznacza, że funkcja lub procedura otrzymująca
daną zmienną może zmodyfikować jej oryginalną wartość. Przekazywanie zmiennych
przez referencje wymaga użycia słowa kluczowego na liście parametrów w instruk-
cji wywołania procedury lub funkcji:
Zamiast tworzyć kopię zmiennej , wskutek użycia słowa kluczowego do procedury
jest przekazywana kopia adresu tego parametru, dzięki czemu możemy w ko-
dzie tej procedury bezpośrednio modyfikować tę zmienną.
Technika polegająca na stosowaniu w języku Delphi słowa kluczowego dla para-
metrów przekazywanych przez referencje ma swoje odpowiedniki w języku C# (słowo
kluczowe ) oraz języku Visual Basic .NET (dyrektywa ).
w ow
Podobnie jak parametry zmienne (deklarowane ze słowem kluczowym ), parametry
wyjściowe (deklarowane ze słowem kluczowym ) są jedną z metod zwracania z funk-
cji i procedur wartości do kodu wywołującego za pośrednictwem parametrów. Różnica
polega jednak na tym, że parametry zmienne muszą być inicjalizowane poprawną warto-
ścią jeszcze przed wywołaniem funkcji lub procedury takie wymaganie nie dotyczy
parametrów wyjściowych, poprawność przekazywanej wartości w ogóle nie jest weryfi-
kowana. W przypadku typów referencyjnych oznacza to, że w momencie wywołania pro-
cedury lub funkcji taka referencja jest usuwana.
Oto próba przedstawienia reguły stosowania tych parametrów w największym skrócie:
słowo kluczowe stosuje się dla parametrów wejścia-wyjścia, natomiast słowo kluczowe
stosuje się wyłącznie dla parametrów wyjściowych.
Jeśli nie chcesz, aby wartość przekazywana do funkcji lub procedury była zmieniana,
możesz ją zadeklarować ze słowem kluczowym . Poniżej przedstawiono przykła-
dową deklarację procedury, która otrzymuje w wywołaniu stały parametr łańcuchowy:
Rozdział 5. Język Delphi 121
w b ow
Otwarte parametry tablicowe dają nam możliwość przekazywania do funkcji i procedur
zmieniających się liczb argumentów. Możemy deklarować albo otwarte tablice wybrane-
go jednolitego typu, albo stałe tablice różnych typów. Przykładowo, za pomocą poniż-
szego kodu deklarujemy funkcję przyjmującą otwartą tablicę liczb całkowitych:
Do funkcji i procedur przyjmujących otwarte parametry tablicowe możemy przekazywać
zmienne, stałe oraz wyrażenia reprezentujące dowolne typy tablic (dynamiczne, sta-
[ Pobierz całość w formacie PDF ]