• Non ci sono risultati.

Fondamenti dei linguaggi di programmazione Fondamenti dei linguaggi di Fondamenti dei linguaggi di programmazione programmazione

N/A
N/A
Protected

Academic year: 2021

Condividi "Fondamenti dei linguaggi di programmazione Fondamenti dei linguaggi di Fondamenti dei linguaggi di programmazione programmazione"

Copied!
3
0
0

Testo completo

(1)

1

Murano Aniello

Fond. LP - Quindicesima Lezione 1

Fondamenti dei linguaggi di programmazione

Fondamenti dei linguaggi di Fondamenti dei linguaggi di

programmazione programmazione

Aniello Murano Aniello Murano Universit

Universitààdegli Studi di Napolidegli Studi di Napoli

“Federico IIFederico II”

Murano Aniello

Fond. LP - Quindicesima Lezione 2

Esercitazione su nondeterminismo parallelismo e forme canoniche Esercitazione su

Esercitazione su nondeterminismo nondeterminismo

parallelismo e forme canoniche

parallelismo e forme canoniche

(2)

2

Murano Aniello

Fond. LP - Quindicesima Lezione 3

I comandi di IMP si possono arricchire con nondeterminismo (IMPnd) senza ricorrere al parallelismo, nel modo seguente.

Formalmente:

c::= skip | X:=a |c0;c1| if b then c0else c1| while b do c | r c1 Semantica informale: L’esecuzione del comando “c0or c1” implica una scelta non deterministica tra c0 and c1 e il comando scelto sarà il solo ad essere eseguito. Formalmente:

Due comandi c0, c1 di IMPnd sono equivalenti (in simboli c0 c1) se per ogni coppia di stati σ, σ’

<c0,σ> →1σ’ iff <c1,σ> →1σ’ oppure sia c0che c1divergono da σ Si noti che →1 è la chiusura transitiva di →1.

Un esmpio di comando divergente è “while true do skip”

IMPnd

Murano Aniello

Fond. LP - Quindicesima Lezione 4

Si precisa che la scelta su un comando nondeterministico di IMPnd è univoca nello stesso istante sullo stesso insieme di comandi.

Dunque, se in un certo istante utilizzo il comando “c0or c1”, posso utilizzare alternativamente il comando “c1 or c0”. Infatti, in entrambi i casi, qualsiasi sarà la scelta tra c0 e c1, essa sarà la stessa su entrambi i comandi, se utilizzati alternativamente nello stesso istante. In effetti, scegliere un elemento dell’insieme {c0,c1} è equivalente a sceglierlo nell’insieme {c1,c0} = {c0,c1}.

Un’altra precisazione: l’operatore “or” usa lo stesso principio non deterministico dell’’operatore alternativo “Y” utilizzato per formare i comandi con guardia in IMPGC. A tal proposito e rispondendo alla domanda di alcuni, si precisa che in presenza di un comando “if b1c1 Y b2c2”, se entrambi le guardie b1e b2 sono valutate true, non deterministicamente solo uno dei comandi c1 o c2 viene eseguito. Si vedano le regole di derivazione corrispondenti!

Precisazioni su IMPnd

(3)

3

Murano Aniello

Fond. LP - Quindicesima Lezione 5

Esercizio

Provare le seguenti equivalenze per i comandi di IMPnd c0or c1c1or c0

c or c ∼ c

c0or (c1or c2) ∼ (c0or c1) or c2;

Murano Aniello

Fond. LP - Quindicesima Lezione 6

Esercizi su IMPP

Provare l’equivalenza dei due comandi seguenti

if b → c0Y ¬b → c1fi e if ¬b → c1Y b → c0fi Provare l’equivalenza dei due comandi seguenti

if b0c0Y b1c1fi e if b1c1Y b0c0fi

Suggerimenti per il secondo esercizio. In aggiunta al primo esercizio bisogna considerare i seguenti due casi:

1. entrambe le guardie b0e b1 sono valutate false in entrambi i comandi if (si prova che entrambi i comandi if falliscono)

2. entrambe le guardie b0 e b1 sono valutate true: nondeterministica- mente verrà scelto un solo comando da eseguire tra c0e c1in ognuno dei comandi if. Ma siccome stiamo valutando l’equivalenza dei due comandi if nel senso di un utilizzo alternativo degli stessi (nello stesso istante), qualsiasi scelta venga effettuata tra c0e c1essa sarà la stessa in entrambi i comandi if. Infatti, nell’esecuzione di un programma, la scelta sarà la stessa indipendente da quale dei due comandi if si usa, se essi vengono utilizzati alternativamente nello stesso istante.

Riferimenti

Documenti correlati

Induzione matematica e strutturale sono casi particolari di un potente metodo di prova chiamato induzione ben fondata In questa lezione vedremo in dettaglio:. ¾ Induzione

Supponiamo di voler estendere le espressioni aritmetiche di IMP includendo un nuovo operatore “^” con il significato di elevamento a potenza. La sintassi di Aexp di IMP verrà

Negli anni sessanta, Christopher Strachey e Dana Scott riuscirono a superare le limitazioni della semantica operazionale introducendo una semantica più astratta basata sull’utilizzo

La sintassi specifica sia la struttura lessicale del linguaggio (come costruire le parole a partire dai caratteri dell’alfabeto) sia le regole per la costruzione delle

Si noti che nel comando if, comunque sia valutato b in σ’, esso viene interrotto dopo l’esecuzione di c e dunque in questo caso &lt;w,σ&gt; è valutato σ’ sse &lt;if,σ&gt;.

Passo induttivo: supponendo che l’asserto sia vero per un albero di derivazione alto n e per n cicli di valutazioni nella denotazione del while (con n &gt; 0, quindi anche per

L'iterazione ed il singolo ciclo terminano non appena viene incontrata una espressione booleana che valuta a falso”. Verificare che le due semantiche

[r]