• Non ci sono risultati.

relazione chiamante-chiamato A B C CALL B CALL C Introduzione al corso, Paolo Bison, FI p.7 proprietà CALL-RETURN  chiamata esplicita (CALL

N/A
N/A
Protected

Academic year: 2021

Condividi "relazione chiamante-chiamato A B C CALL B CALL C Introduzione al corso, Paolo Bison, FI p.7 proprietà CALL-RETURN  chiamata esplicita (CALL"

Copied!
16
0
0

Testo completo

(1)

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()

(2)

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

(3)

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

(4)

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

(5)

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)

(6)

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

(7)

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

(8)

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

(9)

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

(10)

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

(11)

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.

(12)

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

(13)

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

(14)

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

(15)

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

(16)

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

Riferimenti

Documenti correlati

codifica a 16 bit: maggior parte dei caratteri usano una sola word, altri due.

Introduzione alla logica matematica, Paolo Bison, FI08, 2008-09-29 – p.29. Do it yourself

Introduzione alla logica matematica, Paolo Bison, FI08, 2008-09-29 – p.1..

validità di una associazione definita in termini della struttura statica del programma.. Qual’è l’iniziale configurazione del ALR all’inizio

validità di una associazione definita in termini della struttura statica del programma. Introduzione al corso, Paolo Bison, FI08, 2008-12-09

deve ridurre la complessitá convergendo verso un caso base. Ricorsione, Paolo Bison, FI08, 2008-09-29

Fondamenti di Informatica Ingegneria Meccanica. Università di

il controllo della flusso dati tra insiemi di operazioni (variabile). Introduzione al corso, Paolo Bison, FI07, 2008-01-08