LABEL: STATEMENT1 ... STATEMENTnEseguireif
CONDthen goto
LABEL;
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) STATEMENTla 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) STATEMENTCONT è 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; }