Argument domyślny – domyślna wartość argumentu – to wartość typu zgodnego z typem pewnego parametru, zdefiniowana przez programistę w deklaracji podprogramu, która zostanie użyta jako argument (parametr aktualny), przypisany do danego parametru (parametru formalnego), w przypadku, gdy w wywołaniu danego podprogramu, nie zostanie wyspecyfikowany argument dla pewnego parametru.
Stosowanie argumentów domyślnych
Definiując podprogram, zwykle (z wyjątkiem podprogramów bezparametrowych), specyfikuje się listę parametrów, służących do komunikacji danego podprogramu z otoczeniem. W wywołaniu takiego podprogramu z parametrami, kojarzone są odpowiednie argumenty, specyfikowane w instrukcji wywołania, bądź w wywołaniu podprogramu funkcyjnego w wyrażeniu[1]. Większość języków programowania ma tak zdefiniowaną składnię, że wymagane jest wyspecyfikowanie w wywołaniu podprogramu tylu argumentów ile zadeklarowano parametrów podprogramu. Brak specyfikacji któregokolwiek z argumentów, który odpowiadałby pewnemu parametrowi, jest w takim przypadku sygnalizowane jako błąd. Przykładowy język programowania to Pascal[2]. Pewne języki lub implementacje języków dopuszczają jednak definiowanie wartości domyślnych argumentów dla wybranych parametrów, umożliwiających wywołanie podprogramu, z niepełną listą argumentów, tzn. taką listą argumentów, w której pominięto specyfikację tych argumentów, które odpowiadają parametrom ze zdefiniowanymi wartościami domyślnymi argumentów. W tej sytuacji parametr, dla którego nie wyspecyfikowano odpowiadającego mu argumentu, zostanie skojarzony z wartością domyślną, zdefiniowaną w deklaracji parametru.
Zastosowanie argumentów domyślnych:
- skraca i upraszcza kod źródłowy dla najczęściej stosowanej wartości danego argumentu,
- ale może prowadzić do błędów.
Specyfikowanie argumentów domyślnych
Sposób specyfikacji wartości domyślnej argumentu dla pewnego parametru, zależny jest od specyfiki składni danego języka programowania. Specyfikacja ta występuje w deklaracji danego parametru, która to deklaracja najczęściej w językach programowania wysokiego poziomu, stanowi integralną część deklaracji samego podprogramu.
Function talc(x: in INTEGER; y: in INTEGER:=1);
Języki programowania
Wiele języków programowania wysokiego poziomu nie dopuszcza konstrukcji polegającej na definiowaniu argumentów domyślnych. Nie ma takich możliwości np. język C[4], Icon[5], Modula-2[6] i inne, czy wcześniej wymieniony Pascal[2]. Dla tych języków pojawiają się jednak nowsze implementacje, których autorzy wprowadzają taką możliwość. Przykładem jest język Object Pascal w środowisku Delphi[7]. Wśród języków, w których składnia definiuje taką konstrukcję są m.in. Ada[3], Visual Basic.
Ada
W języku Ada definiowanie wartości domyślnej argumentu ma analogiczną postać do inicjalizacji zmiennej czy też wartości domyślnej definiowanego typu w tym języku. Ma postać przypisania, tworzonego za pomocą dwuznakowego symbolu tego języka „:=”, po specyfikacji atrybutów danego parametru. Specyfikacje argumentów, dla paramentów ze zdefiniowaną wartością domyślną, mogą zostać pominięte w wywołaniu takiego podprogramu[3].
Object Pascal
W języku Object Pascal, w porównaniu z Pacalem, wprowadzono m.in. możliwość definiowania argumentów domyślnych. Definicja taka umieszczona zostaje w nagłówku definiowanego podprogramu.
Przykład:
procedure test(a:integer; opcja:integer=1; nazwa:string='pusta');
Jak w powyższym przykładzie widać, wartość domyślną specyfikuje się tak jak w definicji stałej po znaku "=", a nie jak po znakach w przypisaniu ":=". Należy podkreślić, że parametry z wartościami domyślnymi argumentów, muszą być definiowane na końcu listy parametrów danego podprogramu - tzn. nie może po nich wystąpić jakikolwiek parametr obowiązkowy (tj. bez wartości domyślnej)[7].
PHP
W języku PHP definiuje się wartości domyśle argumentów podobnie jak w większości innych języków, w których dostępna jest tak konstrukcja.
function Przyklad($a, $b= 0)
Python
Również w języku Python można definiować argumenty domyślne, w nomenklaturze tego języka i literaturze przedmiotu nazywane argumentami opcjonalnymi[8].
Przykład:
def info(element, spacing=10, collapse=1):
Visual Basic
Przykład deklaracji argumentu domyślnego:
Sub MsgBL(M As String, Optional P As Variant=5)
...
End Sub
C++
Przykład deklaracji argumentu domyślnego:
int pomnoz(int x, int y = 0) {return x*y;}
Zobacz też
Przypisy
- ↑ Michael Marcotty, Henry Ledgord, W kręgu języków programowania, tłumaczenie: Krystyna Jerzykiewicz, Wydawnictwa Naukowo-Techniczne, Warszawa 1980, Seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-1342-7
- 1 2 Michał Iglewski, Jan Madey, Stanisław Matwin, Pascal. Język wzorcowy – Pascal 360., Wydawnictwa Naukowo-Techniczne, Warszawa 1984, wydanie trzecie – zmienione, Seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-0597-1
- 1 2 3 A. Nico Habermann, Dewayne E. Perry, Ada dla zaawansowanych, Wydawnictwa Naukowo-Techniczne, Warszawa 1989 r., seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-1058-4
- ↑ Jan Bielecki, Turbo C z grafiką na IBM PC, Wydawnictwa Naukowo-Techniczne, Warszawa 1990, Seria: Mikrokomputery, ISBN 83-204-1101-7
- ↑ Ralph E. Griswold, Madge T. Griswold, Icon, Wydawnictwa Naukowo-Techniczne, Warszawa 1987, Seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-0871-7
- ↑ Niklaus Wirth, Modula 2, Wydawnictwa Naukowo-Techniczne, Warszawa 1987, Seria: Biblioteka Inżynierii Oprogramowania, ISBN 83-204-0828-8
- 1 2 4programmers.net: Adam Boduch Delphi 7. Kompendium programisty ISBN 83-7361-087-1
- ↑ b:Zanurkuj w Pythonie/Argumenty opcjonalne i nazwane