begin
Write ('Podaj X: '); Readln (X);
Write ('Podaj Y: '); Readln (Y);
ZamienZmienne (X, Y);
Writeln ('Po zamianie X-', X, ’ a Y-', Y);
Readln; end.
Zauważ, że nie ma tu znaczenia, jak nazywają się zmienne przekazywane do procedury. Wszystko jedno, czy nazwiemy je X i Y, Pierwsza i Druga, wewnątrz procedury będą chwilowo nazywać się A i B, a po jej zakończeniu ich wartości zostaną zamienione.
Przeprowadź eksperyment: usuń słowo var sprzed definicji parametrów i uruchom program. Wartości zmiennych nie zostały zamienione. Czy już teraz widzisz różnicę?
W przypadku tej funkcji słowo var tyczy się obu parametrów (zapis jest równoważny następującemu):
procedurę ZamienZmienne (var A: Byte; var B: Byte);
Oczywiście w jednej funkcji możesz część parametrów przekazać w jeden, a część w drugi sposób, na przykład:
procedurę Przykładowa (A: Byte; var B: Byte);
lub
procedurę Przykładowa (var A: Byte; B: Byte);
Z takiego sposobu przekazywania parametrów wynika jeszcze jedna, bardzo ważna uwaga. Parametrem aktualnym, przekazywanym przez zmienną musi być zmienna, a nie wyrażenie czy stała. I tak jak można było napisać na przykład:
X Silnia (5)
jeżeli silnia była zdefiniowana tak, jak w ćwiczeniu 3.49, tak w powyższym przykładzie zapis:
ZamienZmienne (2, 3)
jest niepoprawny (cóż zresztą miałby znaczyć?). Spotkamy się jednak z przypadkami (szczególnie używając cudzych funkcji), że nie będzie się dało wywołać ich ze stałą, mimo tego, że tak byłoby wygodniej, ponieważ parametry są przekazywane przez zmienną, a nie przez wartość (czasem niepotrzebnie).
C Z E N I E
Z naszej procedury potrzebujemy uzyskać aż trzy dane: liczbę rozwiązań i oba rozwiązania. Napiszemy ją tak, że wszystkie te parametry będziemy przekazywać przez zmienną. W zależności od liczby rozwiązań albo wyliczone będą oba, albo tylko jedno, albo żadne. Parametry, których nie będziemy liczyć, będą przyjmowały wartość nieokreśloną.