Fornire competenza o addestrare? Questo è il dilemma
A cura di Morena De Poli
Contenuti da scaricare
1. L’evoluzione dell’informatica (e delle pratiche di laboratorio) tra gli anni ’80 e ’90
Nel 1981 ho conseguito il diploma d’Istituto Tecnico nella specializzazione Informatica. Quando parenti e amici mi chiedevano cosa stessi studiando, la maggior parte pensava che sarei diventata giornalista: questa era la conoscenza dell’Informatica all’epoca.
Nei miei anni scolastici programmavo utilizzando le schede perforate, compilando i codici con un enorme computer mainframe mediante collegamento telefonico settimanale con Milano; i risultati della compilazione e dell’esecuzione del codice venivano forniti esclusivamente in forma stampata. Dopo un paio d’anni ho visto il primo monitor, testuale ovviamente, e i primi supporti digitali di memorizzazione: i floppy disk da 8”; solo alcuni anni dopo, quando già insegnavo, il primo Personal Computer, senza hard disk interno.
Posso quindi affermare di essere stata testimone dell’evoluzione dell’Informatica da più punti di vista: hardware e software, ma anche didattico. Infatti, nel 1983, durante il secondo anno alla facoltà di Matematica dell’Università di Padova, sono stata chiamata dai miei ex insegnanti per iniziare la lunga avventura come docente di Laboratorio di Informatica che si è conclusa qualche mese fa.
Negli anni di attività all’Istituto Tecnico, ho avuto modo di apprezzare l’importanza delle attività pratiche di laboratorio nelle tante discipline del curricolo dell’Istituto Tecnico, sia del biennio che del triennio di specializzazione. Diventata io stessa Insegnante Tecnico-Pratica, tra le quattro possibili discipline ho scelto di sviluppare le applicazioni laboratoriali di Matematica e Statistica, che erano le più coerenti con il mio percorso di studi universitari e comunque quelle che preferivo e che fino a oggi continuano ad appassionarmi.
Nei primi anni di studio e poi di insegnamento, se c’era la necessità di rappresentare l’andamento grafico di una funzione matematica si doveva scrivere il codice in un linguaggio di programmazione (spesso si trattava dell’unico linguaggio disponibile) che visualizzasse quel grafico; si trattava di un problema complesso e individuare una soluzione che fosse attuata mediante l’hardware disponibile all’epoca (monitor e stampanti testuali) non era semplice.
Nel tempo, a cavallo tra la fine degli anni ’80 e i primi anni ‘90, i rapidi progressi tecnologici hanno consentito di utilizzare nuovi software: i fogli di calcolo, in grado di elaborare notevoli moli di dati mediante formule e di costruire facilmente dei grafici; i CAS (Computer Algebra System), cioè sistemi software in grado di facilitare elaborazioni simboliche di espressioni e funzioni matematiche, nonché di dare loro rappresentazione grafica anche dinamica; nuovi linguaggi di programmazione che consentivano la gestione di diverse tipologie di strutture dati oltre ai data base già di uso comune.
Nei miei anni scolastici programmavo utilizzando le schede perforate, compilando i codici con un enorme computer mainframe mediante collegamento telefonico settimanale con Milano; i risultati della compilazione e dell’esecuzione del codice venivano forniti esclusivamente in forma stampata. Dopo un paio d’anni ho visto il primo monitor, testuale ovviamente, e i primi supporti digitali di memorizzazione: i floppy disk da 8”; solo alcuni anni dopo, quando già insegnavo, il primo Personal Computer, senza hard disk interno.
Posso quindi affermare di essere stata testimone dell’evoluzione dell’Informatica da più punti di vista: hardware e software, ma anche didattico. Infatti, nel 1983, durante il secondo anno alla facoltà di Matematica dell’Università di Padova, sono stata chiamata dai miei ex insegnanti per iniziare la lunga avventura come docente di Laboratorio di Informatica che si è conclusa qualche mese fa.
Negli anni di attività all’Istituto Tecnico, ho avuto modo di apprezzare l’importanza delle attività pratiche di laboratorio nelle tante discipline del curricolo dell’Istituto Tecnico, sia del biennio che del triennio di specializzazione. Diventata io stessa Insegnante Tecnico-Pratica, tra le quattro possibili discipline ho scelto di sviluppare le applicazioni laboratoriali di Matematica e Statistica, che erano le più coerenti con il mio percorso di studi universitari e comunque quelle che preferivo e che fino a oggi continuano ad appassionarmi.
Nei primi anni di studio e poi di insegnamento, se c’era la necessità di rappresentare l’andamento grafico di una funzione matematica si doveva scrivere il codice in un linguaggio di programmazione (spesso si trattava dell’unico linguaggio disponibile) che visualizzasse quel grafico; si trattava di un problema complesso e individuare una soluzione che fosse attuata mediante l’hardware disponibile all’epoca (monitor e stampanti testuali) non era semplice.
Nel tempo, a cavallo tra la fine degli anni ’80 e i primi anni ‘90, i rapidi progressi tecnologici hanno consentito di utilizzare nuovi software: i fogli di calcolo, in grado di elaborare notevoli moli di dati mediante formule e di costruire facilmente dei grafici; i CAS (Computer Algebra System), cioè sistemi software in grado di facilitare elaborazioni simboliche di espressioni e funzioni matematiche, nonché di dare loro rappresentazione grafica anche dinamica; nuovi linguaggi di programmazione che consentivano la gestione di diverse tipologie di strutture dati oltre ai data base già di uso comune.
2. Verso una nuova didattica laboratoriale: lo sviluppo del Pensiero Computazionale
In quel momento storico sembrava non fosse così importante risolvere problemi, ma approfondire invece la conoscenza dei nuovi strumenti in grado di risolverli: addestrare gli studenti all’uso di strumenti sofisticati al fine di imparare a usarli tanto da poter vantare quella conoscenza nei vari contesti futuri, di studio ma anche lavorativi (in sostanza, poter scrivere nel Curriculum Vitae “conoscenza approfondita di …”).
Insieme a colleghi particolarmente illuminati ai quali sarò sempre grata, ho impiegato anni di ricerca didattica per giungere alla svolta: le attività laboratoriali, pur applicando strumenti software molto specifici, il cui utilizzo doveva essere opportunamente insegnato, dovevano essere progettate al fine di fornire competenze. Da qui, l’approfondimento dei risvolti pedagogici dell’attività laboratoriale: se la sua finalità fosse stata esclusivamente quella di insegnare l’uso di uno strumento, la soluzione di un problema sarebbe dipesa dalla conoscenza dello strumento stesso, perdendo di vista la centralità del problema da risolvere. La ricerca della soluzione doveva invece partire dall’analisi delle diverse possibilità di approccio al problema e, in quell’ottica, lo strumento doveva essere inteso come mezzo per implementare il problema, non come condizione necessaria per la sua risoluzione. Altrimenti, in mancanza di quel particolare strumento, il rischio poteva essere di non riuscire a individuare una soluzione al problema.
Se la finalità didattica doveva quindi spostarsi sulla risoluzione del problema, indipendentemente dalle caratteristiche dello strumento di implementazione utilizzato, il docente doveva diventare un facilitatore nella successiva ricerca dello strumento software più adeguato nei vari contesti. La continua e veloce evoluzione dei software e via via la sempre più ampia offerta, ha rivelato vincente questa visione: il mero addestramento non era più efficace, data la moltitudine di strumenti utilizzabili per risolvere lo stesso problema. Ecco che il docente, nell’attuazione della didattica laboratoriale, doveva essere colui che offriva una “cassetta degli attrezzi”, che mostrava come utilizzare alcuni di essi e poi lasciava che gli alunni sperimentassero in autonomia, rimanendo sempre accanto come guida. Doveva, insomma, supportare lo sviluppo del Pensiero Computazionale, una capacità applicabile in modo trasversale anche nella quotidianità.
La lezione di Laboratorio diventa quindi un momento in cui porre problemi da analizzare, di qualsiasi natura, e di cui cercare una possibile soluzione; gli strumenti, hardware e software, ma anche analogici (carta e matita, per intenderci, o lavagna), sono da considerarsi mezzi per elaborare, realizzare e verificare procedure risolutive di quei problemi, ma anche per sviluppare la cooperazione con il lavoro in team e, non ultima, la capacità di affrontare e risolvere l’errore.
La mia prima insegnante, in un certo senso, è stata mia madre. Fin da piccolissima la osservavo, nella sua attività di sarta, realizzare abiti: progettare il modello adattandolo alle misure di chi lo avrebbe indossato, ritagliare le varie parti sulla pezza di tessuto ottimizzando i tagli, così da consentire l’acquisto della minima quantità di stoffa, “imbastire” ed effettuare la prova, aggiustare dove necessario e cucire insieme le parti, stirare per sistemare qualche piccola imperfezione e così via. È esattamente l’approccio metodico che attua il Pensiero Computazionale.
Insieme a colleghi particolarmente illuminati ai quali sarò sempre grata, ho impiegato anni di ricerca didattica per giungere alla svolta: le attività laboratoriali, pur applicando strumenti software molto specifici, il cui utilizzo doveva essere opportunamente insegnato, dovevano essere progettate al fine di fornire competenze. Da qui, l’approfondimento dei risvolti pedagogici dell’attività laboratoriale: se la sua finalità fosse stata esclusivamente quella di insegnare l’uso di uno strumento, la soluzione di un problema sarebbe dipesa dalla conoscenza dello strumento stesso, perdendo di vista la centralità del problema da risolvere. La ricerca della soluzione doveva invece partire dall’analisi delle diverse possibilità di approccio al problema e, in quell’ottica, lo strumento doveva essere inteso come mezzo per implementare il problema, non come condizione necessaria per la sua risoluzione. Altrimenti, in mancanza di quel particolare strumento, il rischio poteva essere di non riuscire a individuare una soluzione al problema.
Se la finalità didattica doveva quindi spostarsi sulla risoluzione del problema, indipendentemente dalle caratteristiche dello strumento di implementazione utilizzato, il docente doveva diventare un facilitatore nella successiva ricerca dello strumento software più adeguato nei vari contesti. La continua e veloce evoluzione dei software e via via la sempre più ampia offerta, ha rivelato vincente questa visione: il mero addestramento non era più efficace, data la moltitudine di strumenti utilizzabili per risolvere lo stesso problema. Ecco che il docente, nell’attuazione della didattica laboratoriale, doveva essere colui che offriva una “cassetta degli attrezzi”, che mostrava come utilizzare alcuni di essi e poi lasciava che gli alunni sperimentassero in autonomia, rimanendo sempre accanto come guida. Doveva, insomma, supportare lo sviluppo del Pensiero Computazionale, una capacità applicabile in modo trasversale anche nella quotidianità.
La lezione di Laboratorio diventa quindi un momento in cui porre problemi da analizzare, di qualsiasi natura, e di cui cercare una possibile soluzione; gli strumenti, hardware e software, ma anche analogici (carta e matita, per intenderci, o lavagna), sono da considerarsi mezzi per elaborare, realizzare e verificare procedure risolutive di quei problemi, ma anche per sviluppare la cooperazione con il lavoro in team e, non ultima, la capacità di affrontare e risolvere l’errore.
La mia prima insegnante, in un certo senso, è stata mia madre. Fin da piccolissima la osservavo, nella sua attività di sarta, realizzare abiti: progettare il modello adattandolo alle misure di chi lo avrebbe indossato, ritagliare le varie parti sulla pezza di tessuto ottimizzando i tagli, così da consentire l’acquisto della minima quantità di stoffa, “imbastire” ed effettuare la prova, aggiustare dove necessario e cucire insieme le parti, stirare per sistemare qualche piccola imperfezione e così via. È esattamente l’approccio metodico che attua il Pensiero Computazionale.
3. L’algoritmo e l’errore
Sviluppare la capacità di comprendere un problema al fine di individuare una possibile procedura risolutiva significa saper costruire l’algoritmo, inteso come sequenza finita e ordinata di passi elementari da eseguire per portare a termine un compito complesso.
Algoritmo, è questa la parola chiave che mi ha accompagnata nel mio percorso, ma attenzione all’accezione diversa che ha oggi questo termine, decisamente negativa. Nel mondo digitale attuale, l’utilizzatore di app, di social, di piattaforme di Intelligenza Artificiale, in breve colui che nei modi più svariati naviga in rete, diventa oggetto degli algoritmi, costruiti spesso per condizionarlo e per orientare le sue scelte. Nell’accezione “scolastica” e positiva del termine algoritmo, l’alunno è invece protagonista ed è egli stesso “costruttore di algoritmi”, acquisendo così una consapevolezza che può essere intesa anche come strumento di autoprotezione.
L’attività laboratoriale deve quindi avere come primo obiettivo lo sviluppo delle capacità di analisi che consentono di individuare quei passi elementari che elaborano i dati noti (input) per ottenere dei risultati (output), concentrandosi dapprima su casi particolari per estendere poi la procedura risolutiva al caso generale. Non è sufficiente, però, che l’algoritmo sia stato solo “pensato”: è anche indispensabile descriverlo (con diagramma a blocchi o pseudo-codice), ad esempio per cooperare più facilmente con gli altri; solo in seguito ci si deve occupare di cercare lo strumento più adatto all’implementazione di quella soluzione, scoprendo anche quanto possa essere gratificante realizzare un manufatto software; tuttavia, questo ultimo passaggio non deve essere inteso come l’obiettivo principe.
Se l’attività viene svolta in team, si aggiunge un notevole valore: lo sviluppo del codice che implementa ciascun passo dell’algoritmo può essere distribuito facilmente tra i componenti del team, ma solo se l’approccio è tale da consentire la suddivisione del problema in sotto problemi.
In questo percorso entra in gioco un aspetto fondamentale per lo sviluppo psicologico dell’adolescente: l’errore. Avviene comunemente che un problema venga compreso in modo superficiale, oppure che i passaggi dell’algoritmo siano stati sviluppati parzialmente, o ancora che la codifica dell’algoritmo con lo strumento software scelto fornisca risultati diversi da quelli attesi. Questo è un ambito in cui l’errore è talmente comune da non doverlo temere; anzi, esso va affrontato come un’ulteriore sfida, meglio se svolta in gruppo, e ancora una volta questa modalità didattica trasmette competenze non solo informatiche, bensì trasversali.
Algoritmo, è questa la parola chiave che mi ha accompagnata nel mio percorso, ma attenzione all’accezione diversa che ha oggi questo termine, decisamente negativa. Nel mondo digitale attuale, l’utilizzatore di app, di social, di piattaforme di Intelligenza Artificiale, in breve colui che nei modi più svariati naviga in rete, diventa oggetto degli algoritmi, costruiti spesso per condizionarlo e per orientare le sue scelte. Nell’accezione “scolastica” e positiva del termine algoritmo, l’alunno è invece protagonista ed è egli stesso “costruttore di algoritmi”, acquisendo così una consapevolezza che può essere intesa anche come strumento di autoprotezione.
L’attività laboratoriale deve quindi avere come primo obiettivo lo sviluppo delle capacità di analisi che consentono di individuare quei passi elementari che elaborano i dati noti (input) per ottenere dei risultati (output), concentrandosi dapprima su casi particolari per estendere poi la procedura risolutiva al caso generale. Non è sufficiente, però, che l’algoritmo sia stato solo “pensato”: è anche indispensabile descriverlo (con diagramma a blocchi o pseudo-codice), ad esempio per cooperare più facilmente con gli altri; solo in seguito ci si deve occupare di cercare lo strumento più adatto all’implementazione di quella soluzione, scoprendo anche quanto possa essere gratificante realizzare un manufatto software; tuttavia, questo ultimo passaggio non deve essere inteso come l’obiettivo principe.
Se l’attività viene svolta in team, si aggiunge un notevole valore: lo sviluppo del codice che implementa ciascun passo dell’algoritmo può essere distribuito facilmente tra i componenti del team, ma solo se l’approccio è tale da consentire la suddivisione del problema in sotto problemi.
In questo percorso entra in gioco un aspetto fondamentale per lo sviluppo psicologico dell’adolescente: l’errore. Avviene comunemente che un problema venga compreso in modo superficiale, oppure che i passaggi dell’algoritmo siano stati sviluppati parzialmente, o ancora che la codifica dell’algoritmo con lo strumento software scelto fornisca risultati diversi da quelli attesi. Questo è un ambito in cui l’errore è talmente comune da non doverlo temere; anzi, esso va affrontato come un’ulteriore sfida, meglio se svolta in gruppo, e ancora una volta questa modalità didattica trasmette competenze non solo informatiche, bensì trasversali.
4. L’impatto della riforma del 2008 sui laboratori
Con l’entrata in vigore della riforma Gelmini, il percorso didattico dell’Istituto Tecnico è stato riorganizzato riducendo complessivamente le lezioni settimanali da 36 unità a 32, eliminando alcune materie, ma introducendo, per la mia classe di concorso, la disciplina Tecnologie Informatiche, solo nella classe prima e con due ore settimanali di laboratorio.
Al contempo, la riforma ha spinto affinché la didattica laboratoriale fosse attuata ad ampio raggio in tutti i percorsi scolastici, anche nei licei e comunque per quelle discipline che istituzionalmente nel loro curricolo non prevedevano attività da svolgere in laboratori dotati della costante presenza di tre figure professionali: il docente teorico, il docente tecnico-pratico, l’assistente tecnico.
La didattica laboratoriale “diffusa” è stata così scollegata dalla compresenza di più figure e, purtroppo, organizzata nei suoi molti aspetti senza consultare coloro che l’avevano sperimentata e realizzata per decenni. La sua attuazione, inizialmente demandata a docenti poco avvezzi a tale pratica, veniva per lo più percepita come uno stravolgimento della progettualità didattica.
La svolta è avvenuta però nel 2015 con l’avvio del Piano Nazionale Scuola Digitale e con l’istituzione, in ogni scuola, della nuova figura dell’Animatore Digitale, al quale era demandata la diffusione di buone pratiche didattiche nell’utilizzo degli strumenti digitali.
Grazie allo sviluppo della tecnologia, che ha consentito di dotare anche le singole aule di strumenti hardware e software, sono emerse innumerevoli attività di formazione prevalentemente incentrate sulla pratica del coding (letteralmente “scrittura di codice in un linguaggio di programmazione”, più semplicemente “programmare”), intesa soprattutto come opportunità di sviluppo del Pensiero Computazionale, così da fornire competenze trasversali nell’affrontare problemi inerenti alle varie discipline di studio, ma anche alla vita quotidiana: esattamente quello che avevo insegnato per circa 30 anni. Inoltre, malgrado le menomazioni non recuperabili apportate dalla riforma Gelmini al percorso della specializzazione Informatica degli ITT, era per me molto appassionante la ricerca didattica relativa alla pratica diffusa e trasversale del Pensiero Computazionale, a partire dal nuovo contesto del laboratorio di Tecnologie Informatiche nelle classi prime dell’ITT in cui mi ero trovata a dover svolgere la mia attività.
Va comunque sottolineato che ogni tentativo di trasformare gli spazi scolastici (aule) in “laboratori” rivela quanto la mancata istituzione di compresenze tra docenti non sia d’aiuto: è impagabile per lo studente potere avere un insegnante seduto accanto, che lo possa guidare nelle attività con la serenità derivante dalla presenza contemporanea di più figure professionali.
Al contempo, la riforma ha spinto affinché la didattica laboratoriale fosse attuata ad ampio raggio in tutti i percorsi scolastici, anche nei licei e comunque per quelle discipline che istituzionalmente nel loro curricolo non prevedevano attività da svolgere in laboratori dotati della costante presenza di tre figure professionali: il docente teorico, il docente tecnico-pratico, l’assistente tecnico.
La didattica laboratoriale “diffusa” è stata così scollegata dalla compresenza di più figure e, purtroppo, organizzata nei suoi molti aspetti senza consultare coloro che l’avevano sperimentata e realizzata per decenni. La sua attuazione, inizialmente demandata a docenti poco avvezzi a tale pratica, veniva per lo più percepita come uno stravolgimento della progettualità didattica.
La svolta è avvenuta però nel 2015 con l’avvio del Piano Nazionale Scuola Digitale e con l’istituzione, in ogni scuola, della nuova figura dell’Animatore Digitale, al quale era demandata la diffusione di buone pratiche didattiche nell’utilizzo degli strumenti digitali.
Grazie allo sviluppo della tecnologia, che ha consentito di dotare anche le singole aule di strumenti hardware e software, sono emerse innumerevoli attività di formazione prevalentemente incentrate sulla pratica del coding (letteralmente “scrittura di codice in un linguaggio di programmazione”, più semplicemente “programmare”), intesa soprattutto come opportunità di sviluppo del Pensiero Computazionale, così da fornire competenze trasversali nell’affrontare problemi inerenti alle varie discipline di studio, ma anche alla vita quotidiana: esattamente quello che avevo insegnato per circa 30 anni. Inoltre, malgrado le menomazioni non recuperabili apportate dalla riforma Gelmini al percorso della specializzazione Informatica degli ITT, era per me molto appassionante la ricerca didattica relativa alla pratica diffusa e trasversale del Pensiero Computazionale, a partire dal nuovo contesto del laboratorio di Tecnologie Informatiche nelle classi prime dell’ITT in cui mi ero trovata a dover svolgere la mia attività.
Va comunque sottolineato che ogni tentativo di trasformare gli spazi scolastici (aule) in “laboratori” rivela quanto la mancata istituzione di compresenze tra docenti non sia d’aiuto: è impagabile per lo studente potere avere un insegnante seduto accanto, che lo possa guidare nelle attività con la serenità derivante dalla presenza contemporanea di più figure professionali.
5. Come pensare la didattica laboratoriale oggi
Negli ultimi 15 anni ho lavorato selezionando le tipologie di problemi da proporre affinché fossero adeguati all’età degli studenti e al loro sviluppo cognitivo: sono molti i processi quotidiani che, senza rendercene conto, rappresentano veri e propri algoritmi e possono fornire spunti interessanti. Anche il “gioco virtuale”, tanto caro ai ragazzi, rappresenta un ottimo campo di azione, ovviamente dopo aver tradotto le complesse basi teoriche su cui poggia al fine di renderle fruibili, talvolta rivelando agli alunni risvolti inaspettati. In questo modo è stato per me possibile unire l’utile al dilettevole, dato che tutti i giochi si basano sui concetti probabilistici della simulazione, uno dei temi della Statistica che trovo più affascinanti e che più mi appassionano.
Inoltre, la trasversalità dell’Educazione Civica consente di spaziare tra un’ampia gamma di ambiti, dall’analisi testuale della Costituzione all’elaborazione di dati ambientali ricavati da siti istituzionali come ISTAT o ARPA regionali forniti con specifiche licenze d’uso, o ancora la rilevazione di dati utilizzando lo strumento di uso più comune per i ragazzi: lo smartphone.
È possibile anche utilizzare hardware a basso costo per avviare gli alunni all’automazione di semplici sistemi, molto comuni nella vita quotidiana, sensibilizzandoli poi anche all’utilizzo di ambienti Open Source in alternativa a quelli proprietari, incentivando la riflessione sulla scelta.
Inoltre, la trasversalità dell’Educazione Civica consente di spaziare tra un’ampia gamma di ambiti, dall’analisi testuale della Costituzione all’elaborazione di dati ambientali ricavati da siti istituzionali come ISTAT o ARPA regionali forniti con specifiche licenze d’uso, o ancora la rilevazione di dati utilizzando lo strumento di uso più comune per i ragazzi: lo smartphone.
È possibile anche utilizzare hardware a basso costo per avviare gli alunni all’automazione di semplici sistemi, molto comuni nella vita quotidiana, sensibilizzandoli poi anche all’utilizzo di ambienti Open Source in alternativa a quelli proprietari, incentivando la riflessione sulla scelta.
6. Un’attività di laboratorio completa: la verifica della costante di Kaprekar
Veniamo ora a un esempio di problema da proporre in un laboratorio di Tecnologie Informatiche, o durante un’attività laboratoriale in genere, mostrando i passaggi che favoriscono lo sviluppo del Pensiero Computazionale e quindi di competenze. Il foglio di calcolo relativo a questa esercitazione di laboratorio è scaricabile tramite il pulsante situato all’inizio della pagina.
Inizialmente, pensavo di proporre l’analisi di un gioco tratto da una rivista di enigmistica, ma qualche giorno fa una delle mie figlie, conoscendo la mia passione per la matematica, mi ha inviato un reel che parlava di un numero speciale, che ha solleticato la mia attenzione: il numero 6174, che non sembra così speciale, eppure…
Considerato un qualsiasi numero di quattro cifre, purché non tutte uguali, si possono costruire due nuovi numeri: il primo formato dalle cifre prese in ordine decrescente, il secondo con le cifre prese in ordine crescente; sottratti questi due numeri si può ripetere la procedura applicandola alla differenza ottenuta e così via fino a che, al più tardi al settimo passaggio, il risultato calcolato risulta essere proprio 6174. Magia, hanno scritto in molti, commentando il reel.
Si tratta della costante di Kaprekar, dal nome del matematico indiano che ha scoperto questa particolarità stupefacente del numero 6174.
Analizzando la questione e volendo verificare quanto scoperto da Kaprekar, la prima cosa che salta agli occhi è che devono essere ripetuti più volte dei passaggi sempre uguali; si tratta di un vero e proprio algoritmo realizzato mediante una struttura a ciclo: dopo ogni iterazione si ottiene il nuovo numero da elaborare nel passaggio successivo. Una prima, seppur superficiale (come vedremo più avanti), descrizione di questo algoritmo può essere la seguente:
L’elenco rappresenta a tutti gli effetti una valida descrizione dell’algoritmo mediante linguaggio naturale, che potrebbe essere rappresentata con diagrammi a blocchi o pseudo-codice. Anche senza approfondire ulteriormente l’algoritmo, si può passare alla sua implementazione. Volendo svolgere l’esercizio con alunni che ancora non hanno competenze nella scrittura di codici in linguaggi di programmazione, la scelta più spontanea del software da utilizzare è decisamente un foglio di calcolo. In particolare, l’uso di CALC di LibreOffice, un progetto Open Source, può essere un esempio di consapevolezza nella scelta tra strumenti software diversi tenendo in considerazione anche requisiti etici. Ad ogni modo, l’attività è facilmente replicabile anche con altri fogli di calcolo.
Vediamo come procedere.

Poiché, come espresso dall’algoritmo, i passaggi vanno riapplicati al risultato ottenuto, è molto comodo effettuare la copia delle celle della zona A1:C2, incollandole sotto e modificando solo quanto serve:

La formula per il calcolo della differenza è stata costruita utilizzando i riferimenti relativi, quindi, dopo la copia, essa agirà sulle nuove celle che distano da C5 tanto quanto quelle riferite nella formula originale; inoltre, si rivela utile costruire una nuova formula in A4, molto semplice, che riferisca la cella contenente il risultato del passaggio precedente, così che il numero su cui operare sia quello corretto, senza la necessità di doverlo scrivere manualmente.

Continuando con l’operazione di copia-incolla della nuova struttura così realizzata e con gli interventi manuali per ottenere i due nuovi numeri, si trova che già al terzo passaggio viene raggiunto il numero 6174.

Quanto descritto può rappresentare un primo approccio dedicato agli alunni che iniziano a sperimentare con il foglio di calcolo; l’esercizio può continuare effettuando prove con numeri diversi e verificando che il risultato di 6174 viene sempre raggiunto entro sette passaggi.
Si può anche suggerisce agli alunni di concentrarsi sull’estetica del foglio di calcolo, utilizzando gli strumenti di formattazione delle celle, così da prendere dimestichezza con l’ambiente software e da apprezzare che un opportuno layout può rendere più fruibile la struttura realizzata, anche semplicemente mettendo in luce l’unica cella in cui inserire il dato di input, realizzando delle etichette che spieghino i contenuti delle celle ed evidenziando quella in cui viene raggiunto il numero fisso 6174.
Queste considerazioni possono portare a strutturare il foglio in modo diverso rispetto al primo approccio, dando così una nuova veste all’implementazione dell’algoritmo:

Con gli alunni più esperti, già avvezzi ad approfondire la risoluzione di problemi e all’uso del foglio di calcolo, si può invece procedere sollecitandoli nella risposta a domande che mettano in luce la criticità di alcuni passaggi dell’algoritmo precedentemente proposto, così da individuare una procedura risolutiva più completa.
La sfida sarà quindi trovare le risposte e individuare gli algoritmi risolutivi delle criticità individuate; solo in seguito l’impegno sarà cercare, tra le funzionalità del foglio di calcolo, quelle che possono contribuire alla costruzione di formule che realizzino, in modo automatico, quanto prima è stato svolto manualmente.
Alla luce degli approfondimenti richiesti, il nuovo algoritmo può essere così descritto:
Per il passo 2 deve essere chiamata in gioco la notazione posizionale dei numeri (lo studio dei Babilonesi rivela che quel popolo la utilizzava millenni fa: potrebbe essere oggetto di un’attività interdisciplinare di approfondimento), sapendo che la cifra più a destra è quella delle unità e a seguire verso sinistra troviamo la cifra delle decine, delle centinaia e delle migliaia.
Si può aggiungere l’osservazione che ogni cifra contribuisce con il proprio valore (da 0 a 9) e con un peso che dipende dalla sua posizione: da destra a sinistra, cioè dalle unità alle migliaia, i pesi sono 100=1, 101=10, 102=100, 103=1000.
Pertanto, per il numero formato dalle cifre xyzw si può scrivere:
Calcolando la divisione intera per 10 del numero xyzw si ottiene come resto la cifra w, quella delle unità, e come quoziente il numero xyz formato da 3 cifre; iterando l’applicazione della divisione intera per 10 al quoziente ottenuto si isolano tutte le cifre del numero.
Le due funzioni QUOZIENTE() e RESTO() del Foglio di Calcolo consentono di realizzare quanto descritto:


Ovviamente, scritte le prime due formule nelle celle A2 e B2, esse possono essere copiate nelle celle corrispondenti delle 3 righe sottostanti.
Come si può osservare, la cifra delle migliaia è l’ultima ottenuta, quella più in basso, mentre quella delle unità è la prima.
Il passo 3, dal punto di vista algoritmico, può essere realizzato in svariati modi che possono chiamare in gioco la struttura di selezione SE-ALLORA-ALTRIMENTI, ma non solo.
Sempre considerando il numero xyzw, una volta isolate le sue cifre si potrebbero confrontare le prime due e se sono diverse tra loro l’ipotesi iniziale è già rispettata; se invece risultassero uguali si dovrebbe procedere con il confronto tra la seconda e la terza e poi, se necessario, tra la terza e la quarta cifra. Oppure, utilizzando gli operatori logici, in particolare OR, si potrebbe costruire una espressione che dia come risultato Vero se le cifre del numero rispettano le ipotesi, Falso altrimenti:
È sufficiente che una sola delle disuguaglianze sia Vera (cioè che due sole cifre siano diverse tra loro) perché l’intera espressione lo sia; diversamente, tutte e tre devono risultare False (cioè tutte le cifre uguali tra loro) perché lo sia l’intera espressione.
Il foglio di calcolo elenca nella categoria delle funzioni Logiche la O() che realizza proprio l’operatore relazionale OR:

Il simbolo “≠” deve essere realizzato con l’accostamento dei due simboli “<>”


Ovviamente, se le 4 cifre dovessero essere tutte uguali, i due numeri con cifre in ordine crescente e decrescente sarebbero uguali e la loro differenza produrrebbe 0 così da rendere priva di senso qualsiasi verifica successiva. Quindi, le formule mostrate di seguito potranno successivamente essere condizionate all’esito della formula contenuta in B1 mediante l’uso della funzione SE().
Veniamo ora agli ordinamenti delle cifre, decrescente e crescente, i passi 4 e 5 dell’algoritmo.
Anche in questo caso ci viene in aiuto una funzione predefinita, questa volta un po’ più complessa poiché si tratta di una funzione di tipo matrice; essa, quindi, potrà essere proposta ad alunni che abbiano già una certa competenza al riguardo:

prima di scrivere la formula è necessario selezionare la zona di celle C2:C5; digitando il simbolo “=” per iniziare a scrivere la formula sembrerà che essa venga scritta nella prima cella dell’area selezionata, ma vedremo che non sarà così. I parametri della funzione sono nell’ordine: la zona B2:B5, cioè la tabella che contiene i dati da ordinare; il numero 1 per indicare che si vuole ordinare la tabella rispetto la sua prima colonna (pur essendo la tabella formata da una sola colonna, è comunque necessario specificare); il numero -1 nel terzo parametro indica l’ordinamento decrescente. Per confermare la formula, essendo di tipo matrice, va utilizzata la combinazione di tasti CTRL-SHIFT-INVIO, che la estenderà all’intera area selezionata in precedenza, fornendo quindi i risultati distribuiti in ogni singola cella.
Per l’altro ordinamento sarà sufficiente sostituire il parametro -1 con 1.

Qualora questi ultimi due passaggi fossero ritenuti troppo complessi, dopo aver isolato le singole cifre è possibile prevedere la scrittura manuale dei due diversi ordinamenti (fase comunque critica per possibili errori di battitura), oppure sfruttare le funzionalità del menu Dati, dopo aver copiato i contenuti dell’area B2:B5 e incollati in modo speciale (solo numeri) nelle celle adiacenti delle colonne C e D, sotto le etichette “decrescente” e “crescente”:

Per eseguire la sottrazione tra i due numeri è necessario però ricostituirli: il primo è formato da 6 migliaia, 4 centinaia, 3 decine e 2 unità, quindi:

Ovviamente, al posto delle potenze che identificano i pesi delle singole cifre si possono usare le costanti 1000, 100, 10.
Dato che la formula utilizza riferimenti relativi, essa può essere copiata nella cella D7 per ottenere il numero formato con le cifre decrescenti, in modo poi da realizzare la formula per la loro sottrazione nella cella posta di fianco.

La costruzione di formule con riferimenti relativi ha il vantaggio di poter selezionare l’intera area A1:E6, copiarla e incollarla a partire dalla cella A8 con la certezza che le formule riferiranno le celle corrette, con l’accortezza di inserire nella cella A8 la formula =E6 così da ricominciare il processo a partire dal risultato ottenuto al passo precedente:

Per questo numero scelto in input, già al secondo passaggio si ottiene la costante 6174.
Per altri numeri dovranno essere effettuate ulteriori operazioni di copia-incolla per verificare quando si giunge alla conclusione del processo; per esempio, partendo dal numero 4326, che differisce per una sola cifra dal precedente, si arriva al numero fisso proprio al settimo passaggio.
La scelta del foglio di calcolo per la verifica della costante di Kaprekar a quattro cifre è ovviamente di carattere didattico, per avvicinare gli alunni all’analisi di problemi, alla loro suddivisione in sotto problemi sviluppabili in modo indipendente l’uno dall’altro, alla produzione di algoritmi risolutivi e alla loro implementazione mediante uno strumento software di uso comune. In poche parole, per sviluppare il loro Pensiero Computazionale.
L’approccio iniziale proposto, che prevede implementazione mediante l’uso di semplici formule e ordinamenti manuali delle cifre a fronte della formattazione delle celle per ottimizzare il layout finale, è certamente più abbordabile per gli alunni più piccoli. Tuttavia, quale che sia il livello della realizzazione finale, è importante che, una volta individuato l’algoritmo e codificatolo mediante uno strumento software, gli alunni abbiano la consapevolezza che, in generale, l’implementazione non viene realizzata per sé stessi, anzi, deve essere rivolta ad altri. Diventa quindi indispensabile immedesimarsi nell’utente che dovrà trovare facile l’utilizzo, in questo caso, del foglio di calcolo, pur senza sapere nulla di come esso stesso sia stato realizzato.
Ho lasciato in sospeso la risposta alla domanda “è possibile verificare che per tutti i numeri con 4 cifre diverse tra loro si raggiunge il numero fisso entro sette passaggi?”.
Chi, come me, è appassionato nella soluzione di sfide complesse può ingegnarsi nel trovare modo di sviluppare anche questa verifica col foglio di calcolo, iniziando ancora una volta dalla suddivisione del problema in sotto problemi:
Il primo di questi nuovi passaggi è semplice: costruire la sequenza dei numeri da 1 a 9998 (per rispettare l’ipotesi iniziale); il secondo è già stato trattato introducendo l’uso dell’operatore logico OR; il terzo punto è decisamente più complesso da realizzare col foglio di calcolo.
Inizialmente, pensavo di proporre l’analisi di un gioco tratto da una rivista di enigmistica, ma qualche giorno fa una delle mie figlie, conoscendo la mia passione per la matematica, mi ha inviato un reel che parlava di un numero speciale, che ha solleticato la mia attenzione: il numero 6174, che non sembra così speciale, eppure…
Considerato un qualsiasi numero di quattro cifre, purché non tutte uguali, si possono costruire due nuovi numeri: il primo formato dalle cifre prese in ordine decrescente, il secondo con le cifre prese in ordine crescente; sottratti questi due numeri si può ripetere la procedura applicandola alla differenza ottenuta e così via fino a che, al più tardi al settimo passaggio, il risultato calcolato risulta essere proprio 6174. Magia, hanno scritto in molti, commentando il reel.
Si tratta della costante di Kaprekar, dal nome del matematico indiano che ha scoperto questa particolarità stupefacente del numero 6174.
Analizzando la questione e volendo verificare quanto scoperto da Kaprekar, la prima cosa che salta agli occhi è che devono essere ripetuti più volte dei passaggi sempre uguali; si tratta di un vero e proprio algoritmo realizzato mediante una struttura a ciclo: dopo ogni iterazione si ottiene il nuovo numero da elaborare nel passaggio successivo. Una prima, seppur superficiale (come vedremo più avanti), descrizione di questo algoritmo può essere la seguente:
- sia dato un numero di quattro cifre non tutte uguali;
- formare il numero con le cifre in ordine decrescente;
- formare il numero con le cifre in ordine crescente;
- calcolare la loro differenza;
- ripetere partendo dal passaggio 2, ma agendo sul risultato ottenuto al passo 4 e fintantoché esso sia diverso da 6174.
L’elenco rappresenta a tutti gli effetti una valida descrizione dell’algoritmo mediante linguaggio naturale, che potrebbe essere rappresentata con diagrammi a blocchi o pseudo-codice. Anche senza approfondire ulteriormente l’algoritmo, si può passare alla sua implementazione. Volendo svolgere l’esercizio con alunni che ancora non hanno competenze nella scrittura di codici in linguaggi di programmazione, la scelta più spontanea del software da utilizzare è decisamente un foglio di calcolo. In particolare, l’uso di CALC di LibreOffice, un progetto Open Source, può essere un esempio di consapevolezza nella scelta tra strumenti software diversi tenendo in considerazione anche requisiti etici. Ad ogni modo, l’attività è facilmente replicabile anche con altri fogli di calcolo.
Vediamo come procedere.

- Nella cella A1 scrivere un numero di 4 cifre NON tutte uguali
- Nella cella B1 scrivere il numero con le cifre in ordine decrescente e in B2 il numero con le cifre in ordine crescente
- In C2 scrivere la formula per calcolare la sottrazione
Poiché, come espresso dall’algoritmo, i passaggi vanno riapplicati al risultato ottenuto, è molto comodo effettuare la copia delle celle della zona A1:C2, incollandole sotto e modificando solo quanto serve:

La formula per il calcolo della differenza è stata costruita utilizzando i riferimenti relativi, quindi, dopo la copia, essa agirà sulle nuove celle che distano da C5 tanto quanto quelle riferite nella formula originale; inoltre, si rivela utile costruire una nuova formula in A4, molto semplice, che riferisca la cella contenente il risultato del passaggio precedente, così che il numero su cui operare sia quello corretto, senza la necessità di doverlo scrivere manualmente.

Continuando con l’operazione di copia-incolla della nuova struttura così realizzata e con gli interventi manuali per ottenere i due nuovi numeri, si trova che già al terzo passaggio viene raggiunto il numero 6174.

Quanto descritto può rappresentare un primo approccio dedicato agli alunni che iniziano a sperimentare con il foglio di calcolo; l’esercizio può continuare effettuando prove con numeri diversi e verificando che il risultato di 6174 viene sempre raggiunto entro sette passaggi.
Si può anche suggerisce agli alunni di concentrarsi sull’estetica del foglio di calcolo, utilizzando gli strumenti di formattazione delle celle, così da prendere dimestichezza con l’ambiente software e da apprezzare che un opportuno layout può rendere più fruibile la struttura realizzata, anche semplicemente mettendo in luce l’unica cella in cui inserire il dato di input, realizzando delle etichette che spieghino i contenuti delle celle ed evidenziando quella in cui viene raggiunto il numero fisso 6174.
Queste considerazioni possono portare a strutturare il foglio in modo diverso rispetto al primo approccio, dando così una nuova veste all’implementazione dell’algoritmo:

Con gli alunni più esperti, già avvezzi ad approfondire la risoluzione di problemi e all’uso del foglio di calcolo, si può invece procedere sollecitandoli nella risposta a domande che mettano in luce la criticità di alcuni passaggi dell’algoritmo precedentemente proposto, così da individuare una procedura risolutiva più completa.
- Cosa accadrebbe se si inserisse un numero iniziale con le cifre tutte uguali, senza rispettare l’ipotesi iniziale?
- Quanti inserimenti di numeri con cifre in ordine decrescente e crescente si devono realizzare qualora fossero necessari tutti i sette passaggi previsti dal matematico Kaprekar?
- Commettendo un errore nell’inserimento di uno dei numeri, l’algoritmo di verifica avrebbe ancora senso?
- È possibile verificare che con tutti i numeri con quattro cifre diverse tra loro si raggiunge il numero fisso entro sette passaggi?
La sfida sarà quindi trovare le risposte e individuare gli algoritmi risolutivi delle criticità individuate; solo in seguito l’impegno sarà cercare, tra le funzionalità del foglio di calcolo, quelle che possono contribuire alla costruzione di formule che realizzino, in modo automatico, quanto prima è stato svolto manualmente.
Alla luce degli approfondimenti richiesti, il nuovo algoritmo può essere così descritto:
- sia dato un numero di quattro cifre
- isolare le singole cifre del numero
- verificare che non siano tutte uguali (solo la prima volta, cioè per il numero iniziale)
- ordinarle in modo decrescente
- ordinarle in modo crescente
- effettuare la sottrazione tra i due numeri ottenuti
- ripetere partendo dal passaggio 2, ma agendo sul risultato ottenuto al passo 6 e fintantoché esso è diverso da 6174.
Per il passo 2 deve essere chiamata in gioco la notazione posizionale dei numeri (lo studio dei Babilonesi rivela che quel popolo la utilizzava millenni fa: potrebbe essere oggetto di un’attività interdisciplinare di approfondimento), sapendo che la cifra più a destra è quella delle unità e a seguire verso sinistra troviamo la cifra delle decine, delle centinaia e delle migliaia.
Si può aggiungere l’osservazione che ogni cifra contribuisce con il proprio valore (da 0 a 9) e con un peso che dipende dalla sua posizione: da destra a sinistra, cioè dalle unità alle migliaia, i pesi sono 100=1, 101=10, 102=100, 103=1000.
Pertanto, per il numero formato dalle cifre xyzw si può scrivere:
xyzw = x 103 + y 102 + z 101 + w
Calcolando la divisione intera per 10 del numero xyzw si ottiene come resto la cifra w, quella delle unità, e come quoziente il numero xyz formato da 3 cifre; iterando l’applicazione della divisione intera per 10 al quoziente ottenuto si isolano tutte le cifre del numero.
Le due funzioni QUOZIENTE() e RESTO() del Foglio di Calcolo consentono di realizzare quanto descritto:


Ovviamente, scritte le prime due formule nelle celle A2 e B2, esse possono essere copiate nelle celle corrispondenti delle 3 righe sottostanti.
Come si può osservare, la cifra delle migliaia è l’ultima ottenuta, quella più in basso, mentre quella delle unità è la prima.
Il passo 3, dal punto di vista algoritmico, può essere realizzato in svariati modi che possono chiamare in gioco la struttura di selezione SE-ALLORA-ALTRIMENTI, ma non solo.
Sempre considerando il numero xyzw, una volta isolate le sue cifre si potrebbero confrontare le prime due e se sono diverse tra loro l’ipotesi iniziale è già rispettata; se invece risultassero uguali si dovrebbe procedere con il confronto tra la seconda e la terza e poi, se necessario, tra la terza e la quarta cifra. Oppure, utilizzando gli operatori logici, in particolare OR, si potrebbe costruire una espressione che dia come risultato Vero se le cifre del numero rispettano le ipotesi, Falso altrimenti:
(x ≠ y) OR (y ≠ z) OR (z ≠ w)
È sufficiente che una sola delle disuguaglianze sia Vera (cioè che due sole cifre siano diverse tra loro) perché l’intera espressione lo sia; diversamente, tutte e tre devono risultare False (cioè tutte le cifre uguali tra loro) perché lo sia l’intera espressione.
Il foglio di calcolo elenca nella categoria delle funzioni Logiche la O() che realizza proprio l’operatore relazionale OR:

Il simbolo “≠” deve essere realizzato con l’accostamento dei due simboli “<>”


Ovviamente, se le 4 cifre dovessero essere tutte uguali, i due numeri con cifre in ordine crescente e decrescente sarebbero uguali e la loro differenza produrrebbe 0 così da rendere priva di senso qualsiasi verifica successiva. Quindi, le formule mostrate di seguito potranno successivamente essere condizionate all’esito della formula contenuta in B1 mediante l’uso della funzione SE().
Veniamo ora agli ordinamenti delle cifre, decrescente e crescente, i passi 4 e 5 dell’algoritmo.
Anche in questo caso ci viene in aiuto una funzione predefinita, questa volta un po’ più complessa poiché si tratta di una funzione di tipo matrice; essa, quindi, potrà essere proposta ad alunni che abbiano già una certa competenza al riguardo:

prima di scrivere la formula è necessario selezionare la zona di celle C2:C5; digitando il simbolo “=” per iniziare a scrivere la formula sembrerà che essa venga scritta nella prima cella dell’area selezionata, ma vedremo che non sarà così. I parametri della funzione sono nell’ordine: la zona B2:B5, cioè la tabella che contiene i dati da ordinare; il numero 1 per indicare che si vuole ordinare la tabella rispetto la sua prima colonna (pur essendo la tabella formata da una sola colonna, è comunque necessario specificare); il numero -1 nel terzo parametro indica l’ordinamento decrescente. Per confermare la formula, essendo di tipo matrice, va utilizzata la combinazione di tasti CTRL-SHIFT-INVIO, che la estenderà all’intera area selezionata in precedenza, fornendo quindi i risultati distribuiti in ogni singola cella.
Per l’altro ordinamento sarà sufficiente sostituire il parametro -1 con 1.

Qualora questi ultimi due passaggi fossero ritenuti troppo complessi, dopo aver isolato le singole cifre è possibile prevedere la scrittura manuale dei due diversi ordinamenti (fase comunque critica per possibili errori di battitura), oppure sfruttare le funzionalità del menu Dati, dopo aver copiato i contenuti dell’area B2:B5 e incollati in modo speciale (solo numeri) nelle celle adiacenti delle colonne C e D, sotto le etichette “decrescente” e “crescente”:

Per eseguire la sottrazione tra i due numeri è necessario però ricostituirli: il primo è formato da 6 migliaia, 4 centinaia, 3 decine e 2 unità, quindi:

Ovviamente, al posto delle potenze che identificano i pesi delle singole cifre si possono usare le costanti 1000, 100, 10.
Dato che la formula utilizza riferimenti relativi, essa può essere copiata nella cella D7 per ottenere il numero formato con le cifre decrescenti, in modo poi da realizzare la formula per la loro sottrazione nella cella posta di fianco.

La costruzione di formule con riferimenti relativi ha il vantaggio di poter selezionare l’intera area A1:E6, copiarla e incollarla a partire dalla cella A8 con la certezza che le formule riferiranno le celle corrette, con l’accortezza di inserire nella cella A8 la formula =E6 così da ricominciare il processo a partire dal risultato ottenuto al passo precedente:

Per questo numero scelto in input, già al secondo passaggio si ottiene la costante 6174.
Per altri numeri dovranno essere effettuate ulteriori operazioni di copia-incolla per verificare quando si giunge alla conclusione del processo; per esempio, partendo dal numero 4326, che differisce per una sola cifra dal precedente, si arriva al numero fisso proprio al settimo passaggio.
La scelta del foglio di calcolo per la verifica della costante di Kaprekar a quattro cifre è ovviamente di carattere didattico, per avvicinare gli alunni all’analisi di problemi, alla loro suddivisione in sotto problemi sviluppabili in modo indipendente l’uno dall’altro, alla produzione di algoritmi risolutivi e alla loro implementazione mediante uno strumento software di uso comune. In poche parole, per sviluppare il loro Pensiero Computazionale.
L’approccio iniziale proposto, che prevede implementazione mediante l’uso di semplici formule e ordinamenti manuali delle cifre a fronte della formattazione delle celle per ottimizzare il layout finale, è certamente più abbordabile per gli alunni più piccoli. Tuttavia, quale che sia il livello della realizzazione finale, è importante che, una volta individuato l’algoritmo e codificatolo mediante uno strumento software, gli alunni abbiano la consapevolezza che, in generale, l’implementazione non viene realizzata per sé stessi, anzi, deve essere rivolta ad altri. Diventa quindi indispensabile immedesimarsi nell’utente che dovrà trovare facile l’utilizzo, in questo caso, del foglio di calcolo, pur senza sapere nulla di come esso stesso sia stato realizzato.
Ho lasciato in sospeso la risposta alla domanda “è possibile verificare che per tutti i numeri con 4 cifre diverse tra loro si raggiunge il numero fisso entro sette passaggi?”.
Chi, come me, è appassionato nella soluzione di sfide complesse può ingegnarsi nel trovare modo di sviluppare anche questa verifica col foglio di calcolo, iniziando ancora una volta dalla suddivisione del problema in sotto problemi:
- generare tutti i numeri di quattro cifre;
- scartare quelli con tutte le cifre uguali;
- applicare a tutti i rimanenti la verifica di Kaprekar, contando le iterazioni per arrivare al numero fisso e verificando che esse non superino mai la quantità 7.
Il primo di questi nuovi passaggi è semplice: costruire la sequenza dei numeri da 1 a 9998 (per rispettare l’ipotesi iniziale); il secondo è già stato trattato introducendo l’uso dell’operatore logico OR; il terzo punto è decisamente più complesso da realizzare col foglio di calcolo.
7. Conclusioni
In un’attività di laboratorio come quella proposta, l’aspetto didattico più interessante è l’individuazione, da parte del docente, di livelli diversi di approccio al problema che consentano di adattare l’esercitazione alle caratteristiche della classe, ma anche del singolo studente grazie alla suddivisione del problema in sotto problemi di diversa difficoltà. Nella progettazione didattica dell’attività laboratoriale il livello deve essere scelto anche nell’ottica di quali debbano essere le funzionalità del software che si vogliono presentare alla classe: algoritmi che si sviluppano in modo più approfondito richiedono funzionalità più sofisticate. Pur volendo trasmettere competenze, obiettivo certamente primario, non si può prescindere dalla conoscenza dello strumento software.
Volendo poi introdurre come obiettivo didattico l’utilizzo dei linguaggi di programmazione e della scrittura di codice, il coding, può essere interessante scegliere quello più adeguato all’età degli alunni, spaziando dai linguaggi visuali a blocchi quali Scratch e Snap! fino ad arrivare ai linguaggi testuali come Python. Questi linguaggi mettono a disposizione le strutture ciclo, che rendono più semplice la verifica del numero di Kaprekar, in particolare per il conteggio delle iterazioni necessarie ad arrivare al numero fisso 6174, così da verificare l’ultimo punto dell’algoritmo lasciato in sospeso, cioè che non vengono mai superati i sette passaggi.
Volendo poi introdurre come obiettivo didattico l’utilizzo dei linguaggi di programmazione e della scrittura di codice, il coding, può essere interessante scegliere quello più adeguato all’età degli alunni, spaziando dai linguaggi visuali a blocchi quali Scratch e Snap! fino ad arrivare ai linguaggi testuali come Python. Questi linguaggi mettono a disposizione le strutture ciclo, che rendono più semplice la verifica del numero di Kaprekar, in particolare per il conteggio delle iterazioni necessarie ad arrivare al numero fisso 6174, così da verificare l’ultimo punto dell’algoritmo lasciato in sospeso, cioè che non vengono mai superati i sette passaggi.