Linguaggi di programmazione: funzioni Le funzioni richiedono un numero fisso o variabile di...

6
Linguaggi di Linguaggi di programmazione: programmazione: funzioni funzioni Le funzioni richiedono un numero Le funzioni richiedono un numero fisso o variabile di fisso o variabile di “argomenti”, ovvero valori che “argomenti”, ovvero valori che devono essere passati alla devono essere passati alla funzione che ci “lavora” funzione che ci “lavora” Le funzioni “ritornano” un Le funzioni “ritornano” un numero fisso o variabile di numero fisso o variabile di “valori di ritorno”, che sono il “valori di ritorno”, che sono il risultato del calcolo fatto risultato del calcolo fatto dalla funzione dalla funzione In Perl le funzioni in un In Perl le funzioni in un programma si chiamano programma si chiamano “subroutines” “subroutines”

Transcript of Linguaggi di programmazione: funzioni Le funzioni richiedono un numero fisso o variabile di...

Page 1: Linguaggi di programmazione: funzioni Le funzioni richiedono un numero fisso o variabile di argomenti, ovvero valori che devono essere passati alla funzione.

Linguaggi di programmazione: Linguaggi di programmazione: funzionifunzioni Le funzioni richiedono un numero fisso o Le funzioni richiedono un numero fisso o

variabile di “argomenti”, ovvero valori variabile di “argomenti”, ovvero valori che devono essere passati alla funzione che devono essere passati alla funzione che ci “lavora”che ci “lavora”

Le funzioni “ritornano” un numero fisso Le funzioni “ritornano” un numero fisso o variabile di “valori di ritorno”, che o variabile di “valori di ritorno”, che sono il risultato del calcolo fatto dalla sono il risultato del calcolo fatto dalla funzionefunzione

In Perl le funzioni in un programma si In Perl le funzioni in un programma si chiamano “subroutines”chiamano “subroutines”

Page 2: Linguaggi di programmazione: funzioni Le funzioni richiedono un numero fisso o variabile di argomenti, ovvero valori che devono essere passati alla funzione.

FunzioniFunzioni

Subroutine PerlSubroutine Perlsub nome_funzione{sub nome_funzione{istruzioni....istruzioni....}} Immaginiamo che in Perl non esista una funzione che Immaginiamo che in Perl non esista una funzione che

permette di calcolare il risultato di x elevato alla ypermette di calcolare il risultato di x elevato alla y Creiamo una nuova funzione, che chiamiamo “eleva”, in Creiamo una nuova funzione, che chiamiamo “eleva”, in

modo tale da permettere di scrivere espressioni tipo:modo tale da permettere di scrivere espressioni tipo:$z = &eleva($x,$y)$z = &eleva($x,$y) $z conterrà il risultato di $x elevato alla $y$z conterrà il risultato di $x elevato alla $y La “&” prima del nome della funzione serve a dire La “&” prima del nome della funzione serve a dire

all’interprete che “eleva” non è un comando, ma una all’interprete che “eleva” non è un comando, ma una funzione che si trova all’interno del programma stessofunzione che si trova all’interno del programma stesso

Page 3: Linguaggi di programmazione: funzioni Le funzioni richiedono un numero fisso o variabile di argomenti, ovvero valori che devono essere passati alla funzione.

FunzioniFunzioni

Occorre passare a “eleva” due valori, $x e Occorre passare a “eleva” due valori, $x e $y$y

““Eleva” *non* lavorerà direttamente Eleva” *non* lavorerà direttamente sulle variabili $x e $y, ma su altre due sulle variabili $x e $y, ma su altre due variabili in cui ricopieremo i valori!variabili in cui ricopieremo i valori!

Occorre fare in modo che “eleva” Occorre fare in modo che “eleva” risponda dando il risultato di $x elevato a risponda dando il risultato di $x elevato a $y$y

sub eleva{sub eleva{

}}

Page 4: Linguaggi di programmazione: funzioni Le funzioni richiedono un numero fisso o variabile di argomenti, ovvero valori che devono essere passati alla funzione.

Funzioni: passaggio di valoriFunzioni: passaggio di valori

Le variabili che sono passate a una Le variabili che sono passate a una funzione definita tramite “sub” sono funzione definita tramite “sub” sono memorizzate in un array speciale che è memorizzate in un array speciale che è chiamato @_ nell’ordine in cui sono chiamato @_ nell’ordine in cui sono messe tra parentesimesse tra parentesi

Quindi, chiamando &eleva($x, $y), Quindi, chiamando &eleva($x, $y), dentro al blocco di codice di eleva $_[0] dentro al blocco di codice di eleva $_[0] avrà il valore di $x, $_[1] quello di $y, e avrà il valore di $x, $_[1] quello di $y, e così via in caso di più argomenti così via in caso di più argomenti

Page 5: Linguaggi di programmazione: funzioni Le funzioni richiedono un numero fisso o variabile di argomenti, ovvero valori che devono essere passati alla funzione.

FunzioniFunzioni

$z = &eleva($x, $y)$z = &eleva($x, $y)......sub elevasub eleva{{ my $i;my $i;my $risultato = 1;my $risultato = 1;for($i = 0; $i < $_[1]; i++)for($i = 0; $i < $_[1]; i++) {{ $risultato = $risultato * $_[0]; $risultato = $risultato * $_[0]; }}

}} Rimane da fare in modo che la funzione “ritorni” un valore, Rimane da fare in modo che la funzione “ritorni” un valore,

ovvero quello che verrà assegnato alla variabile $z: questo è ovvero quello che verrà assegnato alla variabile $z: questo è possibile tramite il comando possibile tramite il comando returnreturn

Page 6: Linguaggi di programmazione: funzioni Le funzioni richiedono un numero fisso o variabile di argomenti, ovvero valori che devono essere passati alla funzione.

FunzioniFunzioni

$z = &eleva($x, $y)$z = &eleva($x, $y)......sub elevasub eleva{{ my $i;my $i;my $risultato = 1;my $risultato = 1;for($i = 0; $i < $_[1]; $i++)for($i = 0; $i < $_[1]; $i++) {{ $risultato = $risultato * $_[0]; $risultato = $risultato * $_[0]; }}return $risultato;return $risultato;}}

Il valori della variabile dopo return saranno quelli restituiti dalla funzione, Il valori della variabile dopo return saranno quelli restituiti dalla funzione, ovvero il risultato del calcoloovvero il risultato del calcolo

Una funzione può restituire anche un array di elementiUna funzione può restituire anche un array di elementi