Introduzione ai sottoprogrammi
Paolo Bison
Fondamenti di Informatica A.A. 2007/08
Università di Padova
Introduzione al corso, Paolo Bison, FI07, 2008-01-08 – p.1
Struttura
programma formato da vari elementi (sottoprogrammi) indipendenti tra loro
ogni sottoprogramma composto da:
insieme di istruzioni (corpo)
nome del sottoprogramma
esempio
subroutine P()
x=3*t subroutine C()
Vantaggi
metodologia di programmazione top-down, bottom-up
operazioni per tipi definiti dall’utente tipo complex
limitazione duplicazione codice inizializzazione
Introduzione al corso, Paolo Bison, FI07, 2008-01-08 – p.3
Linguaggio di programmazione
sintassi per la definizione dei sottoprogrammi
strutture di controllo per l’attivazione ed esecuzione dei sottoprogrammi
meccanismi per il trasferimento di dati a e da sottoprogrammi
Organizzazione e controllo
sequence control
il controllo dell’ordine di esecuzione delle
operazioni/istruzioni, sia primitive che definite dall’utente (istruzione IF)
data control
il controllo della flusso dati tra insiemi di operazioni (variabile)
Introduzione al corso, Paolo Bison, FI07, 2008-01-08 – p.5
Sequence control nei sottopprogrammi
meccanismi per controllare la sequenza in cui insiemi di sottoprogrammi sono attivati ed eseguiti
struttura CALL-RETURN
CALL-RETURN
gerarchia di sottoprogrammi:
sottoprogramma principale che puó attivare l’esecuzione di altri sottoprogrammi che a loro volta possono attivare altri sottop. e così via ...
relazione chiamante-chiamato
A B C
CALL B CALL C
Introduzione al corso, Paolo Bison, FI07, 2008-01-08 – p.7
proprietà CALL-RETURN
chiamata esplicita (CALL)
ritorno esplicito (RETURN)
esecuzione chiamante momentaneamente bloccata
quando il chiamato termina si continua l’esecuzione dall’istruzione seguente la CALL
Copy Rule (regola di copia)
semantica della struttura CALL-RETURN
sostituzione testuale dell’istruzione CALL con il corpo del chiamato
limitazioni
1. assenza di ricorsione 2. esplicita istruzione CALL
3. esecuzione chiamato fino a sua fine (logica) 4. singola sequenza di esecuzione
5. trasferimento immediato al chiamato
Introduzione al corso, Paolo Bison, FI07, 2008-01-08 – p.9
Ricorsione
assenza del I vincolo
sottoprogrammi possono avere più attivazioni contemporanee
particolare forma di struttura di controllo (ciclo)
Interruzioni
interrupts/traps
assenza del II vincolo
attivazione al sorgere di una condizione
errore
ON overflow CALL B
Introduzione al corso, Paolo Bison, FI07, 2008-01-08 – p.11
Coroutine
assenza del III vincolo
esecuzione parziale del sottoprogramma
ripresa dal punto di fermata precedente istruzione RESUME
Concorrenza
assenza del IV vincolo
sottoprogrammi eseguiti in parallelo
meccanismi per la loro sincronizzazione
Introduzione al corso, Paolo Bison, FI07, 2008-01-08 – p.13
Schedulazione
assenza del V vincolo
esecuzione non inizia immediatamente alla chiamata, ma viene rinviata ad un momento successivo
varie modalità CALL B AFTER A
CALL B WHEN (X=5) AND (Z>0) CALL B AT TIME=25
CALL C WITH PRIORITY=7
Data Control
controllo del flusso/condivisione dati tra insiemi di operazioni
punto centrale del data control
dato x=y+z*2 cosa significano x,y,z ad ogni esecuzione dell’istruzione
nei sottoprogrammi possono indicare:
una variabile locale
una variabile non locale
un parametro
un sottoprogramma
Introduzione al corso, Paolo Bison, FI07, 2008-01-08 – p.15
Associazione (binding)
associazione tra identificatori e dati/programmi
coppia identificatore-oggetto
variabile
X
Operazioni sulle associazioni
naming
creazione dell’associazione
attivazione
associazione disponibile per operazioni di riferimento
disattivazione
associazione non più utilizzabile in operazioni di riferimento
unnaming
distruzione dell’associazione
riferimento
accesso all’oggetto attraverso l’identificatore
Introduzione al corso, Paolo Bison, FI07, 2008-01-08 – p.17
Ambiente di riferimento (AR)
insieme delle associazioni attive in un determinato momento dell’esecuzione del programma
varia dinamicamente a seconda del flusso di esecuzione
Scope Rules
regole di validità o di campo
servono a determinare l’AR in ogni punto del programma
definiscono i momenti in cui avvengono le operazioni sulle associazioni
tipi di scope rules
dinamiche
validità di una associazione definita in termini del flusso di esecuzione
statiche
validità di una associazione definita in termini della struttura statica del programma
Introduzione al corso, Paolo Bison, FI07, 2008-01-08 – p.19
Riferimenti nei sottoprogrammi
riferimenti ad identificatori in un sottoprogramma possono essere
locali
associazione attiva solo nel sottoprogramma di esecuzione
globali
Gestione ALR
P Q R
CALL Q CALL R
1 2
4 3
1. Qual’è l’iniziale configurazione del ALR all’inizio di Q?
2. Cosa succede al ALR di Q quando Q chiama R?
3. Qual’è l’ALR di Q quando il controllo ritorna da R?
4. Cosa succede all’ALR di Q quando Q ritorna?
Introduzione al corso, Paolo Bison, FI07, 2008-01-08 – p.21
Gestione ALR - risposte 2 e 3
2 - L’ALR di Q viene disattivato, ma non distrutto, quando Q chiama R
3 - L’ALR di Q viene riattivato quando R ritorna.
Gestione ALR - risposte 1 e 4
due approcci
attivazione/disattivazione 1 - attivazione del ALR di Q 4 - disattivazione del ALR di Q
creazione/distruzione
1 - creazione del ALR di Q 4 - distruzione del ALR di Q
Introduzione al corso, Paolo Bison, FI07, 2008-01-08 – p.23
Gestione ambiente non locale
due metodologie
1. esplicita specificazione 2. creazione implicita
associazione più recente nella catena delle chiamate
associazione nel programma principale
associazione determinata dalla struttura statica del
Passaggio di parametri
scambio di dati tra sottoprogrammi
parametri vs. variabili non locali
parametro
nuovo dato ad ogni attivazione
variabile non locale
dato che cambia raramente
uso di identificatori locali per accedere a dati non locali.
Introduzione al corso, Paolo Bison, FI07, 2008-01-08 – p.25
Formali e attuali
formali
identificatori locali usati nella definzione per nominare dati trasmessi al sottoprogramma
lista di identificatori dopo nome:
procedure P(x,y) attuali
espressioni usate nel punto di chiamata per specificare i dati da passare al chiamato
lista espressioni dopo nome chiamato
Corrispondenza formali-attuali
posizionale
posizione nella lista
P(x,y)
P(x1*20,10) nominativa
esplicito uso del nome del parametro formale
call P(y:=10,x:=x1*20)
num. par. formali = num. par. attuali
Introduzione al corso, Paolo Bison, FI07, 2008-01-08 – p.27
Associazione dei valori
associazione dei valori definiti dai par. attuali ai par. formali
metodi di passaggio:
1. per valore
2. per riferimento 3. per nome
Passaggio per valore
valore del par. attuale valutato al momento della chiamata diventa valore di inizializzazione del par. formale
par. formale ≡ var. locale + inizializzazione
chiamante ⇒ chiamato
Introduzione al corso, Paolo Bison, FI07, 2008-01-08 – p.29
Passaggio per riferimento
al par. formale viene associato un riferimento (puntatore), valutato alla chiamata, che si riferisce al par. attuale
possibile modifica di un dato non locale
chiamante ⇔ chiamato
Passaggio per nome
par. attuale non viene valutato alla chiamata, ma ogni volta che si accede al corrispondente par. formale
esecuzione del chiamato determina quando e se i par.
attuali verranno valutati.
chiamante ⇔ chiamato
Introduzione al corso, Paolo Bison, FI07, 2008-01-08 – p.31