www.di.unipi.it/~gaddozzi DISPENSA
1° compitino fine ottobre - inizio novembre
Lun - mar - gio → teoria
mer → programmazione
19/09
~ Sintassi vs Semantica
sintassi →
"Il bimbo mangia la mela": italiano OK
"bimbo mela il mangia la": struttura grammaticale che non ha un corrispettivo in it.)
"La mela mangia il bimbo": non è significativa ma sintatticamente è seguita.
~ Linguaggio imperativo
Ho un insieme di stati iniziali, un programma che mi porta ad un insieme di stati finali.
- STATO INIZIALE → Programma* → STATO FINALE
* trasformatore di stati: prendo un comando del tipo:
- ST_INIZIALE{ } int x, y L (Inizializzo. Var intere)
- {x, y}
- {x, 0z, y}w∈ϵ
- {xz, 0w,y, 13❷➩} y = x + 1
Se io ho solo y = x + 1...
{} , } → {} , }
Tutta la componente iterativa è interpretabile come una funzione che prende uno stato e ne associa un altro.
→ Per costruire la semantica cerco di capire la struttura della sintassi ed suoi operatori ←
~ Stato
Insieme di coppie dove ad ogni variabile è associato un valore
{, }
→
If 4 x 3 ❸ ➂ ➦ devo vedere quanto vale x3 e poi sommato
www.di.unipi.it/~gaddocci DISPENSA
pages di mpl: 9, gaddocci
1o Compitino fine ottobre - inizio novembre
Lun - mar - gio → teoria
mer → programmazione
Sintassi vs semantica
sintassi →
- "il bimbo mangia la mela": italiano OK
- "bimbo mela il mangia le": struttura grammaticale che non ha un correspettivo in it2
- "la mela mangia il bimbo" non è significativa ma sintatticamente è esatta.
Linguaggio imperativo
Ho un insieme di stati iniziali, un programma che mi porta ad un insieme di stati finali.
STATO INIZIALE ⟶ Programma* ⟶ STATO FINALE
- trasformatore di stati: prendo un comando del tipo:
ST_INIT = {}
int x, y [ iniziali: 223. Var intere ]
{ x, y } ∈ Z
{ x, 0, 2y, x } ⇐ 0
{ x, 0, y, 123 y = x + 1
Se io ho solo y = x + 1 ...
{ ⟨ x, k ⟩ , ⟨ y, l ⟩ }
⟶ { ⟨ x, h ⟩ , ⟨ y, h + 1 ⟩ }
TUTTA LA COMPONENTE ITERATIVA È INTERPRETABILE SOLO UNA FUNZIONE CHE PRENDE UNO STATO E NE ASSOCIA UN ALTRO.
- Per costruire la semantica cerco di capire la struttura della sintassi ed i suoi operatori
Stato
Insieme di coppie dove ad ogni variabile è associato un valore
{ ⟨ x1, k1⟩ , ⟨ xn, kn⟩ }
⟨ 4 x 3
⟩
⟨ 7
⟩
→ devo vedere quanto vale x3 e poi sommare
{x1,5>,<x2,4>,<x3,6>}
Z
x3+x2>24
x3+7=13
B → booleani
x4+7 non ha significato se x4 è un booleano.
wrt x1,x2,x3
bool x4
x4+7 → ERRORE! L’operatore “+” è applicato ad unavariabile che può non essere intera.
∼ COMANDI DI BASE
- Assegnamento
x ← e
X2 ← x3+x2
X2 = 10
Stato aggiornato,
tutto uguale inc <x=10>
- Comandi condizionali
if (e)
C1
else
C2
{
C1 e C2 possono essere comandi.
Valuto e; se è un valore vero eseguo un comando, altrimenti l’altro.
}
if (x1<x2) ∼ il valore associato alla var x1 èminore di x2?
x1 ← x2
NO! Quindi x2 prende il valore di x1.
else
x2 ← x1
ASSEGNA IL MASSIMO AL PIÙ PICCOLO
Data una funzione c’è sempre un programma che me lacalcola? NO.
if ( x1 < x2 )
annullamento if ( x1 > x2 )
else x2 <= x1
else x2 < x1
{ x4 }
x1 <= 10
else x2 < 10
f(x) = {2 se x > 0
8 se x <= 0
Può essere una funzione condizionale :
if x < 0
else f(x)
f(x = 0)
if ( x < 0 )
if ( x = 0 )
if ( x > 0 )
- switch ( e )
- case e v1 c1
- case e v2 c2
equivale a
if ( CE1 = = v1 ) c1
if ( CE2 = = v2 ) c2 ->
Altro
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.