INTRODUZIONE ALLE FUNZIONI

Garro Christian

Discussione introduttiva al capitolo sulle funzioni.

Materiale

Nessun materiale richiesto

Età

A partire dai 9 anni

Numero di giocatori

Attività per tutta la classe

Competenze acquisite

Obiettivi di apprendimento al termine della classe quinta della scuola primaria

Ambito programmazione
O-P5-P-3. Riconoscere che una sequenza di istruzioni può essere considerata come un’unica azione oggetto di ripetizione o selezione


INTRODUZIONE ALLE FUNZIONI

INTRODUZIONE:

Il computer quando lavora svolge dei compiti seguendo delle istruzioni, senza queste istruzioni non possiamo programmare il computer per fargli svolgere dei lavori. Un’ istruzione è un comando che viene impartito e deve essere svolto. Quando si programma, possiamo raggruppare più istruzioni all’interno di un Blocco di istruzioni a cui è molto importante, però, dare un nome univoco, questo perché nel caso avessimo due blocchi di istruzioni, se non avessimo due nomi differenti, non sapremmo a quale blocco ci stiamo riferendo.

Esempio di un blocco di istruzione che contiene le istruzioni per far disegnare ad un computer un quadrato di colore verde e a cui gli assegniamo un nome:

1   disegna_un_quadrato;
2   colora_il_quadrato_di_verde;
disegna_quadrato_verde:
1   disegna_un_quadrato;
2   colora_il_quadrato_di_verde;

Proviamo ad eseguire queste istruzioni per vedere cosa succede:

In informatica è molto importante saper scomporre un problema in più problemi meno complessi. Nell’esempio abbiamo visto che per poter disegnare un quadrato verde è necessario dividere il problema in due sotto problemi: il primo problema richiede di dover disegnare il quadrato mentre il secondo richiede di colorarlo di verde.

1   disegna_un_quadrato;
2   colora_il_quadrato_di_verde;
1   disegna_un_quadrato;
2   colora_il_quadrato_di_verde;

Parametri

Parametro 1 = forma
Parametro 2 = colore

disegna(forma, colore):
1   disegna(forma);
2   colora(forma, colore);

1

E se volessimo scrivere istruzioni che disegnino un cerchio di colore blu? Possiamo ripetere la stessa procedura di prima ma cambiando la forma da disegnare ed il colore.

disegna_cerchio_blu;
1   disegna_un_cerchio;
2   colora_il_cerchio_di_blu;

2

Possiamo ripetere questa operazione per qualsiasi forma e colore che ci venga in mente ma ci metteremmo tantissimo tempo a scriverle tutte! Proviamo invece a vedere in cosa si assomigliano i blocchi di istruzione disegna_quadrato_verde e disegna_cerchio_blu. Entrambe hanno il verbo disegnare all’inizio, successivamente ci sono “quadrato” e “cerchio” che sono delle forme, infine ci sono dei colori. Possiamo scrivere quindi ciò che viene mostrato nella figura.

disegna_FORMA_COLORE:
1   disegna_FORMA;
2   colora_FORMA_di_COLORE

3

Abbiamo ottenuto un blocco di istruzioni generico. Per comodità di lettura cambiamo la forma con cui scriviamo il blocco di istruzioni in modo da distinguere meglio gli elementi che possono variare, come mostrato nella figura sopra.

Parametro 1 = forma
Parametro 2 = colore

disegna(forma, colore):
1   disegna(forma);
2   colora(forma, colore);

Quando useremo questo blocco di istruzioni dovremmo unicamente ricordarci di specificare i valori tra parentesi, nel nostro esempio la forma ed il colore. I valori che andremo a specificare vengono chiamati parametri.

Possiamo usare questo unico blocco di istruzioni per ridisegnare il quadrato verde ed il cerchio blu di prima ed evitare così di avere due blocchi di istruzioni differenti! Vediamo come:

Parametro 1 = quadrato
Parametro 2 = verde

disegna(quadrato, verde):
1   disegna(quadrato);
2   colora(quadrato, verde);

Parametro 1 = cerchio
Parametro 2 = blu

disegna(cerchio, blu):
1   disegna(cerchio);
2   colora(cerchio, blu);

Parametro 1 = quadrato
Parametro 2 = verde

disegna(quadrato, verde):
1   disegna(quadrato);
2   colora(quadrato, verde);

Parametro 1 = cerchio
Parametro 2 = blu

disegna(cerchio, blu):
1   disegna(cerchio);
2   colora(cerchio, blu);

Con un solo blocco di istruzioni siamo riusciti a fare lo stesso lavoro che avrebbero fatto due blocchi di istruzioni differenti!

Spostiamo l’attenzione sul blocco di istruzioni, ignorando un attimo le istruzioni che contiene, e domandiamoci “perché devo assegnare un nome ad un blocco di istruzioni?”.

disegna(forma, colore):          
1   disegna(forma);
2   colora(forma, colore);

In informatica molto spesso bisogna ripetere una sequenza di più istruzioni per più volte, conviene quindi assegnargli un nome e richiamare la sequenza tramite questo nome.

Funzioni

Spostiamo l’attenzione sul blocco di istruzioni, ignorando le istruzioni che contiene e domandiamoci “cosa otteniamo dopo l’esecuzione di questo blocco?”.

disegna(quadrato, verde):          
1   disegna(quadrato);
2   colora(quadrato, verde);

Risposta: Un quadrato verde!

Come lo ha ottenuto? Non è importante ora sapere quali passaggi precisi ha effettuato per ottenerlo, basti sapere che ha dovuto svolgere dei lavori, non importa quali.

Proviamo a guardare il tutto ignorando il nome del blocco di istruzioni e il quadrato verde che ci viene restituito, ci troveremo in una situazione in cui avremo una scatola in cui potremmo inserire dei parametri e soprattutto che ci fornisce qualcosa, al momento non è importante cosa.

Parametri (input)

nome scatola(parametri):

Oggetto fornitoci dalla scatola (output)

Questa scatola avrà le seguenti caratteristiche:

  • Ha un nome
  • Può avere dei parametri
  • Ci fornisce sempre qualcosa

Quando chiameremo la scatola con il suo nome, questa al suo interno svolgerà dei lavori, al termine del quale ci fornirà un oggetto.

La scatola appena descritta prende il nome di Funzione.