Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Didattica > Corsi A - F > Fondamenti di architettura e programmazione
 
Domanda di teoria Mereghetti
Clicca QUI per vedere il messaggio nel forum
caha
Ciao,
ho una domanda per quanto riguarda la teoria di mereghetti.
Secondo il libro di testo consigliato dal prof e secondo le lezioni fatte in aula esiste una regola chiamata: "lazy evaluation".

esempio:
abbiamo due espr e volgiamo valutare:

1)
<espr 1> && <espr 2>,
<espr 1> || <espr 2>,

se <espr 1> viene valutato false, l'<espr 2> non viene valutato, cioè non si considera neanche. Quindo le variabili non vengono incr/decr.
Altrimenti se <espr 1> è true, l' <espr 2> viene valutato.
Questo vale sia per && che per ||.


2) <espr 1> & <espr 2>,
<espr 1> | <espr 2>,

in questi casi non vale questa regola, sia <espr 2> che <espr 2> vengono valutate indipendentemente che siano true o false.Quindi le variabili vengono incr/decr, a secondo dell'esercizio.


Domanda:come mai negli esercizi svolti sul sito,- a volte vengono rispettate queste regole e a volte no?
Questo lo devo considerare un errore fatto a caso oppure esiste un altra regola che fa alcuni eccezioni?

plaese risp
grazie

matt
Dovresti postare l'esempio dove pensi non venga rispettata la lazy evaluation... è possibile che si tratti di un refuso comunque

caha
esempio comitino a.a 08/09

in questo caso dove x=2 e y=3 x y
((x=y) > y + 1) || (x++ == --y) false 4 2

non viene rispettato, cioè i variabili x,y sono incr e decr


Invece qui si che vienne rispettato:

(x++ == y++) && !((x = y) == x%2)

Stetolo
Originally posted by caha
[B]esempio comitino a.a 08/09

in questo caso dove x=2 e y=3 x y
((x=y) > y + 1) || (x++ == --y) false 4 2

non viene rispettato, cioè i variabili x,y sono incr e decr


La parte a sinistra dell' || è falsa (3 > 3+1), quindi la valutazione dell'espressione prosegue alla seconda parte. Nel caso dell'OR la lazy evaluation "avviene" solo nel caso il primo pezzo valutato sia vero, altrimenti si prosegue nella parte restante, nel caso ci sia qualche espressione vera (è sufficiente una sola espressione vera a rendere vero l'intero OR).

Paul442
quindi se è false si prosegue mentre se è true non si prosegue? ho capito bene?

Stetolo
Originally posted by Paul442
quindi se è false si prosegue mentre se è true non si prosegue? ho capito bene?


Esatto, nel caso di OR è così.
Nel caso di AND invece è il contrario.

Questo comportamento si spiega col fatto che un'espressione in cui compare l'OR ha bisogno che almeno una delle parti sia vera per risultare nel complesso vera, quindi appena se ne incontra un "pezzo" vero, il programma smette di valutare le seguenti perchè sarebbe inutile, risulterebbe comunque vera; perchè sia falsa, invece, è necessario che TUTTE le parti che compongono l'espressione siano false, perciò non si può attuare la lazy evaluation, finchè non sono tutte verificate.

Le espressioni con AND sono vere solo se tutte le espressioni che le compongono sono vere, perciò nel caso se ne incontri un "pezzo" falso è inutile proseguire la valutazione, perchè risulterebbe comunque falsa nel complesso: quindi la lazy evaluation si attua solo nel caso in cui si trovano espressioni false, altrimenti finchè sono vere, si deve proseguire la valutazione per determinare l'eventuale verità complessiva dell'AND (che si ha solo se TUTTE sono vere).

In altre parole la lazy evaluation è una scorciatoia che si può imboccare solo nel momento in cui il programma sa per certo quale sarà l'esito della valutazione.

Paul442
Grazie mille...gentilissimo..senti invece gli esercizi sui diagrammi UML tu li hai capiti per caso? io quello dell'ultimo compito non l'ho mica capito onestamente...

Stetolo
Quando ho seguito io non facevamo esercizi sull'UML, sorry!

Mr.O
volevo chiedervi se sapete qualche libro/sito dove ci sono degli esercizi (per la creazione di classi) giudati o almeno che ci sia la soluzione per avere un riscontro finale...

grazie

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate