Fondamenti di Informatica: esercitazione di laboratorio n. 2 Variabili, espressioni, operatori, overflow, funzioni
Pier Luca Montessoro
1. Controllo dati di ingresso
Si scriva un programma che legga N numeri compresi tra -50 e +50, estremi compresi, e ne calcoli la media.
Se l’utente inserisce un numero non compreso nell’intervallo, il programma deve segnalare l’errore e chiedere di nuovo l’inserimento.
SUGGERIMENTO: si scriva una funzione di lettura del numero che controllo la validità del numero inserito e, se non valido, ne chieda di nuovo l’inserimento.
2. Overflow
Come visto, il calcolo del fattoriale genera ben rapidamente overflow. Si riscriva la funzione fattoriale utilizzando come tipo di dato il long long int (intero su 64 bit).
NOTA: per la stampa di un valore di tipo
long long int è necessario utilizzare il codice di formato %lld.
Qual è il primo valore che genera overflow?
3. Spinta di Archimede
Si scriva un programma che legga da tastiera il raggio di una sfera e calcoli la spinta di Archimede che essa riceve quando viene immersa
(completamente) in acqua. Per questo programma si scriva (o si riutilizzi, se già scritta) una funzione per il calcolo del volume di una sfera.
4. sin(x)
Basandosi sul diagramma di flusso visto a lezione, si scriva un programma che calcoli lo sviluppo in serie della funzione sin(x), dove x e la precisione richiesta vengono letti da tastiera.
5. Giorni dell’anno
Si utilizzino le funzioni scritte per l’esercizio
“checkdate” (controllo della correttezza di una data) per realizzare la funzione
int numero_da_inizio_anno (int giorno, in mese, int anno) che riceve come
parametro di ingresso una data e restituisce il numero d’ordine di tale giorno nell’anno (es. 1 gennaio 1, 2 febbraio 33, ecc.).
SUGGERIMENTO: l’algoritmo può essere espresso come segue:
NOTA: "giorno", "mese" e "anno"
rappresentano la data di cui si vuole calcolare il numero d’ordine
numero giorni <- 0 mese corrente <- 1
while (mese corrente < mese) {
numero giorni <-
numero giorni +
giorni del mese corrente passa al mese successivo
(cioè incrementa mese corrente) }
numero giorni <- numero giorni + giorno
Osservazione: nell’algoritmo non compare
“anno”. Perché?
6. Data precedente
Sulla base di quanto fatto a lezione, si scriva una funzione che calcola la data precedente a quella passata come argomeno.