2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C...

28
2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti di base sulle iterazioni 4.3 - Concetti di base sulle iterazioni controllate da contatore 4.4 - La struttura di iterazione for 4.5 - Costrutto for: note ed osservazioni 4.6 - Esempio di utilizzo del costrutto for 4.7 - La struttura di selezione multipla switch 4.8 - La struttura di iterazione do/while 4.9 - Le istruzioni break e continue 4.10 - Gli operatori logici 4.11 - Operatori di uguaglianza e assegnamento 4.12 - Riepilogo sulla programmazione strutturata

Transcript of 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C...

Page 1: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

Capitolo 4 (Deitel) Le strutture di controllo in C

Indice degli argomenti

4.1 - Introduzione4.2 - Concetti di base sulle iterazioni4.3 - Concetti di base sulle iterazioni controllate da contatore4.4 - La struttura di iterazione for4.5 - Costrutto for: note ed osservazioni4.6 - Esempio di utilizzo del costrutto for4.7 - La struttura di selezione multipla switch4.8 - La struttura di iterazione do/while4.9 - Le istruzioni break e continue4.10 - Gli operatori logici4.11 - Operatori di uguaglianza e assegnamento4.12 - Riepilogo sulla programmazione strutturata

Page 2: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

4.1 - Introduzione

• Si suppone che chi affronta questo capitolo sia ormai in grado di scrivere con agio dei semplici programmi in C

• Questo capitolo introduce:– Una visione più dettagliata delle strutture di controllo

• Nuovi costrutti iterativi: for e do/while

• Il costrutto di scelta multipla: switch

• L’uscita rapida da una struttura di controllo: break

• Come saltare uno o più giri di un ciclo: continue

– Gli operatori logici per combinare varie condizioni

– I principi fondamentali sulla programmazione strutturata

Page 3: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

4.2 - Concetti di base sulle iterazioni

• Ciclo (Loop)– E’ costituito da un blocco di istruzioni che il computer esegue

ripetutamente finché una certa condizione resta vera– Esistono principalmente due modi per controllare un ciclo

• Iterazione controllata da un contatore– Il numero di ripetizioni del ciclo è ben definito e noto a priori– Sfrutta una variabile di controllo per contare il numero di iterazioni– Usare il costrutto while è un pò macchinoso

• Serve un’istruzione apposita nel corpo del ciclo per incrementare il contatore• Il C offre una struttura iterativa più compatta: for

• Iterazione controllate da un valore sentinella (flag)– Il numero di ripetizioni del ciclo è indefinito e non noto a priori– Il valore sentinella indica la fine della sequenza di iterazioni

• Generalmente coincide con la fine dell’acquisizione dei dati– Il costrutto while spesso non è proprio adatto ai problemi normali

• In genere almeno un giro del ciclo va sempre eseguito• Per fare ciò, il blocco di istruzioni nel ciclo va replicato fuori (prima del ciclo) • Il C offre una struttura iterativa più adatta allo scopo: do/while

Page 4: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

4.3 - Concetti di base sulle iterazioni controllate da contatore

• L’iterazione controllata da un contatore richiede di:– Definire una variabile di controllo (contatore del ciclo) e darle un nome – Specificare il valore iniziale della variabile di controllo (inizializzarla)– Fornire la condizione che testa il valore della variabile di controllo ad

ogni ripetizione del ciclo, in attesa che essa assuma il valore finale • Ovvero, quello che determinerà l’uscita dal ciclo

– Stabilire entità dell’incremento (o decremento) con cui la variabile di controllo sarà modificata ad ogni ripetizione del ciclo

• Esempio: int counter = 1; //inizializzazione while (counter <= 10){ //condizione di iterazione printf( "%d\n", counter ); ++counter; //incremento del contatore } //equivalente a counter++

– L’istruzione int counter = 1; • Assegna il nome counter alla variabile di controllo • La dichiara di tipo intero (altri tipi non hanno senso)• Le riserva uno spazio in memoria• La inizializza con valore pari a 1

Page 5: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

4.4 - La struttura di iterazione for (1/2)

• E’ un costrutto di iterazione che gestisce autonomamente tutti i dettagli di un’iterazione controllata da contatore

• Formato di un ciclo for for ( inizializzazione; condizione di iterazione; incremento) istruzione

• Esempio: for( int counter = 1; counter <= 10; counter++ )

printf( "%d\n", counter );

– Questo ciclo di esempio stampa gli interi da 1 a 10

– Il valore iniziale del contatore è 1, il valore finale è 10

– for è una parola riservata del linguaggio C, come while

– Nella pratica il ciclo comprende più istruzioni da eseguire• In tal caso il blocco di istruzioni va incluso tra { }, come per il while

 

Non usare il punto e virgola dopo l’ultima espressione

Page 6: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

4.4 - La struttura di iterazione for (2/2)

• Ogni ciclo for solitamente può essere riscritto tramite un ciclo while equivalente e viceversa:

inizializzazione;while (condizione di iterazione){ istruzione incremento;}

– Tuttavia for è un costrutto più compatto ed elegante di while– Se la variabile contatore non ha altri usi nel programma è meglio usare

for

• Inizializzazione ed incremento – Possono essere liste di istruzioni separate da virgole– Esempio: for (int i = 0, j = 0; j + i <= 10; j++, i++)

printf( "%d\n", j + i );

– Nell’esempio la condizione di iterazione coinvolge due variabili, che sono inizializzate ed incrementate separatamente

Page 7: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

4.5 - Costrutto for: note e osservazioni (1/2)

• Espressioni aritmetiche– Inizializzazione, condizione di iterazione e incremento possono contenere

espressioni aritmetiche – Se ad un certo punto di un programma x = 2 e y = 10, allora for ( j = x; j <= 4 * x * y; j += y / x )

è equivalente a scrivere for ( j = 2; j <= 80; j += 5 )

• L’incremento può essere negativo (decremento)

• Se la condizione di iterazione è inizialmente falsa– Il corpo interno alla struttura for non viene eseguito (come col while)– L’esecuzione procede dalla prima istruzione successiva alla struttura for

• La variabile di controllo spesso viene usata e/o stampata a video nel corpo del ciclo, ma non è indispensabile – Il suo valore può anche essere modificato in itinere da altre istruzioni

presenti nel corpo del ciclo– Meglio evitare l’uso di questo tipo di istruzioni, perché potenzialmente

possono generare errori logici molto difficili poi da trovare

Page 8: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

4.5 - Costrutto for: note e osservazioni (2/2)

• L’incremento agisce come se fosse un’istruzione posta in coda al corpo della for– Quindi le seguenti espressioni di incremento sono equivalenti

counter = counter +1 | counter += 1 | counter++ | ++counter

• Il diagramma di flusso for e while sono uguali

Page 9: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

4.6 - Esempio di utilizzo del costrutto for

1 /* Fig. 4.5: fig04_05.c

2 Somma con for */

3 #include <stdio.h>

4

5 int main()

6 {

7 int somma = 0, numero;

8

9 for ( numero = 2; numero <= 100; numero += 2 )

10 somma += numero;

11

12 printf( “La somma è %d\n", somma );

13

14 return 0;

15 }

 La somma è 2550

Programma

per sommare

i numeri pari

da 2 a 100

Output del

programma

Page 10: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

4.7 - La struttura di selezione multipla switch (1/5)

• switch– Torna utile quando una variabile o espressione deve essere confrontata

con molteplici (o tutti i) possibili valori che può assumere – A seconda del valore assunto, vengono intraprese azioni differenti

• Formato di una selezione switch

switch ( value ){ case 1: istruzioni case 2: istruzioni default:

istruzioni}– La variabile o espressione da testare sta tra le ( ) che seguono switch– Prevede una sequenza di etichette case più una di default (opzionale)– Ogni “case” può contenere una o più azioni, ma le { } non sono necessarie– L’uso di istruzioni break; nel blocco di codice relativo ad una opzione

consente l’uscita immediata dalla struttura di controllo • Vanno messe in coda ad ogni blocco per evitare di eseguire anche gli altri

– default serve ad indicare cosa fare se nessun altro case va a buon fine

 

Page 11: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

4.7 - La struttura di selezione multipla switch (2/5)

• Nota:– Switch può solo testare una variabile o espressione che assume valori

interi (es. 1, senza apici) o costanti di carattere (es. ‘A’, tra apici)

• Diagramma di flusso di switch

vero

falso

. . . . .

caso a azione del caso a break

caso b azione del caso b break

falso

falso

caso z azione del caso z break

vero

vero

azione di default

Page 12: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

4.7 - La struttura di selezione multipla switch (3/5)

1 /* Programma che conta i voti espressi tramite lettere */

2 #include <stdio.h>34 int main(){

5 int grade;6 int aCount = 0, bCount = 0, cCount = 0, dCount = 0, fCount = 0;

78 printf( “Inserisci la lettera del voto.\n" );9 printf( “Digita il carattere di EOF per finire l’input.\n" );1011 while ( ( grade = getchar() ) != EOF ){

12 switch ( grade ){ /* switch nidificato nel while */

13 case 'A': case 'a': /* il voto è una A maiuscola */14 ++aCount; /* o una a minuscola */15 break;

16 case 'B': case 'b': /* il voto è una B maiuscola */17 ++bCount; /* o una b minuscola */18 break;

19 case 'C': case 'c': /* il voto è una C maiuscola */20 ++cCount; /* o una c minuscola */21 break;

22 case 'D': case 'd': /* il voto è una D maiuscola */23 ++dCount; /* o una d minuscola */24 break;

1. Inizializza le variabili

2. Invita l’utente

a inserire i dati

3. Usa una switch

per aggiornare

il contatore opportuno ad ogni giro del ciclo while

Page 13: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

4.7 - La struttura di selezione multipla switch (4/5)

4. Output dei risultati

25 case 'F': case 'f': /* il voto era una F maiuscola */

26 ++fCount; /* o una f minuscola */

27 break;

28 case '\n': case' ': /* ignora i caratteri vuoti */

29 break;

30 default: /* respinge tutti gli altri caratteri */

31 printf( “Hai inserito una lettera non corretta." );

32 printf( " Inserisci un’altra lettera.\n" );

33 break;

34 }

35 }

3637 printf( "\nI totali per ogni voto in lettera sono:\n" );

38 printf( "A: %d\n", aCount );

39 printf( "B: %d\n", bCount );

40 printf( "C: %d\n", cCount );

41 printf( "D: %d\n", dCount );

42 printf( "F: %d\n", fCount );

44 return 0;45 }

43

Page 14: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

4.7 - La struttura di selezionemultipla switch (5/5)

Inserisci la lettera del voto.Digita il carattere di EOF per finire l’input.ABCCADFCEHai inserito una lettera non corretta. Inserisci un’altra lettera.DAB I totali per ogni voto in lettera sono: A: 3B: 2C: 3D: 2F: 1

Visualizzazione del programma

–getchar è la funzione C usata per acquisire in input un singolo carattere per volta e restituisce l’intero (convertito) corrispondente a quel carattere. –Tale intero può essere confrontato con interi o caratteri equivalenti (messi tra apici)–Il carattere EOF di fine acquisizione dati è CTRL-Z in windows e CTRL-D in linux–Per eseguire le stesse azioni per vari case, si scrivono una volta sola (riunendo i case)

Page 15: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

4.8 - La struttura di iterazione do/while (1/3)

• Il costrutto di iterazione do/while– E’ molto simile alla struttura while– Nel while, la condizione di iterazione viene controlla all’inizio del ciclo,

cioè prima che siano eseguite le istruzioni che compongono il ciclo • Se la condizione è inizialmente falsa, le azioni non sono mai eseguite

– Nel do/while, la condizione di iterazione viene controllata a fine ciclo, cioè dopo aver eseguito le istruzioni che compongono il ciclo

• Tutte le azioni sono eseguite comunque almeno una volta

• Formato di do/while: do{

istruzione } while ( condizione );

– È buona norma mettere sempre le { } anche quando il corpo del ciclo è composto da una sola istruzione (non sono realmente necessarie)

 

Page 16: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

4.8 - La struttura di iterazione do/while (2/3)

• Esempio (supponendo che counter = 1)do {

printf( "%d ", counter );

} while (++counter <= 10);

– Stampa gli interi da 1 a 10

• Diagramma di flusso 

vera

falsa

Azione/i

condizione

- Nel while il rombo anticipava il rettangolo

- Nel do/while il rettangolo anticipa il rombo

Page 17: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

4.8 - La struttura di iterazione do/while (3/3)

1 /* Fig. 4.9: fig04_09.c

2 Usare la struttura di iterazione do/while */

3 #include <stdio.h>

4

5 int main(){

6

7 int counter = 1;

8

9 do {

10 printf( "%d ", counter );

11 } while ( ++counter <= 10 );

12

13 return 0;

14 }

1 2 3 4 5 6 7 8 9 10

1. Inizializza il contatore

2. Ciclo di stampa

Attenzione che

counter++ <=10 avrebbe stampato anche 11 !!!

Output del programma

Esecuzione del programma

Page 18: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

4.9 - Le istruzioni break e continue (1/2)

• break– Causa l’uscita immediata dalle strutture while, for, do/while o switch – L’esecuzione del programma prosegue a partire dalla prima istruzione che

segue sequenzialmente la fine della struttura di controllo– Usi più comuni dell’istruzione break:

• Anticipare l’uscita da un ciclo (uscita rapida)• Saltare tutti gli altri case una switch

• continue– Salta le tutte le rimanenti istruzioni del corpo di una struttura iterativa

• Si usa con while, for o do/while • Procede con l’esecuzione dell’iterazione successiva del medesimo ciclo

– Nel caso di cicli while o do/while• La condizione di iterazione per la ripetizione del ciclo viene valutata

immediatamente dopo che l’istruzione continue è stata eseguita

– Nel caso di cicli for • Prima si esegue l’incremento del contatore, poi viene valutata la condizione di

iterazione per la ripetizione del ciclo

Page 19: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

4.9 - Le istruzioni break e continue (2/2)

1 /* Fig. 4.12: fig04_12.c

2 Uso dell’istruzione continue in una struttura */

3 #include <stdio.h>

4

5 int main(){

6 int x;

7

8 for ( x = 1; x <= 10; x++ ) {

9

10 if ( x == 5 ) /* salta la printf per l’iterazione */

11 continue; /* corrente se x == 5 */

12

13 printf( "%d ", x );

14 }

15

16 printf( "\nSi usa continue per saltare la stampa del 5\n" );

17 return 0;

18 }

1. Definisce il contatore

2. Ciclo di stampa

Esecuzione del programma

Esecuzione del programma

1 2 3 4 6 7 8 9 10Si usa continue per saltare la stampa del 5

Page 20: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

4.10 - Gli operatori logici

• Sono usati per costruire condizioni complesse combinando espressioni semplici

• && (AND logico) – Restituisce vero solo se entrambe le condizioni sono vere – Ha priorità d’esecuzione maggiore rispetto all’operatore OR

• || (OR logico) – Restituisce vero se almeno una delle sue condizioni è vera

• ! (NOT logico, negazione logica)– Inverte la veridicità/falsità della condizione a cui è applicato– E’ un operatore unario, cioè ammette un solo operando

• Sono molto utili per esprimere le condizioni di iterazione

Espressione1 Espressione2 Risultatovero && falso falsovero || falso vero !falso vero

Page 21: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

4.11 - Operatori di uguaglianza e assegnamento (1/2)

• Uguaglianza (==) e assegnamento (=)– Confondere i due operatori può causare gravi errori– Anche se solitamente confonderli non causa errori di sintassi, ma logici– Ogni espressione che restituisce un valore può essere utilizzata come

condizione in una struttura di controllo• Se assume valori diversi allora la condizione è vera, altrimenti è falsa

• Esempio di scambio tra i due operatori:

if( payCode == 4 ) if( payCode = 4 )

printf(“Hai un bonus!\n"); printf(“Hai un bonus!\n");

Controlla il valore di payCode

Se vale 4, stampa “Hai un bonus”

Assegna a payCode il valore 4

Dato che 4 è un valore non nullo, stampa comunque “Hai un bonus” perché l’espressione vale VERO

L’errore è logico, non di sintassi

Il programma funziona male ma va

Page 22: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

4.11 - Operatori di uguaglianza e assegnamento (2/2)

• In C gli assegnamenti producono sempre un valore– Tale valore viene assegnato alla variabile a sinistra dell’operatore (=)

• lvalues– Sono le espressioni che possono apparire a sinistra dell’operatore di

assegnamento– Il loro valore può cambiare durante l’esecuzione del programma– Generalmente sono nomi di variabili

• x = 4;

• rvalues– Sono le espressioni che possono apparire a destra dell’operatore di

assegnamento– Possono essere anche delle costanti, cioè numeri

• Ma assolutamente non si può scrivere 4 = x;– Gli lvalues possono essere usati come rvalues, ma mai viceversa

• y = x;

Page 23: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

4.12 - Riepilogo sulla programmazione strutturata (1/6)

• Programmazione strutturata– Rende più semplice capire, testare, debuggare e modificare i

programmi rispetto alla programmazione non strutturata

• Regole della programmazione strutturata– Sono state sviluppate dalla comunità dei programmatori

– Fanno uso solo di strutture di controllo del tipo single-entry/single-exit

– Regole: 1) Iniziare con il “diagramma di flusso elementare”, il più semplice (del top)

2) Ogni rettangolo (azione) può essere sostituito da due rettangoli in sequenza

3) Ogni rettangolo (azione) può essere sostituito da una qualsiasi struttura di controllo (sequenza, if, if/else, switch, while, do/while o for)

4) Le regole 2 e 3 possono essere applicate in qualunque ordine e più volte

 

 

Page 24: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

4.12 - Riepilogo sulla programmazione strutturata (2/6)

.

.

.

Regola 2

Regola 2

Regola 2

Regola 1 – Iniziare con il più semplice diagramma di flusso

Regola 2 – Qualsiasi rettangolo può essere sostituito da 2 rettangoli in sequenza

Page 25: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

4.12 - Riepilogo sulla programmazione strutturata (3/6)

Regola 3

Regola 3

Regola 3

Regola 3 – Qualsiasi rettangolo può essere sostituito con una qualsiasi struttura di controllo

Page 26: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

4.12 - Riepilogo sulla programmazione strutturata (4/6)

• Tutti i programmi possono essere scomposti in 3 parti: Sequenza - banale perchè attuata automaticamente dal compilatore

Selezione - if, if/else, o switch

Ripetizione - while, do/while, o for– Ogni selezione può essere riscritta con il costrutto if e ogni iterazione

può essere riscritta con il costrutto while

• Quindi tutti i programmi si possono ridurre a:– Sequenze

– Strutture if (selezione)

– Strutture while (ripetizione)

– Queste strutture di controllo possono essere combinate solo in due modi, annidandole (regola 3) e mettendole in sequenza (regola 2)

– Tutto ciò promuove la semplicità della programmazione strutturata

Page 27: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

4.12 - Riepilogo sulla programmazione strutturata (5/6)

SEQUENZA

VeroFalso

SELEZIONE IF/ELSE

Vero

Falso

SELEZIONE IF

Page 28: 2000 Prentice Hall, Inc. All rights reserved. Capitolo 4 (Deitel) Le strutture di controllo in C Indice degli argomenti 4.1 - Introduzione 4.2 - Concetti.

2000 Prentice Hall, Inc. All rights reserved.

4.12 - Riepilogo sulla programmazione strutturata (6/6)

breakVero

Falso

breakVero

Falso

breakVero

Falso

SELEZIONE SWITCH

Vero

FalsoITERAZIONE WHILE o FOR

ITERAZIONE DO/WHILE

Vero

Falso