LABEL: STATEMENT1
...
STATEMENTn
if COND then goto LABEL;
Eseguire goto LABEL significa che la prossima
istruzione che sarà eseguita è quella che segue LABEL.
jump e jumpz dell'Assembler sono una forma di goto.
Al giorno d'oggi è praticamente dimenticato, anche perchè è possibile mettere etichette e goto in ogni punto dei programmi, rendendoli dei labirinti.
Il C offre il goto e la possibilità di etichettare le istruzioni, ma saranno mai usati in questo corso.
Il C ha il costrutto while, la cui forma sintattica è
while (CONDITION)
STATEMENT
la cui esecuzione è come segue:
Notare che è possibile che l'istruzione non sia eseguita neanche una
volta,
quando la condizione è falsa inizialmente.
È importante notare anche che l'esecuzione di questo statement potrebbe
non terminare mai (andare in loop); per esempio poichè la condizione non
sarà mai falsa.
Questo è uno degli errori più comuni, che si ommettono
quando si fanno dei programmi.
ESEMPIO: alcuni programmi C che non termineranno mai
main()
{
int A, B;
A = 0;
B = 0;
while(A <= B)
B = B + 1;
}
main()
{
int A, B;
A = 0;
B = 0;
while(A <= B)
B = B == 1;
}
Il C ha il costrutto do, la cui forma sintattica è
do
STATEMENT
while(CONDITION)
la cui esecuzione è come segue:
Notare che in questo caso l'istruzione sarà eseguita sempre almeno
una volta,
anche quando la condizione è falsa inizialmente.
Anche l'esecuzione di questo statement potrebbe
non terminare mai; per esempio poichè la condizione non
sarà mai falsa.
ESEMPIO: alcuni programmi C che non termineranno mai con l'istruzione do
main()
{
int A, B;
A = 0;
B = 0;
do
B = B + 1;
while(A < B);
}
main()
{
int A, B;
A = 0;
B = 0;
do
B = B == 1;
while(B <= A)
}
for (CONT,EXPRESSION 1,EXPRESSION 2,EXPRESSION 3)
STATEMENT
CONT è una variabile (di tipo discreto, quindi, per esempio, no reale)
che non è modificata in STATEMENT
CONT=EXPRESSION 1;
while(CONT<=EXPRESSION 2){
STATEMENT
CONT=CONT+EXPRESSION 3;
}
Il for del C è molto più complesso e permette di fare molto
di più che ripetere un'istruzione un numero di volte prefissato.
for (STATEMENT 1; CONDITION; STATEMENT 2) STATEMENTSTATEMENT 1 è una istruzione che determina il valore iniziale del contatore (una variabile di tipo discreto)
STATEMENT 1;
while(CONDITION){
STATEMENT
STATEMENT 2
}
ESEMPIO: programma con il for in cui un'istruzione è eseguita
esattamente 23 volte
main()
{
int A, B;
B = 0;
for(A = 12; A <= 35; A = A+1)
B = B + 1;
}
ESEMPIO: programma con il for che va in loop
main()
{
int A, B;
B = 0;
for(A = 12; A > B; A = A+1)
B = B == 1;
}