Esercizi: L'istruzione while
Esercizi
I seguente esercizi sono, in linea di massima, di difficoltà crescente dal primo all'ultimo. Gli esercizi dal 6 all'8 anticipano alcuni argomenti delle prossime lezioni.
Esercizio 1
Dato un numero intero n, si chiama fattoriale di n il prodotto dei numeri da 1 fino ad n. Ad esempio, il fattoriale di 4 è 1 * 2 * 3 * 4 = 24. Scrivere un programma che prende in input un numero intero e ne calcola e visualizza il fattoriale.
Suggerimento: è sufficiente modificare leggermente il programma che calcola la somma dei numeri da 1 a n visto a lezione, e che potete scaricare dal FAD.
Esercizio 2
Modifica il programma del fattoriale dell'esercizio precedente in modo tale da accettare come input solo numeri positivi. Ogni volta che l'utente immette un numero negativo, il programma chiede di reinserire il dato. Ad esempio, una possibile interazione con il programma può essere la seguente (in grassetto ciò che è immesso dall'utente):
Inserisci un numero positivo: -2
Il numero deve essere positivo.
Inserisci un numero positivo: -10
Il numero deve essere positivo.
Inserisci un numero positivo: 4
Il fattoriale di 4 è 24.
Suggerimento. Un esercizio simile è stato già svolto in una delle ultime lezioni di Programmazione e Algoritmi 1. Si tratta solo di riadattarlo al problema del calcolo del fattoriale.
Esercizio 3
Scrivere un programma che prende in input un numero intero n e visualizza la seguente figura realizzata con gli asterischi:
*
**
***
****
***
**
*
Il picco centrale deve avere n asterischi (qui in figura si suppone l'utente abbia inserito il numero 4).
Suggerimento. Conviene impostare il programma in modo che ci sia una prima parte che visualizza la prima metà delle righe (quelle dove il numero di asterischi aumentano) e una seconda parte con la seconda metà delle righe (dove gli asterischi diminuiscono).
Esercizio 4
Scrivere un programma che prende in input un numero x maggiore o uguale a 1 (non c'è bisogno di controllare che l'utente immette un valore corretto, vi potete fidare di lui) e stampa la parte intera del logaritmo in base 2 di x, senza usare nessuna funzione del modulo math. Per far ciò, è sufficiente dividere x per 2 ripetutamente fino a che il numero ottenuto è strettamente minore di 2. Il numero di volte che avete fatto la divisione è il risultato che cercate.
Ad esempio, se x=7.5, dividendo per 2 ottenete 3.75, quindi dividendo ancora si ottiene 1.875 che è minore di 2. Poiché abbiamo effettuato due divisioni, il risultato da stampare è 2.
Esercizio 5
Scrivere un programma che usa la libreria ezgraphics che prende in input un numero intero positivo n e visualizza sullo schermo n rettangoli uno dentro l'altro. Ad esempio, se l'utente immette il numero 5, questo potrebbe essere l'output grafico del programma.

Suggerimento: serve ovviamente un ciclo while. Nel ciclo, oltre ad una variabile che svolge il ruolo di contatore, utilizzate altre 4 variabili contenenti le coordinate x, y del punto in alto a sinistra del rettangolo, la larghezza e l'altezza dello stesso. Queste variabili sono inizializzate fuori dal while con i valori adatta al rettangolo più interno, e vengono modificate ad ogni ciclo (le coordinate x, y vanno decrementate per spostare il punto di partenza verso alto a sinistra, la larghezza e l'altezza vanno incrementate).
Esercizio 6
Scrivere un programma che prende in input un numero intero positivo n e determina se n è primo.
Suggerimento: per determinare se n è primo, sebbene non sia molto efficiente, basta controllare che non è divisibile per nessuno dei numeri da 2 ad n-1.
Esercizio 7
Scrivere un programma che accetta in input una sequenza di numeri e, alla fine, ne visualizza la somma. Dopo ogni numero, il programma chiede se l'utente vuole inserire un altro numero oppure no, e si comporta di conseguenza. Ad esempio, una possibile interazione con il programma può essere la seguente (in grassetto ciò che è immesso dall'utente):
Inserisci un numero: 10
Vuoi inserire un altro numero? (S / N): S
Inserisci un numero: 5
Vuoi inserire un altro numero? (S / N): S
Inserisci un numero: 5
Vuoi inserire un altro numero? (S / N): N
La somma dei numeri inseriti è 20.
Esercizio 8
Modificare il programma precedente per visualizzare il massimo dei numeri inseriti invece della somma. Fare attenzione al fatto che il programma deve funzionare anche quando i numeri immessi sono negativi.
Esercizio 9 (difficile)
Scrivete un programma che prende in input un numero intero positivo n e stampa Fn, ovvero l'n-esimo numero di Fibonacci. La successione di Fibonacci si ottiene partendo dai numeri 0 e 1, ed ogni termine successivo è la somma dei due che lo precedono. Esempio: 0, 1, 1, 2, 3, 5, 8, ... Fn è il n-esimo numero in questa successione (iniziando a contare da 0). Ad esempio, se l'input è 6 l'output sarà 8.