Progetto del calcolatore geometrico

Questo progetto prevede la collaborazione di diverse persone, diciamo volontari, che avendo una buona preparazione nella geometria della scuola media possono dare il loro contributo.

Il lavoro è semplice, nel senso che possono lavorare a questo progetto i ragazzi più bravi in matematica, meglio in geometria, a partire dalla prima media. Ovviamente anche un adulto, a cui piace la geometria, può iscriversi a questo progetto ed inserire nuovi problemi di geometria. Inizialmente si lavora gratis usando la pagina:

Inserimento di problemi

Poi, quando si raggiunge un centinaio di nuovi problemi inseriti, può iniziare un ritorno economico non trascurabile. Mi spiego meglio. Ad oggi, aprile 2017, ho inserito da solo, dopo dieci anni di lavoro, circa 3.500 problemi. Sono pochi; il mio obiettivo è raggiungere i 10.000 problemi svolti; come età sto vicino ai 70 anni; se non trovo altri collaboratori tutti questi problemi andranno persi, e tra qualche anno i miei due siti di Scuola Elettrica e questo sito verranno chiusi, in quanto non si vive in eterno.

Per questo ho deciso di aprire la collaborazione ad altri volenterosi. Se uno riesce a mettere 100 nuovi problemi ritengo abbia diritto a 100/3500 degli utili del risolutore a pagamento:

Calcolatore geometrico

Ovviamente gli euro sono pochi, diciamo spiccioli, monetine.

Maggiori informazioni sul calcolatore geometrico sono riportate alla pagina:

Informazioni sul calcolatore

Riassumo qui alcune considerazioni essenziali. Il calcolatore geometrico sta a buon punto, cioè ha già al suo interno diverse funzioni in php che leggono la traccia del problema, eseguono l'analisi logica, ricavano i dati, risolvono i problemi elementari di ogni poligono e di ogni solido. Teoricamente è sufficiente, cioè risolve i problemi base, quelli facili, a mio avviso stiamo su circa 80% dei problemi facili. Il guaio è che i ragazzi cercano la soluzione su internet dei soli problemi difficili, cioè quelli più complessi, con diversi poligoni o con diversi solidi. Una tipica traccia complessa è la seguente:

In un trapezio l'altezza misura 24 cm, la base minore è i 5/2 dell'altezza e la base maggiore è i 4/3 della minore. Quanto misura la base di un triangolo equivalente al trapezio e avente l'altezza lunga 42 cm?

Come si vede ci sono due poligoni, un trapezio ed un triangolo; inoltre nel trapezio vi sono due frazioni e non una sola; infatti se vi fosse stata una sola frazione il problema sarebbe stato più semplice da risolvere.

Questo fatto ribalta le percentuali, per cui di fatto, l'80% dei problemi difficili non viene risolto, e mi sono fatto una brutta fama, in quanto mi devo sentire ogni giorno le parolacce degli studenti, che con l'applicazione dello smartphone cercano di risolvere il problema di geometria. E vogliono pure la fotocamera, cioè sono così pigri, io dico molto svegli, che pretendono di fare una foto dal libro di testo ed avere subito la soluzione del problema.

In pratica

Ho preparato diverso materiale per illustrare il procedimento per inserire la soluzione dei problemi.

Video di esempio

Comunque riassumo qui i punti da seguire.

1) dove stanno le tracce.

Le tracce da risolvere sono riportate alla pagina:

Problemi da risolvere

Si copia una delle tracce e la si incolla nell'area di testo.

In un trapezio l'area è 2120 cm², la somma delle basi misura 106 cm e l'altezza supera di 8 cm la base minore. Calcola il perimetro del trapezio.

Nel nostro caso supponiamo di voler risolvere la traccia di sopra. La copiamo, la incolliamo e poi premiamo:

Se il problema non viene risolto va tutto bene; altrimenti, cioè se viene risolto, vuol dire che il problema è stato già inserito e dobbiamo cercare un'altra traccia.

Poi clicchiamo dove dice:

E scegliamo:

"risoltitrapezio" in quanto si tratta di un problema sul trapezio.

Ora ci serve ricavare i dati del problema, cioè l'area che misura 2120 cm², la somma delle basi che misura 106 cm e la maggiorazione che misura 8 cm.

Ora servirebbe una buona preparazione nel linguaggio PHP, tuttavia basta avere una semplice infarinatura sulle variabili; le variabili sono dei nomi che noi diamo a piacere in cui memorizzare dei dati; possiamo ritenerle delle buste o delle scatole in cui conserviamo dei dati; le variabili si riconoscono in quanto iniziano con il simbolo del $; io ho dato il seguente significato:

$datis0[1] = una variabile che contiene il primo dato del problema;

$datis0[2] = una variabile che contiene il secondo dato del problema;

$datis0[3] = una variabile che contiene il terzo dato del problema;

Questo lavoro di ricerca dei dati viene fatto in automatico; solo che dobbiamo imparare a trovare e a usare questi dati.

Disponiamo di una tabella che ci facilità questo compito; questa tabella contiene 4 colonne; le prime 2 colonne si attivano quando le condizioni che scrivo sono vere; le altre due colonne si attivano quando le condizioni che scrivo sono false.

Ho scritto solo le prime tre righe della tabella, in quanto ci sono solo tre dati; nella prima riga ho scritto "somma" nella prima colonna; la seconda la lascio vuota; nella terza vi metto una barra "/"; la quarta la lascio vuota. Cosa vuol dire?

Vuol dire: cerca tra tutti i dati, se trovi su un rigo di dati la parola "somma" e non si tratta di una frazione, per questo ho messo la barra "/", allora per me quel dato significa la somma delle basi del trapezio.

Nella seconda riga ho scritto "area" nella prima colonna; la seconda la lascio vuota; nella terza vi metto una barra "/"; la quarta la lascio vuota. Cosa vuol dire?

Vuol dire: cerca tra tutti i dati, se trovi su un rigo di dati la parola "area" e non si tratta di una frazione, per questo ho messo la barra "/", allora per me quel dato significa l'area del trapezio.

Nella terza riga ho scritto "supera" nella prima colonna; la seconda la lascio vuota; nella terza vi metto una barra "/"; la quarta la lascio vuota. Cosa vuol dire?

Vuol dire: cerca tra tutti i dati, se trovi su un rigo di dati la parola "supera" e non si tratta di una frazione, per questo ho messo la barra "/", allora per me quel dato significa di quanto l'altezza del trapezio supera la base minore.

Scritto questo clicco su:

ed ottengo subito il mio codice php, che trova nella traccia i tre dati che mi servono per risolvere il problema, cioè la somma delle basi, l'area e di quanto l'altezza supera la base minore.

Codice PHP
 


// problema n. 3 nostro
$dato11="";
cercodati18("somma","","/","");
if($trovato1=="SI") {
        $dato11=$datoa1;
        $unita11=$unita1;
        };
$dato22="";
cercodati18("area","","/","");
if($trovato1=="SI") {
        $dato22=$datoa1;
        $unita22=$unita1;
        };
$dato33="";
cercodati18("supera","","/","");
if($trovato1=="SI") {
        $dato33=$datoa1;
        $unita33=$unita1;
        };
if(($dato11)&&($dato22)&&($dato33)) {
    $note3.="Ho trovato i dati da trapezio2.php  problema n. 3";
    };
 

Il codice viene generato in modo automatico, per cui non serve conoscere il linguaggio php in modo completo, ma solo alcuni elementi base, cioè solo i nomi delle variabili e il loro contenuto. Questi nomi li ho dati in modo crescente ed hanno un significato particolare, cioè mi devo ricordare che cosa contengono queste buste o queste scatole, che in PHP si chiamano variabili. Nel nostro caso abbiamo:

$dato11= contiene il numero 106 che è la somma delle basi;
$unita11=
contiene l'unità di misura della somma cioè i centimetri cm;

$dato22= contiene il numero 2120 che è l'area del trapezio;
$unita22=
contiene l'unità di misura dell'area cioè i  cm²;

$dato33= contiene il numero 8 che è di quanto l'altezza supera la base minore;
$unita33=
contiene l'unità di misura cioè i centimetri cm;

Questi nomi me li devo ricordare in quanto mi servono per i calcoli successivi, che verranno comunque svolti in modo automatico; io devo solo ricordare i nomi delle variabili e che cosa contengono.

Il lavoro è un pò lungo, ma se seguiamo con attenzione il risultato sarà bellissimo. Dobbiamo ora sfruttare le varie funzioni del trapezio e cercare una funzione che mi calcola l'altezza, sapendo l'area e la somma delle basi.

Clicchiamo su "SCEGLI POLIGONO":

e scegliamo "trapezio"; poi clicchiamo su "SCEGLI FUNZIONE":

e scegliamo: "altezza del trapezio sapendo area e somma basi".

La schermata che vediamo dovrebbe essere chiara e viene scritta in modo automatico, solo che occorre fare delle correzioni.

Cioè occorre scambiare $dato11 con $dato22, in quanto l'area stava in $dato22 e la somma delle basi stava in $dato11. Corregiamo ed otteniamo:

Ora possiamo cliccare su "INSERISCI NELLA IF" ed otteniamo il codice in PHP:

Codice PHP
 


// problema n. 3 nostro
$dato11="";
cercodati18("somma","","/","");
if($trovato1=="SI") {
    $dato11=$datoa1;
    $unita11=$unita1;
    };
$dato22="";
cercodati18("area","","/","");
if($trovato1=="SI") {
    $dato22=$datoa1;
    $unita22=$unita1;
    };
$dato33="";
cercodati18("supera","","/","");
if($trovato1=="SI") {
    $dato33=$datoa1;
    $unita33=$unita1;
    };
if(($dato11)&&($dato22)&&($dato33)) {
    cercorichiesta5("altezza|perimetro","","","","");
    if($trovato1=="SI") {
         trapezioaltezza($dato22,$dato11,$unita11,"ABCD");
        $altezza=$p1;
        $note3.="Ho risolto da trapezio2.php problema n. 3";
        };
    $note3.="Ho trovato i dati da trapezio2.php problema n. 3 ";
    };
 

Ora possiamo vedere il lavoro fatto fino ad ora, cliccando su:

Otteniamo:

Fine dati per programmatore esterno **********************************


Inizio soluzione trovata da programmatore esterno


Dati
Poligono: trapezio ABCD
area A = 2120 cm²
somma delle basi b1 + b2 = 106 cm

Soluzione

Si richiede l'altezza di un trapezio ABCD avente:
area A = 2120 cm²
b1 + b2= 106 cm
Uso la formula:

metto i valori ed ottengo
h = = 40 cm


Risposta
L'altezza del trapezio ABCD è 40 cm
Ho risolto da trapezio2.php problema n. 2
Ho risolto da trapezio2.php problema n. 2
Ho trovato i dati da trapezio2.php problema n. 2
Ho risolto da trapezio2.php problema n. 3
Ho trovato i dati da trapezio2.php problema n. 3


Fine soluzione trovata da programmatore esterno
**********

Ora che sappiamo che l'altezza del trapezio è 40 cm ci possiamo calcolare la base minore, che sarà: 40-8 = 32 cm

Per fare questo ci serve una funzione che fa la differenza tra due variabili. Le funzioni generiche si trovano sopra a quelle dei poligoni; clicchiamo:

e scegliamo: "differenza tra due numeri".

Ora occorre scegliere bene sia le variabili, sia i nomi che l'utente vedrà come risultato; andiamo in ordine. Al primo rigo dobbiamo indicare quello che vogliamo ottenere come risultato, cioè la base minore; per cui al posto di "differenza" scriviamo: "base minore". Al secondo rigo ci chiede l'unità di misura e va bene $unita11. Al terzo rigo ci chiede la descrizione del numero maggiore, per cui al posto di "primo numero" scriviamo: "altezza". Al quarto rigo ci chiede la variabile dove sta l'altezza, che non è $dato11, dove sta la somma delle basi ma è: $altezza; per cui al posto di $dato11 scriviamo $altezza. Al quinto rigo ci chiede l'unità di misura e va bene $unita11. Al sesto rigo ci chiede la descrizione del secondo numero, che è la differenza tra altezza e base minore; per cui al posto di "secondo numero" scriviamo "differenza". Al settimo rigo chi chiede la variabile da sottrarre, che è appunto il numero 8 che sta memorizzato nella variabile $dato33; per cui al posto di $dato22 mettiamo $dato33. Infine all'ottavo rigo ci chiede l'unità di misura; mettiamo $unita11 al posto di $unita22. Dopo le correzioni otteniamo:

Clicchiamo su "INSERISCI NELLA IF" ed otteniamo il nuovo codice PHP:

 

if(($dato11)&&($dato22)&&($dato33)) {
cercorichiesta5("altezza|perimetro","","","","");
if($trovato1=="SI") {
trapezioaltezza($dato22,$dato11,$unita11,"ABCD");
$altezza=$p1;
differenza33("base minore","altezza del trapezio","differenza",$altezza,$dato33,$unita11,$unita11,$unita11);
$differenza=$p1;
$note3.="Ho risolto da trapezio2.php problema n. 3
";
};
$note3.="Ho trovato i dati da trapezio2.php problema n. 3
";
};
 

Notiamo che il risultato lo mette nella variabile $differenza; questo dobbiamo ricordarlo che ci serve dopo, in quanto dalla somma delle basi dobbiamo sottrarre la base minore, per ottenere la maggiore. Quindi ci occorre una seconda volta la stessa funzione differenza, i cui valori vanno modificati in questo modo.

 

Notiamo che come variabile del primo numero abbiamo messo $dato11 dove sta la somma delle basi; mentre come secondo numero abbiamo messo $differenza. Clicchiamo su "INSERISCI NELLA IF" ed otteniamo il nuovo codice PHP:

cercorichiesta5("altezza|perimetro","","","","");
if($trovato1=="SI") {
trapezioaltezza($dato22,$dato11,$unita11,"ABCD");
$altezza=$p1;
differenza33("base minore","altezza del trapezio","differenza",$altezza,$dato33,$unita11,$unita11,$unita11);
$differenza=$p1;
differenza33("base maggiore","somma delle basi","base minore",$dato11,$differenza,$unita11,$unita11,$unita11);
$differenza2=$p1;
$note3.="Ho risolto da trapezio2.php problema n. 3
";
};
$note3.="Ho trovato i dati da trapezio2.php problema n. 3
";
};
 

Notiamo che come variabile della base maggiore in automatico è stata messa $differenza2; questo valore ci serve ora che dobbiamo calcolare il perimetro del trapezio. Riepilogando, in $differenza vi è la base minore; in $differenza2 vi è la base maggiore; in $altezza vi è l'altezza. Come primo numero abbiamo messo $dato11, dove sta la somma delle basi; mentre come secondo numero abbiamo messo $differenza.

Tra le funzioni del trapezio scegliamo quella che calcola il perimetro sapendo base maggiore, base minore e altezza. La traccia non precisa se il trapezio è isoscele o rettangolo; ma dai dati si deduce che è un trapezio rettangolo.

Otteniamo:

Occorre fare le opportune correzioni. Al posto di $dato11 mettiamo $differenza2; al posto di $dato22 mettiamo $differenza; al posto di $dato33 mettiamo $altezza. Otteniamo:

Clicchiamo su "INSERISCI NELLA IF" ed otteniamo il nuovo codice PHP:

cercorichiesta5("perimetro","","","","");
if($trovato1=="SI") {
trapezioperimetroraltezza($differenza2,$differenza,$altezza,$unita11,"ABCD");
$perimetro=$p1;
$note3.="Ho risolto da trapezio2.php problema n. 3
";
};
$note3.="Ho risolto da trapezio2.php problema n. 3
";
};
$note3.="Ho trovato i dati da trapezio2.php problema n. 3
";
};
 

Il lavoro più grosso lo abbiamo fatto. Clicchiamo su:

ed otteniamo lo svolgimento completo del problema.

Fine dati per programmatore esterno **********************************


Inizio soluzione trovata da programmatore esterno


Dati
Poligono: trapezio ABCD
area A = 2120 cm²
somma delle basi b1 + b2 = 106 cm

Soluzione

Si richiede l'altezza di un trapezio ABCD avente:
area A = 2120 cm²
b1 + b2= 106 cm
Uso la formula:

metto i valori ed ottengo
h = = 40 cm


Risposta
L'altezza del trapezio ABCD è 40 cm

Si richiede base minore sapendo che:
altezza del trapezio = 40 cm
differenza = 8 cm
Applico la formula:
base minore = altezza del trapezio - differenza ed ottengo:
base minore = 40 cm - 8 cm = 32 cm

Risposta
base minore è 32 cm

Si richiede base maggiore sapendo che:
somma delle basi = 106 cm
base minore = 32 cm
Applico la formula:
base maggiore = somma delle basi - base minore ed ottengo:
base maggiore = 106 cm - 32 cm = 74 cm

Risposta
base maggiore è 74 cm


Dati
Poligono: trapezio rettangolo ABCD
base maggiore b1 = 74 cm
base minore b2= 32 cm
altezza h = 40 cm

Soluzione

Si richiede il perimetro di un trapezio rettangolo ABCD avente:
base maggiore b1 = 74 cm
base minore b2 = 32 cm
altezza h = 40 cm
Mi calcolo il lato obliquo con il teorema di Pitagora
BC = V CH² + (AB - DC )²
ed ottengo:
BC = V 40 ² + (74 cm - 32 cm)² = 58 cm
Per il perimetro uso la formula:
p = AB + BC +DC +AD
p = 74 cm + 58 cm + 32 cm + 40 cm = 204 cm

Risposta
Il perimetro del trapezio ABCD è 204 cm
Ho risolto da trapezio2.php problema n. 2
Ho risolto da trapezio2.php problema n. 2
Ho trovato i dati da trapezio2.php problema n. 2
Ho risolto da trapezio2.php problema n. 3
Ho risolto da trapezio2.php problema n. 3
Ho trovato i dati da trapezio2.php problema n. 3
 

****************

L'interfaccia memorizza il lavoro man mano che lo facciamo; per cui possiamo sospendere e riprendere quando vogliamo. Il lavoro non è finito. Come stanno le cose ora solo noi abbiamo lo svolgimento del problema. Serve, quindi la pubblicazione sul sito, in modo che il codice php da noi generato, venga inserito all'interno del complesso codice php di tutto il calcolatore geometrico. Prima di fare questo occorre essere certi di alcune cose. In particolare che il codice php che risolve il nostro problema non ci sia già. Nel nostro caso esiste già; infatti leggendo bene queste righe che abbiamo visto più volte:

***********

Ho risolto da trapezio2.php problema n. 2
Ho risolto da trapezio2.php problema n. 2
Ho trovato i dati da trapezio2.php problema n. 2
Ho risolto da trapezio2.php problema n. 3
Ho risolto da trapezio2.php problema n. 3
Ho trovato i dati da trapezio2.php problema n. 3

*************

notiamo che dove dice problema n.3 vuol dire che il lavoro è nostro, infatti siamo partiti dal problema n.3; dove dice problema n.2 vuol dire che qualche altro il problema lo ha già inserito; per cui è dannoso inserire nuovamente questo codice che danneggia l'intero calcolatore geometrico. Un altro modo di accorgersi è quello di guardare bene questa interfaccia. Notiamo che il problema viene svolto due volte; la prima volta solo da trapezio n. 2 e poi anche da trapezio n. 3.

Se siamo certi che nessun altro ha inserito questo codice clicchiamo dapprima su:

"AGGIUNGI CODICE PHP". Poi clicchiamo di nuovo su:

Se il codice viene eseguito correttamente subito sotto la traccia, vuol dire che tutto è andato bene.

Per finire rendiamo la traccia disponibile agli altri, ma sarebbe meglio modificarla, precisando che è un trapezio rettangolo. Dopo le modifiche clcchiamo su:

"AGGIUNGI TRACCIA".

Il nostro lavoro è terminato.

Che fatica essere uomini!

Ci vuole almeno una o due ore di lavoro per un problema; non tutti possono capire il piacere di aver aumentato di uno i 3.500 problemi svolti.

Se desidera collaborare gratuitamente a questo progetto, può chiedere la password da questa pagina:

Posta elettronica

 

Indice Scuola Elettrica - generico


ER CALCOLATORE