Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Esercizio Sugli Algoritmi

11,428 views

Published on

esercizio algoritmo con iterazione e selezione

  • Be the first to like this

Esercizio Sugli Algoritmi

  1. 1. Esercizio sugli algoritmi Esercizio proposto alla classe IIIA liceo tecnico il 12 novembre 2008
  2. 2. Enunciato del problema <ul><li>Si vuole stampare il nome delle città il cui numero di abitanti sia compreso tra 10.000 e 100.000 </li></ul><ul><li>Queste informazioni sono su di una lista cartacea sottoforma di tabella </li></ul>Città Numero Abitanti Perugia 170000 Pisa 90000 Milano 3000000 Roma 4000000 Firenze 400000 Lucca 85000 Torgiano 6000 Marsciano 17000 Magione 12300
  3. 3. Ragionamento mentale <ul><li>Esaminiamo per ogni città il numero dei suoi abitanti </li></ul><ul><li>Se questo numero risulta compreso tra 10000 e 100000 </li></ul><ul><li>scriviamo il nome di questa città ed il numero dei suoi abitanti </li></ul><ul><li>Ripetiamo le istruzioni ricominciando dalla prima attività finchè non abbiamo esaurito tutte le righe della lista. </li></ul>
  4. 4. Gli elementi del ragionamento dal punto di vista del computer <ul><li>Leggiamo una alla volta le righe della lista </li></ul><ul><li>Quindi ci occorrono due celle di memoria (due variabili), una per memorizzare il nome della città ed un’altra per memorizzare il suo numero di abitanti </li></ul><ul><ul><li>Città </li></ul></ul><ul><ul><li>Abitanti </li></ul></ul><ul><li>Ci occorrono quindi due istruzioni di lettura ossia di input </li></ul><ul><li>Ci dobbiamo porre due domande sul numero degli abitanti </li></ul><ul><ul><li>abitanti maggiore di 10000 ? </li></ul></ul><ul><ul><li>abitanti minori di 100000 ? </li></ul></ul><ul><li>Ci occorrono quindi due costrutti di alternativa </li></ul><ul><li>Quando la risposta è positiva ad entrambe le domande stampiamo il nome della città ed il numero dei suoi abitanti </li></ul><ul><ul><li>Istruzione di output </li></ul></ul><ul><li>In tutti i casi ripetiamo questa sequenza di istruzioni finchè ci sono città da esaminare </li></ul><ul><li>Pertanto c’è un costrutto di iterazione </li></ul>
  5. 5. Primo tentativo di soluzione <ul><li>Questa soluzione correttamente legge esamina gli abitanti di una città per verificare se sono soddisfatte le due condizioni richieste dal problema e quando la risposta è positiva stampa i dati richiesti. </li></ul><ul><li>Tuttavia c’è un errore grave. Appena si trova la prima città che soddisfa le condizioni e la si stampa si finisce anche il lavoro. </li></ul><ul><li>Invece bisogna ripetere ancora le istruzioni per esaminare le altre città </li></ul><ul><li>Con questa soluzione si stampa solo la prima città con il numero di abitanti compreso tra diecimila e centomila. </li></ul><ul><li>Vediamo la correzione di questo errore </li></ul>
  6. 6. Secondo tentativo di soluzione <ul><li>Con questa soluzione si risolve il problema precedente, ma… </li></ul><ul><li>E’ vero che adesso c’è la giusta ripetizione delle istruzioni per poter esaminare tutte le città, tuttavia manca la fine ! </li></ul><ul><li>Manca un meccanismo che consenta l’uscita dalla iterazione. </li></ul><ul><li>Come si risolve questo ulteriore problema ? </li></ul>
  7. 7. Terzo tentativo di soluzione <ul><li>Adesso la soluzione può anche andare da un punto di vista logico. </li></ul><ul><li>Abbiamo l’iterazione ed anche un meccanismo che ci consente di uscire da essa. </li></ul><ul><li>Tuttavia la domanda “hai esaminato tutte le città dell’elenco” non è comprensibile da parte del computer. </li></ul><ul><li>Il computer può fare operazioni aritmetiche e operazioni logiche di confronto tra due variabili </li></ul>
  8. 8. Quante volte devo ripetere l’esame delle città <ul><li>Se ho un elenco e conosco il numero R delle sue righe, questo numero mi dice quante volte devo ripetere il blocco di istruzioni che esaminano gli abitanti di una città </li></ul><ul><li>Pertanto ogni qual volta eseguo questo blocco di istruzioni posso incrementare un contatore di uno e confrontare il suo valore con quello R delle righe dell’elenco. </li></ul><ul><li>Finchè il valore del contatore sarà inferiore a R ripeterò il lavoro altrimenti uscirò dall’iterazione! </li></ul>
  9. 9. Soluzione finale <ul><li>Questa soluzione è quella migliore per motivi ancora da spiegare. </li></ul><ul><li>Per il momento diciamo semplicemente che il flowchart si presta ad essere tradotto nella programmazione strutturata </li></ul><ul><li>Comunque si vede anche ad occhio che questo disegno è più comprensibile del precedente </li></ul>
  10. 10. Fine di questo esercizio

×