Argument (parametr aktualny), w informatyce, to element składni w określonym języku programowania, który w wyniku wywołania podprogramu, zostaje utożsamiony (skojarzony) z określonym parametrem podprogramu. Można stwierdzić, że argument konkretyzuje pewien abstrakcyjny parametr (nadając mu konkretną wartość, kojarząc parametr z określonym miejscem pamięci, zwracając konkretną wartość do miejsca wywołania itp.).
Parametry i argumenty Definiując podprogram programista posługuje się parametrem, czyli informacją (np. wartością), która nie jest znana w momencie definiowania podprogramu, a jedynie zadeklarowaną w jego nagłówku. Argument jest natomiast informacją (np. wartością), znaną, przekazaną z miejsca wywołania, którą posługuje się zdefiniowany wcześniej podprogram.
Sposoby specyfikacji argumentów Składania języka programowania określa sposób specyfikacji argumentów przy wywołaniu określonego podprogramu. Najczęściej podaje się listę argumentów ujętą w nawiasy po nazwie podprogramu, np. „podprogram(arg1, arg2, …, arg_n);”. Przykładowe języki to: C, C++, Pascal, PL/1, Ada, ALGOL i wiele innych. W pewnych językach lista ta nie musi być ujmowana w nawiasy. Jest to więc specyfikacja pozycyjna argumentów, w której to, który argument zostanie skojarzony z którym parametrem decyduje pozycja na liście. Niektóre języki, np. Visual Basic, umożliwiają przypisania argumentu do parametru poprzez identyfikator parametru. Nie ma wtedy znaczenia kolejność specyfikacji argumentów, np. „podprogram parametr3=arg1 parametr2=arg2 paramter1=arg3”.
Rodzaje argumentów Argumenty mogą zostać podzielone na dwie zasadnicze grupy: argumenty wymagane muszą zostać wyspecyfikowanie w wywołaniu podprogramu, argumenty opcjonalne mogą zostać wyspecyfikowanie wywołaniu podprogramu, lub mogą zostać pominięte; argumenty opcjonalne mogą posiadać zdefiniowaną domyślną wartość argumentu.
Przekazywanie argumentów Argumenty przekazywane przez wartość W tym przypadku parametr zachowuje się w podprogramie jak zmienna lokalna, której przypisano w momencie wywołania podprogramu wartość początkową, równą wartości przekazywanego argumentu. Oznacza to, że argument przekazywany do podprogramu może być wyrażeniem. Po zakończeniu podprogramu, wartość odpowiedniego parametru, nie zostanie zachowana.
Przykładowe języki programowania: Ada (in), Pascal, C, Modula-2, Snobol i inne.
Argumenty przekazywane przez wynik Parametr zachowuje się jak zmienna lokalna, bez wartości początkowej (a więc należy dokonać przypisania wartości w podprogramie), a po zakończeniu podprogramu, argument (który powinien być zmienną, wskazaniem na zmienną lub innym wyrażeniem dopuszczalnym po lewej stronie operatora przypisania w danym języku programowania) otrzyma wartość nadaną w podprogramie, przekazaną do miejsca wywołania.
Przykładowe języki programowania: Ada (out), ALGOL W
Argumenty przekazywane przez wartość i wynik Jest to połączenie metod przekazywania argumentów: przez wartość oraz przez wynik.
Parametr zachowuje się więc jak zmienna lokalna o nadanej w momencie wywołania podprogramu wartości początkowej, równej wartości przekazywanego argumentu, a po zakończeniu podprogramu argument zachowa ostatnio nadaną parametrowi wartość.
Przykładowe języki programowania: Ada (in out).
Argumenty przekazywane przez referencję Argumenty przekazywane przez referencję (przez zmienną, przez adres), to nałożenie zmiennej reprezentowanej przez parametr na zmienną reprezentowaną przez argument. Każda zmiana wartości parametru oznacza w rzeczywistości zmianę wartości skojarzonego z nim argumentu. Różnica z przekazywaniem argumentu przez wartość i wynik polega więc na tym, że w tym drugim przypadku istnieje zmienna lokalna, na której wykonywane są wszystkie operacje, przy przekazywaniu przez referencję wszystkie operacje wykonywane są bezpośrednio na argumencie.
Przykładowe języki programowania: C/C++, Pascal (var), Modula-2, PL/I, COBOL, Fortran.
Argumenty przekazywane przez nazwę Ten sposób oznacza użycie argumentu w miejscu parametru, w takiej postaci, w jakiej wystąpił w miejscu wywołania. W uproszczeniu (nie jest to do końca prawdziwe stwierdzenie), obrazowo, można by utożsamić przekazywanie argumentu przez nazwę z tekstowym podstawieniem zapisu argumentu w każdym miejscu podprogramu, w którym odwołano się do parametru.
Dokładniej: w ALGOLu przekazywanie przez nazwę zdefiniowane jest następująco: Procedura jest traktowana podobnie jak makro, czyli jej treść jest wklejana w miejscu wywołania, z zastąpieniem parametrów przekazywanych przez nazwę argumentami. Dla zachowania jednoznaczności parametry aktualne otaczane są nawiasami. Jeśli zmienne lokalne procedury kolidują ze zmiennymi widocznymi w miejscu wywołania, to ich nazwy zostają zmienione na unikatowe.
Przykładowe języki programowania: ALGOL 60, Simula 67.
Zobacz też argument domyślny argument nazwany podprogram parametr instrukcja wywołania
Przypisy
Kategoria:Konstrukcje programistyczne