Upload
luigi-miele
View
217
Download
1
Embed Size (px)
Citation preview
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
- - 22 - -
SequenzaSequenza
...}
Istruzione1;Istruzione2;
}...
Istruzione2
Istruzione1
- - 33 - -
Selezione: Selezione: ifif
...if (condizione){
IstruzioniA;}else{
IstruzioniB;}...
Condizione
IstruzioniB
VF
IstruzioniA
- - 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
- - 55 - -
Iterazione: Iterazione: whilewhile
Condizione
Istruzioni
V
F
...while (condizione){
Istruzioni;}...
- - 66 - -
Iterazione: Iterazione: do whiledo while
Condizione
Istruzioni
V
F
...do{
Istruzioni;} while (condizione);...
- - 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
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à
- - 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.
- - 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;
.
- - 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");
}
.
- - 1212 - -
Anno bisestileAnno bisestile
Nota sul ciclo (“terminatore escluso”):lettura dato
inizio ciclo e controllo dato (terminatore?)elaborazione dato
lettura dato successivo
fine ciclo.
- - 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
- - 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); } .
- - 1515 - -
Da minuscolo a maiuscoloDa minuscolo a maiuscolo
else if (carattere != '#') { printf ("_"); } else { printf ("#"); } } while (carattere != '#'); }
- - 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?).
- - 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
.
- - 1818 - -
FattorialeFattoriale
#include <stdio.h>
void main() {
unsigned int n, i, max, j; unsigned long int fat; printf ("Quanti numeri?: "); scanf ("%u", &max); .
- - 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);
}}
- - 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.
- - 2121 - -
CalcolatriceCalcolatrice
L’utente inserisce un carattere (‘+’, ‘-’, ‘*’, ‘/’) che rappresenta l’operazione da eseguire e due operandi (numeri float) L’operazione viene eseguita, se possibile.
- - 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);
.
- - 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; } .
- - 2424 - -
CalcolatriceCalcolatrice
if (errore == 0) { printf ("Risultato: %f\n", tot); } else { printf ("Errore!\n"); } } .