# Divisioni con il resto (scuola media)
## Divisione con il resto (scuola media)

Calcolatrice per fare le divisioni con il resto

## Versione di Scratch utilizzata

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

## Cosa richiede l'esercizio

Creare una calcolatrice che faccia le divisioni con il resto. Dati due numeri: dividendo e divisore, la calcolatrice svolge la divisione del primo per il secondo restituendo il quoziente ed il resto. Giusto per ricordare come funziona la divisione:
$dividendo\ :\ divisore\ =\ quoziente$ con $\ resto\ =\ dividendo\ -\ quoziente\ \cdot \ divisore$
e quindi
$dividendo\ =\ quoziente\ \cdot \ divisore\ +\ resto$

## Come funziona una divisione con il resto
### La regola imparata a scuola

La regola, l'algoritmo$^{VK}$, per fare le divisioni con il resto$^{VK}$ lo si impara a scuola, anche se, dopo l'avvento delle calcolatrici$^{VK}$, lo si dimentica piuttosto velocemente.
Giusto per ricordarla metto qui sotto un esempio che trovate commentato su Divisibilità e fattorizzazione: mcm e MCD (scuola_media)
${\begin{aligned}&{\widehat {75}}{\breve {3}}:18=41\\&{\underline {72\ \ \ }}\\&\ \ 33\\&{\underline {\ \ 18\ \ }}\\&\ \ 15\end{aligned}}$

### Resto e divisore

Noi però possiamo approfittare della capacità di un computer di fare molti calcoli, anche complessi, in poco tempo. Partiamo dall'osservare che il risultato della divisione con il resto si compone di un quoziente e del resto, altrimenti non si chiamerebbe così;-) Il quoziente rappresenta il fattore$^{VK}$ per il quale si deve moltiplicare il divisore per ottenere il suo multiplo più piccolo e più vicino possibile al dividendo. In altre parole il Quoziente (risultato) della divisione è quel multiplo del divisore
$quoziente\ \cdot \ divisore\$
tale che la differenza che chiamiamo Resto
$dividendo\ -\ quoziente\ \cdot \ divisore\ =\ resto$
Deve essere più piccola del Divisore.
Se tutto funziona a dovere possiamo in generale scrivere
$dividendo\ =\ quoziente\ \cdot \ divisore\ +\ resto$
che è vera anche nel caso in cui il dividendo è minore del divisore, caso nel quale il quoziente è uguale a 0.
$dividendo\ =\ 0\ \cdot \ divisore\ +\ dividendo$
Per fare questo lavoro con Scratch non faremo altro che costruire un ciclo ripeti fino a che una condizione non diventi vera.
Nel nostro caso la condizione è quella che ci segnala che siamo arrivati al multiplo cercato e cioè che il resto sia più piccolo del divisore.

## Variabili

Cominciamo con preparare le variabili necessarie (input) al funzionamento Dividendo e Divisore e quelle (output) che ci aspettiamo assumano il valore delle soluzioni Quoziente e Resto
| Istruzioni | Immagini |
| Creiamo 4 variabili: Dividendo, Divisore, Quoziente, Resto | Eccole: , , , |

## Valori iniziali

Per cominciare il gatto ci chiederà i valori di Dividendo e Divisore (input) e automagicamente assegnerà Al Resto lo stesso valore del Dividendo e 0 al quoziente.
Infatti, in generale
$dividendo\ =\ quoziente\ \cdot \ divisore\ +\ resto$
cosa che è particolarmente vera con i nostri valori iniziali
$dividendo\ =\ 0\ \cdot \ divisore\ +\ dividendo$

### Riceviamo input

| Sprite | Blocchi codice | Istruzioni |
| | | Il gatto ci pone la domanda Dividendo? e assegna la risposta alla variabile e lo stesso fa con il Divisore? |

## Assegniamo valori iniziali a Quoziente e Resto

| Sprite | Blocchi codice | Istruzioni |
| | | Il Resto diventa uguale al Dividendo mentre il Quoziente vale 0 all'entrata del ciclo repeat until. |

## Il ciclo repeat until

In questo ciclo viene incrementato il quoziente e di conseguenza il resto diventa sempre più piccolo.
Il ciclo comincia se il Resto è Maggiore o uguale al Divisore, altrimenti il quoziente resta 0. Cosa che è corretta infatti se il Dividendo è più piccolo del Divisore il Quoziente della divisione è 0 ed il resto è l'intero Dividendo.
| Sprite | Blocchi codice | Istruzioni |
| | | Il ciclo funziona fino a che il Resto è maggiore o uguale al divisore. Il primo comando incrementa il Quoziente di 1, cosa che avverrà ad ogni passaggio. Il secondo comando ricalcola il Resto che diventa sempre più piccolo. |

## I risultati li dice il gatto

| Sprite | Istruzioni | Blocco codice1 |
| | | In questa lunga sequenza di join il gatto da i risultati. Questo pezzo di codice non è necessario al funzionamento della calcolatrice. |

## Il codice completo

| Sprite | Istruzioni | Blocco codice1 |

## Schema progetto da montare

https://scratch.mit.edu/projects/358747969/

## Scratch sa fare le divisioni con il resto

C'è da sapere anche che: Scratch ha tra le sue operazioni possibili anche una operazione che ci restituisce direttamente il resto di una divisione. In questo tutorial non è stata usata questa operazione, anzi è stata creata e, spero, ne è stato ricostruito il funzionamento. In informatica un programma che fa una azione semplice che poi serve ad altri programmi si chiama libreria. Ovviamente chi volesse può provare a creare un suo programma che utilizzi l'operazione mod per restituire quoziente e resto delle divisioni.
| Istruzioni | Immagini |
| Per ottenere il resto di una divisione si può usare l'operazione mod (resto della divisione di (NumeroGrande) diviso (NumeroPiccolo) in italiano) | |
| Quindi giusto per fare un esempio $16\ mod\ 7=2$ | |