MCD divisioni successive (scuola media)

Da Wikiversità, l'apprendimento libero.
lezione
lezione
MCD divisioni successive (scuola media)
Tipo di risorsa Tipo: lezione
Materia di appartenenza Materia: Informatica per la scuola media 1
Avanzamento Avanzamento: lezione completa al 100%

MCD divisioni successive (scuola media)[modifica]

Calcolare il Massimo Comun divisore tra due numeri usando il metodo delle divisioni successive. Si può fruire di questo tutorial in forma di mappa mentale su wiki2map

Versione di Scratch utilizzata[modifica]

La versione di scratch usata in questo progetto è scratch 3.0 online.


Cosa richiede l'esercizio[modifica]

Forniti i due numeri, prima quello più grande e poi quello più piccolo, scratch con un ciclo il programma calcola il MCD.

Ripetere divisioni fino a trovare il MCD[modifica]

Per chi non ama leggere: Filmato audio Matteo Ruffoni, MCD con divisioni successive, su YouTube, 31 gen 2020.
La velocità di calcolo del PCVK permette di eseguire molti calcoli in poco tempo. Questa caratteristica è proprio quella che fa al caso nostro visto che per calcolare il MCD si devono ripetere delle divisioni fino ad ottenere quella che avrà resto uguale a zero.
Il metodo delle divisioni successive si può spiegare grazie alla osservazione che segue. Un divisore comune di due numeri è anche divisore del resto della divisione del più grande per il più piccolo dei due infatti, passando ad un esempio se è un divisore comune di e poiché

e quindi , allora è anche sicuramente un divisore del che è il resto.
Scritto su una sola riga mettendo in evidenza il fattore

Applicando questa proprietà di tutti i divisori comuni al MCD possiamo quindi affermare che il MCD di due numeri è uguale al MCD del più piccolo dei due e del resto della divisione del più grande con il più piccolo, che continuando a seguire l'esempio numerico:
.
Possiamo quindi ripetere le divisioni fino a che il resto non diventi 0, e quindi il numero più piccolo, essendo divisore del più grande, diventa il MCD.
Da e da ricaviamo che
.
concludendo

Variabili[modifica]

Per questo progetto useremo uno stage molto scarno, nulla vieta a chi lo remixa di arricchire le funzioni di base con un output più prolisso. Le variabili necessarie (input) al funzionamento sono quattro NumeroGrande, NumeroPiccolo, MCD e il Resto, resto della divisione tra il numero grande e il numero piccolo che sostituisce il numero piccolo dopo che è stato messo al posto del grande. L'output sarà visibile nella variabile MCD che alla fine dell'esecuzione assumerà il valore di NumeroPiccolo.

Istruzioni Immagini
NumeroGrande, NumerPiccolo, MCD e Resto

NumeroGrandePiccoloMCD
scratch bock


Input e Valori iniziali[modifica]

Clikkata la bandiera verde, il Gatto ci chiederà di inserire NumeroGrande ed NumeroPiccolo, è opportuno che NumeroGrande sia più grande di NumeroPiccolo, ovviamente si può migliorare il programma inserendo dei controlli per eventuali errori.

Sprite Blocchi codice Istruzioni
scratch bock Il valore iniziale del Resto viene posto uguale a 0, non è necessario ma rende il progetto un po' più ordinato.
AskSetNumeroGrandePiccolo NumeroGrande e NumeroPiccolo vengono richiesti e salvati nelle variabili.


Il ciclo repeat until[modifica]

Questo ciclo si occupa di controllare il resto della divisione NumeroGrande diviso NumeroPiccolo. Finché il resto sarà un numero diverso da zero nel ciclo il NumeroGrande verrà sostituito dal NumeroPiccolo e si passerà a riprovare la divisione. La divisione che ha resto uguale a zero interrompe il ciclo ed il NumeroPiccolo è il MCD cercato.

Sprite Blocchi codice Istruzioni
scratch bock Il ciclo repeat che si ripete finché non si realizza la condizione Resto uguale a 0.
NumeroGrandeModNumeroPiccolo La condizione Resto maggiore di 0, corrisponde all'operazione (NumeroGrande mod NumeroPiccolo) > 0, in italiano (resto della divisione di NumeroGrande diviso NumeroPiccolo) > 0.[1]
scratch bock La prima istruzione del ciclo pone il Resto uguale al resto della divisione NumeroGrande diviso NumeroPiccolo.
scratch block Questa istruzione sostituisce al NumeroGrande il NumeroPiccolo
scratch block Ed infine rispettando l'ordine al NumeroPiccolo viene sostituito il Resto, il prossimo ciclo si ripeterà con numeri più bassi.
RepeatUntilNGmodNPUguale0SetNGNPNPResto Il ciclo repeat montato, attenzione all'ordine!

Output MCD[modifica]

Appena la il calcolo del resto, operazione che possiamo chiamare a questo punto modulo, la prima coppia di valori che fa si che NumeroGrande modulo NumeroPiccolo = 0 interrompe il ciclo ed il NumeroPiccolo, essendo un divisore del grande, corrisponde al MCD, che per le considerazioni precedenti, è il MCD dei due numeri iniziali. quindi si pone MCD = NumeroPiccolo, ed il nostro programma è completato.

Sprite Blocchi codice Istruzioni
SetMCDtoNP Output finale.

Codice completo MCD con divisioni successive[modifica]

Con questo codice il MCD viene restituito nella casella MCD, mentre nelle altre caselle presenti sullo schermo i numeri diventano quelli della divisione NumeroGrande diviso NumeroPiccolo che produce Resto uguale a zero. Si possono aggiungere le variabili ed i blocchi necessari per avere un output dal gatto più comprensibile.

Sprite Blocchi codice Istruzioni
MCDDivisioniSuccessiveCode Codice completo del progetto.

Schema progetto da montare[modifica]

A questo link https://scratch.mit.edu/projects/363725183/ si trova il progetto scratch smontato va remixato e montato nella sequenza corretta.

Note[modifica]

  1. Divisioni con il resto

Bibliografia[modifica]

  • Guida all’uso di Scratch Versione Studenti; Alberto Barbero, Marco Marchisotti, Alberto Davì; Associazione Dschola, Iniziativa realizzata nell’ambito del progetto Diderot della Fondazione CRT, 2014

Collegamenti esterni[modifica]