Visibilità delle risorse

Le risorse (costanti, variabili, sottoprogrammi, …) che un programma utilizza diventano presto centinaia e difficili da gestire.

Risorse globali

 

Sequenzialità 

Il sottoprogramma P1 ha accesso alle risorse globali a e b.
Il blocco principale ha accesso alle risorse locali a, b e P1.
risorse_g
Il sottoprogramma P1 ha accesso alle risorse globali a e b.
Il sottoprogramma P2 ha accesso alle risorse globali a, b e P1.
Il blocco principale ha accesso alle risorse locali a, b, P1 e P2.

Il sottoprogramma P1 non ha accesso alla risorsa P2.

risorse_s
Risorse locali

 

Regola gerarchica

Il sottoprogramma P1 ha accesso alle risorse

  • locale: X
  • globali: a e b.

Il sottoprogramma P2 ha accesso alle risorse

  • locale: Y
  • globali: a, b e P1.

Il blocco principale ha accesso alle risorse locali a, b, P1 e P2.

Il sottoprogramma P2 non ha accesso alla risorsa locale X in P1.
Il blocco principale non ha accesso alle risorse locali X in P1 e Y in P2.

risorse_loc
Omonimie Il sottoprogramma P1 ha accesso alle risorse

  • locale: X
  • globali: a e b.

Il sottoprogramma P2 ha accesso alle risorse

  • locale: X
  • globali: a, b e P1.

Il blocco principale ha accesso alle risorse locali a, b, P1 e P2.

La X di P1 e la X di P2 sono due risorse diverse.

risorse_omo1
Il sottoprogramma P1 ha accesso alle risorse

  • locale: a
  • globale: b.

Il sottoprogramma P2 ha accesso alle risorse globali: a, b e P1.
Il blocco principale ha accesso alle risorse locali a, b, P1 e P2.

La risorse locale a in P1 nasconde la risorsa globale a con lo stesso nome che diventa irraggiungibile.

risorse_omo2
Passaggio dei parametri Il sottoprogramma P1 ha accesso alle risorse

  • locale: p e X
  • globali: a e b.

Il sottoprogramma P2 ha accesso alle risorse

  • locale: Y
  • globali: a, b e P1.

Il blocco principale ha accesso alle risorse locali a, b, P1 e P2.

La risorsa p in P1 è un parametro formale che assume il valore del parametro attuale all’atto della chiamata.

risorse_p1
Il sottoprogramma P1 ha accesso alle risorse

  • riferimento: p
  • locale: X
  • globali: a e b.

Il sottoprogramma P2 ha accesso alle risorse

  • locali: q e Y
  • globali: a, b e P1.

Il blocco principale ha accesso alle risorse locali a, b, P1 e P2.

La risorsa p in P1 è un parametro formale che fa riferimento alla variabile associata all’atto della chiamata (il parametro attuale).
La risorsa q in P2 è un parametro formale che assume il valore del parametro attuale all’atto della chiamata.

risorse_p2
Ricorsione Il sottoprogramma P1 ha accesso alle risorse

  • locale: P1
  • globali: a e b

Il sottoprogramma P2 ha accesso alle risorse

  • locale: P2
  • globali: a, b e P1.

Il blocco principale ha accesso alle risorse locali a, b, P1 e P2.

risorse_r