Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Marco Comini
2021-09-30
Espressioni e comandi
Definizione
Espressione = entità sintattica la cui valutazione produce un valore oppure non
termina.
Definizione
Istruzione/Comando = entità sintattica di un linguaggio di programmazione
imperativo che esprime alcune azioni da eseguire.
Marco Comini
2021-09-30
Comandi di assegnamento/1
Assegnamento semplice
Della forma l-expr op= r-expr con op una operazione del linguaggio (come + ,
- , * , / , ...)
Semantica di el op= er detto vr l’r-value di er , vl l’r-value di el , assegna nella
cella identificata dall’l-value di el il valore di vl op vr .
L’r-value e l’l-value di el vengono determinati atomicamente.
Attenzione che non sempre el op= er è equivalente a el = el op er . È diverso
se due valutazioni successive di el producono un diverso r-value (a causa di
side-effects).
Ad esempio a[f()] += 3 se f() restituisce 0 incrementa di 3 il valore della
cella 0 dell’array a , mentre a[f()] = a[f()] + 3 se f() restituisce 2 la
seconda volta, diventa equivalente a a[0] = a[2] + 3
È il contenuto di un blocco
Come dice il nome ho una serie di comandi che vengono eseguiti in sequenza
while expr do stmt do stmt while expr repeat stmt until expr
expr
stmt stmt
vero
vero falso
stmt falso expr expr
falso vero
1 int total = 0;
2 int count = 1;
3 while count <= 3 do
4 {
5 total += count ;
6 count += 1;
7 }
8 print ( total );
total
count
1 −→int total = 0;
2 int count = 1;
3 while count <= 3 do
4 {
5 total += count ;
6 count += 1;
7 }
8 print ( total );
total 0
count
1 int total = 0;
2 −→int count = 1;
3 while count <= 3 do
4 {
5 total += count ;
6 count += 1;
7 }
8 print ( total );
total 0
count 1
1 int total = 0;
2 int count = 1;
3 −→while count <= 3 do
4 {
5 total += count ;
6 count += 1;
7 }
8 print ( total );
total 0
count 1
1 int total = 0;
2 int count = 1;
3 while count <= 3 do
4 {
5 −→ total += count ;
6 count += 1;
7 }
8 print ( total );
total 01
count 1
1 int total = 0;
2 int count = 1;
3 while count <= 3 do
4 {
5 total += count ;
6 −→ count += 1;
7 }
8 print ( total );
total 1
count 12
1 int total = 0;
2 int count = 1;
3 −→while count <= 3 do
4 {
5 total += count ;
6 count += 1;
7 }
8 print ( total );
total 1
count 2
1 int total = 0;
2 int count = 1;
3 while count <= 3 do
4 {
5 −→ total += count ;
6 count += 1;
7 }
8 print ( total );
total 13
count 2
1 int total = 0;
2 int count = 1;
3 while count <= 3 do
4 {
5 total += count ;
6 −→ count += 1;
7 }
8 print ( total );
total 3
count 23
1 int total = 0;
2 int count = 1;
3 −→while count <= 3 do
4 {
5 total += count ;
6 count += 1;
7 }
8 print ( total );
total 3
count 3
1 int total = 0;
2 int count = 1;
3 while count <= 3 do
4 {
5 −→ total += count ;
6 count += 1;
7 }
8 print ( total );
total 36
count 3
1 int total = 0;
2 int count = 1;
3 while count <= 3 do
4 {
5 total += count ;
6 −→ count += 1;
7 }
8 print ( total );
total 6
count 34
1 int total = 0;
2 int count = 1;
3 −→while count <= 3 do
4 {
5 total += count ;
6 count += 1;
7 }
8 print ( total );
total 6
count 4
1 int total = 0;
2 int count = 1;
3 while count <= 3 do
4 {
5 total += count ;
6 count += 1;
7 }
8 −→print ( total );
total 6
count 4
output 6
1 int total = 0;
2 int count = 1;
3 do {
4 total += count ;
5 count += 1;
6 } while count <= 3;
7 print ( total );
total
count
1 −→int total = 0;
2 int count = 1;
3 do {
4 total += count ;
5 count += 1;
6 } while count <= 3;
7 print ( total );
total 0
count
1 int total = 0;
2 −→int count = 1;
3 do {
4 total += count ;
5 count += 1;
6 } while count <= 3;
7 print ( total );
total 0
count 1
1 int total = 0;
2 int count = 1;
3 do {
4 −→ total += count ;
5 count += 1;
6 } while count <= 3;
7 print ( total );
total 01
count 1
1 int total = 0;
2 int count = 1;
3 do {
4 total += count ;
5 −→ count += 1;
6 } while count <= 3;
7 print ( total );
total 1
count 12
1 int total = 0;
2 int count = 1;
3 do {
4 total += count ;
5 count += 1;
6 −→} while count <= 3;
7 print ( total );
total 1
count 2
1 int total = 0;
2 int count = 1;
3 do {
4 −→ total += count ;
5 count += 1;
6 } while count <= 3;
7 print ( total );
total 13
count 2
1 int total = 0;
2 int count = 1;
3 do {
4 total += count ;
5 −→ count += 1;
6 } while count <= 3;
7 print ( total );
total 3
count 23
1 int total = 0;
2 int count = 1;
3 do {
4 total += count ;
5 count += 1;
6 −→} while count <= 3;
7 print ( total );
total 3
count 3
1 int total = 0;
2 int count = 1;
3 do {
4 −→ total += count ;
5 count += 1;
6 } while count <= 3;
7 print ( total );
total 36
count 3
1 int total = 0;
2 int count = 1;
3 do {
4 total += count ;
5 −→ count += 1;
6 } while count <= 3;
7 print ( total );
total 6
count 34
1 int total = 0;
2 int count = 1;
3 do {
4 total += count ;
5 count += 1;
6 −→} while count <= 3;
7 print ( total );
total 6
count 4
1 int total = 0;
2 int count = 1;
3 do {
4 total += count ;
5 count += 1;
6 } while count <= 3;
7 −→print ( total );
total 6
count 4
output 6
output 0 output 1
fact 11
i 1
fact 12
i 2
fact 26
i 3
finished
fact 13
i 3
fact 36
i 2
finished
“for numerico”
1 for id = expr1 to expr2 do stmt
Vincolo l-expr deve essere una l-expression e il suo tipo essere quello di un
dato aggregato, cioè identificare un dato composto da più dati che possano
essere enumerati (array, liste, oggetti, . . . ).
Semantica si lega in sequenza id a tutti i valori di l-expr eseguendo il corpo
stmt.
La variabile id , al contrario delle variabili viste fino ad ora, non ha lo stesso
l-value fra due iterate successive.
Si eseguono un numero iterate pari alla dimensione di l-expr .
i 12
fact 1
i 23
fact 2
i 34
fact 6
finished