![]() |
istruzioni-espressione |
![]() |
istruzioni-composte o blocchi |
![]() |
istruzioni di selezione |
![]() |
istruzioni di iterazione |
![]() |
istruzioni di salto |
espressione;
N.B. - L'espressione e' opzionale.
Normalmente le espressioni sono assegnamenti oppure chiamate a funzione.
Il valore dell'espressione viene trascurato,
mentre di fondamentale importanza sono gli effetti collaterali
che modificano i valori delle variabili o aree di memoria.
Il ; (punto e virgola) e' il terminatore
di una istruzione. Gli effetti collaterali sono valutati completamente
prima che venga eseguita la successiva istruzione.
Spesso il ; (punto e virgola) viene utilizzato
da solo. Questo e' il caso dello statement nullo (o istruzione
nulla) ed il suo impiego e' tipico laddove la sintassi richieda una
istruzione, ma il programma non debba eseguire alcuna azione.
Esempio:
;
{
dichiarazioni/definizioni
istruzioni
}
N.B. - Le dichiarazioni/definizioni sono opzionali.
All'interno del blocco possono essere definite delle variabili, aventi
pero' visibilita' solo all'interno del blocco stesso.
L'impiego dell'istruzione composta e' finalizzata per:
![]() |
scrittura di un insieme di istruzioni, dove la sintassi permetta l'inserimento di solamente uno statement |
![]() |
definizione del corpo di una funzione |
![]() |
il costrutto IF |
![]() |
il costrutto SWITCH |
if (espressione)
statement_1;
2° caso:
if (espressione)
statement_1;
else
statement_2;
Lo statement_1 viene eseguito se
l'espressione, una volta valutata assieme a
tutti i suoi effetti collaterali, torna un valore vero
(cioe' non zero); altrimenti se l'espressione
torna un valore falso (cioe' uguale a zero) viene eseguito lo
statement_2, se esistente.
Nel caso di IF innestate, la parte else
viene abbinata sempre all'ultima if posta nello
stesso blocco della else, ma non gia' abbinata
ad una precedente else.
Per migliorare la leggibilita' e' consigliata una buona e coerente
identazione del programma, tale che rispecchi la struttura del codice.
Per evitare possibili ambiguita' nelle IF innestate, e' possibile
l'utilizzo di blocchi per racchiudere i costrutti piu' interni.
E' anche possibile impiegare gli statement nulli.
Esempi:
if (a > b) m=0; else m=5; if (a > b) if (c > d) n=0; else m=5; /* a > b e c <= d */ if (a > b) { if (c > d) n=0; } else m=5; /* a <= b */ if (cond_1) statement_1; else if (cond_2) statement_2; else if (cond_3) statement_3; ... else if (cond_n) statement_n; else statement_default;
switch (espressione)
{
case costante_1:
[statement;]
...
case costante_2:
[statement;]
...
default:
[statement;]
...
}
N.B. - La label default e gli statement
ad essa relativa, sono opzionali, cosi' pure e' opzionale la lista di
statement che seguono ogni label case.
L'espressione viene valutata assieme ai suoi
effetti collaterali ed il valore ritornato da essa, che deve essere
di tipo intero (char,
int, long) viene
confrontato con le costanti associate alle
case. In caso di corrispondenza il controllo
viene passato allo statement ad essa associato,
e continua fino al termine dell'istruzione SWITCH (quindi fino al
raggiungimento della parentesi } di chiusura
dell'istruzione).
Se il valore dell'espressione non corrisponde
a nessuna delle costanti, allora il controllo viene trasferito al primo
statement associato alla label
default, e prosegue fino al raggiungimento del
termine dell'istruzione SWITCH. Se nemmeno la label
default e' specificata, la SWITCH termina
immediatamente.
E' permesso l'innestamento degli statement SWITCH.
Tra gli statement che compongono il corpo dello SWITCH e' permesso
l'utilizzo dell'istruzione di salto BREAK. Quando
tale istruzione viene incontrata, essa causa il termine dell'esecuzione
dell'istruzione SWITCH ed il controllo passa all'istruzione successiva.
![]() |
il costrutto WHILE |
![]() |
il costrutto DO |
![]() |
il costrutto FOR |
while (espressione)
statement;
All'inizio di ogni ciclo l'espressione viene
valutata assieme agli effetti collaterali, dopodiche' se
l'espressione risulta vera (diversa da
zero), viene eseguito lo statement ed il ciclo
viene riavviato nuovamente.
La WHILE ha termine appena l'espressione risulta
falsa (cioe' ritorna un valore nullo).
E' possibile che statement non venga mai
eseguito.
Lo statement puo' essere costituito da una
istruzione composta (o blocco).
All'interno dello statement puo' comparire
l'istruzione BREAK che, se eseguita, provoca
il termine della WHILE nonche' l'istruzione
CONTINUE che, una volta invocata, riavvia
immediatamente un nuovo ciclo.
In caso di cicli innestati, entrambe le istruzioni BREAK e CONTINUE
non hanno influenza sui cicli piu' esterni.
do
statement;
while (espressione);
Per ogni ciclo viene eseguito lo statement, poi
viene valutata l'espressione.
Se risulta vera (diversa da zero) il ciclo viene riavviato,
altrimenti l'istruzione DO ha termine.
Lo statement viene eseguito almeno
1 volta.
Lo statement puo' essere costituito da una
istruzione composta (o blocco).
All'interno dello statement puo' comparire
l'istruzione BREAK che, se eseguita, provoca
il termine della DO nonche' l'istruzione
CONTINUE che, una volta invocata, riavvia
immediatamente un nuovo ciclo.
In caso di cicli innestati, entrambe le istruzioni BREAK e CONTINUE
non hanno influenza sui cicli piu' esterni.
for (espressione_1; espressione_2; espressione_3;)
statement;
N.B. - espressione_1,
espressione_2 e
espressione_3 sono opzionali.
Prima di inziare il ciclo FOR, viene valutata
l'espressione_1 (se presente) assieme ai suoi
effetti collaterali.
In seguito ha inizio il ciclo FOR.
Per ogni ciclo viene valutata l'espressione_2
(se presente) assieme ai suoi effetti collaterali.
Se l'espressione_2 risulta vera (diversa
da zero), oppure se e' assente, viene eseguito lo
statement e al suo termine viene valutata
l'espressione_3, se presente,
assieme ai suoi effetti collaterali, ed il ciclo riprende
nuovamente.
Lo statement puo' essere costituito da una
istruzione composta (o blocco).
All'interno dello statement puo' comparire
sia l'istruzione BREAK che, se eseguita, provoca
il termine della FOR nonche' l'istruzione
CONTINUE che, una volta invocata, riavvia
immediatamente un nuovo ciclo dopo avere valutato
l'espressione_3.
In caso di cicli innestati, entrambe le istruzioni BREAK e CONTINUE
non hanno influenza sui cicli piu' esterni.
![]() |
il istruzione BREAK |
![]() |
il istruzione CONTINUE |
![]() |
il istruzione GOTO |
![]() |
il istruzione RETURN |
goto identificatore; identificatore: statement;
Quando viene eseguita l'istruzione GOTO, il controllo passa allo statement
associato all'identificatore.
N.B. - Il salto incondizionato deve avvenire all'interno
della stessa funzione.
return espressione;
N.B. - L'espressione e' un termine
opzionale.
Questa istruzione consente ad una funzione
di ritornare il controllo al chiamante.
Se l'espressione e' presente, essa viene valutata
assieme ai suoi effetti collaterali, ed il suo risultato, eventualmente
convertito al tipo ritornato dalla funzione, viene restituito al chiamante.