La comunicazione uomo … macchina ACQUISISCI l’infinito del verbo CALCOLA la radice del verbo SCRIVI la radice del verbo ? Per comunicare con un esecutore meccanico bisogna rispettare la rigidità del suo linguaggio Per inquadrare il problema è opportuno: pensare alla comunicazione umana … pensare a come ci facciamo capire … pensare al significato delle parole … Cilindro Figura geometrica che si può ottenere facendo ruotare un rettangolo intorno al suo asse rettangolo Quadrilatero con tutti gli angoli retti Formato da quattro segmenti segmento Insieme di punti di una retta compresi tra due suoi punto punti dati Ente fondamentale della geometria il cui significato si ritiene noto Cilindro Figura geometrica che si può ottenere facendo ruotare un rettangolo intorno al suo asse rettangolo Quadrilatero con tutti gli angoli retti Formato da quattro segmenti segmento Insieme di punti di una retta compresi tra due suoi punti dati Ente primitivo della geometria Cilindro Figura geometrica che si può ottenere facendo ruotare un rettangolo intorno al suo asse rettangolo Quadrilatero con tutti gli angolo angoli retti Parte di un piano compresa tra due semirette che escono da uno stesso punto E così via ….. Simboli non terminali Primitive ILerettangoli forme arrotondate rappresentano rappresentano parole il cuiparole significato il cui deve significato essereèprecisato noto ? Torniamo al nostro problema iniziale: insegnare ad un esecutore meccanico il tempo indicativo presente di un verbo della prima coniugazione Acquisisci verbo Scrivi ‘egli’, la radice,’a’ Calcola la radice Scrivi ‘noi’, la radice,’iamo’ Scrivi ‘io’, la radice,’o’ Scrivi ‘voi’, la radice,’ate’ Scrivi ‘essi’, la radice,’ano’ Scrivi ‘tu’, la radice,’i’ ? Per comunicare con un esecutore bisogna rispettare la rigidità del suo linguaggio In altre parole: la comunicazione verso l’esecutore dovrà far uso solo di primitive Esistono delle carte sintattiche che ci consentono di individuare le primitive di tutti i termini della comunicazione verso l’esecutore Comunicare con un esecutore: il linguaggio PASCAL Program identificatore ; variabili ; istruzione . Il nome del programma Per fare quanto gli è richiesto l’esecutore predispone le zone di memoria necessarie: nel nostrodelle casotransizioni deve ricordare il valore “verbo” e di Si tratta indicate nella di rete di Petri “radice”. scritte in una forma che l’esecutore può capire Predisporrà, conseguentemente, due locazioni di memoria, di nome verbo e radice, in cui registrerà quanto gli sarà comunicato. Diagrammi sintattici relativi alla comunicazione dell’algoritmo di coniugazione dei verbi Lo stato attuale è marcato Acquisisci verbo Il verbo è stato acquisito Scrivi ‘egli’, la radice,’a’ Calcola la radice Scrivi ‘noi’, la radice,’iamo’ La radice è stata calcolata Scrivi ‘io’, la radice,’o’ Scrivi ‘voi’, la radice,’ate’ Scrivi ‘essi’, la radice,’ano’ Scrivi ‘tu’, la radice,’i’ IL programma PASCAL Program identificatore ; variabili ; PROGRAM Si tratta di una primitiva: l’esecutore ne capisce il significato istruzione . IL programma PASCAL Program identificatore ; variabili ; PROGRAM carattere carattere istruzione p r i mo . IL programma PASCAL Program ; identificatore , VAR identificatore STRING variabili ; PROGRAM : istruzione p r i mo . ; VAR verbo , radice : STRING; IL programma PASCAL ; identificatore Program variabili , begin ; PROGRAM istruzione istruzione p r i mo ( identificatore ; VAR verbo , radice : STRING; END BEGIN READLN ( verbo ) readln . ) Acquisisci verbo IL programma PASCAL Program identificatore ; variabili ; begin PROGRAM istruzione identificatore identificatore ; := , 1 ultimo char da copiare p r i mo . ; VAR verbo , radice : STRING; END ( COPY istruzione , ) Calcola la radice BEGIN READLN ( verbo ) ; radice := COPY( verbo ,1, LENGTH(verbo)-3 ) Si Si cominciano calcola laa copiare i caratteri lunghezza del verboae partire dal primo si sottrae 3 IL programma PASCAL Program identificatore ; variabili ; begin WRITELN variabile PROGRAM istruzione ( costante istruzione p r i mo . ; VAR verbo , radice : STRING; END costante , ; , ) Scrivi ‘io’, la radice,’o’ BEGIN READLN ( verbo ) ; radice := COPY( verbo ,1, LENGTH(verbo)-3) ; WRITELN ( ‘io’ , radice ,‘o’ ) IL programma PASCAL Program identificatore ; variabili ; begin WRITELN variabile PROGRAM istruzione ( costante istruzione p r i mo . ; VAR verbo , radice : STRING; END costante , ; , ) BEGIN READLN ( verbo ) ; radice := COPY( verbo ,1, LENGTH(verbo)-3) ; WRITELN ( ‘io’, radice ,‘o’); WRITELN (‘tu’, radice, ’i’); WRITELN(’egli’,radice,’a’) ; ………… Scrivi Scrivi‘egli’, ‘tu’, lalaradice,’i’ radice,’a’ END IL programma PASCAL Program identificatore ; variabili ; PROGRAM istruzione p r i mo . ; VAR verbo , radice : STRING; BEGIN READLN ( verbo) ; radice := COPY( verbo ,1, LENGTH(verbo)-3) ; WRITELN ( ‘io’, radice ,‘o’); WRITELN (‘tu’, radice, ’i’); WRITELN(’egli’,radice,’a’); ………… END . READLN(verbo); radice:=COPY(verbo,1,LENGTH(verbo)-3); Acquisite le istruzioni l’esecutore effettuerà, in WRITELN(‘io ’,radice,’o’); VAR verbo,radice:STRING; WRITELN(‘essi WRITELN(‘voi WRITELN(‘tu ’,radice,’i’); ’,radice,’ate’); ’,radice,’ano’); WRITELN(‘egli ’,radice,’a’); WRITELN(‘noi ’,radice,’iamo’); SEQUENZA, quanto in esse è specificato L’esecutore si pone in stato dilocazioni attesa e,diricevuta la stringa L’esecutore copia tutti i scrivendo: caratteri della variabile VERBO, L’esecutore comunica, scrivendo: L’esecutore predispone due memoria, di nome di L’esecutore L’esecutore L’esecutore comunica, comunica, comunica, scrivendo: scrivendo: L’esecutore comunica, scrivendo: L’esecutore comunica, scrivendo: caratteri, la memorizza nella zona di memoria denominata compresi tra il primo e la sua lunghezza meno tre, nella VERBO e RADICE, che conterranno delle stringhe di Si supponga che venga comunicato il verbo pensare VERBO variabile RADICE caratteri PROGRAM primo; VAR verbo,radice:STRING; BEGIN READLN(verbo); radice:=COPY(verbo,1,LENGTH(verbo)-3); WRITELN(‘io ’,radice,’o’); WRITELN(‘tu ’,radice’,’i’); WRITELN(’egli ’,radice,’a’); WRITELN(‘noi ’,radice,’iamo’); WRITELN(‘voi ,radice’,’ate’); WRITELN(’essi ’,radice,’ano’); END. io penso tu pensi egli pensa noi pensiamo voi pensate essi pensano verbo pensare radice pens