Correzione Flow Chart Numeri Compresi Millucci
-
Upload
silvano-natalizi-itis-alessandro-volta-perugia -
Category
Education
-
view
1.218 -
download
0
description
Transcript of Correzione Flow Chart Numeri Compresi Millucci
Seconda correzione del flowchart: numeri interi
compresi in un intervallo
Welcome, students!
Il testo del problema Stampare tutti i
numeri interi compresi in un intervallo delimitato da due numeri.
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
Soluzione di uno studente
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.
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 ?
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 ?
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 !
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
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
Scrittura della correzione Introduciamo due nuove
variabili massimo e minimo Se (numeroA>numeroB) è
vero massimo=numeroA, minimo=numeroB, altrimenti massimo=numeroB, minimo=numeroA
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
Floachart modificato e corretto
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 ?
Let’s Have a Great Year!