Vai al contenuto

Primario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Secondario: Sky Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Sfondo: Blank Waves Squares Notes Sharp Wood Rockface Leather Honey Vertical Triangles
Corsi di Laurea










ROX @ Unisa - Forum degli studenti di Ingegneria utilizza i cookie. Se prosegui la navigazione accetti il loro uso.    Accetto l'uso dei cookie
-->
Foto

[HELP!!!] -> Regole di scope


  • Effettua l'accesso per rispondere
Questa discussione ha avuto 12 risposta/e

#1
mar.co88

mar.co88

    Advanced Member

  • Utente
  • StellaStellaStella
  • 123 Messaggi:
Qualcuno che d buona volonta puo spiegarmi ste benedette regole di scope???.... Non mi è chiaro nel caso in cui mi mettono difronte un programma in C, come si faccia a dire il valore che una variabile ha in un determinato istante... Dalle slide date questo passaggio non miè chiaro...



#2
GiX

GiX

    Advanced Member

  • Utente
  • StellaStellaStella
  • 108 Messaggi:
Vediamo, iniziamo dal principio.

Sai cos'è un'ambiente e cosa sono i tre tipi di ambiente (Locale, Non Locale e Globale)?

#3
mar.co88

mar.co88

    Advanced Member

  • Utente
  • StellaStellaStella
  • 123 Messaggi:
si.. li ho appena imparati.. dovrebbe essere...
L ambiente è l insieme delle associazioni tra nomi e rispettivi oggetti denotabile che si hanno a run time in un determinato momento e punto del programma..
amb. locale.. quando l associazione avviente tra nomi dichiarati localmente nel blocc in considerazione
amb non locale.. quando l associazione è tra visibili all interno del blocco ma non dichiarati in esso
anb glob... quando l associazioni si hanno all inizio del programma principale, per cui la visibilita dei nomi risulta essere globale..

questo è quello che ho capito..

#4
GiX

GiX

    Advanced Member

  • Utente
  • StellaStellaStella
  • 108 Messaggi:
Esatto.

L'ambiente locale di un blocco è quindi formato solo dalle variabili dichiarate nel blocco. L'ambiente non locale del blocco è quello formato dalle variabili dichiarate fuori di esso (e quindi, questo ambiente comprende anche l'ambiente globale).
L'ambiente globale è formato da quelle variabili visibili da tutto il programma in tutti i suoi blocchi.

Ora in regime di scope statico, ogni volta che si cerca un riferimento ad una variabile, prima si cerca nell'ambiente locale, se non lo si trova, lo si cerca nell'ambiente locale del blocco antecedente, se non la si trova si procede di questo passo a ritroso finchè non si arriva all'ambiente globale, se non la si trova manco lì si produce un errore.

Questo procedimento può essere effettuato interamente durante la compilazione in quanto dipende solo e unicamente da come il programma è stato scritto (è per questo che si chiama statico). Il compilatore in molti casi una volta trovato il riferimento della variabile ce la sostituisce pari pari col suo valore.

In regime di scope dinamico invece viene tutto deciso durante il run-time. Quindi l'ultimo aggiornamento ATTIVO che avviene nel blocco è quello che vale. Facciamo due esempi di codice che magari si capisce meglio.

 
main ()
{
x=0;
void pippo()
{
printf ("X vale %d", x);
}
void ciccio()
{
x=3;
pippo;
}
ciccio;

}

Allora, se fossimo in scope statico, la funzione pippo al momento di fare la printf cercherebbe la x nell'ambiente locale direttamente antecedente al suo, troverebbe x=0 e stamperebbe 0. Se invece fossimo in scope dinamico, la pippo cercherebbe la sua x scorrendo a ritroso i suoi record di attivazione e vedrebbe la dichiarazione di x=3 in ciccio, e stamperebbe 3.

#5
d4z_c0nf

d4z_c0nf

    Member

  • Utente
  • StellaStella
  • 14 Messaggi:
quotando GIX:
Ogni volta che si cerca un riferimento ad una variabile, prima si cerca nell'ambiente locale, se non lo si trova, lo si cerca nell'ambiente locale del blocco antecedente, se non la si trova si procede di questo passo a ritroso finchè non si arriva all'ambiente globale, se non la si trova manco lì si produce un errore.

Questo vale per entrambi i tipi di scope. La differenza sta nel fatto che nello scope statico i blocchi "antecedenti" sono determinati staticamente, ossia come è stato scritto il programma, devi in sostanza vedere il blocco che ti interessa a che livello di annidamento si trova.

Per lo scope dinamico invece, i blocchi antecedenti sono determinati in base al flusso di esecuzione del programma, a questo punto ti sarà facile risalire al blocco antecendente tenendo presente l'ordine dei record di attivazione nello stack.

rock
..at my most beautiful...

#6
mar.co88

mar.co88

    Advanced Member

  • Utente
  • StellaStellaStella
  • 123 Messaggi:
Nel dinamico devo analizzare come si evolve l intero programma... mentre nello statico vedo come le istruzioni compaiono nell ordine, cioè mi attengo a come queste sono state scritte... Dovrebbe essere cosi??
inoltre mica dobbiamo imparare anche cos è il display(scope statico) e CTR (scope dinamico)???

#7
Chaos88

Chaos88

    Advanced Member

  • Utente
  • StellaStellaStella
  • 1029 Messaggi:
No display e crt, non vanno imparati :)
Andrea Cardaropoli - Rappresentante all'area didattica di Ingegneria dell'informazione

"..E chi non ha le ali, non deve mettersi al di sopra degli abissi." F.W. Nietzsche
http://www.chaosottolo.it

#8
Mr.Hope

Mr.Hope

    Advanced Member

  • Utente
  • StellaStellaStella
  • 627 Messaggi:
Invece la catena statica va fatta vero?
Immagine inviata

#9
GiX

GiX

    Advanced Member

  • Utente
  • StellaStellaStella
  • 108 Messaggi:
Bè, al corso spiegò il puntatore di catena dinamica, quindi non so :P

#10
SOLJAH

SOLJAH

    Advanced Member

  • Utente
  • StellaStellaStella
  • 337 Messaggi:
Il gioco

La scopa si gioca con 40 carte rigorosamente Napoletane.
I semi sono 4: Denari - Coppe - Bastoni - Spade.
I valori sono da 1 a 10, il fante vale 8, il cavallo vale 9 ed il Re vale 10.
Le carte si distribuiscono a turno: il mazziere da 3 carte per giocatore e ne mette 4 scoperte sul tavolo.
Si gioca una carta a turno.
Lo scopo del gioco è di fare il massimo dei punti possibile prendendo dal tavola il massimo numero di carte e le carte di pregio.
Quando si gioca una carta, si può prendere dal tavolo una carta di valore equivalente, (ad esempio un 5 con 5); se la presa non fosse possibile,
allora si possono prendere tutte le carte che, in numero minimo, sommate diano il valore della carta giocata, (ad esempio con 9 si può prendere un 4, un 3 ed un 2).
Questa presa multipla non è ammessa se sul tavolo c'è la carta equivalente, riferendosi all' esempio di prima la presa multipla col 9 è ammessa solo se sul tavolo manca un 9.
Terminate le carte se ne distribuiscono altre 3, e così via, fino ad esaurimento del mazzo.
Chi rimane con l' ultima carta, se ha possibilità di presa, prende oltre la carta competente anche tutte le carte sul tavolo, in caso contrario queste vanno all' avversario.
I punti
Punti di mazzo

Si ottiene un punto di mazzo quando alla fine della partita si hanno le seguenti condizioni:

1) Settebello - Se si è riusciti a prendere il 7 di denari.

2) Ori - Il punto se lo aggiudica il giocatore che riesce a prendere 6 o più carte di denari.

3) Carte - Il punto se lo aggiudica il giocatore che riesce a prendere almeno 21 carte in totale.

4) Primiera - il punto se lo aggiudica chi riesce a prendere 4 sette od almeno 3 sette con un 6 od asso o 5 o 4 nel seme mancante.
Se i sette sono 2 e 2 allora la cosa diventa un po’ più complicata:
Per semplificare, ai sette mancanti si possono sostituire i 6 o gli assi o i 5 o i 4 che però valgono in ordine decrescente.
Se si è ancora in parità il punto non si aggiudica (ad esempio 2 sette, un sei ed un asso ciascuno).
In ogni caso nessun punto può essere fatto se manca un seme alle 4 carte.
Scopa

Ci si aggiudica un punto con una scopa quando con una presa singola o multipla non resta nessuna carta sul tavolo.
L'ultima presa non vale come scopa.

La partita non è singola, i punti fatti si accumulano e vince chi arriva per prima a fare 11


un po di umorismo eh :D :D

#11
GiX

GiX

    Advanced Member

  • Utente
  • StellaStellaStella
  • 108 Messaggi:
Maestro di vita!

#12
mar.co88

mar.co88

    Advanced Member

  • Utente
  • StellaStellaStella
  • 123 Messaggi:
se gli dico ste cose a percannella, quello quanto mi mette secondo voi??? :lol2: :lol2:
magari chi perde poi tra noi due paga una birra, e ci mettiamo a fare un "bel padrone e sotto"... :cheers: :cheers: :drunk: :drunk:

#13
HDM

HDM

    Advanced Member

  • Utente
  • StellaStellaStella
  • 405 Messaggi:

Invece la catena statica va fatta vero?


Si si, va fatta.
Confermo per quanto riguarda il CRT e il display, sono dei metodi che non ha spiegato! :P
Immagine inviata




Leggono questa discussione 0 utenti

0 utenti, 0 ospiti, 0 utenti anonimi