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

regole di scope passaggio per riferimento!!!


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

#1
walter

walter

    Advanced Member

  • Utente
  • StellaStellaStella
  • 40 Messaggi:
ragazzi ma che cambia negli esercizi sulle regole di scope quando in una funzione il paramentro è passato per riferimento???
tipo come è uscito nella prova di giugno



#2
Peppeweb

Peppeweb

    Advanced Member

  • Utente
  • StellaStellaStella
  • 1096 Messaggi:
Fai attenzione quando posti un thread!
...Per aspera sic itur ad astra...
Galaxy S4
iPhone5S

#3
Corrado

Corrado

    Advanced Member

  • Utente
  • StellaStellaStella
  • 556 Messaggi:

ragazzi ma che cambia negli esercizi sulle regole di scope quando in una funzione il paramentro è passato per riferimento???
tipo come è uscito nella prova di giugno


Ciao walter, questo dubbio ce l'ho anche io... Tu intendi una situazione del genere?


int a=-1, b=3;
A:{
int a=4, c=-3;
void pippo(reference* int e){
e=a+b+c;
}
B:{
int c=3, d=-1, e;
e=a+b+c+d;
write(e);
pippo(e);
write(e);
}
}

Io questo esercizio l'ho fatto cosi:

Scope statico:
la prima write(e) stampa 9, perchè nel blocco B "e" é definita ed assume e=a+b+c+d=4+3+3-1=9
la seconda write(e) (ED E' QUI L'INGHIPPO) dovrebbe stampare 4 (risultato dell'invocazione pippo(e) con e passata per parametro) o 9???

Scope dinamico: write(e) stampa prima 9 poi 4.

Qualcuno gentilmente ci aiuta? :) :beg:

#4
simply me

simply me

    Moderatore di sezione

  • Moderatore
  • 1527 Messaggi:
Anke io ho provato a farne alcuni ma nn a tt mi trovo :nono: c'è qlk1 disposto ad aiutarci?
Iscriviti su fb al gruppo "Adotta un cane, salvalo dalla strada", tanti cani ti aspettano.
L'odio verso gli animali è la sconfitta dell'intelligenza.
La grandezza di una nazione ed il suo progresso morale si possono giudicare dal modo in cui essa tratta gli animali

#5
eferre

eferre

    Advanced Member

  • Utente
  • StellaStellaStella
  • 1502 Messaggi:
Secondo me quando è dinamico stampa 9 e 10, 9 e 4 se statico... comunque per rispondere a walter: cambia che se passato per riferimento viene modificato il valore di quella variabile, mentre se passato per valore viene copiato il valore destro in un'altra variabile e quindi all'uscita della funzione (nell'esempio "pippo") hai il vecchio valore di "e" e non quello aggiornato con la chiamata di pippo.

#6
martema

martema

    Advanced Member

  • Utente
  • StellaStellaStella
  • 133 Messaggi:
Per piacere qualcuno potrebbe postare la risposta all'esercizio 4 in riferimento alla prova postata precedentemente? Grazie...
Per tre cose vale la pena di vivere: la matematica, la musica e l'amore.
Renato Caccioppoli (1904-1959)

#7
simply me

simply me

    Moderatore di sezione

  • Moderatore
  • 1527 Messaggi:
Enrì lo scope dinamico mi trovo xfettamente cm te ma lo statico mi trovo 4 e 4 dove sbaglio??? :beg:

P.S. relativo al blocco B mi trovo cm variabili locali c, d, e mentre cm variabili nn locali a, b è corretto? (di a nn sn convinta nn so se è nn locale o globale)
Iscriviti su fb al gruppo "Adotta un cane, salvalo dalla strada", tanti cani ti aspettano.
L'odio verso gli animali è la sconfitta dell'intelligenza.
La grandezza di una nazione ed il suo progresso morale si possono giudicare dal modo in cui essa tratta gli animali

#8
san

san

    Advanced Member

  • Utente
  • StellaStellaStella
  • 40 Messaggi:

Enrì lo scope dinamico mi trovo xfettamente cm te ma lo statico mi trovo 4 e 4 dove sbaglio??? :beg:

P.S. relativo al blocco B mi trovo cm variabili locali c, d, e mentre cm variabili nn locali a, b è corretto? (di a nn sn convinta nn so se è nn locale o globale)



per lo scope statico il primo write stampa 9, poichè e = 4+3+3-1
mentre il secondo write stampa 4, poichè e = 4+3-3=4

per quanto riguarda le variabili del blocco b:
c, d, e sono variabili locali
b variabile globale
a non locale(perchè ridefinita nel blocco a)


almeno io avrei fatto così :dentone:

#9
simply me

simply me

    Moderatore di sezione

  • Moderatore
  • 1527 Messaggi:
scs san (so benissimo ki 6 prrr ) ma qnd io sto nel blocco B e devo fare e=a+b+c+d
c=3, d=-1 e b=3 e fin qui nn ci piove poi la a nn deve essere =-1 visto ke qll del blocco A si distrugge all'uscita del blocco???
Iscriviti su fb al gruppo "Adotta un cane, salvalo dalla strada", tanti cani ti aspettano.
L'odio verso gli animali è la sconfitta dell'intelligenza.
La grandezza di una nazione ed il suo progresso morale si possono giudicare dal modo in cui essa tratta gli animali

#10
san

san

    Advanced Member

  • Utente
  • StellaStellaStella
  • 40 Messaggi:

scs san (so benissimo ki 6 prrr ) ma qnd io sto nel blocco B e devo fare e=a+b+c+d
c=3, d=-1 e b=3 e fin qui nn ci piove poi la a nn deve essere =-1 visto ke qll del blocco A si distrugge all'uscita del blocco???


fai attenzione...il blocco A è ancora attivo(fanno fede le parentesi graffe), infatti il blocco B è contenuto nel blocco A e B vede tutto quello che è stato definito nel blocco A.

:dance: capito?

#11
simply me

simply me

    Moderatore di sezione

  • Moderatore
  • 1527 Messaggi:
 int x=1, y=-3
A:{
int x=4, z=-3;
void pluto(reference int k) {
k=x+y-z;
}
B:{
int z=3, w=-1, k;
k=(x+y-z)*w;
write(k);
pluto(k);
write(k);
}
}

ci sarebbe anke qst grazie :rosso: grassssssie :D


ME NE SN ACCORTA MENTRE SCRIVEVO QST'ALTRO CODICE ANCORA PRIMA KE LEGGESSI LA TUA RISP XKè SN SIMILI MALEDETTE PARENTESI GRAFFE!!! :sfiga:
Iscriviti su fb al gruppo "Adotta un cane, salvalo dalla strada", tanti cani ti aspettano.
L'odio verso gli animali è la sconfitta dell'intelligenza.
La grandezza di una nazione ed il suo progresso morale si possono giudicare dal modo in cui essa tratta gli animali

#12
Corrado

Corrado

    Advanced Member

  • Utente
  • StellaStellaStella
  • 556 Messaggi:

 int x=1, y=-3
A:{
int x=4, z=-3;
void pluto(reference int k) {
k=x+y-z;
}
B:{
int z=3, w=-1, k;
k=(x+y-z)*w;
write(k);
pluto(k);
write(k);
}
}


In riferimento al blocco B immagino...

Ambiente locale: z, w, k;
Ambiente non locale: x
Ambiente globale: y

Scope statico: stampa prima 2 e poi 4
Scope dinamico: stampa prima 2 e poi 4

:)

#13
san

san

    Advanced Member

  • Utente
  • StellaStellaStella
  • 40 Messaggi:
io mi trovo scope dinamico primo write 2, secondo write 2
poi per il resto mi trovo con Corrado

:doofy:

#14
simply me

simply me

    Moderatore di sezione

  • Moderatore
  • 1527 Messaggi:
cioè avevo sbagliato a fare prp i calcoli matematici non lo scope in sè wow e ke bell'ingegnere ke sono :lmfao: grazie 6 stato gentilissimo :)

No no io mi trovo xfettamente cn corrado :) prrr grz ancora
Iscriviti su fb al gruppo "Adotta un cane, salvalo dalla strada", tanti cani ti aspettano.
L'odio verso gli animali è la sconfitta dell'intelligenza.
La grandezza di una nazione ed il suo progresso morale si possono giudicare dal modo in cui essa tratta gli animali

#15
Corrado

Corrado

    Advanced Member

  • Utente
  • StellaStellaStella
  • 556 Messaggi:

cioè avevo sbagliato a fare prp i calcoli matematici non lo scope in sè wow e ke bell'ingegnere ke sono :lmfao: grazie 6 stato gentilissimo :)

No no io mi trovo xfettamente cn corrado :) prrr grz ancora


Prego, figurati... :laugh:

Comunque si deve stare attenti, è facile sbagliare anche calcoli banali, proprio perchè si pensa siano banali... :) Capita anche a me...

#16
simply me

simply me

    Moderatore di sezione

  • Moderatore
  • 1527 Messaggi:
si hai xfettamente ragione purtrpp mi capita spesso anke agli esami :cray:
Iscriviti su fb al gruppo "Adotta un cane, salvalo dalla strada", tanti cani ti aspettano.
L'odio verso gli animali è la sconfitta dell'intelligenza.
La grandezza di una nazione ed il suo progresso morale si possono giudicare dal modo in cui essa tratta gli animali

#17
SleepyMan

SleepyMan

    Advanced Member

  • Utente
  • StellaStellaStella
  • 88 Messaggi:

Secondo me quando è dinamico stampa 9 e 10, 9 e 4 se statico... comunque per rispondere a walter: cambia che se passato per riferimento viene modificato il valore di quella variabile, mentre se passato per valore viene copiato il valore destro in un'altra variabile e quindi all'uscita della funzione (nell'esempio "pippo") hai il vecchio valore di "e" e non quello aggiornato con la chiamata di pippo.



E se invece un parametro è passato 'per nome'? (Esercizio 4.10 del Gabbrielli)

#18
eferre

eferre

    Advanced Member

  • Utente
  • StellaStellaStella
  • 1502 Messaggi:
Non è la stessa cosa del passaggio per riferimento?! :huh:

#19
SleepyMan

SleepyMan

    Advanced Member

  • Utente
  • StellaStellaStella
  • 88 Messaggi:
Guarda, sul testo Sono posti tre esercizi simili (8, 9 e 10 del capitolo 4) ma in ognuno si passa il parametro diversamente:

void pippo (REFERENCE int y)

void pippo (VALUE int y)

void pippo (NAME int y)

#20
eferre

eferre

    Advanced Member

  • Utente
  • StellaStellaStella
  • 1502 Messaggi:
Mai sentito questo passaggio per nome... ma se hai il libro credo che da qualche parte ci sarà anche spiegato... magari un esercizio svolto...




Leggono questa discussione 0 utenti

0 utenti, 0 ospiti, 0 utenti anonimi