24
Politecnico Politecnico di Milano di Milano Strutture di controllo nel C Strutture di controllo nel C Sequenza, if, switch, while, do while, for Sequenza, if, switch, while, do while, for

Politecnico di Milano Strutture di controllo nel C Sequenza, if, switch, while, do while, for

Embed Size (px)

Citation preview

Page 1: Politecnico di Milano Strutture di controllo nel C Sequenza, if, switch, while, do while, for

PolitecnicoPolitecnicodi Milanodi Milano

Strutture di controllo nel CStrutture di controllo nel C

Sequenza, if, switch, while, do while, forSequenza, if, switch, while, do while, for

Page 2: Politecnico di Milano Strutture di controllo nel C Sequenza, if, switch, while, do while, for

- - 22 - -

SequenzaSequenza

...}

Istruzione1;Istruzione2;

}...

Istruzione2

Istruzione1

Page 3: Politecnico di Milano Strutture di controllo nel C Sequenza, if, switch, while, do while, for

- - 33 - -

Selezione: Selezione: ifif

...if (condizione){

IstruzioniA;}else{

IstruzioniB;}...

Condizione

IstruzioniB

VF

IstruzioniA

Page 4: Politecnico di Milano Strutture di controllo nel C Sequenza, if, switch, while, do while, for

- - 44 - -

Selezione: Selezione: switchswitch

...switch (variabile){

case val1: IstruzioniA; break;

case val2: IstruzioniB; break;

default: IstruzioniC;}...

variabile==val1

V

FIstruzioniA

variabile==val2

V

FIstruzioniB

IstruzioniC

Page 5: Politecnico di Milano Strutture di controllo nel C Sequenza, if, switch, while, do while, for

- - 55 - -

Iterazione: Iterazione: whilewhile

Condizione

Istruzioni

V

F

...while (condizione){

Istruzioni;}...

Page 6: Politecnico di Milano Strutture di controllo nel C Sequenza, if, switch, while, do while, for

- - 66 - -

Iterazione: Iterazione: do whiledo while

Condizione

Istruzioni

V

F

...do{

Istruzioni;} while (condizione);...

Page 7: Politecnico di Milano Strutture di controllo nel C Sequenza, if, switch, while, do while, for

- - 77 - -

Iterazione: Iterazione: forfor

...for (iniz cont; condizione; inc cont){

Istruzioni;}...

Condizione

Istruzioni

V

F

Inizializzazionecontatore

Incrementocontatore

Il contatore puo:Essere incrementato o decrementatoAvere un passo diverso da 1

Page 8: Politecnico di Milano Strutture di controllo nel C Sequenza, if, switch, while, do while, for

PolitecnicoPolitecnicodi Milanodi Milano

Esempi in C sulle strutture di controlloEsempi in C sulle strutture di controllo

Metodi classici per l’inserimento dei dati, Metodi classici per l’inserimento dei dati, divisibilità e molteplicitàdivisibilità e molteplicità

Page 9: Politecnico di Milano Strutture di controllo nel C Sequenza, if, switch, while, do while, for

- - 99 - -

Anno bisestileAnno bisestile

L’utente inserisce un anno ed il calcolatore verifica se è bisestileSe l’utente inserisce un numero minore di zero il programma termina (senza ovviamente fare alcuna verifica) altrimenti, al termine della verifica, si ricomincia daccapo Ricordiamo che un anno è bisestile se: è divisibile per 4 ma non per 100, oppure se

è divisibile per 400.

Page 10: Politecnico di Milano Strutture di controllo nel C Sequenza, if, switch, while, do while, for

- - 1010 - -

Anno bisestileAnno bisestile

#include <stdio.h>

void main () {

unsigned int restoDiv4, restoDiv100, restoDiv400; int anno; printf ("Inserire un anno: "); scanf ("%d", &anno); while (anno >= 0) {

restoDiv4 = anno % 4; restoDiv100 = anno % 100; restoDiv400 = anno % 400;

.

Page 11: Politecnico di Milano Strutture di controllo nel C Sequenza, if, switch, while, do while, for

- - 1111 - -

Anno bisestileAnno bisestile

if (restoDiv4 == 0 && restoDiv100 != 0 || restoDiv400 == 0) {

printf ("L’anno è bisestile\n"); } else {

printf ("L’anno non è bisestile\n"); } printf ("Inserire un altro anno: "); scanf ("%d", &anno);

} printf ("Fine.\n");

}

.

Page 12: Politecnico di Milano Strutture di controllo nel C Sequenza, if, switch, while, do while, for

- - 1212 - -

Anno bisestileAnno bisestile

Nota sul ciclo (“terminatore escluso”):lettura dato

inizio ciclo e controllo dato (terminatore?)elaborazione dato

lettura dato successivo

fine ciclo.

Page 13: Politecnico di Milano Strutture di controllo nel C Sequenza, if, switch, while, do while, for

- - 1313 - -

Da minuscolo a maiuscoloDa minuscolo a maiuscolo

L’utente inserisce una sequenza di caratteri, terminata dal carattere ‘#’Il programma visualizza i caratteri, trasformando tutte le lettere minuscole in maiuscoleEventuali caratteri diversi dalle lettere minuscole e dal ‘#’ devono essere visualizzati come ‘_’Il carattere ‘#’ deve essere anch’esso visualizzato

Page 14: Politecnico di Milano Strutture di controllo nel C Sequenza, if, switch, while, do while, for

- - 1414 - -

Da minuscolo a maiuscoloDa minuscolo a maiuscolo

#include <stdio.h>

void main() { char carattere; printf ("Caratteri (termina con #): "); do { scanf (" %c", &carattere); if (carattere >= 97 && carattere <= 122) { printf ("%c", carattere - 32); } .

Page 15: Politecnico di Milano Strutture di controllo nel C Sequenza, if, switch, while, do while, for

- - 1515 - -

Da minuscolo a maiuscoloDa minuscolo a maiuscolo

else if (carattere != '#') { printf ("_"); } else { printf ("#"); } } while (carattere != '#'); }

Page 16: Politecnico di Milano Strutture di controllo nel C Sequenza, if, switch, while, do while, for

- - 1616 - -

Da minuscolo a maiuscoloDa minuscolo a maiuscolo

Nota sul ciclo (“terminatore incluso”):inizio ciclo

Lettura dato

elaborazione dato

fine ciclo e controllo dato (terminatore?).

Page 17: Politecnico di Milano Strutture di controllo nel C Sequenza, if, switch, while, do while, for

- - 1717 - -

FattorialeFattoriale

L’utente inserisce alcuni numeri naturali e l’elaboratore ne calcola il fattorialeRicordiamo che i fattoriale è definito come:

n! = 1 sse n = 0n! = n·(n – 1)! sse n > 0

Usiamo un procedimento iterativo: il fattoriale può essere calcolato:

n! = 1 sse n = 0n! = 123…n sse n > 0

.

Page 18: Politecnico di Milano Strutture di controllo nel C Sequenza, if, switch, while, do while, for

- - 1818 - -

FattorialeFattoriale

#include <stdio.h>

void main() {

unsigned int n, i, max, j; unsigned long int fat; printf ("Quanti numeri?: "); scanf ("%u", &max); .

Page 19: Politecnico di Milano Strutture di controllo nel C Sequenza, if, switch, while, do while, for

- - 1919 - -

FattorialeFattoriale

for (j = 1; j <= max; j++) { printf ("Introduci numero naturale: ");

scanf ("%u", &n); fat = 1; for (i = 1; i <= n; i++) {

fat = fat * i; } printf ("Il fattoriale è: %lu\n", fat);

}}

Page 20: Politecnico di Milano Strutture di controllo nel C Sequenza, if, switch, while, do while, for

- - 2020 - -

FattorialeFattoriale

Nota sul ciclo (“nessun terminatore, inserisci numero elementi”):

Lettura numero elementi da inserire

inizio ciclo for per il numero di elementiLettura dato

elaborazione dato

fine ciclo.

Page 21: Politecnico di Milano Strutture di controllo nel C Sequenza, if, switch, while, do while, for

- - 2121 - -

CalcolatriceCalcolatrice

L’utente inserisce un carattere (‘+’, ‘-’, ‘*’, ‘/’) che rappresenta l’operazione da eseguire e due operandi (numeri float) L’operazione viene eseguita, se possibile.

Page 22: Politecnico di Milano Strutture di controllo nel C Sequenza, if, switch, while, do while, for

- - 2222 - -

CalcolatriceCalcolatrice

#include <stdio.h>

void main() {

float op1, op2, tot; char operazione; unsigned int errore = 0; printf ("Operazione (+,-,*,/): "); scanf ("%c", &operazione); printf ("Primo operando: "); scanf ("%f", &op1); printf ("Secondo operando: "); scanf ("%f", &op2);

.

Page 23: Politecnico di Milano Strutture di controllo nel C Sequenza, if, switch, while, do while, for

- - 2323 - -

CalcolatriceCalcolatrice

switch (operazione) { case '+': tot = op1 + op2; break; case '-': tot = op1 - op2;

break; case '*': tot = op1 * op2; break; case '/': if (op2 != 0) tot = op1 / op2; else errore = 1; break; default: printf ("Operazione?\n"); errore = 1; } .

Page 24: Politecnico di Milano Strutture di controllo nel C Sequenza, if, switch, while, do while, for

- - 2424 - -

CalcolatriceCalcolatrice

if (errore == 0) { printf ("Risultato: %f\n", tot); } else { printf ("Errore!\n"); } } .