Correzione Flow Chart Numeri Compresi Millucci

15
Seconda correzione del flowchart: numeri interi compresi in un intervallo Welcome, students!

description

correzione flowchart student algoritmo scrivi tutti i numeri interi compresi in un intervallo

Transcript of Correzione Flow Chart Numeri Compresi Millucci

Page 1: Correzione Flow Chart Numeri Compresi Millucci

Seconda correzione del flowchart: numeri interi

compresi in un intervallo

Welcome, students!

Page 2: Correzione Flow Chart Numeri Compresi Millucci

Il testo del problema Stampare tutti i

numeri interi compresi in un intervallo delimitato da due numeri.

Page 3: Correzione Flow Chart Numeri Compresi Millucci

Metodo di lavoro Prendo una soluzione di uno studente Analizzo questa soluzione per vedere quale

è stato il ragionamento Razionalizzo il ragionamento fatto,

semplificandolo Correggo eventuali errori tecnici ed

architetturali

Page 4: Correzione Flow Chart Numeri Compresi Millucci

Soluzione di uno studente

Page 5: Correzione Flow Chart Numeri Compresi Millucci

Analisi del flowchart La struttura di selezione

(numeroA>numeroB) è complicata. Una buona regola da seguire è quella di far si che i due percorsi emergenti da una selezione si ricongiungano dopo un breve percorso.

Page 6: Correzione Flow Chart Numeri Compresi Millucci

Rendiamo soft le spigolosità della nostra mente

(arrotondiamo gli spigoli)

Per tenere la materia cerebrale sotto controllo, semplifichiamo il prodotto grezzo, raffiniamolo. Che cosa possiamo raffinare in questo

caso ?

Page 7: Correzione Flow Chart Numeri Compresi Millucci

Reading

Leggendo attentamente il flowchart, ci accorgiamo che i due rami emergenti dalla selezione sono assolutamente identici.

Per quale motivo lo studente ha duplicato le istruzioni ?

Page 8: Correzione Flow Chart Numeri Compresi Millucci

La logica della soluzione dello studente Bisogna capire la logica della sua soluzione. In un ramo del percorso entra quando a>b è

vero, inizializza una variabile intera n, a partire dal massimo a, e la stampa, poi la decrementa di uno, verifica che sia ancora maggiore di b, stampa e ripete mentre la condizione n<b è falsa.

Nell’altro ramo del percorso entra quando a>b è falso, inizializza una variabile intera n a partire dal minimo a, e la stampa, poi la incrementa di uno, verifica che non sia ancora minore di a, stampa e ripete mentre la condizione n<a è falsa.

In realtà lo studente ha commesso un errore tecnico perchè ha inizializzato dal valore massimo b e poi ha incrementato, inoltre la condizione [(n>a) per vero] per uscire dall’iterazione è errata !

Page 9: Correzione Flow Chart Numeri Compresi Millucci

Per quale motivo ha duplicato le istruzioni nei due percorsi della

selezione ?

Dalla logica della sua soluzione scaturisce il motivo del perchè ha duplicato le istruzioni nei due rami della selezione

Per avere la differenza tra numeroA e numeroB sempre positiva

Perchè nel primo caso l’estremo superiore dell’intervallo è numeroA e nel secondo numeroB

Page 10: Correzione Flow Chart Numeri Compresi Millucci

Differenze tra le istruzioni nei due rami della selezione Le differenze nelle istruzioni

dei due percorsi stanno nei nomi a,b

Nei due diversi rami della selezione I loro ruoli sono scambiati

Page 11: Correzione Flow Chart Numeri Compresi Millucci

Scrittura della correzione Introduciamo due nuove

variabili massimo e minimo Se (numeroA>numeroB) è

vero massimo=numeroA, minimo=numeroB, altrimenti massimo=numeroB, minimo=numeroA

Page 12: Correzione Flow Chart Numeri Compresi Millucci

Eliminiamo la duplicazione del codice

Introduciamo due nuove variabili massimo e minimo

Se (numeroA>numeroB) è vero massimo=numeroA, minimo=numeroB, altrimenti massimo=numeroB, minimo=numeroA

Page 13: Correzione Flow Chart Numeri Compresi Millucci

Floachart modificato e corretto

Page 14: Correzione Flow Chart Numeri Compresi Millucci

Osservazione finale Ho tolto la selezione a=b. E’

superflua. Infatti nel caso in cui a>b è falso è incluso anche il caso a=b.

Quando a=b comunque va fatta la stampa dell’unico numero compreso n=a=b.

I realtà il flowchart corretto non è perfetto, in questo caso a=b stampo il minimo due volte.

Poi se a e b non sono numero interi ?

Page 15: Correzione Flow Chart Numeri Compresi Millucci

Let’s Have a Great Year!