Alcune attività di programmazione (e di riflessione sulla
programmazione) intrecciate ai diversi apprendimenti disciplinari
Alcune piccole sequenze di attività affrontabili con vari strumenti online
proposte per gruppi di lavoro (A, B, C) con docenti di diversi livelli scolastici
A
| (1) | Apri (e prova a rispondere e a riavviare più volte) questo
quesito. Spiega a parole e/o con un diagramma un possibile algoritmo per generare la risposta a partire dalle parole che compaiono. Quali analogie tra apprendimento matematico e apprendimento linguistico suggerisce questo "script" (uno "script" è un piccolo "programma") |
![]() |
| (2) | Apri (e prova a rispondere e a riavviare più volte) questo
quesito. I grafi di flusso sono forse lo strumento più semplice per descrivere algoritmi a partire dai primi livelli scolastici. Come si potrebbero descrivere questi problemi con delle formule? In quali livelli scolastici? Qui sotto un altro diagramma di flusso, usato per descrivere le attività economiche di una società che viveva di caccia e raccolta. Un possibile esercizio per gli alunni: descrivi a parole le "frecce" 1, 2, 9. |
![]() |
![]() | ||
| (3) | Apri e prova ad usare più volte questo
script. È facile descrivere, a parole, un possibile algoritmo per generare le stesse uscite. Quale potrebbe essere questa descrizione? Qual è il vantaggio principale di usare un programma? |
![]() |
| (4) | Apri WolframAlpha, il software matematico libero più diffuso al mondo. |
![]() |
|
| Copia e incolla - o batti direttamente - nel box di input (quello raffigurato sopra) |
|
| (5) | Copia e incolla - o batti direttamente - in WolframAlpha |
| (6) | Copia e incolla in WolframAlpha: solve x^3 + 3*x^2 - 2 = 0 using bisection method for 0 <= x <= 2 with 1 digits precision poi: solve x^3 + 3*x^2 - 2 = 0 using bisection method for 0 <= x <= 2 with 2 digits precision solve x^3 + 3*x^2 - 2 = 0 using bisection method for 0 <= x <= 2 with 3 digits precision poi in fondo alla finestra clicca more digits Quando è spiegabile agli alunni il funzionamento dell'algoritmo di bisezione? |
| (7) |
Il linguaggio di programmazione che inconsapevolmente tutti usiamo di più è quello incorporato nei browser:
JavaScript; lo usiamo quando prenotiamo qualche servizio, quando facciamo particolari ricerche,
Se ne può fare un uso sofisticato ma lo si può impiegare anche in modo semplice, per imparare, ad un primo livello, ad usare un linguaggio di programmazione universale.
Se sei interessato alla sua storia vedi Wikipedia (di cui, per tutti gli argomenti di natura scientifica, anche con gli studenti, è bene esaminare la versione "inglese"; in quella "italiana" ci sono anche molte sciocchezze ed errori). Vediamo solo qualche esempio d'uso: clicca qui. |
| (8) | Consideriamo le ultime righe del primo esempio di programma sopra richiamato e la corrispondente uscita:
A = [4.1, 3, 12, -3, 1e3, 1e-4]
document.write(A,"<br>")B = A; n = A.length
for(k=0; k<n; k=k+1) {
for(i=k+1; i<n; i=i+1) { if(B[i]<B[k]) {C=B[k]; B[k]=B[i]; B[i]=C} } }
document.write(B)
4.1,3,12,-3,1000,0.0001
-3,0.0001,3,4.1,12,1000
Prova a spiegare a parole che cosa fanno e come operabo queste righe di programma.Nelle scuole superiori è utile avere un'idea di come funziona un programma. Nelle scuole ad indirizzo tecnico-informatico si possono studiare linguaggi di programmazione più sofisticati. Nelle altre l'uso di JavaScript può essere uno strumento per realizzare dei semplici programmi. Per altri script vedi qui, per altri esempi d'uso di WolframAlpha vedi qui. |
B
| (1) | Apri (e prova a rispondere e a riavviare più volte) questo
quesito. Spiega a parole e/o con un diagramma un possibile algoritmo per generare la risposta a partire dai numeri che compaiono. (Questo è uno "script", cioè un piccolo "programma") |
![]() |
| (2) | Apri (e prova a rispondere e a riavviare più volte) questo
quesito. I grafi di flusso sono forse lo strumento più semplice per descrivere algoritmi a partire dai primi livelli scolastici. Come si potrebbero descrivere questi problemi con delle formule? In quali livelli scolastici? Qui sotto un altro diagramma di flusso, usato per descrivere come una famiglia di pinguini provvede al proprio mantenimento. Un possibile esercizio per gli alunni: descrivi a parole le "frecce" 1, 2, 6. |
![]() |
![]() | ||
| (3) | Apri lo script divisione. |
![]() |
|
| Come opera questo script? Per capirlo occorre conoscere l'algoritmo della divisione. Quale? Quello "magico" o quello lungo? Perché? Come facciamo a capire qual è il periodo? | |
| (4) | Apri WolframAlpha, il software matematico libero più diffuso al mondo. |
![]() |
|
| Copia e incolla - o batti direttamente - nel box di input (quello raffigurato sopra) |
|
| (5) | Copia e incolla - o batti direttamente - in WolframAlpha |
| (6) | Un numero descrivibile, cifra per cifra, con un algoritmo è razionale? Prova a rispondere. Poi considera il numero generato da questo algoritmo: ![]() Visualizzane le cifre con WolframAlpha copiando e incollando: |
| (7) |
Il linguaggio di programmazione che inconsapevolmente tutti usiamo di più è quello incorporato nei browser:
JavaScript; lo usiamo quando prenotiamo qualche servizio, quando facciamo particolari ricerche,
Se ne può fare un uso sofisticato ma lo si può impiegare anche in modo semplice, per imparare, ad un primo livello, ad usare un linguaggio di programmazione universale.
Se sei interessato alla sua storia vedi Wikipedia (di cui, per tutti gli argomenti di natura scientifica, anche con gli studenti, è bene esaminare la versione "inglese"; in quella "italiana" ci sono anche molte sciocchezze ed errori). Vediamo solo qualche esempio d'uso: clicca qui. |
| (8) | Altro esempio di uso di JS: Copia nel box per il testo del programma le righe seguenti
n=1896
k=2
while(k <= n) {if(n/k == Math.round(n/k)) {n = n/k; document.write(k," ")} else k=k+1 }
Prova a spiegare a parole che cosa fa e come opera questo programma. |
C
| (1) | Apri (e prova a rispondere e a riavviare più volte) questo
primo e questo secondo quesito. (Questi sono "script", cioè dei piccoli "programmi") Spiega a parole e/o con un diagramma un possibile algoritmo per generare la risposta a partire dai numeri che compaiono. |
![]() |
| (2) | Apri (e prova a rispondere e a riavviare più volte) questo
quesito. I grafi di flusso sono forse lo strumento più semplice per descrivere algoritmi a partire dai primi livelli scolastici. Come si potrebbero descrivere questi problemi con delle formule? In quali livelli scolastici? Qui sotto un altro diagramma di flusso, usato per descrivere le attività economiche di una società che viveva di caccia e raccolta. Un possibile esercizio per gli alunni: descrivi a parole le "frecce" 1, 2, 9. |
![]() |
![]() | ||
| (3) | Apri lo script ordina_parole. |
![]() |
|
|
Spiega a parole e/o con un diagramma un possibile algoritmo per generare la risposta a partire dalle parole che compaiono. Quali analogie tra apprendimento matematico e apprendimento linguistico suggerisce questo "script"? |
|
| (4) | Lo script codifica realizza codifiche e decodifiche |
![]() |
|
|
Prova a decodificare (copia e incolla nella casella opportuna, scegli "Letters" e clicca "Decode") WUugoUpMjo L'esempio mette in luce un altro aspetto didatticamente importante: gli algoritmi (e la matematica) sono presenti in una marea di circostanze della vita quotidiana. La scuola fa riflettere su questo aspetto? | |
| (5) | Apri WolframAlpha, il software matematico libero più diffuso al mondo. |
![]() |
|
| Copia e incolla - o batti direttamente - nel box di input (quello raffigurato sopra) |
|
| (6) | Copia e incolla - o batti direttamente - in WolframAlpha |
| (7) | Copia e incolla in WolframAlpha Occorre imparare a fare "a mano" semplici divisioni tra polinomi (come quella riportata sotto), per capire le analogie tra questo algortimo e quello per la divisione tra numeri. L'obiettivo è capire come un algoritmo può effettuare il calcolo. Poi (quando?) si può usare il computer (quali vantaggi didattici ha il suo uso?). Volendo si può usare il computer anche per esplorare degli esempi di calcolo. Ad esempio posso copiare e incollare Chi non insegna nelle superiori non si preoccupi. Sono solo esempi per far pensare ... |
| (8) |
Il linguaggio di programmazione che inconsapevolmente tutti usiamo di più è quello incorporato nei browser:
JavaScript; lo usiamo quando prenotiamo qualche servizio, quando facciamo particolari ricerche,
Se ne può fare un uso sofisticato ma lo si può impiegare anche in modo semplice, per imparare, ad un primo livello, ad usare un linguaggio di programmazione universale.
Se sei interessato alla sua storia vedi Wikipedia (di cui, per tutti gli argomenti di natura scientifica, anche con gli studenti, è bene esaminare la versione "inglese"; in quella "italiana" ci sono anche molte sciocchezze ed errori). Vediamo solo qualche esempio d'uso: clicca qui. |
| (9) | Consideriamo l'esempio finale del documento su JS:
function F(x) { return Math.abs(x*(x-2)) }; a = 0; b = 3
document.writeln("F(x) = abs(x*(x-2)); a = 0; b = 3<br>")
n=10000
for(i = 0; i < 5; i = i+1) {
s=0; h=(b-a)/n; for (var j=0; j < n; j=j+1) {s = s + F(a+(j+1/2)*h)}
document.writeln(n, " rettangoli, integrale su [a,b] di F = ", s*h, "<br>"); n=n*2
}
Output:
F(x) = abs(x*(x-2)); a = 0; b = 3
10000 rettangoli, integrale su [a,b] di F = 2.666666654167488
20000 rettangoli, integrale su [a,b] di F = 2.666666663541553
40000 rettangoli, integrale su [a,b] di F = 2.6666666658854408
80000 rettangoli, integrale su [a,b] di F = 2.6666666664713405
160000 rettangoli, integrale su [a,b] di F = 2.6666666666178482
Prova a spiegare a parole che cosa fa e come opera questo programma. |