18.08.2013 Views

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

Dalla A alla Z passando per C - Robotica

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Per un corretto funzionamento del programma la dichiarazione di una funzione deve sempre<br />

precedere l’invocazione della stessa, mentre la definizione può essere presente in un qualunque<br />

punto del sorgente.<br />

Esempio:<br />

void proc1(int arg1, double arg2);<br />

definisce una funzione che non restituisce alcun valore con due argomenti: un intero ed un reale<br />

in doppia precisione.<br />

Altro esempio:<br />

char proc2(void);<br />

definisce una funzione che restituisce un carattere.<br />

9.2 Definizione di funzioni<br />

Una definizione di funzione è costituita da due parti:<br />

1. una dichiarazione, in cui sono elencati:<br />

• il tipo di dato restituito d<strong>alla</strong> funzione<br />

• il nome della funzione<br />

• gli eventuali argomenti<br />

2. il corpo della funzione, racchiuso tra parentesi graffe e comprendente queste parti opzionali:<br />

• dichiarazioni e definizioni<br />

• istruzioni<br />

• una o più istruzioni return<br />

Una funzione come<br />

do_nothing(){ }<br />

è lecita.<br />

9.3 Passaggio dei parametri<br />

Una funzione può utilizzare parametri <strong>per</strong> svolgere il suo lavoro, cioè delle variabili che vengono<br />

passate <strong>alla</strong> funzione al momento della sua invocazione e che contengono valori necessari a controllare<br />

le o<strong>per</strong>azioni svolte d<strong>alla</strong> funzione, oppure sono valori utilizzati nei calcoli svolti d<strong>alla</strong><br />

funzione.<br />

La comunicazione fra il codice chiamante ed il sottoprogramma avviene sempre secondo la<br />

modalità del passaggio <strong>per</strong> valore. Questo significa che la funzione utilizza una copia locale della<br />

variabile passata come parametro all’atto della chiamata, e tale variabile locale è inizializzata<br />

con il valore dell’espressione o della variabile impostata nel punto di chiamata <strong>alla</strong> funzione. In<br />

particolare, la funzione potrà modificare il valore della variabile locale, ma non quello dell’eventuale<br />

variabile passata come parametro all’invocazione della funzione stessa, in quanto le due<br />

variabili sono allocate in aree di memoria distinte.<br />

96

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!