1
Elementi di Informatica 1
Ripetizioni di segmenti di codice
• Spesso è necessario ripetere più volte uno stesso segmento dell'algoritmo (e.g. I/O, elaborazioni dati)
• Esistono due possibilità:
– Macro – Procedure
Elementi di Informatica 2
Le macro
• Una macro è definita come un insieme di istruzioni (o blocco)
• Queste vengono sostituite all'interno del codice
• Servono per rendere più leggibile il codice e per facilitarne la modifica coerente
• #define MAX(a,b) (a>b ? a : b)
Elementi di Informatica 3
Le procedure
• Una procedura è definita come un insieme di istruzioni (o blocco)
• Il controllo del flusso passa alla
procedura ogni volta che viene invocata
• E' necessario un meccanismo per ritornare al punto chiamante
• Utilizzo dello stack (Stack Pointer)
Elementi di Informatica 4
Procedure e funzioni
• La ripetizione di un segmento di codice può avere due obiettivi:
– ripetere la stessa sequenza di operazioni – calcolare diversi valori, partendo da
parametri diversi
• La differenza principale è:
– la procedura non ritorna nessun valore – la funzione ritorna un valore (ad es void)
Elementi di Informatica 5
Passaggio dei parametri
• Ogni procedura/funzione generalmente richiede un insieme di dati
• I dati devono essere accessibili:
– in variabili globali
– oppure sotto forma di parametri
• I parametri sono dati che vengono utilizzati dalla procedura; ad ogni chiamata possono assumere valori diversi
Elementi di Informatica 6
Passaggio dei parametri
• I parametri possono essere passati in modi diversi:
– per valore
vengono effettuate delle copie dei valori;
le copie sono usate dalla procedura che può anche modificarne il valore – per riferimento
si passa il puntatore alle variabili; i valori possono essere modificati dalla procedura
2
Elementi di Informatica 7
Side effects
• Se il passaggio dei parametri avviene per valore, l'effetto della procedura è limitato al valore che ritorna
• Se i parametri sono passati per riferimento, la procedura può avere effetti collaterali (side effects)
– è un modo per far in modo che la procedura ritorni più di un valore
Elementi di Informatica 8
Le procedure
• Annidamento:
in una procedura può essere contenuta un'altra chiamata a procedura
• Limite sulla dimensione dello stack
Elementi di Informatica 9
Le procedure
• Ricorsione:
all'interno di una procedura avviene una chiamata alla procedura stessa
• Limite sulla dimensione dello stack
• Molti algoritmi sono basati sulla ricorsione
Elementi di Informatica 10
La ricorsione
• Esempi:
– somma di N dati – calcolo del fattoriale
– calcolo dei primi N numeri primi – visita di un albero