Eserciziosuglialgoritmi Max

30
Trovare il numero più grande Lezione del 26 novembre 2008 Prof. Silvano Natalizi

description

come si determina il flowchart per trovare il max di più numeri

Transcript of Eserciziosuglialgoritmi Max

Page 1: Eserciziosuglialgoritmi Max

Trovare il numero più grandeLezione del 26 novembre 2008

Prof. Silvano Natalizi

Page 2: Eserciziosuglialgoritmi Max

Risolvere il seguente problema

trovare il numero massimo tra una lista di numeri interi e positivi.

Page 3: Eserciziosuglialgoritmi Max

Ragionamento mentale intuitivoConfronto i numeri tra di essi.Il confronto è un’operazione di disuguaglianza

(maggiore o minore).Da questa operazione di confronto stabilisco quale è il

maggiore.Quando faccio il confronto vedo (proprio con la vista)

simultaneamente molti numeri e quindi scelgo il maggiore tra di essi, gli altri li scarto perché già li ho usati.

Continuo a confrontare il numero massimo precedentemente scelto con i numeri rimanenti.

Nuovamente, servendomi della vista e dell’operazione di disuguaglianza scelgo il numero più grande

Quando ho esaminato tutti i numeri dati, ho la risposta al problema, ossia il numero più grande selezionato.

Page 4: Eserciziosuglialgoritmi Max

Lista di numeriHo una lista di numeri

Per determinare il numero più grande, ne prendo un po’ alla volta e…

1334651138020

Page 5: Eserciziosuglialgoritmi Max

Confronto i numeriScelgo il più grande tra quelli che vedo

40100

13

45133465

Page 6: Eserciziosuglialgoritmi Max

Scelgo il numero più grandeIn questo caso focalizzo l’attenzione sul

numero 100 che è il maggiore, gli altri tre numeri li posso togliere

133465

100

Page 7: Eserciziosuglialgoritmi Max

Confronto il numero più grande con gli altri numeriGuardo i numeri rimanenti e li confronto con il

numero 100, maggiore tra i numeri precedenti:

Si vede che il numero maggiore è 200!

100

25 80

200120

Page 8: Eserciziosuglialgoritmi Max

Dobbiamo trasformare il precedente ragionamento mentale per adattarlo al computer invece di confrontare tante cose insieme, ne

confrontiamo solo due alla volta. Scopro il primo numero.

Dal momento che è il primo non posso confrontarlo con nessun numero precedente, pertanto assumo che sia il maggiore.

3465113804013 100

Page 9: Eserciziosuglialgoritmi Max

Continuo a confrontare il numero scelto come maggiore con un altro numero della lista Scopro il successivo numero e lo confronto

con il numero maggiore

Scelgo il numero maggiore tra i due e non mi interesso più di quello minore

3465113804013

100

Page 10: Eserciziosuglialgoritmi Max

Continuo a confrontare il numero scelto come maggiore con un altro numero della listaConfronto il numero maggiore con il

successivo numero della lista

Scelgo il maggiore dei due e scarto il minore

346511345

40

100

Page 11: Eserciziosuglialgoritmi Max

Continuo a confrontare il numero scelto come maggiore con un altro numero della listaConfronto il numero maggiore con il

successivo numero della lista

Scelgo il maggiore dei due e scarto il minore

3465125

45

100

Page 12: Eserciziosuglialgoritmi Max

Continuo a confrontare il numero scelto come maggiore con un altro numero della listaConfronto il numero maggiore con il

successivo numero della lista

Scelgo il maggiore dei due e scarto il minore

346580

25

100

Page 13: Eserciziosuglialgoritmi Max

Continuo a confrontare il numero scelto come maggiore con un altro numero della listaConfronto il numero maggiore con il

successivo numero della lista

Scelgo il maggiore dei due e scarto il minore

65120

80

100

Page 14: Eserciziosuglialgoritmi Max

Continuo a confrontare il numero scelto come maggiore con un altro numero della listaConfronto il numero maggiore con il

successivo numero della lista

Scelgo il maggiore dei due e scarto il minore

200

120

100

Page 15: Eserciziosuglialgoritmi Max

Continuo a confrontare il numero scelto come maggiore con un altro numero della listaConfronto il numero maggiore con il

successivo numero della lista

Scelgo il maggiore dei due e scarto il minore

200

120

Page 16: Eserciziosuglialgoritmi Max

Non ci sono altri numeri della lista per cui ho terminato il lavoro di confronto tra i numeri. L’unico numero rimasto è il numero

maggiore 200

Questo numero è il risultato del problema.

200

Page 17: Eserciziosuglialgoritmi Max

Le variabiliDal momento che confronto due cose tra di

loro, per far fare questo lavoro al computer ho bisogno di due celle di memoria, ossia di due variabili

Nella prima variabile memorizzo il numero correntemente letto

Nella seconda variabile memorizzo la scelta del numero maggiore

Page 18: Eserciziosuglialgoritmi Max

I nomi delle variabiliOgni variabile deve avere un tipo datoOgni variabile deve avere un nomeIn questo caso le due variabili sono

entrambre di tipo int (numero intero)I nomi sono una scelta del programmatorechiamiamo

numero (il numero correntemente letto)massimo (il numero scelto massimo)

Page 19: Eserciziosuglialgoritmi Max

L’operazione di confrontoL’operazione di confronto la facciamo tra le

due variabili precedentemente definite (numero, massimo)

numero>massimo

Page 20: Eserciziosuglialgoritmi Max

Che cosa dobbiamo fare ?Se (numero>massimo) è vero, il numero corrente

è maggiore del numero massimo (massimo tra tutti quelli precedentemente letti); pertanto devo sostituire il valore di massimo con il nuovo numero

Eseguo questa sostituzione assegnando numero a massimo con l’operatore =

numero>massimo

V

massimo=numero

Page 21: Eserciziosuglialgoritmi Max

Il lavoro precedente va ripetuto tante volte per quanti sono i numeri della lista“L’operazione di confronto e quando la sua

condizione è verificata l’assegnazione del numero corrente al massimo “ va ripetuta tante volte per quanti sono i numeri della lista

Occorre pertanto una struttura di controllo iterativa di tipo numerata.

Page 22: Eserciziosuglialgoritmi Max

La prima cosa da disegnare è la struttura iterativa numerataIl disegno della struttura iterativa non è una

difficoltà di natura concettuale, perché tutte le strutture di controllo sono dei componenti standard.

L’iterazione numerata ha come elementi:Un tipo: crescente o decrescenteUna variabile di controlloUn valore inizialeUn valore finaleUn incremento

Page 23: Eserciziosuglialgoritmi Max

La struttura di controllo iterativa numerata

Page 24: Eserciziosuglialgoritmi Max

La struttura di selezione all’interno dell’iterazione

Page 25: Eserciziosuglialgoritmi Max

Prima della selezione devo inserire la lettura del numero

Page 26: Eserciziosuglialgoritmi Max

Infine azzeriamo la variabile “massimo” prima dell’iterazione

Page 27: Eserciziosuglialgoritmi Max

Osservazione finale Nella prima iterazione

confrontiamo il primo numero con il valore zero di massimo

Questo algoritmo funziona se i numeri sono maggiori di zero.

Se avessimo numeri anche negativi dovremmo modificare la parte iniziale del flowchart: Leggiamo il primo numero

con l’istruzione di “leggi numero” inserita prima dell’iterazione

e come seconda istruzione assegniamo a massimo numero, sempre prima di entrare nell’iterazione

Page 28: Eserciziosuglialgoritmi Max

Per stampare il risultato inserisco la stampa dopo l’iterazione

Page 29: Eserciziosuglialgoritmi Max

Ultimo aggiustamentoNel precedente flowchart ho effettuato

l’operazione di lettura dei numeri 9 volte ! Una prima della iterazione, 8 volte dentro l’iterazione. Se i numero sono 8, ho commesso un errore.

Per correggere l’errore è sufficiente modificare la condizione di controllo dell’iterazione da i<=8 a i<8.

Page 30: Eserciziosuglialgoritmi Max