Problema. Dati n e k, entrambi numeri interi positivi, stabilire se n è divisibile per k.
Soluzione proposta. Si tratta di valutare la divisibilità fra due numeri interi positivi. La soluzione del problema può basarsi sulla definizione stessa di divisibilità fra due numeri e, quindi, la strategia risolutiva può concentrarsi sul resto della divisione fra i due numeri: se il resto della divisione di n per k è uguale a 0, allora n è divisibile per k.
Come la strategia risolutiva trovata può essere messa in atto, dipende dalle caratteristiche dell’esecutore.
CASO 1. Nell’ipotesi che l’esecutore sappia calcolare il resto della divisione fra due numeri interi (è questo il caso se si considera l’operatore aritmetico MOD, messo a disposizione da Visual Basic o l’equivalente operatore dei linguaggi “C like” detto modulo o resto, %), la soluzione del problema diventa banale. La strategia risolutiva trovata prima, infatti, in questo caso può essere messa in atto alla lettera: basta calcolare il resto della divisione fra n e k, se il resto è 0, allora potremo dire che n è divisibile per k, altrimenti diremo che n non è divisibile.
Segue la descrizione dell’algoritmo trovato, sia in pseudolinguaggio, sia in flow-chart.
1 2 3 4 5 6 7 8 9 |
INIZIO LEGGI(n, k) r = n MOD K SE r = 0 ALLORA SCRIVI("Divisibile") ALTRIMENTI SCRIVI("Non divisibile") FINE SE FINE |
Ciò può essere verificato sottraendo ripetutamente k ad n (con l’istruzione: n=n-k) fintanto che questa differenza si mantiene maggiore o uguale a k (la condizione di controllo del ciclo pre-condizionale col mentre è: n≥k). Quando la differenza diventa minore di k o uguale a 0, allora essa ci darà proprio il resto della divisione.
Segue la descrizione dell’algoritmo trovato, sia in pseudolinguaggio, sia in flow-chart.
1 2 3 4 5 6 7 8 9 10 11 |
INIZIO LEGGI(n, k) MENTRE (n≥k) RIPETI n = n-k FINE MENTRE SE n=0 ALLORA SCRIVI('Divisibile') ALTRIMENTI SCRIVI('Non divisibile') FINE SE FINE |