La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Linguaggi di Programmazione

Presentazioni simili


Presentazione sul tema: "Linguaggi di Programmazione"— Transcript della presentazione:

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

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

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 l’insieme di regole formali che definiscono le modalità per costruire espressioni corrette (valide) del linguaggio Il significato da attribuire alle frasi (sintatticamente corrette) costruite nel linguaggio. NB: una frase può essere sintatticamente corretta e tuttavia non avere significato!

4 SINTASSI DEI LINGUAGGI
ELEMENTI BASE DELLA SINTASSI DI UN LINGUAGGIO V : alfabeto Un alfabeto è un insieme finito. I suoi elementi sono detti lettere o simboli. L’insieme 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 una grammatica.

5 GRAMMATICHE Una grammatica G = (V,N,P,S) è definita da: V: insieme di simboli terminali, N: insieme di simboli non terminali (categorie sintattiche come per esempio: <frase>, <soggetto>, <verbo>, <complemento>, <articolo>, <nome>, ...) P: insieme finito di regole sintattiche (o produzioni) del tipo X  Y S : elemento di N (assioma o simbolo iniziale)

6 GRAMMATICHE Il linguaggio generato da una grammatica G(V,N,P,S) è l’insieme delle stringhe di soli simboli terminali ottenibili applicando un insieme di regole. Esempio: V = {a,b} N = {A,S} P = { S A; A  bAb; A  a } Linguaggio generato da G: L(G) = {bnabn |n0} Si dice forma di frase (sentential form) una qualsiasi stringa comprendente sia simboli terminali sia simboli non terminali derivabile dall’assioma S. 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)* Data una grammatica G = (V,N,P,S), diciamo che da una stringa u = u1Au2  (V  N)* possiamo derivare in un passo una stringa v = u1wu2  (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 u1, u2 ….. un  (V  N)* tale u = u1  u2  …..  un = v

8 GRAMMATICHE INDIPENDENTI DAL CONTESTO
(context free) L’insieme delle forme sentenziali di G è l’insieme 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 è l’insieme delle forme sentenziali che sono parole su V (vale a dire, non contengono simboli non terminali).

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 Sintassi: notazioni Le regole sintattiche sono espresse attraverso notazioni formali, come ad esempio • BNF (Backus-Naur Form) • EBNF (Extended BNF) • diagrammi sintattici

16 BACKUS NAUR FORM

17 BACKUS NAUR FORM esempio

18 EXTENDED BACKUS NAUR FORM

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

20 EXTENDED BACKUS NAUR FORM esempi

21 EXTENDED BACKUS NAUR FORM esempio
V: { 0,1,2,3,4,5,6,7,8,9,+,- } N: {<intero><int-senza-segno><numero> <cifra-non-nulla><cifra>} S: <intero> P contiene le seguenti produzioni: <intero> ::= [+ | - ] <int-senza-segno> <int-senza-segno> ::= <cifra> | <cifra-non-nulla><numero> <numero> ::= <cifra> | <cifra><numero> <cifra> ::= <cifra-non-nulla> | 0 <cifra-non-nulla> ::= 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9

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

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

25 DIAGRAMMI SINTATTICI: ESEMPIO
Istruzione condizionale espressione istruzione if ( ) istruzione else

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

27 Linguaggi di programmazione
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 dall’architettura sottostante portabilità dei programmi; maggiore semplicità di uso esistono librerie di programmi già pronti; per essere eseguiti devono essere tradotti in linguaggio macchina.

28

29

30 Traduttori 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: • i Compilatori traducono l’intero programma (senza eseguirlo!) e producono in uscita il programma convertito in linguaggio macchina • gli Interpreti traducono ed eseguono immediatamente ogni singola istruzione del programma sorgente.

31 Traduttori Quindi: • nel caso del compilatore, lo schema viene percorso una volta sola prima dell’esecuzione • nel caso dell’interprete, lo schema viene invece attraversato tante volte quante sono le istruzioni che compongono il programma.

32

33

34

35 AMBIENTI DI PROGRAMMAZIONE: caso 1 (compilatori)
Editor: serve per creare file che contengono testi (cioè sequenze di caratteri). In particolare, l’editor consente di scrivere il programma sorgente. Compilatore: opera la traduzione di un programma sorgente (scritto in un linguaggio ad alto livello) in un programma oggetto. Linker: ( collegatore) nel caso in cui la costruzione del programma eseguibile richieda l’unione di più moduli (compilati separatamente), il linker provvede a collegarli formando un unico programma eseguibile. 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
loader compilatore linker

38


Scaricare ppt "Linguaggi di Programmazione"

Presentazioni simili


Annunci Google