Simonotti Graziano Pasquale
Informatica
ALGORITMI
Problema
Dato un numero intero A positivo non nullo si stampino tutti i valori da A a zero.
Soluzione
Il problema assegnato corrisponde ad un conto alla rovescia. Rispondendo alle seguenti
domande costruisci l’algoritmo.
D. Qual è il numero di partenza?
R. A
D. Come si esegue il conto alla rovescia?
R. Sottraendo 1 dal numero A e stampando i risultati parziali ottenuti.
D. Per quante volte devo ripetere la sottrazione?
R. Fino a quando non ottengo il valore zero.
Algoritmo:
Inizio
Inserisci A (inserisco il valore di partenza)
Ripeti (inizio il conto alla rovescia)
Stampa A
A=A-1 (tolgo 1 da A e memorizzo il risultato parziale)
Fino a quando A=0 (impongo la condizione di uscita)
Fine
In realtà questo algoritmo è incompleto perché non verifica che a sia positivo non nullo.
Non ci sono metodi semplici per verificare che il numero sia intero. Mi limito quindi a
completare l’algoritmo controllando pa positività.
D. Quale formula italiana si usa per indicare una scelta tra due percorsi possibili?
R. si usa la formula “se condizione allora compio azione 1 altrimenti compio azione 2.
Algoritmo
Inizio
Inserisci A
Se A>0 allora (verifico che A sia positivo non nullo)
(quando la risposta alla domanda è A>0 è si compio le seguenti istruzioni)
Ripeti (inizio il conto alla rovescia)
Stampa A
A=A-1 (tolgo 1 da A e memorizzo il risultato parziale)
Fino a quando A=0 (impongo la condizione di uscita)
Altrimenti
(quando la risposta alla domanda è A>0 è no compio la seguente istruzione)
Stampa “valore non corretto”
Fine
Problema
Dato un numero reale si vuole separare la parte intera da quella decimale.
Soluzione
Il modo migliore per risolvere la maggior parte dei problemi consiste nel crearsi degli
esempi. Dato, per esempio 56,67 il programma dovrà dovrà stampare parte intera 56 parte
decimale 67.
Classe II Algoritmi Laboratorio
1
Simonotti Graziano Pasquale
Informatica
Per ipotesi suppongo che il numero abbia al massimo 6 cifre decimali. Per separare la
parte intera da quella decimale uso la funzione int che toglie automaticamente la parte
decimale.
Inizio
Inserisci N
Pintera=int(N) (memorizzo la parte intera usando la funzione int)
Appoggio=N-Pintera (uso una variabile di appoggio per calcolare la parte decimale)
Pdecimale=appoggio*100000 (calcolo la parte decimale)
Stampa Parte intera=Pintera
Stampa Parte decimale=Pdecimale
Fine
Attenzione
Osserva bene l’esecuzione
Istruzione
Inserisci N
Pintera=Int(N)
Appoggio=N-Pintera
Pdecimale=appoggio*1000000
Stampa parte intera=Pintera
Stamapa parte
decimale=Pdecimale
Valore iniziale
37,5798
Pintera=Int(37.5798)
Appoggio=37.5798-57
Pdecimale=0.5798*100000
Risultato
37.5798
37
0.5798
579800
Parte intera=37
Parte decimale=579800
Avendo previsto 6 cifre decimali la parte terminale sarà completata con degli zeri.
Ovviamente gli zeri nella parte decimale non sono considerati.
Questo algoritmo non considera il caso in cui nella parte decimale vi siano degli zeri
iniziali. (esempio 5.003)
Problema
Dati 10 numeri reali calcolare la loro media aritmetica.
Soluzione
(Vedi esercizio 1)
Inizio
Conta=0
Somma=0
Ripeti
Inserisci N
Conta=conta+1
Somma=somma+N
Fino a quando conta=10
Media=somma/10
Stampa media
Fine
Attenzione:
per capire l’algoritmo bisogna avere la pazienza di eseguirlo passo dopo passo (istruzione
dopo istruzione) senza barare.
Classe II Algoritmi Laboratorio
2