DD Cap.3 pp.91-130
/* calcolo di 8!*/ #include <stdio.h> #dene C 8 int main() { int i=1; int fatt=1; while (i<=C) { fatt*=i; i++; } printf(8!=%d, fatt); return 0; }
La maggior parte degli algoritmi ha: 1. una parte di inizializzazione 2. una parte di calcolo 3. una parte conclusiva
Esercizi (printf)
Scrivere un programma che prenda in input due interi che rappresentano le lunghezze di cateti di un triangolo rettangolo e restituisca in output la lunghezza dellipotenusa Scrivere un programma che stampi il proprio nome e cognome: a. su una riga; b. su due righe; c. in un riquadro. Scrivere un programma che stampi una tabella delle potenze graficamente ordinata: Intero Quadrato Cubo Quarta Quinta 1 1 1 1 1 2 4 8 16 32 ... Scrivere un programma che stampi la seguente figura, dove le dimensioni siano date in input: ***** ***** ***** ***** *****
il ciclo while
Il ciclo while: viene testata la condizione per la ripetizione del ciclo; se essa verificata il corpo del ciclo viene eseguito, altrimenti il controllo va allistruzione successiva al ciclo while. Formato: while(condizione) { istruzione; }
while (i<=C) { fatt*=i; i++; }
Osserviamo
il ciclo while dellesempio:
while (++i<=C)
fatt*=i; Alcuni programmatori (ma questa volta amano compattare il codice: i parte da 0)
incremento della var. di controllo valore iniziale della var. di controllo condizione di continuazione ciclo
Esempio
somma=0 considera un contatore i i=1 nch (i non > di 6) somma=somma+8 i=i+1 stampa somma
/* calcolo di 8x6*/ #include <stdio.h> #dene C1 6 #dene C2 8 int main() { int somma=0; int i; for(i=1; i<=C1; i++) somma+=C2; printf(6x8=%d, somma); return 0; }
I tre cicli
ciclo while ciclo for ciclo dowhile
Meglio:
printf(%d+%d=%d, a, b, a+b); e si evita la variabile s
Esercizi (cicli)
Diagramma a blocchi, pseudocodice e traduzione in 3 programmi C, ciascuno con un ciclo diverso: Prendere in input un intero n e sommare tutti i numeri da 1 an Prendere in input 2 interi a e b e calcolare axb simulando con la somma, a+a++a (b volte) Prendere in input un intero n e stampare un quadrato di A di dimensione nxn Prendere in input 20 interi e calcolarne la media (senza usare 20 variabili!). E se invece di 20 ci fosse una variabile? Prendere in input 20 interi compresi tra 1 e 3 e dire quanti 1, quanti 2 e quanti 3 ci sono nella sequenza (come sopra).
Output: 1 2 3 4
Listruzione continue si pu sempre evitare scrivendo opportunamente la condizione di uscita dal ciclo, e pu confondere la comprensione, quindi Esempio: for (i=1; i<=10; i++) E MEGLIO EVITARLA!
Output: 1 2 3 4 6 7 8 9 10
}
Esercizi (switch)
Prendere in input un intero e stampare una stringa che dica se positivo o negativo, pari o dispari. Prendere in input un intero da 1 a 10 e stampare il suo valore a lettere (3: tre) Prendere in input un intero da 1 a 12 e stampare il mese corrispondente (3: marzo) Prendere in input 3 valori, che rappresentano i coefficienti di unequazione di secondo grado, e stampare i risultati dellequazione. Prendere in input un intero tra 1 e 99 e stamparlo come numero romano.