Zmienna liczba argumentów

Zmienna liczba argumentów[1], nieokreślona liczba argumentów[2], zmienna lista argumentów, to konstrukcja programistyczna umożliwiająca przekazanie do podprogramu nieokreślonej, w deklaracji (lub definicji) podprogramu, liczby argumentów. Programista deklarując (i definiując) podprogram zwykle deklaruje także określoną liczbę parametrów. W wywołaniu takiego podprogramu należy wyspecyfikować odpowiednią liczbę argumentów, odpowiadającą zdefiniowanym parametrom podprogramu. Są to argumenty wymagane. W pewnych językach programowania lub ich konkretnych implementacjach, istnieje możliwość, oprócz specyfikowania argumentów wymaganych, także specyfikowania zmiennej liczby argumentów, dla których w deklaracji podprogramu nie wyspecyfikowano jawnie odpowiednich parametrów. W tym przypadku istnieje konieczność zdefiniowana w implementacji języka programowania możliwości badania ilości przekazanych do podprogramu argumentów w jego wywołaniu i sposobu pobierania kolejnych argumentów z listy wywołania, a także ich prawidłowej interpretacji, w tym rozpoznania typu przekazanej danej.

Języki programowaniaEdytuj

CEdytuj

W implementacjach języka C zgodnych z rozszerzeniem standardowym tego języka opracowanym przez ANSI, można definiować funkcje, które mogą być wywoływane ze zmienną liczbą argumentów. W tym przypadku deklarator funkcji, po parametrach określających argumenty wymagane, zawierać powinien symbol "..." (trzy znaki kropki)[1].

Przykładem może być prototyp standardowej funkcji printf

int printf(char *Format, ...);

Brak jest w tym standardzie określenia sposobu określania ilości argumentów, ich pobierania i interpretacji. Dlatego zwykle odpowiednia implementacja tego zadania należy do programisty. W przypadku funkcji printf jest to umieszczenie w pierwszym argumencie odpowiadającym parametrowi Format odpowiednich specyfikatorów, np. %i – dana typu int, %c – dana typu char, %snapis (łańcuch znaków) itd.. Brak argumentu dla kolejnego specyfikatora wygeneruje błąd.

RubyEdytuj

W języku Ruby, ostatni parametr należy poprzedzić znakiem "*". Taki parametr zostanie przekształcony w tablicę. Ponieważ tablica jest obiektem, posiada metody takie jak np. size określające rozmiar – liczbę elementów, czyli liczbę przekazanych argumentów[3]:

def identyfikator(*parametr)

Visual Basic, VBAEdytuj

W językach z rodziny Visual Basic, w tym VBA[2] można definiować jako ostatni lub jedyny parametr, specjalny parametr określony frazą ParamArray. Parametr ten jest tablicą, w której zapisane zostaną kolejne argumenty[nota 1]. Typem komórek tej tablicy jest typ Variant, umożliwający przechowywanie danych różnych typów – dynamiczne typowanie. Odwołanie do kolejnych komórek tablicy zapewnia dostęp do kolejnych argumentów wywołania. Odpowiednie podprogramy wbudowane zapewniają możliwość badania ilości elementów tablicy[nota 2] i typu wartości zapisanej w konkretnej komórce[nota 3].

Nagłówki podprogramów[nota 4]:

Sub Identyfikator1([parametry_wymagane,] ParamArray() As Variant)
Function Identyfikator2([parametry_wymagane,] ParamArray() As Variant) As Typ_Rezultatu

Zobacz teżEdytuj

Przypisy rzeczoweEdytuj

  1. argumenty wywołania podprogramu, które nie mają odpowiedników w zadeklarowanych parametrach wymaganych lub opcjonalnych
  2. czyli ilości argumentów przekazanych do podprogramu
  3. czyli typu konkretnego argumentu przekazanego do podprogramu
  4. nawiasy kwadratowe grupują elementy opcjonalne i nie są częścią definicji

PrzypisyEdytuj

  1. a b Jan Bielecki, Turbo C z grafiką na IBM PC, Wydawnictwa Naukowo-Techniczne, Warszawa 1990, Seria: Mikrokomputery, ​ISBN 83-204-1101-7
  2. a b John Walkenbach, Excel 2003 PL. Programowanie w VBA., HELION 2004 r., ​ISBN 837361-504-0
  3. b:Ruby