250 likes | 506 Views
Strutture di controllo nel C. Sequenza, if, switch, while, do while, for. Istruzione 1. Istruzione 2. Sequenza. ... } Istruzione 1 ; Istruzione 2 ; } . V. F. Condizione. Istruzioni B. Istruzioni A. Selezione: if. ... if ( condizione ) { Istruzioni A ; } else { Istruzioni B ; }.
E N D
Strutture di controllo nel C Sequenza, if, switch, while, do while, for
Istruzione1 Istruzione2 Sequenza ...}Istruzione1;Istruzione2;} ...
V F Condizione IstruzioniB IstruzioniA Selezione: if ...if (condizione){IstruzioniA; }else{IstruzioniB;}...
variabile==val1 V F IstruzioniA variabile==val2 V F IstruzioniB IstruzioniC Selezione: switch ...switch (variabile){case val1: IstruzioniA;break;case val2: IstruzioniB;break;default: IstruzioniC;}...
F Condizione V Istruzioni Iterazione: while ...while (condizione){Istruzioni; }...
Istruzioni Condizione V F Iterazione: do while ...do{Istruzioni; } while (condizione);...
Inizializzazionecontatore F Condizione V Istruzioni Incrementocontatore Iterazione: for ...for (iniz cont; condizione; inc cont){Istruzioni; }... • Il contatore puo: • Essere incrementato o decrementato • Avere un passo diverso da 1
Esempi in C sulle strutture di controllo Metodi classici per l’inserimento dei dati, divisibilità e molteplicità
Anno bisestile • L’utente inserisce un anno ed il calcolatore verifica se è bisestile • Se 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.
Anno bisestile • #include <stdio.h> • void main () • { • unsignedint restoDiv4, restoDiv100, restoDiv400; • int anno; • printf ("Inserire un anno:"); • scanf ("%d", &anno); • while (anno >= 0) • { • restoDiv4 = anno % 4; • restoDiv100 = anno % 100; • restoDiv400 = anno % 400; .
Anno 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"); • } .
Anno bisestile • Nota sul ciclo (“terminatore escluso”): • lettura dato • inizio ciclo e controllo dato (terminatore?) • elaborazione dato • lettura dato successivo • fine ciclo.
Da minuscolo a maiuscolo • L’utente inserisce una sequenza di caratteri, terminata dal carattere ‘#’ • Il programma visualizza i caratteri, trasformando tutte le lettere minuscole in maiuscole • Eventuali caratteri diversi dalle lettere minuscole e dal ‘#’ devono essere visualizzati come ‘_’ • Il carattere ‘#’ deve essere anch’esso visualizzato
Da 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); • } .
Da minuscolo a maiuscolo • else if (carattere != '#') • { • printf ("_"); • } • else • { • printf ("#"); • } • } while (carattere != '#'); • }
Da minuscolo a maiuscolo • Nota sul ciclo (“terminatore incluso”): • inizio ciclo • Lettura dato • elaborazione dato • fine ciclo e controllo dato (terminatore?).
Fattoriale • L’utente inserisce alcuni numeri naturali e l’elaboratore ne calcola il fattoriale • Ricordiamo che i fattoriale è definito come: n! = 1 sse n = 0 n! = n·(n – 1)! sse n > 0 • Usiamo un procedimento iterativo: il fattoriale può essere calcolato: n! = 1 sse n = 0 n! = 123…n sse n > 0 .
Fattoriale • #include <stdio.h> • void main() • { • unsignedint n, i, max, j; • unsignedlongint fat; • printf ("Quanti numeri?: "); scanf ("%u", &max); .
Fattoriale • 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); • } }
Fattoriale • Nota sul ciclo (“nessun terminatore, inserisci numero elementi”): • Lettura numero elementi da inserire • inizio ciclo for per il numero di elementi • Lettura dato • elaborazione dato • fine ciclo.
Calcolatrice • L’utente inserisce un carattere (‘+’, ‘-’, ‘*’, ‘/’) che rappresenta l’operazione da eseguire e due operandi (numeri float) • L’operazione viene eseguita, se possibile.
Calcolatrice • #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); .
Calcolatrice • 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; • } .
Calcolatrice • if (errore == 0) • { • printf ("Risultato: %f\n",tot); • } • else • { • printf ("Errore!\n"); • } • } .