LINGUAGGI DI PROGRAMMAZIONE

Slides:



Advertisements
Presentazioni simili
I Linguaggi di programmazione
Advertisements

Il linguaggio della Matematica: Insiemi e operazioni

Sintassi (prima parte)
Inizio… Linguaggi Linguaggi di programmazione Linguaggi di programmazione Linguaggi di programmazione Linguaggi di programmazione Linguaggi Formali Linguaggi.
Linguaggi Regolari e Linguaggi Liberi
Specifiche Algebriche
Algoritmi e Programmazione
Semantica operazionale
1 Linguaggi di Programmazione - elementi Corso di Laurea in Informatica (AA 2005/2006) Gabriella Pasi e Carla Simone
Strategie per la progettazione di algoritmi:
1 Istruzioni, algoritmi, linguaggi. 2 Algoritmo per il calcolo delle radici reali di unequazione di 2 o grado Data lequazione ax 2 +bx+c=0, quali sono.
Semantiche dei linguaggi di programmazione
Intelligenza Artificiale 1 Gestione della conoscenza lezione 7 Prof. M.T. PAZIENZA a.a
Sistemi basati su conoscenza Comunicazione basata sul linguaggio naturale Prof. M.T. PAZIENZA a.a
Sistemi basati su conoscenza Conoscenza e ragionamento Prof. M.T. PAZIENZA a.a
Università degli Studi di Bergamo Facoltà di Lingue e Letterature Straniere Facoltà di Lettere e Filosofia A.A Informatica generale 1 Appunti.
Funzioni, Rappresentazioni e Coscienza
Chomsky La grammatica/sintassi è una proprietà della mente
Unità Didattica 2 I Linguaggi di Programmazione
Fondamenti di Informatica Algoritmi
Fondamenti di Informatica1 Linguaggi Classificati rispetto alle caratteristiche principali: –potere espressivo che influenza lo stile di programmazione.
Modello E-R Generalizzazioni
Modello E-R Generalizzazioni
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Labortaorio informatica 2003 Prof. Giovanni Raho 1 INFORMATICA Termini e concetti principali.
RAPPRESENTAZIONE DELL’INFORMAZIONE
INSIEMI NUMERABILI L’analisi matematica introduce il concetto di insieme numerabile come insieme i cui elementi possono essere “contati” ossia che possiede.
PROBLEMI RISOLUBILI E COMPUTABILITÀ
Da Problema a Programmazione
1 Matteo Cristani Dipartimento di Informatica Facoltà di Scienze MM. FF. NN. Università degli Studi di Verona Corso di.
Fondamenti di Comunicazione Digitale
Comunicazione e agire sociale
Chomsky La grammatica/sintassi è una proprietà della mente Distinta dalla capacità di comunicare E una facoltà autonoma ed innata La comunicazione è solo.
Lezione 1 Linguaggi di programmazione – Algoritmi –Istruzioni
Lo sviluppo del software e i linguaggi di programmazione
LA MACCHINA DI TURING Nel 1936 il matematico inglese A. M. Turing propose una definizione del concetto di algoritmo tramite un modello matematico di macchina.
Introduzione ai linguaggi formali e alle stringhe
TEORIA DEGLI INSIEMI INIZIO.
Grammatiche, Linguaggio e Automi R. Basili TAL - a.a
Linguaggi per COMUNICARE
1 Ontology languages. Strato dei modelli LA SCELTA DEL LINGUAGGIO Una volta selezionati i componenti dell’ontologia occorre esprimerli in maniera esplicita,
Sistemi basati su conoscenza Comunicazione basata sul linguaggio naturale (grammatica, semantica) Prof. M.T. PAZIENZA a.a
Gli Algoritmi L’algoritmo è un insieme ordinato di operazioni non ambigue ed effettivamente computabili che, quando eseguito, produce un risultato e si.
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
La riflessione sulla lingua nelle Indicazioni nazionali
Sistemi basati su conoscenza Linguaggio naturale: grammatiche Prof. M.T. PAZIENZA a.a
Intelligenza Artificiale 1 Gestione della conoscenza lezione 19 Prof. M.T. PAZIENZA a.a
Rappresentazione dell’informazione nel calcolatore.
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
Linguaggi di programmazione: panoramica Linguaggi di programmazione ad alto livello: – –Programmazione procedurale – –Programmazione object oriented –
Automi a pila (1) Un automa a pila (PDA) è M = (Q, S, G, d, q0, Z0, F) dove: Q insieme finito di stati S alfabeto finito di input 3. G alfabeto di pila.
Grammatiche Grammatiche libere da contesto Grammatiche regolari
Algoritmi.
Linguaggi Diversi tipi di linguaggi:
public class volume { public static void main (String[] args) { final double bott_vol =2.0; final double latt_vol = 0.355; int bott_num = 4; int latt_num.
Sistemi basati su conoscenza Comunicazione basata sul linguaggio naturale (grammatica, semantica) Prof. M.T. PAZIENZA a.a
L’ELABORATORE ELETTRONICO uno strumento in grado di eseguire insiemi di azioni (“mosse”) elementari le azioni vengono eseguite su oggetti (dati) per produrre.
La codifica dei numeri.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Problemi, algoritmi e programmazione
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Programmazione dei Calcolatori Elettronici
TEORIA ELEMENTARE DEGLI INSIEMI
Linguaggi e Grammatiche Alfabeto : insieme non vuoto di elementi detti simboli A = { a, b, c } Stringa : sequenza di simboli di un alfabeto ab abc abcab.
Linguaggi, stringhe e alfabeti. Linguaggi e grammatiche Un linguaggio è un sistema di comunicazione tra persone che permette di trasmettere informazioni.
Parsing ricorsivo discendente Il parsing ricorsivo discendente (recursive descent parsing) è un metodo di tipo top-down che può essere facilmente codificato.
Unità di apprendimento 6
ALGORITMI, LINGUAGGI E PROGRAMMI Facoltà di Lingue e Letterature Straniere Corso di laurea in Relazioni Pubbliche.
INSIEMI E LOGICA PARTE QUARTA.
Transcript della presentazione:

LINGUAGGI DI PROGRAMMAZIONE Un linguaggio di programmazione ha due componenti ortogonali il linguaggio di Computazione il linguaggio di Coordinazione Linguaggi di computazione Linguaggi di coordinazione Un particolare linguaggio di programmazione

LINGUAGGI (DI COMPUTAZIONE) DI ALTO LIVELLO Si basano su una macchina virtuale le cui “mosse” non sono quelle della macchina hardware.

Java

Java

COS’È UN LINGUAGGIO? Dice il dizionario: “Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usate e comprese da una comunità di persone.”

COS’È UN LINGUAGGIO? Dice il dizionario: “Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usate e comprese da una comunità di persone.” È una definizione poco precisa: non evita le ambiguità dei linguaggi naturali non si presta a descrivere processi computazionali meccanizzabili non aiuta a stabilire proprietà

LA NOZIONE DI LINGUAGGIO Occorre una nozione di linguaggio più precisa Linguaggio come sistema matematico che consenta di risponde a domande come: quali sono le frasi lecite? si può stabilire se una frase appartiene al linguaggio? come si stabilisce il significato di una frase? quali elementi linguistici primitivi ?

LINGUAGGIO & PROGRAMMA Un linguaggio di programmazione è una notazione formale per descrivere algoritmi Un programma è la descrizione di un algoritmo in un particolare linguaggio di programmazione

LINGUAGGIO & PROGRAMMA Un linguaggio di programmazione è una notazione formale per descrivere algoritmi Un programma è la descrizione di un algoritmo in un particolare linguaggio di programmazione Quali “parole chiave” ? Quali meccanismi di combinazione ?

SINTASSI & SEMANTICA Sintassi: l’insieme di regole formali per la scrittura di programmi in un linguaggio, che dettano le modalità per costruire frasi corrette nel linguaggio stesso. Semantica: l’insieme dei significati da attribuire alle frasi (sintatticamente corrette) costruite nel linguaggio.

SINTASSI & SEMANTICA Sintassi: l’insieme di regole formali per la scrittura di programmi in un linguaggio, che dettano le modalità per costruire frasi corrette nel linguaggio stesso. Semantica: l’insieme dei significati da attribuire alle frasi (sintatticamente corrette) costruite nel linguaggio. NB: una frase può essere sintatticamente corretta e tuttavia non avere significato!

SINTASSI Le regole sintattiche sono espresse attraverso notazioni formali: BNF (Backus-Naur Form) EBNF (Extended BNF) diagrammi sintattici

SINTASSI EBNF: ESEMPIO Sintassi di un numero naturale <naturale> ::= 0 | <cifra-non-nulla>{<cifra>} <cifra-non-nulla> ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |9 <cifra> ::= 0 | <cifra-non-nulla>

DIAGRAMMI SINTATTICI: ESEMPIO Sintassi di un numero naturale cifra-non-nulla cifra

SEMANTICA La semantica è esprimibile: a parole (poco precisa e ambigua) mediante azioni  semantica operazionale mediante funzioni matematiche  semantica denotazionale mediante formule logiche  semantica assiomatica

DEFINIZIONE DI LINGUAGGIO Un linguaggio è un insieme di frasi Una frase è una sequenza di simboli appartenenti a un certo alfabeto Proprietà desiderabili: Un linguaggio deve essere effettivamente generabile Un linguaggio di programmazione deve essere decidibile

ALCUNE DEFINIZIONI Alfabeto V (o vocabolario o lessico) È l’insieme dei simboli con cui si costruiscono le frasi Universo linguistico V* di un alfabeto V È l’insieme di tutte le frasi (sequenze finite di lunghezza arbitraria) di elementi di V. Linguaggio L su un alfabeto V È un sottoinsieme di V*.

ESEMPIO V = { if, else, ==, A, 0, =, +, 1, 2, (, ) } Allora : V* = { if (A == 0) A = A + 2, if else A, do =A, ... }

ESEMPIO V = { if, else, ==, A, 0, =, +, 1, 2, (, ) } Allora : V* = { if (A == 0) A = A + 2, if else A, do =A, ... } Non tutte queste frasi faranno parte del linguaggio!

LINGUAGGI & GRAMMATICHE Problema: Come specificare il sottoinsieme di V* che definisce il linguaggio?

LINGUAGGI & GRAMMATICHE Problema: Come specificare il sottoinsieme di V* che definisce il linguaggio? Risposta: Specificando il modo formale e preciso la sintassi delle frasi del linguaggio

GRAMMATICA FORMALE Una Grammatica Formale è una notazione matematica che consente di esprimere in modo rigoroso la sintassi di un linguaggio.

GRAMMATICA FORMALE Una quadrupla VT,VN,P,S dove: VT è un insieme finito di simboli terminali VN è un insieme finito di simboli non terminali P è un insieme finito di produzioni, ossia di regole di riscrittura S è un particolare simbolo non-terminale detto simbolo iniziale o scopo della grammatica.

GRAMMATICA B.N.F. Una Grammatica B.N.F. è una grammatica in cui le produzioni hanno la forma X ::= A dove: X Î VN è un simbolo non terminale, e: A è una stringa, ossia una sequenza di simboli ciascuno appartenente all’alfabeto V = VN È VT.

GRAMMATICA & LINGUAGGIO Una Grammatica B.N.F. definisce quindi un linguaggio sull’alfabeto terminale VT mediante un meccanismo di derivazione (o riscrittura) .

GRAMMATICA & LINGUAGGIO Data una grammatica G, si dice perciò Linguaggio LG generato da G l’insieme delle frasi di V derivabili dal simbolo iniziale S applicando le produzioni P Le frasi di un linguaggio di programma-zione vengono dette programmi di tale linguaggio.

DERIVAZIONE Siano G una grammatica b, g due stringhe, cioè due elementi dell’universo linguistico (VNÈVT)*. Si dice che g deriva direttamente da b (e si scrive b ® g) se le stringhe si possono decomporre in b = h A d g = h a d ed esiste la produzione A::= a

DERIVAZIONE Si dice che, in generale, g deriva da b se esiste una sequenza di N derivazioni dirette che da b possono infine produrre g b = b0 ® b1 ® b2 ® ... ® bn = g

FORMA B.N.F. COMPATTA In una grammatica BNF spesso esistono più regole con la stessa parte sinistra: X ::= A1 .... X ::= AN Per comodità si stabilisce allora di poterle compattare in un’unica regola: X ::= A1 | A2 | .. | AN dove il simbolo | indica l’alternativa.

UN ESEMPIO COMPLESSIVO G = VT,VN,P,S dove: VT = { il, gatto, topo, sasso, mangia, beve } VN = { <frase>, <soggetto>, <verbo>, <compl-ogg>, <articolo>, <nome> } S = <frase> P = ...

UN ESEMPIO COMPLESSIVO <frase> ::= <soggetto> <verbo> <compl-ogg> <soggetto> ::= <articolo><nome> <articolo> ::= il <nome> ::= gatto | topo | sasso <verbo> ::= mangia | beve <compl-ogg> ::= <articolo> <nome> }

UN ESEMPIO COMPLESSIVO ESEMPIO: derivazione della frase “il gatto mangia il topo” (ammesso che tale frase sia derivabile, ossia faccia parte del linguaggio generato dalla nostra grammatica) DERIVAZIONE “LEFT-MOST” A partire dallo scopo della grammatica, si riscrive sempre il simbolo non-terminale più a sinistra.

UN ESEMPIO COMPLESSIVO <frase> ® <soggetto> <verbo> <compl-ogg> ® <articolo> <nome> <verbo> <compl-ogg> ® il <nome> <verbo> <compl-ogg> ® il gatto <verbo> <compl-ogg> ® il gatto mangia <compl-ogg> ® il gatto mangia <articolo><nome> ® il gatto mangia il <nome> ® il gatto mangia il topo

UN ESEMPIO COMPLESSIVO ALBERO SINTATTICO un grafo che esprime il processo di derivazione di una frase usando una data grammatica. ESEMPIO: derivazione della frase “il gatto mangia il topo” (ammesso che tale frase sia derivabile, ossia faccia parte del linguaggio generato dalla nostra grammatica)

UN ESEMPIO COMPLESSIVO frase soggetto verbo compl-ogg  articolo nome mangia articolo nome il gatto il topo

EXTENDED B.N.F. (ENBF) Una forma estesa della notazione B.N.F. che introduce alcune notazioni compatte per alleggerire la scrittura delle regole di produzione

EXTENDED B.N.F. (ENBF) Per raggruppare categorie sintattiche:

ESEMPIO 1: NUMERI NATURALI G = VT,VN,P,S dove: VT = { 0,1,2,3,4,5,6,7,8,9 } VN = { <num>, <cifra>, <cifra-non-nulla> } S = <num> P = { <num> ::= <cifra> | <cifra-non-nulla> {<cifra>} <cifra> ::= 0 | <cifra-non-nulla> <cifra-non-nulla> ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 }

ESEMPIO 2: NUMERI INTERI Sintassi analoga alla precedente ma con la possibilità di un segno (+,-) davanti al numero naturale Quindi: stesse regole di produzione più una per gestire il segno stesso alfabeto terminale più i due simboli + e -

ESEMPIO 2: NUMERI INTERI G = VT,VN,P,S, dove: VT = { 0,1,2,3,4,5,6,7,8,9,+,- } VN = {<int>, <num>, <cifra>, <cifra-non-nulla> } P = { <int> ::= [+|-] <num> <num> ::= 0 | <cifra-non-nulla> {<cifra>} <cifra> ::= 0 | <cifra-non-nulla> <cifra-non-nulla> ::= 1|2|3|4|5|6|7|8|9 }

ESEMPIO 3: IDENTIFICATORI G = VT,VN,P,S Nell’uso pratico, quasi sempre si danno solo le regole di produzione, definendo VT, VN e S implicitamente. Quindi: P = { <id> ::= <lettera> { <lettera> | <cifra>} <lettera> ::= A | B | C | D | ... | Z <cifra> ::= 0|1|2|3|4|5|6|7|8|9 }

ESEMPIO 3: IDENTIFICATORI G = VT,VN,P,S Nell’uso pratico, quasi sempre si danno solo le regole di produzione, definendo VT, VN e S implicitamente. Quindi: P = { <id> ::= <lettera> { <lettera> | <cifra>} <lettera> ::= A | B | C | D | ... | Z <cifra> ::= 0|1|2|3|4|5|6|7|8|9 } scopo VN VN VT VT

DIAGRAMMI SINTATTICI

ESEMPIO DI ALBERO SINTATTICO Albero sintattico del numero -3457 (grammatica EBNF dell’esempio 2) Attenzione poiché X ::= {a} B equivale a X ::= B | aX, e X ::= C {a} equivale a X ::= C | Xa, la regola: <num> ::= <cifra-non-nulla> {<cifra>} equivale a: <num> ::= <cifra-non-nulla> | <num> <cifra>

ALBERO SINTATTICO DI -3457 - <int> <num> <cifra> 7 5 <cifra-non-nulla> 3