libertas.sm logo news informazioni san marino rimini romagna
libertas romagna san marino applicazioni mobile apple android
h 11:18 giovedì 24 maggio 2012/1711 d.F.R. english version

Informatica nella didattica utilizzando il linguaggio prolog (Marino Cecchetti)

Condividi:

 L'informatica nella scuola

usando il  PROLOG (seconda puntata)

(“Scuola e Didattica”, Editrice La Scuola, Brescia, Anno XXXIV,  n.8 (15 gennaio 1989)

  

Seconda parte: ELABORAZIONE DELLE CONOSCENZE

Dopo aver presentato, nella prima parte dell’articolo pubblicata sul n. 5, i primi elementi del linguaggio PROLOG, l’Autore presenta qui ulteriori nozioni che possono rappresentare il bagaglio minimo per affrontare un affascinante viaggio nel mondo della programmazione logica (La redazione)

 

Abbiamo visto che il computer può essere utilizzato per archiviare informazioni: queste vengono conservate e restituite così come sono state immagazzinate. Ora prenderemo in esame il computer come elabora­tore di informazioni. Cominciamo intanto a familiarizzare con un'altra frase PROLOG. Ci consentirà di tradurre il periodo:

         se la mamma sta in casa, Marco studia la lezione.

E'un periodo ipotetico, detto del primo tipo o della realtà: l'evento espresso dalla proposizione reggente (Marco studia la lezione) si verifica soltanto a condizione che, nell'IPOTESI che si verifichi prima e realmente l'evento espresso dalla dipendente (la mamma sta in casa). Ecco come si può tradurre in PROLOG:

       studia(marco,lezione):- sta_in(mamma,casa).

dove il simbolo :- si legge "SE", o meglio "E' VERO SE".

 

studia(marco,lezione)   è detto TESTA della REGOLA.

sta_in(mamma,casa)      è detto CORPO della REGOLA.

 

Analogamente:

    Italiano: se il babbo ha comprato il gelato,  Giorgio lo mangia.

    PROLOG:mangia(giorgio,gelato):- ha_comprato(babbo,gelato).

 

In Italiano, la frase condizionale precede, in genere, la conclusione; in PROLOG si ha il contrario. Se in italiano le condizioni sono più di una, allora in PROLOG il CORPO della REGOLA sarà formato da più frasi semplici separate fra loro da una virgola. Esempio:

    Italiano:   se la mamma sta in casa e lo controlla, Marco studia la lezione.

    PROLOG:  studia(marco,lezione):-sta_in(mamma,casa),

                                                         controlla(mamma,marco).

Solo se tutte e due le condizioni saranno verificate, Marco studierà la lezione (indipendentemente dall'ordine con cui si susseguono le condizioni stesse). Le REGOLE permettono di allargare la BASE DI CONOSCENZA, precedentemente costituita solo da FATTI, aumentando le potenzialità di rappresentazione e di interrogazione.

Come primo esempio, riprendiamo in esame l'AMBIENTE dell'altra volta, nel quale figurava la seguente base di FATTI:

     abita_a(marco,roma).

     abita_a(giovanni,milano).

     abita_a(louis,parigi).

     abita_a(tiziana,roma).

     è_capitale_di(roma,italia).

     è_capitale_di(parigi,francia).

 

Vogliamo mettere il computer in grado di rispondere alla domanda:

          chi abita in una capitale?

La domanda non è direttamente traducibile in PROLOG, nel_nostro_AMBIENTE, in quanto nessuno dei due predicati di cui disponiamo, cioè abita_a ed è_capitale_di, singolarmente preso, permette di tradurre in PROLOG tale frase-domanda. La questione può essere risolta in più modi.

Primo. Aggiungiamo i seguenti nuovi FATTI, coerenti con i prece­denti:

        abita_in_capitale(marco).

        abita_in_capitale(louis).

        abita_in_capitale(tiziana).

A questo punto il computer alla

        Domanda: abita_in_capitale(Persona).

risponde ovviamente

        Persona = marco

        Persona = louis

        Persona = tiziana.

In effetti però, procedendo in questo modo, noi stessi abbiamo allargato la BASE DI CONOSCENZA, in quanto noi stessi abbiamo effettuato materialmente la ricerca delle persone che abitano in una capitale, escludendo, ad esempio, Giovanni.

Secondo. C'è un modo più rapido, elegante e vantaggioso per noi: far cercare al computer, in vece nostra, i nomi delle persone che rispon­dono al requisito di abitare in una capitale. Come? Insegnando al computer, attraverso una REGOLA, che cosa vuol dire che "una perso­na abita in una capitale". E lo dobbiamo insegnare, ovviamente, sulla base degli "schemi di frase" che già fanno parte dell'AMBIENTE, cioè utilizzando i predica­ti abita_a ed è_capitale_di. In altre parole, occorre esprimere il "nuovo" in termini di vecchia conoscenza.

Diremo, ad esempio, che chi abita in una capitale è una persona che abita in una città e questa città è capitale di un qualche stato.

Cioè:

          Se una persona abita in una città

          e questa città è capitale di uno stato (qualsiasi),

          allora quella persona abita in una capitale.

Ora possiamo tradurre il tutto in PROLOG mediante la REGOLA:

          abita_in_capitale(Persona):-  abita_a(Persona,Città),è_capitale_di(Città,_).

dove la virgola sta al posto della congiunzione "e" (ed il trattino "_" sta, in questo caso, per "stato qualsiasi").

 

In pratica, è stato introdotto nella BASE DI CONOSCENZA il nuovo predicato abita_in_capitale, non (come nel primo modo) attraverso una elenca­zione di FATTI, ma come TESTA di una REGOLA, il cui CORPO è costituito da predicati già noti. Alla                           

           Domanda : abita_in_capitale(Persona)

il computer cercherà, in vece nostra, in base a quanto gli abbiamo insegnato, le persone abitanti in capitali e risponderà:

          Persona=marco

          Persona=louis

          Persona=tiziana

Questa volta però la fatica di selezionare le persone che rispondono al requisito richiesto è stata addossata al computer!

In effetti, noi ci siamo limitati a dare una definizione, cioè abbiamo descritto che cosa vuol dire abitare in una capitale, o, in altre parole, abbiamo precisato qual è il requisito che contraddistingue la persona che abita in una capitale:

una persona P abita in una capitale, se questa persona P abita in una città C e questa città C è capitale di uno stato (interpretazione dichiarativa).

Per il computer la stessa REGOLA suona invece così:

per trovare le persone che abitano in una capitale, devo anzitutto individuare, per ogni persona la città dove abita e quindi devo veri­ficare se questa città è capitale di uno stato qualsiasi (inter­pretazione procedurale).

 

Seguiamo qualche altro esempio: si potrà intravedere quanto sia vasto il campo di applicazione delle REGOLE nella rappresentazione e nella elaborazione delle conoscenze.

Consideriamo il seguente AMBIENTE:

     mangia(leone,carne).

     mangia(uomo,carne).

     mangia(cane,carne).

     mangia(mucca,erba).

     mangia(dromedario,erba).

     mangia(uomo,erba).

     mangia(gatto,carne).

 

Potremmo arricchire la BASE DI CONOSCENZA aggiungendo alcune REGOLE di facile lettura:

     è_erbivoro(Animale):-  mangia(Animale,erba).

     è_carnivoro(Animale):- mangia(Animale,carne).

     è_onnivoro(Animale):-  mangia(Animale,carne),

                                         mangia(Animale,erba).

 

A questo punto si possono porre domande, utilizzando anche i nuovi predicati è_erbivoro, è_carnivoro, è_onnivoro definiti mediante

REGOLE: il computer risponderà .... a tono.

         

Altro AMBIENTE. Siamo a scuola.

     insegna(ricci,inglese,classe_2A).

     insegna(giorgi,matematica,classe_1B).

     insegna(rippi,italiano,classe_1B).

     frequenta(giorgio,classe_1B).

     frequenta(maria,classe_2A).

     frequenta(mirco,classe_1B).

 

Potremmo, ad esempio, scrivere una REGOLA che ci permetta di individuare gli insegnanti di un dato ragazzo:

 

è_insegnante_di(Professore,Ragazzo):- insegna(Professore,_,Classe),

                                                            frequenta(Ragazzo,Classe).

Cioè: un professore è insegnante di un ragazzo, se quel professore insegna (una materia qualsiasi) in una classe e il ragazzo frequenta quella stessa classe.

In altre parole, è essenziale che esista_una_classe nella quale opera­no entrambi, professore ed alunno.

Se poniamo la

                         Domanda: è_insegnante_di(Professore,mirco)

avremo come risposta:

                         Professore=giorgi

                         Professore=rippi

Ma la stessa REGOLA può essere utilizzata anche ....all'inverso:

                         Domanda: è_insegnante_di(rippi,Ragazzo)

avremo come risposta:

                         Ragazzo=giorgio

                         Ragazzo=mirco

Ed ancora: se, nella domanda, entrambi gli argomenti sono variabili, avremo di ritorno tutte le coppie possibili insegnante-alunno.

Analogamente si potrebbe definire "compagni di classe" ecc. In pratica non esiste un limite alla varietà e al numero di REGOLE che si possono introdurre su una BASE DI CONOSCENZA. Tanto più che la TESTA di una REGOLA può essere utilizzata nel CORPO  di un'altra REGOLA e, addirit­tura, è possibile costruire una REGOLA che utilizza, fra le condizio­ni, cioè nel CORPO, anche se stessa (in versione di differente livel­lo).

Non possiamo trattarne più diffusamente, in questa sede. Qui ci siamo limitati a mostrare alcuni esempi di applicazione del PROLOG per descrivere ed elaborare conoscenze: l'AMBIENTE è un frammento di conoscenza, espresso me­diante entità e relazioni. Singo­lare è il fatto che noi, nell'introdurre le entità e le relazio­ni, possiamo continuare a "pensare in modo ordinario", cioè tenendo d'oc­chio e la correttezza sintattica e la correttezza semantica: il com­puter, che manipolerà tali relazioni operando esclusivamente sul piano sintatti­co, darà risposte che risultano essere corrette (come abbiamo già avuto modo di vedere) anche rispetto alla semantica.

A questo proposi­to, è senz'al­tro suggestivo il seguente AMBIENTE:

     è_mortale(P):-è_uomo(P).

     è_uomo(socrate).

 

La seconda frase si traduce: Socrate è un uomo.

La prima frase, tradotta alla lettera: se P è un uomo, allora P è mortale. Cioè: Chi è uomo, è mortale. Ed anche: Ogni uomo è mortale. Infine: Tutti gli uomini sono mortali.

In altre parole, il nostro AMBIENTE è costituito dalla traduzione in PROLOG delle due premesse del famoso sillogismo aristotelico.

Ebbene se poniamo la domanda:

                              è_mortale(Chi)

si ha la risposta: Chi=socrate.

Il computer, che parla PROLOG, risponde ad ogni frase-domanda utilizzando una regola di deduzione o inferenza più ampia di quella del sillogismo. Anch'essa è tratta dalla logica: una scienza molto antica, che ha conosciuto in questi ultimi due secoli un nuovo vigore, per l'apporto di più ambiti disciplinari, soprattutto della matematica.

Lo vedremo la prossima volta.


Cerca nel sito

Cerca tra news, articoli e comunicati!


nel sito news e comunicati
Sponsor
Sponsor
Sponsor
Sponsor
Sponsor
Libertas.sm © 2012 by Belcom - testata di informazioni e news sulla Repubblica di San Marino