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
Fondamenti di Informatica
1
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)
Fondamenti di Informatica
2
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)
Fondamenti di Informatica
3
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)
Fondamenti di Informatica
4
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
Fondamenti di Informatica
5
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
Fondamenti di Informatica
6
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
Fondamenti di Informatica
7
Le procedure
ƒ Annidamento:
in una procedura può essere contenuta
un'altra chiamata a procedura
ƒ Limite sulla dimensione dello stack
Fondamenti di Informatica
8
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
Fondamenti di Informatica
9
La ricorsione
ƒ Esempi:
ƒ
ƒ
ƒ
ƒ
somma di N dati
calcolo del fattoriale
calcolo dei primi N numeri primi
visita di un albero
Fondamenti di Informatica
10