Unità Didattica 2 I Linguaggi di Programmazione

Slides:



Advertisements
Presentazioni simili
Linguaggio C e C++.
Advertisements

I Linguaggi di programmazione
Informatica Generale Marzia Buscemi
Il Software.
Software di base: Linguaggi di Programmazione
Scomposizione funzionale
Recupero debito quarto anno Primo incontro
Evoluzione dei linguaggi di programmazione
Procedure e funzioni A. Ferrari.
I linguaggi di programmazione
Inizio… Linguaggi Linguaggi di programmazione Linguaggi di programmazione Linguaggi di programmazione Linguaggi di programmazione Linguaggi Formali Linguaggi.
Generazione di Codice Intermedio
Algoritmi e Programmazione
Generalità Linguaggio e Macchina Astratta
3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)
3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)
Dr. Francesco Fabozzi Corso 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.
TRADUZIONE DEL PROGRAMMA Una volta che un programma sia stato scritto in C, esso non può essere eseguito senza unulteriore traduzione. Ciò perché qualsiasi.
Sistemi basati su conoscenza Comunicazione basata sul linguaggio naturale Prof. M.T. PAZIENZA a.a
Informatica Problema Algoritmo Programma
Informatica di base A.A. 2003/2004 Algoritmi e programmi
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)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Problemi e algoritmi Anno Accademico 2009/2010.
Programmazione Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari a svolgere un particolare compito L’attività di.
Unità Didattica 1 Algoritmi
Strutture di controllo in C -- Flow Chart --
Fondamenti di Informatica Algoritmi
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 Informatica1 Linguaggi Classificati rispetto alle caratteristiche principali: –potere espressivo che influenza lo stile di programmazione.
Espressioni condizionali
Labortaorio informatica 2003 Prof. Giovanni Raho 1 INFORMATICA Termini e concetti principali.
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
AN FI Concetti. Linguaggi di alto livello u Hanno capacita' espressive superiori a quelle del linguaggio macchina u Suggeriscono concetti e modi.
Da Problema a Programmazione
Introduzione al linguaggio assembly del microprocessore a parte
Lezione 1 Linguaggi di programmazione – Algoritmi –Istruzioni
Le basi della programmazione
Lo sviluppo del software e i linguaggi di programmazione
INTERFACCIAMENTO ASSEMBLY - C++
CONCETTI DI BASE 1.0 FONDAMENTI 1.1 HARDWARE 1.2 SOFTWARE 1.3 RETI
ECDL Patente europea del computer
Linguaggi per COMUNICARE
Programma di Informatica Classi Prime
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Sistemi basati su conoscenza Linguaggio naturale: grammatiche Prof. M.T. PAZIENZA a.a
Dal problema all’ algoritmo
la traduzione dei programmi
Intelligenza Artificiale 1 Gestione della conoscenza lezione 19 Prof. M.T. PAZIENZA a.a
Rappresentazione degli algoritmi
Tecnologie Informatiche ed Elettroniche per le Produzioni Animali
Scrivere e compilare programmi
Programmazione Attività di progettazione ed implementazione di programmi I programmi permettono di realizzare funzioni complesse su un hardware in grado.
Algoritmi.
Linguaggi Diversi tipi di linguaggi:
Concetti Fondamentali sulla Programmazione
1 Macchine astratte, linguaggi, interpretazione, compilazione.
L’ELABORATORE ELETTRONICO uno strumento in grado di eseguire insiemi di azioni (“mosse”) elementari le azioni vengono eseguite su oggetti (dati) per produrre.
Il software Claudia Raibulet
Informatica e Informatica di Base
I linguaggi di alto livello
Problemi, algoritmi e programmazione
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica
Programmazione dei Calcolatori Elettronici
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:

Unità Didattica 2 I Linguaggi di Programmazione

Linguaggio naturale e linguaggio macchina La comunicazione uomo-macchina avviene attraverso formalismi che assumono la forma di un linguaggio. Caratteristiche del Linguaggio Naturale: Vantaggi: Ricchezza espressiva; Svantaggi: Ambiguità; Ridondanza. Caratteristiche del Linguaggio Macchina (codice binario): Legato alla struttura fisica dell’elaboratore; Potente e veloce; Programmi lunghi e di difficile scrittura; Difficoltà di messa a punto dei programmi.

Linguaggio di Programmazione formulazione di un algoritmo nei termini di un linguaggio di programmazione. Linguaggio di Programmazione: Linguaggio intermedio fra il linguaggio macchina e il linguaggio naturale; Descrive gli algoritmi con una ricchezza espressiva comparabile con quella dei linguaggi naturali; Descrive gli algoritmi in modo rigoroso.

Linguaggio Naturale Grammatica Linguaggio di Programmazione Traduttore Linguaggio Macchina

Uso dei Linguaggi di Programmazione Problema Analisi Diagramma a blocchi Algoritmo Programmazione Linguaggio programmativo Programma Risultati

Traduttori Il linguaggio macchina è l’unico linguaggio compreso dall’elaboratore; Qualsiasi altro linguaggio di programmazione ha bisogno di un traduttore (non è possibile progettare un traduttore per i linguaggi naturali); I linguaggio di programmazione sono comprensibili sia dalla macchina (attraverso un traduttore) che dall’uomo.

Traduttori Programma sorgente: Programma oggetto: Traduttore: Programma espresso in linguaggio di programmazione; Programma oggetto: Programma espresso in linguaggio macchina; Traduttore: Programma scritto in linguaggio macchina che traduce un programma sorgente in un programma oggetto; E’ funzione del linguaggio di programmazione e dell’architettura dell’elaboratore; Programma sorgente e programma oggetto sono equivalenti (stessi risultati sugli stessi dati) Traduttore Programma sorgente Programma oggetto

Tipi di Traduttori: Assemblatori, Compilatori e Interpreti Linguaggi a basso livello (linguaggi assemblativi, orientati alla macchina) Linguaggi ad alto livello (orientati all’uomo) Compilatori o Interpreti Assemblatori Linguaggio macchina

Schema di Compilazione Compilatore: riceve un intero programma sorgente e produce in un file l’intero programma oggetto. Compilatore Linker Programma sorgente Programma oggetto Programma eseguibile Risultati Dati mod1.c mod2.c … mod1.obj mod2.obj … nome_progr.exe Es in C: Linker: Collega più moduli oggetto prodotti dal compilatore in un unico programma eseguibile; I riferimenti esterni ad ogni modulo non sono risolti dal compilatore Il linker risolve i riferimenti esterni.

Schema di Interpretazione Interprete: Legge una singola frase in linguaggio sorgente, la trasforma in una sequenza di istruzioni macchina e le manda in esecuzione; Traduzione e esecuzione sono contestuali. Interprete Programma sorgente Risultati Dati

Compilatori e Interpreti: caratteristiche Codice ottimizzato; Programmi più veloci da eseguire; I compilatori sono legati all’architettura dell’elaboratore tramite il sistema operativo. Interpreti: Programmi più lenti (traduzione ed esecuzione sono contestuali); Messa a punto del programma (debugging) migliore (si conosce la riga di programma dove si è verificato un errore); Gli interpreti sono legati all’architettura dell’elaboratore tramite il sistema operativo.

Linguaggi Assemblativi e Assemblatori Un programma scritto in linguaggio macchina è una sequenza di istruzioni elementari codificate in binario; Scrittura dei programmi difficile (variabili legate ad indirizzi di macchina, ogni nuova istruzione inserita può determinare lo spostamento delle locazioni di memoria per ogni variabile); I linguaggi assemblativi sono linguaggi simbolici che usano simboli (nomi) per indicare il codice operativo e le variabili; Assemblatori: sono i traduttori dei linguaggi assemblativi; Assemblatore Programma sorgente in ling. assemblativo Programma in linguaggio macchina Risultati Dati

Linguaggi e Metalinguaggi Un traduttore deve essere in grado di riconoscere le frasi come appartenenti al linguaggio che deve tradurre; Occorre definire un linguaggio mediante una sintassi (regole grammaticali) che consentono al traduttore di stabilire se una frase appartiene o meno al linguaggio; Sintassi: insieme delle regole che servono per determinare se un testo è strutturato correttamente; Semantica: insieme delle regole che consentono di dare un significato alle frasi del linguaggio; Metalinguaggio: linguaggio che consente la definizione di linguaggi; Insieme delle categorie sintattiche (es: soggetto verbo) e delle regole sintattiche (es: una frase nominale è composta da un soggetto seguito da un verbo).

Definizione di Grammatica G = (N, T, P, S) N = Simboli Non Terminali (categorie sintattiche (articolo, nome, verbo)); T = Simboli Terminali (elementi di un vocabolario); P = Produzioni (regole sintattiche, ogni produzione descrive le regole attraverso cui un simbolo non terminale è definito per mezzo di altri simboli non terminali e/o terminali); S = Scopo (particolare simbolo non terminale).

Definizione di Linguaggio E’ una definizione generativa di linguaggio; Un linguaggio, funzione di una grammatica, è l’insieme di tutte le frasi ottenute come combinazioni di simboli terminali, ammessi dalle regole di produzione che dallo scopo S generano le possibili frasi (w*) del linguaggio.

Esempi di descrizione di “Produzioni” Le più usate modalità di descrizione di regole sintattiche (Produzioni) sono: Notazione EBNF (Extended Backus-Naur Form); Diagrammi sintattici.

Esempio di Grammatica S = frase; T = {UN, GATTO, MANGIA, TOPO, VELOCEMENTE, GIRA, LENTAMENTE, BIANCO, IL, GRASSO, MAGRO}; N = {frase, soggetto, predicato, frase-nominale, lista-di-aggettivi, articolo, nome, aggettivo, verbo, avverbio}; P = [regole sintattiche descritte secondo “EBNF” o “Diagrammi Sintattici”].

Produzioni descritte mediante EBNF Frase = soggetto predicato “.” Soggetto = frase-nominale Predicato = verbo (frase-nominale | avverbio) Frase-nominale = articolo nome [lista-di-aggettivi] Lista-di-aggettivi = aggettivo {“,” aggettivo} Articolo = “UN” | “IL” Nome = “GATTO” | “TOPO” Aggettivo = “NERO” | “BIANCO” | “MAGRO” | “GRASSO” Verbo = “GIRA” | “MANGIA” Avverbio = “VELOCEMENTE” | “LENTAMENTE” ( | = oppure; { } = ripetizione; ( ) = raggruppano alternative; [ ] = parte opzionale)

Produzioni descritte mediante Diagrammi Sintattici frase Frase nominale Frase nominale . MANGIA GIRA VELOCEMENTE LENTAMENTE frase nominale UN GATTO Aggettivo IL TOPO ,

Analisi Sintattica Le regole sintattiche possono essere usate: Per costruire frasi sintatticamente corrette; Per riconoscere se una frase è sintatticamente corretta.

Esempio di Analisi Sintattica Bottom Up La frase è sintatticamente corretta frase soggetto predicato fase nominale fase nominale articolo nome verbo articolo nome IL GATTO MANGIA IL TOPO .

Struttura dei Linguaggi di Programmazione Rappresenta un algoritmo e specifica l’insieme di operazioni da applicarsi in una certa sequenza su un certo insieme di dati; Occorre definire: Caratteristiche dei dati; Modalità di accesso ai dati; Operazioni sui dati; Ordine di esecuzione delle operazioni. Ogni dato deve essere descritto rispetto al tipo e alla struttura: Tipo: definisce l’insieme delle operazioni ammissibili; Struttura: relazioni esistenti tra i valori che rappresentano il dato (matrici, vettori, strutture (record)); Un programma è composto di: Commenti; Frasi dichiarative (direttive al traduttore, ad esse non corrispondono istruzioni di macchina (Dichiarazione di variabili e funzioni)); Frasi esecutive (azioni da applicare ai dati, corrispondono ad istruzioni di macchina).