Informatica 2 Liceo Scientifico Scienze Applicate/Funzioni Void e non Void: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Gian BOT (discussione | contributi)
m Bot: Correggo errori ortografici comuni
m Update syntaxhighlight tags - remove use of deprecated <source> tags
Riga 13:
Pensiamo di scrivere una funzione che calcoli il doppio di un numero <br />
 
<sourcesyntaxhighlight lang=c>
float doppio(float n)
{ float z;
Riga 19:
return z;
}
</source syntaxhighlight>
che poteva essere anche scritta come
<sourcesyntaxhighlight lang=c>
float doppio(float n)
{
return 2*n;
}
</source syntaxhighlight>
perché quello che viene restituito e' il valore dell'espressione (una volta calcolato) dopo l'istruzione return, ricordate inoltre che la funzione termina dopo aver restituito il valore e quindi eventuali istruzioni dopo il return non vengono eseguite, la funziona termina anche se incontra la } di chiusura del codice della funzione.<br />
 
Riga 53:
le funzioni void non possono invece essere inserite in espressioni di calcolo, cioe' se<br />
 
<sourcesyntaxhighlight lang=c>
void doppio ( float *n)
{ *n= *n*2;
}
</source syntaxhighlight>
non posso scrivere
<sourcesyntaxhighlight lang=c>
float a=4;
z=doppio( &a)+7;
</source syntaxhighlight>
ma invece
<sourcesyntaxhighlight lang=c>
float a=4;
doppio( &a);
z=a+7;
</source syntaxhighlight>
== Funzioni Ricorsive ==
Le funzioni (void e non void) possono essere richiamate non solo da altre funzioni ma anche all'interno della funzione stessa, in questo caso si parla di funzioni ricorsive ( che cioe' richiamano se stesse)<br />
Riga 90:
se vogliamo scrivere una funzione ricorsiva per il calcolo dell' n! scriviamo<br />
 
<sourcesyntaxhighlight lang=c>
long fattoriale (long n)
{ if(n==0)
Riga 97:
return n*fattoriale(n-1);
}
</source syntaxhighlight>
se richiamo la funzione con
<sourcesyntaxhighlight lang=c>
z=fattoriale(3);
</source syntaxhighlight>
succede che si attiva il codice della funzione fattoriale(3) che si ferma nel calcolo di return 3*fattoriale(2)
si ferma perché deve ottenere il risultato della chiamata alla funzione fattoriale(2)<br />