La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Linguaggi di Programmazione (AA 2002/2003) Corso di Laurea in Informatica Gabriella Pasi

Presentazioni simili


Presentazione sul tema: "Linguaggi di Programmazione (AA 2002/2003) Corso di Laurea in Informatica Gabriella Pasi"— Transcript della presentazione:

1 Linguaggi di Programmazione (AA 2002/2003) Corso di Laurea in Informatica Gabriella Pasi

2 Programma del corso INTRODUZIONE IL PARADIGMA CONCORRENTE IL PARADIGMA FUNZIONALE IL PARADIGMA LOGICO I linguaggi: sintassi e semantica Grammatiche I principali paradigmi di programmazione Java e C

3 Linguaggi e programmi Dato un algoritmo, un programma è la sua descrizione in un particolare linguaggio di programmazione Un linguaggio di programmazione è caratterizzato da due aspetti: – SINTASSI – SEMANTICA NB: una frase può essere sintatticamente corretta e tuttavia non avere significato! Il significato da attribuire alle frasi (sintatticamente corrette) costruite nel linguaggio. linsieme di regole formali che definiscono le modalità per costruire espressioni corrette (valide) del linguaggio

4 SINTASSI DEI LINGUAGGI V : alfabeto Un alfabeto è un insieme finito. I suoi elementi sono detti lettere o simboli. Linsieme di tutte le sequenze finite di lettere in V, dette parole su V, è denotato da V* V* : universo linguistico su V L : un linguaggio su V è un sottoinsieme di V* generato da grammatica una grammatica. ELEMENTI BASE DELLA SINTASSI DI UN LINGUAGGIO

5 Una grammatica G = (V,N,P,S) è definita da: insieme di simboli terminali V: insieme di simboli terminali, simboli non terminalicategorie sintattiche N: insieme di simboli non terminali (categorie sintattiche come per esempio:,,,,,,...) regole sintatticheproduzioni P: insieme finito di regole sintattiche (o produzioni) del tipo X Y assiomasimbolo iniziale S : elemento di N (assioma o simbolo iniziale) GRAMMATICHE

6 GRAMMATICHE Il linguaggio generato da una grammatica G(V,N,P,S) è linsieme delle stringhe di soli simboli terminali ottenibili applicando un insieme di regole. Esempio Esempio: V = {a,b} N = {A,S} P = {S A; A bAb; A a } Linguaggio generato da G: L(G) = {b n ab n |n 0} forma di frase (sentential form) Si dice forma di frase (sentential form) una qualsiasi stringa comprendente sia simboli terminali sia simboli non terminali derivabile dallassioma S. frase Si dice frase una forma di frase comprendente solo simboli terminali.

7 GRAMMATICHE INDIPENDENTI DAL CONTESTO (context free) Le produzioni sono della forma A w, dove A N e w (V N)* derivare u v Data una grammatica G = (V,N,P,S), diciamo che da una stringa u = u 1 Au 2 (V N)* possiamo derivare in un passo una stringa v = u 1 wu 2 (V N)* se esiste una produzione A w e scriviamo u v Diciamo che v è derivabile da u, e scriviamo u * v, se esiste una catena finita di stringhe u 1, u 2 ….. u n (V N)* tale u = u 1 u 2 ….. u n = v

8 derivabili Linsieme delle forme sentenziali di G è linsieme delle parole su V N derivabili a partire da s, cioè le parole su V N tali che s * v. Il linguaggio definito dalla grammatica G è linsieme delle forme sentenziali che sono parole su V (vale a dire, non contengono simboli non terminali). GRAMMATICHE INDIPENDENTI DAL CONTESTO (context free)

9 GRAMMATICHE INDIPENDENTI DAL CONTESTO (context free)

10 GRAMMATICHE INDIPENDENTI DAL CONTESTO (context free)

11 GRAMMATICHE INDIPENDENTI DAL CONTESTO (context free)

12 GRAMMATICHE INDIPENDENTI DAL CONTESTO (context free)

13

14

15 Le regole sintattiche sono espresse attraverso notazioni formali, come ad esempio BNF (Backus-Naur Form) EBNF (Extended BNF) diagrammi sintattici Sintassi: notazioni

16 BACKUS NAUR FORM

17 BACKUS NAUR FORM esempio

18 EXTENDED BACKUS NAUR FORM

19 X ::= [a]b equivale a X ::= b|ab X ::= {a} n bequivale a X ::= b|ab|aab|… ripetendo a fino a n volte X ::= {a}bequivale a X ::= b|ab|aab|… ripetendo a un numero di volte indefinito Equivale ad avere nella grammatica la produzione X ::= b | aX (ricorsiva) EXTENDED BACKUS NAUR FORM

20 EXTENDED BACKUS NAUR FORM esempi

21 V: { 0,1,2,3,4,5,6,7,8,9,+,- } N: { } S: P contiene le seguenti produzioni: ::= [+ | - ] ::= | ::= | 0 ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 EXTENDED BACKUS NAUR FORM esempio

22 DIAGRAMMI SINTATTICI Sono dei grafi: – nodi: etichettati con simboli (terminali e non terminali), collegati da archi orientati – un arco da i a j significa che il simbolo i è seguito dal simbolo j – più archi rappresentano alternative

23 DIAGRAMMI SINTATTICI: ESEMPIO Sintassi di un numero naturale 0

24 Identificatore in Java letterale cifra Unicode escape cifra DIAGRAMMI SINTATTICI: ESEMPIO

25 Istruzione condizionale if )( else espressione istruzione

26 –analisi lessicale –analisi lessicale: controlla che i simboli utilizzati appartengano all'alfabeto –analisi grammaticale –analisi grammaticale: verifica il rispetto delle regole grammaticali Data una grammatica G si pone il problema di verificare se una data stringa appartiene al linguaggio L(G): ANALISI SINTATTICA

27 Linguaggio macchina: binario, implica la conoscenza della macchina e dei metodi di rappresentazione delle informazioni. Linguaggio assembler: linguaggio macchina in cui nomi e simboli prendono il posto dei codici numerici associati a istruzioni, e riferimenti alle celle di memoria (indirizzi) maggiore leggibilità. Linguaggi di alto livello: astrazione dallarchitettura sottostante portabilità dei programmi; maggiore semplicità di uso esistono librerie di programmi già pronti; per essere eseguiti devono essere tradotti in linguaggio macchina. Linguaggi di programmazione

28

29

30 Il traduttore converte il testo di un programma scritto in un particolare linguaggio di programmazione ( sorgente ) nella corrispondente rappresentazione in linguaggio macchina ( eseguibile ). Due categorie di traduttori: Compilatori i Compilatori traducono lintero programma (senza eseguirlo!) e producono in uscita il programma convertito in linguaggio macchina Interpreti gli Interpreti traducono ed eseguono immediatamente ogni singola istruzione del programma sorgente. Traduttori

31 Quindi: nel caso del compilatoreuna volta sola nel caso del compilatore, lo schema viene percorso una volta sola prima dellesecuzione nel caso dellinterprete tante volte quante sono le istruzioni nel caso dellinterprete, lo schema viene invece attraversato tante volte quante sono le istruzioni che compongono il programma. Traduttori

32

33

34

35 AMBIENTI DI PROGRAMMAZIONE: caso 1 (compilatori) Editor Editor: serve per creare file che contengono testi (cioè sequenze di caratteri). In particolare, leditor consente di scrivere il programma sorgente. Compilatore Compilatore: opera la traduzione di un programma sorgente (scritto in un linguaggio ad alto livello) in un programma oggetto. Linker Linker: ( collegatore) nel caso in cui la costruzione del programma eseguibile richieda lunione di più moduli (compilati separatamente), il linker provvede a collegarli formando un unico programma eseguibile. Debugger Debugger: consente di eseguire passo-passo un programma, al fine di scoprire ed eliminare errori non rilevati in fase di compilazione.

36

37 Il processo di Traduzione linker loader compilatore

38


Scaricare ppt "Linguaggi di Programmazione (AA 2002/2003) Corso di Laurea in Informatica Gabriella Pasi"

Presentazioni simili


Annunci Google