C++ per principianti – 8. programmazione procedurale

Ciao a tutti e bentornati al corso di C++ per principianti! Dopo aver visto nelle lezioni precedenti quelle che sono le strutture capaci di determinare il flusso di un programma (condizionali, iterative, ecc.), è arrivato il momento di fare un passo in avanti.
Perché sì, fin’ora abbiamo visto i vari modi in cui è possibile applicare la logica ai nostri programmi… però l’attività di programmazione non consiste solamente in questo, anzi.

Quando si ha a che fare con programmi più grandi rispetto a quelli visti fin’ora iniziano a nascere delle nuove necessità, dettate da problemi che si presentano.
Una di queste necessità è quella di dividere il codice in più parti in modo da gestire in maniera più agevole il flusso del programma.

A questo scopo ci vengono in aiuto le funzioni, dette anche procedure.

Cosa sono le funzioni? Beh, le funzioni non sono altro che dei blocchi di codice che in C++ hanno un nome e, solitamente, un tipo (a meno che non siano void).
Essendo questa la prima volta che incontriamo le funzioni, occorre…. wait, ma noi una funzione l’abbiamo già incontrata!

Ebbene sì, main() è una funzione. E non si tratta di una funzione qualsiasi, si tratta della funzione dalla quale un programma inizia la sua esecuzione!

Come possiamo notare, prima della dicitura main() abbiamo il tipo int… cosa sta a significare? Molto semplicemente, int ci fa sapere che il valore che la funzione restituirà (in questo caso al sistema operativo, trattandosi della funzione main) sarà di tipo intero.

Il valore viene restituito attraverso la parola chiave return, seguita dal valore e dal punto e virgola.

Questa era quindi la funzione main. Come avrete potuto intuire, siamo liberi di creare nuove funzioni seguendo la struttura già vista nel main.

Per quanto riguarda i nomi che possono essere dati alle funzioni valgono le stesse regole viste qui per le variabili. E’ chiaro che una variabile e una funzione NON possono avere lo stesso nome.
Vedendo la struttura di una funzione, possiamo notare la presenza, tra parentesi tonde, dei parametri.

I parametri sono delle variabili che, se dichiarate tra le parentesi tonde, verranno utilizzate all’interno della funzione e non potranno essere utilizzate all’infuori di questa. Con questo si introduce il concetto di ambito delle variabili, che non tratterò in dettaglio in questo corso. Alla fine della lezione comunque ci sarà un collegamento a un documento PDF dell’Università di Pavia che tratta l’argomento.

Iniziamo a sporcarci le mani e realizziamo un semplice programma che, dati due numeri, ne calcola e ne mostra in output la somma, la differenza, il prodotto e il quoziente.

Immagine

In questo programma di esempio possiamo notare come il codice sia diviso in più parti facilmente gestibili. In questo caso ogni funzione contiene al suo interno un’istruzione che restituisce il valore dell’operazione, ma in altri casi potrebbero essere necessarie molte più istruzioni e l’utilizzo delle funzioni si rivelerà fondamentale.

Altra cosa che possiamo notare, non spiegata prima, è l’utilizzo dei parametri. Le variabili num1 e num2 (in questo caso rispettivamente 79 e 33) vengono passate come parametri alle funzioni somma(), differenza(), prodotto() e quoziente() .

Le funzioni quindi ricevono questi valori e li sostituiscono a quelli dichiarati in fase di definizione, ovvero ad a e b.
Se non avessimo voluto inserire variabili in input avremmo potuto, ad esempio, ottenere la somma dei numeri 79 e 33 scrivendo:

Se avessimo voluto assegnare a una variabile c la somma dei due numeri, avremmo potuto scrivere semplicemente:

Per concludere la lezione, ecco alcuni materiali che potrebbero essere utili per l’approfondimento di quanto visto oggi:

Nella prossima lezione si parlerà degli array. Se ci sono dubbi, domande e curiosità riguardanti quanto visto oggi, non esitate a commentare.

Sinhuè Angelo Rossi