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