Questa è una vecchia versione del documento!
Indice
Esercitazione 2
Dove si sviluppano semplici programmi C che utilizzano i costrutti di controllo.
Esercizio 1: Max, min e somma
- Leggere tre reali da standard input e stampare su standard output il massimo il minimo e la somma dei tre.
- Leggere da standard input una serie di reali terminata dal valore 0.0. Calcolare massimo, minimo e somma totale dei reali nella serie e stamparlo su standard output.
Esercizio 2: Verifica ordinamento
Leggere da standard input una serie di reali terminata dal valore 0.0. Stampare sullo standard output la parola Ordinata
se la sequenza e' ordinata in modo crescente e Non ordinata
se la sequenza non e' ordinata.
Estendere il programma in modo da riconoscere se la sequenza e' ordinata in modo crescente o descrescente e stamparle Ordinata crescente
o Ordinata decrescente
sullo standard output.
Esercizio 3: La successione di Fibonacci
La successione di Fibonacci, in sintesi risolve il seguente problema: Immaginiamo di chiudere una coppia di conigli in un recinto. Sappiamo che ogni coppia di conigli:
- inizia a generare dal secondo mese di età;
- genera una nuova coppia ogni mese;
- non muore mai.
Quanti conigli ci saranno nel recinto dopo un anno?
La successione di Fibonacci fornisce il numero di conigli al tempo n
in funzione del numero di conigli nei due mesi precedenti n-1
ed n-2
,
Fib(0) = 1 Fib(1) = 1 Fib (n) = Fib(n-1) + Fib(n-2) se n > 1
Scrivere un programma C che legge in ingresso un numero intero positivo X e calcola i numeri di Fibonacci da 1 ad X stampandoli sullo standard output.
Elaborazione: Provate ad utilizzare la funzione sleep(1) per attendere un secondo fra la generazione di un numero e del successivo. Per ottenere informazioni sulla funzione utilizzate
man 3 sleep
visto che la sezione 3 dei manuali in linea contiene informazioni su tutte le funzioni di libreria standard C.
Esercizio 4: Massimo Comun Divisore con divisioni successive
Scrivere un programma C che
- legge da standard input x ed y
- calcola MCD(x,y) utilizzando il metodo delle divisioni successive (pag 80 lucidi sui costrutti di controllo)
- stampa il risultato sullo standard output
Esercizio 5: Massimo Comun Divisore con il metodo di Euclide con i resti
Scrivere un programma C che
- legge da standard input x ed y
- calcola MCD(x,y) utilizzando il metodo delle divisioni successive (pag 94 e seguenti lucidi sui costrutti di controllo)
- stampa il risultato sullo standard output
Utilizzare il comando time
per valutare il tempo impiegato per calcolare MCD(m,n)
con m=10000000,n=9457831
con l'algoritmo di Euclide e con l'algoritmo implementato nell'Esercizio 4.
Per evitare di misurare i tempi di attesa dell'input dallo schermo assegnare direttamente i valori alle variabili all'inizio del main e compilare.
Supponendo il nome degli eseguibili sia euclide1
ed euclide2
basta invocare
shell$ time ./euclide1
e
shell$ time ./euclide2
per ottenere il tempo impiegato effettuando operazioni dentro il sistema operativo e fuori. Confrontare i tempi ottenuti con le due implementazioni ed analizzare i risultati.
Esercizio 6: Approssimazione dell'integrale
Consideriamo la funzione
f(x) = 5x^3 + 4x^2 + 7x + 5:
Si vuole calcolare l'integrale di f(x)
su un intervallo [a, b]
dividendo l'intervallo
in n intervalli di lunghezza (b-a)/n e calcolando l'integrale come somma dell'area di n trapezi, come spiegato in questo documento.
Il programma chiede all'utente due reali positivi a
e b
e un intero positivo
nmax
numero di intervalli in cui suddividere l'intervallo [a, b]
. Il pro-
gramma deve calcolare le approssimazioni dell' integrale di f(x)
ottenute con
il procedimento dei trapezio per n = 2, 3, 4,…nmax
. Stampando su standard output i valori ottenuti.