istruzioni-espressione | |
istruzioni-composte o blocchi | |
istruzioni di selezione | |
istruzioni di iterazione | |
istruzioni di salto |
Istruzioni-espressione
La maggior parte delle istruzioni sono istruzioni-espressione,
sono cioe' delle espressioni seguite
dal ; (punto e virgola).
La sintassi e':
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:
;
scrittura di un insieme di istruzioni, dove la sintassi permetta l'inserimento di solamente uno statement | |
definizione del corpo di una funzione |
Istruzioni di selezione
Il C mette a disposizione 2 istruzioni di selezione.
il costrutto IF | |
il costrutto SWITCH |
2° caso:
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.
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.
Costrutto IF
La sintassi relativa al costrutto IF puo' presentare 2 forme:
1° caso:
if (espressione)
statement_1;
if (espressione)
statement_1;
else
statement_2;
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;
Costrutto SWITCH
La sintassi relativa al costrutto SWITCH e':
switch (espressione)
{
case costante_1:
[statement;]
...
case costante_2:
[statement;]
...
default:
[statement;]
...
}
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.
Istruzioni di iterazione
Il C mette a disposizione 3 istruzioni di iterazione:
il costrutto WHILE | |
il costrutto DO | |
il costrutto FOR |
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.
Lo statement puo' essere costituito da una
istruzione composta (o blocco).
Per ogni ciclo viene eseguito lo statement, poi
viene valutata l'espressione.
Lo statement puo' essere costituito da una
istruzione composta (o blocco).
N.B. - espressione_1,
espressione_2 e
espressione_3 sono opzionali.
Lo statement puo' essere costituito da una
istruzione composta (o blocco).
Costrutto WHILE
Il costrutto while presenta la seguente sintassi:
while (espressione)
statement;
La WHILE ha termine appena l'espressione risulta
falsa (cioe' ritorna un valore nullo).
E' possibile che statement non venga mai
eseguito.
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.
Costrutto DO
Il costrutto DO si presenta con la sintassi:
do
statement;
while (espressione);
Se risulta vera (diversa da zero) il ciclo viene riavviato,
altrimenti l'istruzione DO ha termine.
Lo statement viene eseguito almeno
1 volta.
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.
Costrutto FOR
La sintassi del costrutto FOR e' la seguente:
for (espressione_1; espressione_2; espressione_3;)
statement;
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.
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.
istruzioni di salto
Infine il linguaggio C specifica le 4 istruzioni di salto:
il istruzione BREAK | |
il istruzione CONTINUE | |
il istruzione GOTO | |
il istruzione RETURN |
Istruzione BREAK
L'istruzione BREAK e' gia' stata esaminata nella definizione dei costrutti
SWITCH, WHILE,
DO e FOR.
Istruzione CONTINUE
L'istruzione CONTINUE e' gia' stata esaminata nella definizione dei
costrutti WHILE,
DO e FOR.
Quando viene eseguita l'istruzione GOTO, il controllo passa allo statement
associato all'identificatore.
N.B. - L'espressione e' un termine
opzionale.
Istruzione GOTO
Le regole del linguaggio C, definiscono anche l'istruzione di salto GOTO,
sebbene il suo uso sia deprecato, poiche' esce dagli schemi della
programmazione strutturata.
Comunque la sintassi e' la seguente:
goto identificatore;
identificatore:
statement;
N.B. - Il salto incondizionato deve avvenire all'interno
della stessa funzione.
Istruzione RETURN
L'istruzione RETURN presenta la sintassi:
return espressione;
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.
Indice linguaggio C
Umberto Zappi Home Page