Fondamenti di Informatica1 Linguaggi Classificati rispetto alle caratteristiche principali: –potere espressivo che influenza lo stile di programmazione.

Slides:



Advertisements
Presentazioni simili
Linguaggio C e C++.
Advertisements

I Linguaggi di programmazione
“ LAUREE SCIENTIFICHE ”
Fondamenti di Informatica1 Gestione della memoria I sistemi di memoria possono essere suddivisi in: –memoria interna al processore –memoria principale.
Software di base: Linguaggi di Programmazione
Evoluzione dei linguaggi di programmazione
Dal problema al programma
Sintassi (prima parte)
Inizio… Linguaggi Linguaggi di programmazione Linguaggi di programmazione Linguaggi di programmazione Linguaggi di programmazione Linguaggi Formali Linguaggi.
Linguaggi di programmazione
Type Checking (1° parte)
Algoritmi e Programmazione
1 Linguaggi di Programmazione - elementi Corso di Laurea in Informatica (AA 2005/2006) Gabriella Pasi e Carla Simone
Corso di Laurea in Informatica Gabriella Pasi e Carla Simone
Fondamenti di Informatica
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.
Anno Accademico Corso di Informatica Informatica per Scienze Biologiche e Biotecnologie Anno Accademico
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.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Corso di Informatica (Programmazione)
IFTS2002 Acq. Dati Remoti: INFORMATICA
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Introduzione alla programmazione lll
Introduzione alla programmazione l
DAL PROBLEMA ALL'ALGORITMO Problemi e Programmi Paolo Amico
Unità Didattica 2 I Linguaggi di Programmazione
MS-WINDOWS Corso di Introduzione allInformatica Esercitatore: Agostino Forestiero.
Microsoft Word Nozioni Avanzate Corso di Introduzione allInformatica Esercitatore: Agostino Forestiero.
Fondamenti di Informatica1 Ripetizioni di segmenti di codice Spesso è necessario ripetere più volte uno stesso segmento dell'algoritmo (e.g. I/O, elaborazioni.
Fondamenti di Informatica1 Software di base Tra il linguaggio macchina (basso livello) e i linguaggi evoluti (alto livello) esiste uno strato di software.
Fondamenti di Informatica
Fondamenti di Informatica1 Realizzazione software Due fasi: 1. Specifica dell'algoritmo 1.a Definizione dei dati 1.b Definizione della modalità della loro.
Fondamenti di Informatica
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
AN FI Un denominatoe comune Comandi u notazioni che esprimono azioni che, una volta eseguite, comportano una modifica permanente dello stato interno.
INSIEMI NUMERABILI L’analisi matematica introduce il concetto di insieme numerabile come insieme i cui elementi possono essere “contati” ossia che possiede.
LINGUAGGI DI PROGRAMMAZIONE
Le regole di comunicazione nelle reti
1 Programmazione = decomposizione basata su astrazioni (con riferimento a Java)
INFORMATICA MATTEO CRISTANI.
Lezione 1 Linguaggi di programmazione – Algoritmi –Istruzioni
Lo sviluppo del software e i linguaggi di programmazione
Parte 5 Laboratorio di Informatica Dott.ssa Elisa Tiezzi
Laboratorio di Informatica1 Parte 4 Laboratorio di Informatica Dott.ssa Elisa Tiezzi Dott.ssa Elisa Mori.
Grammatiche, Linguaggio e Automi R. Basili TAL - a.a
11/10/2004Introduzione all'Informatica1 Che cose lInformatica Computer ScienceLInformatica (Computer Science) non è soltanto La scienza e la tecnologia.
Linguaggi per COMUNICARE
Corso di Introduzione all’Informatica
Corso di Introduzione all’Informatica
Dal problema all’ algoritmo
la traduzione dei programmi
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
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.
1 Linguaggi: guardando la semantica §esistono un insieme di concetti semantici e di strutture di implementazione in termini dei quali si descrivono in.
Algoritmi e Programmazione (in C) Stefano Cagnoni e Monica Mordonini
Informatica e Informatica di Base
Problemi, algoritmi e programmazione
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Programmazione dei Calcolatori Elettronici
LINGUAGGI DI PROGRAMMAZIONE E' un linguaggio formale dotato di una sintassi ben definita che viene utilizzato per scrivere programmi che realizzano algoritmi.
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.
Transcript della presentazione:

Fondamenti di Informatica1 Linguaggi Classificati rispetto alle caratteristiche principali: –potere espressivo che influenza lo stile di programmazione

Fondamenti di Informatica2 Linguaggi - basso livello Il linguaggio macchina specifica solo le operazioni che l'elaboratore può eseguire –sintattica molto elementare" –diverso per ogni processore dipende dalle caratteristiche architetturali E' più orientato alla macchina che ai problemi da trattare –è infatti definito di "basso livello"

Fondamenti di Informatica3 Linguaggi - basso livello Una prima evoluzione è stata l'introduzione di linguaggi simbolici: linguaggi assemblativi –ancora orientati alla macchina e non ai problemi –più immediati da utilizzare –definiscono variabili, simboli,...

Fondamenti di Informatica4 Linguaggi - alto livello Altri linguaggi sono basati su: –la descrizione del problema in modo intuitivo, dimenticandosi che verranno eseguiti da un calcolatore –obiettivo: fornire un mezzo espressivo per specificare all'elaboratore il compito da eseguire

Fondamenti di Informatica5 Linguaggi - alto livello Caratteristiche: –ognuno ha i propri paradigmi che garantiscono forme espressive appropriate per alcuni problemi specifici –questa specificità ha favorito la loro proliferazione (fenomeno intrinseco alla natura del linguaggio come forma di comunicazione)

Fondamenti di Informatica6 Linguaggi Imperativi Linguaggi più evoluti: –permettono di descrivere operazioni più complesse di quelle che l'elaboratore può eseguire –livello di astrazione più alto –risalgono agli anni '50 –detti di alto livello di tipo imperativo –Es: Basic, Fortran, Pascal

Fondamenti di Informatica7 Linguaggi Imperativi Caratteristiche: –di utilizzo più semplice –indipendenti dall'elaboratore –purtroppo ancora legati al modello di Von Neumann: i programmi sono ancora una sequenza di istruzioni; l'evoluzione del calcolo è costituita da una variazione dello stato della memoria

Fondamenti di Informatica8 Linguaggi Imperativi Eseguono 3 tipi di operazioni: –trasferimento dati –operazioni aritmetiche –alterazione del flusso del programma Già discussi in precedenza Basic (semplice ma poco espressivo) Fortran (molto usato per il calcolo scientifico e le librerie molto complete)

Fondamenti di Informatica9 Linguaggi Funzionali Non sono legati al modello di Von Neumann ma al concetto di programmazione funzionale Il primo linguaggio funzionale: –Lisp (List Processing), fine anni '50 –caratteristiche di manipolazione agevole di informazioni di tipo simbolico

Fondamenti di Informatica10 Linguaggi Funzionali Differenze con i linguaggi imperativi: –il calcolo è basato sul calcolo di valori e non sull'assegnamento di valori a variabili –basato su valori e non su effetti –il risultato è il risultato di una funzione, non l'effetto causato dalla esecuzione di una sequenza di operazioni

Fondamenti di Informatica11 Linguaggi Funzionali Caratteristiche: –meccanismo di definizione funzionale per casi (tipo switch in C) –è possibile la ricorsione (utilizzando tali costrutti condizionali) –Il Lisp, però, consente anche l'iterazione e l'assegnamento (tipico dei ling. Imperativi)

Fondamenti di Informatica12 Linguaggi Dichiarativi Basati sulla logica –obiettivo: formalizzare il ragionamento –caratterizzati da meccanismi deduttivi Programmare significa: –descrivere il problema con formule del linguaggio –interrogare il sistema, che effetua deduzioni sulla base delle definizioni

Fondamenti di Informatica13 Linguaggi Dichiarativi Programmazione: –semplice (occorre solo definire la propria conoscenza del problema) –avviene tramite una formulazione dichiarativa Esempio: Prolog

Fondamenti di Informatica14 Linguaggi Dichiarativi Un programma Prolog è costituito da: –Asserzioni incondizionate (fatti) : A –Asserzioni condizionate (o regole) : A IF B,C,D,… A: è la conclusione (conseguente) B,C,D: sono le premesse (o antecedenti) Una interrogazione ha la forma: ? A, B, C, …

Fondamenti di Informatica15 Esempio Il fattoriale: Fatt (0,1) Fatt (z,w) IF Dec(z,z1), Fatt(z1,w1),Prod(z,w1,w) Problemi risolubili: –calcolo del fatoriale: ? Fatt(3, x) –calcolo di quel numero il cui fattoriale è noto: ? Fatt(x, 6)

Fondamenti di Informatica16 Esempio Ricerca in un grafo orientato: –con la richiesta ? go(E) viene determinata la sequenza E, C, A go(A) arc(A,B) arc(B,C) arc(D,C) arc(A,C) arc(B,D) arc(C,E) go(y) IF arc(x,y), go(x) B C DA E

Fondamenti di Informatica17 Sintassi e Semantica Nei linguaggi naturali si distinguono: –sintassi (si occupa della forma delle frasi, delle regole per la loro creazione) –semantica (significato delle frasi) Analogamente per i linguaggi di programmazione: –sintassi: definisce i programmi legali –semantica: significato dei programmi

Fondamenti di Informatica18 Sintassi e Semantica Dopo la definizione di un linguaggio (con sintassi e semantica) serve un sistema che possa eseguire i programmi scritti in tale linguaggio Si parla di implementazione di un linguaggio –generalmente è un traduttore verso il linguaggio macchina di un dato elaboratore

Fondamenti di Informatica19 Sintassi Per definire la sintassi di un linguaggio, è necessario definire le grammatiche La grammatica è un insieme di regole che servono per costruire una frase

Fondamenti di Informatica20 Grammatica La grammatica è definita da: –V: un alfabeto di simboli terminali (l'alfabeto del linguaggio) –N: un alfabeto di simboli non terminali –S: un simbolo iniziale (o assioma) –P: un insieme finito di regole sintattiche (dette produzioni) espresse nella forma: X a

Fondamenti di Informatica21 Grammatica Le produzioni possono essere scritte: –anche nella forma alternativa: X ::= a –se esistono più produzioni con parte sinistra uguale, X ::= a X ::= b X ::= c allora si può scrivere: X ::= a | b | c

Fondamenti di Informatica22 Grammatica Derivazioni: –una stringa c deriva dalla stringa b se esse possono essere decomposte in: b = m A n c = m a n con m e n simboli non terminali e se esiste la produzione A ::= a

Fondamenti di Informatica23 Grammatica Data una grammatica, il linguaggio generato è definito come l'insieme delle frasi derivabili a partire dall'assioma S Le frasi di un linguaggio di programma- zione sono dette programmi

Fondamenti di Informatica24 Formalismo di Backus-Naur (Backus -Naur Form, BNF) Il modo visto per definire una grammatica è detto di Backus-Naur –introdotto negli anni '50 da Backus e Naur Esiste anche una estensione (Extended BNF, EBNF) che permette una scrittura più sintetica

Fondamenti di Informatica25 Esempio di grammatica V: { il, lo, gatto, topo, sasso, mangia, beve } N: {,,,, } S: P contiene le seguenti produzioni: ::= ::= il | lo ::= gatto | topo | sasso ::= mangia | beve ::=

Fondamenti di Informatica26 Extended BNF 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)

Fondamenti di Informatica27 Esempio di grammatica 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

Fondamenti di Informatica28 Alberi sintattici Il processo di derivazione può essere descritto tramite un albero sintattico il gatto mangia il topo

Fondamenti di Informatica29 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 –si possono aggiungere nodi fittizi per rappresentare le diramazioni

Fondamenti di Informatica30 Esempio di diagramma sintattico ::= + - 0

Fondamenti di Informatica31 Sintassi dei linguaggi di programmazione Considerazioni sui linguaggi: –uno stesso linguaggio può essere generato da più di una grammatica –alcune grammatiche sono ambigue: cioè esistono diversi elementi che possono essere generati da diverse derivazioni (esistono cioè diversi alberi sintattici). Situazione da evitare!

Fondamenti di Informatica32 Esempio di grammatica ambigua Esempio: ::= x | y | z | ( ) | + | * All'espressione x+y*z possono essere associati due alberi sintattici diversi –questo influenza anche il modo con cui viene attribuito il significato all'espressione

Fondamenti di Informatica33 Esempio di grammatica ambigua Nella definizione dei linguaggi si deve evitare l'ambiguità Esempio: ::= if then else

Fondamenti di Informatica34 Analizzatore sintattico L'analisi della correttezza è eseguita dall'elaboratore: è suddiviso in 3 passi: –analisi lessicale: controlla che i simboli utilizzati appartengano all'alfabeto –analisi grammaticale: verifica il rispetto delle regole grammaticali –analisi sintattica contestuale: verifica restrizioni di tipo contestuale (tipi di dati, identificatori non definiti,…)

Fondamenti di Informatica35 Analizzatore sintattico Generalmente l'analizzatore sintattico esegue le tre verifiche simultaneamente Si dice "ad una passata " Durante la scansione, se viene trovato un errore, si cerca di recuperare e si prosegue fino al termine