Fondamenti di Informatica – CdL Ingegneria Gestionale – aa 2006/2007
Esercizio 1
Scrivere un programma interattivo che attraverso opportuni messaggi sullo standard output richieda in
ingresso un numero intero positivo, ne calcoli il fattoriale, e lo stampi sullo standard output
Esercizio 1- Analisi problema
Calcolo del fattoriale:
n! = 1*2*3*…*(n-1)*n
In pseudo codice:
fattoriale=1 for(i=1..n)
fattoriale = fattoriale*i
Fondamenti di Informatica – CdL Ingegneria Gestionale – aa 2006/2007
Esercizio 1 – Algoritmo
fattoriale 1 i 1
i <= n?
fattoriale fattoriale * i i i + 1
sì
no Lettura n Inizio
Fine
Stampa fattoriale
Esercizio 1 – Codice
/* lettura dati in ingresso */
unsigned long int fattoriale = 1;
unsigned int i;
for(i= 1; i <= n; i++) fattoriale *= i;
printf(“il fattoriale di %d è %ld\n”, n, fattoriale);
Fondamenti di Informatica – CdL Ingegneria Gestionale – aa 2006/2007
Esercizio 2
Scrivere un programma interattivo che attraverso opportuni messaggi sullo standard output richieda in
ingresso un numero intero positivo n, calcoli la somma dei primi n numeri interi pari, e stampi il risultato sullo standard output
Esercizio 2- Analisi problema
Calcolo della somma:
s = 2+4+6+…+(2*n-2)+(2*n)
In pseudo codice:
somma=0
for(i=2..2*n, ii+2) somma = somma+i
Fondamenti di Informatica – CdL Ingegneria Gestionale – aa 2006/2007
Esercizio 2 – Algoritmo
somma 0 i 2
i <= 2*n?
somma somma + i i i + 2
sì
no Inizio
Fine Lettura n
Stampa somma
Esercizio 2 – Codice
/* lettura dati in ingresso */
unsigned long int somma = 0;
unsigned int i;
for(i= 2; i <= 2*n; i+=2) somma += i;
printf(“la somma dei primi %d numeri pari è %ld\n”, n, somma);
Fondamenti di Informatica – CdL Ingegneria Gestionale – aa 2006/2007
Esercizio 2- Analisi alternativa:
Calcolo della somma:
s = [2+(2*n)] + [4+(2*n-2)] + … = (n/2) * (2*n + 2) = n*n + n
esempi: n = 3 s = 2 + 4 + 6 = 12
s = 3*3 + 3 = 12
n = 4 s = 2 + 4 + 6 + 8 = 20
s = 4*4 + 4 = 20
In pseudo codice:
somma=n*n + n
Esercizio 3
Scrivere un programma interattivo che attraverso opportuni messaggi sullo standard output richieda in
ingresso un numero intero positivo n, calcoli la somma dei primi n numeri interi dispari, e stampi il risultato sullo standard output