Linguaggi di Programmazione

Documenti analoghi
Unità Didattica 2 I Linguaggi di Programmazione

I Linguaggi di Programmazione

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware

C++ Barriera di astrazione. Barriera di astrazione. Basic. Basic. Lisp. Lisp. Pascal. Prolog. Pascal. Prolog. Cobol. Fortran IMPERATIVI FUNZIONALI

LINGUAGGI DI ALTO LIVELLO

Linguaggi di Programmazione

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

Il linguaggio di programmazione Python

Elementi di programmazione

Introduzione alla programmazione. Walter Didimo

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Cosa è un programma. Informatica di Base -- R.Gaeta 18

Il Software programmabili programma algoritmo

FONDAMENTI DI INFORMATICA

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1

Introduzione alla Programmazione. Giselda De Vita

Introduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni

Programmazione C Massimo Callisto De Donato

Linguaggi di programmazione

Linguaggi di programmazione

FONDAMENTI DI INFORMATICA

Algoritmi e Linguaggi

Linguaggi, Traduttori e le Basi della Programmazione

Introduzione alla programmazione

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Programmazione Procedurale in Linguaggio C++

Informatica ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE. Francesco Tura. F. Tura

Corso di Fondamenti di Informatica Linguaggi di Programmazione

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Sorgenti di errore. Laboratorio di Informatica 1

Linguaggi di programmazione

TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE

Calcolatori Elettronici Parte VIII: linguaggi assemblativi

Cos è un algoritmo. Si dice algoritmo la descrizione di un metodo di soluzione di un problema che sia

L ELABORATORE ELETTRONICO

Linguaggi di alto livello, compilatori e interpreti

Cosa è l Informatica?

Informatica 3. LEZIONE 1: Introduzione. Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di programmazione

Linguaggi di Programmazione

COMPILAZIONE. Tarsformazione di linguaggi

Algoritmi, linguaggi e programmi. Emilio Di Giacomo e Walter Didimo

Corso di Matematica per la Chimica. Dott.ssa Maria Carmela De Bonis a.a

Introduzione alla programmazione strutturata

Introduzione al Linguaggio C Corso di Informatica Laurea in Fisica

Scrivere il software. Scrivere il software. Interprete. Compilatore e linker. Fondamenti di Informatica

Linguaggi, compilatori e interpreti

Introduzione alla programmazione

Problema: dati i voti di tutti gli studenti di una classe determinare il voto medio della classe.

Algoritmo. La programmazione. Algoritmo. Programmare. Procedimento di risoluzione di un problema

Linguaggi e Paradigmi di Programmazione

Fondamenti di programmazione!! Parte 2!

PROBLEMI ALGORITMI E PROGRAMMAZIONE

Modulo 1. Concetti base della Tecnologia dell informazione. Prof. Nicolello Cristiano. Modulo 1

Informatica Generale Andrea Corradini I linguaggi di programmazione

Introduzione alla programmazione

GRAMMATICA FORMALE. Albero sintattico

Transcript:

Linguaggi di Programmazione 1

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 (e Assembler): Vantaggi: Legato alla struttura fisica del Calcolatore (CPU); Potente e veloce; Svantaggi: Programmi lunghi e di difficile scrittura; Difficoltà di messa a punto dei programmi. 2

Linguaggio di Programmazione Programma: 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, ma non è ambiguo; Descrive gli algoritmi in modo rigoroso. 3

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

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

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

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

Linguaggi di programmazione di alto livello E svincolato dall architettura della macchina, nel senso che il programmatore non deve necessariamente conoscere le caratteristiche specifiche della CPU. E più comprensibile al programmatore in quanto più vicino al linguaggio naturale. Per CPU diverse (ad es. Intel invece che IBM), è necessario predisporre compilatori diversi. Uno stesso Programma sorgente può essere eseguito su macchine (CPU) diverse, creando il Programma oggetto con il compilatore opportuno. Scelta di un Linguaggio in base ad applicazioni specifiche. 8

Traduttori A ciascuna istruzione del Linguaggio Assembler corrisponde una sola istruzione in Linguaggio macchina (corrispondenza biunivoca); In generale, ad un istruzione in Linguaggio ad alto livello corrispondono una o più istruzioni in Linguaggio macchina. Mentre la traduzione di un Programma in Assembler è un operazione abbastanza banale, la traduzione di un Programma scritto il Linguaggio di alto livello è un operazione più ardua, e non univoca. I Compilatori (e Interpreti) sono programmi molto più sofisticati degli Assemblatori, e sono determinanti ai fini dell efficienza di un Programma. 9

Schema di Compilazione Compilatore: E un programma che riceve un intero programma sorgente (file) in Input e restituisce in Output il programma oggetto. Compilatore Linker Es in C: Programma sorgente mod1.c mod2.c Linker: Programma oggetto mod1.obj mod2.obj Programma eseguibile nome_progr.exe (Windows) Dati 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 (es: le Librerie) Risultati 10

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. Programma sorgente Interprete Dati Risultati 11

Confronto tra Compilatori e Interpreti: Compilatori: Sono in grado di ottimizzare il Codice; Programmi più veloci da eseguire; Esempi di Linguaggi: COBOL, Pascal, Fortran, C. Interpreti: Programmi più lenti (traduzione ed esecuzione sono contestuali); Messa a punto del programma (debugging) migliore (si conosce immediatamente la riga di programma dove si verifica un errore); Esempi: Visual BASIC, Matlab, Prolog. 12

Modello ibrido: Il Programma sorgente viene compilato in un linguaggio intermedio (es: bytecode) una volta per tutte. Il linguaggio intermedio viene interpretato da una Virtual Machine (VM) ossia un interprete di basso livello che emula una CPU. La portabilità su una CPU diversa è garantita dall esistenza della VM per quella specifica CPU. Esempi: Java, C#. 13

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). 14

Definizione di Grammatica G = (N, T, P, S) N = Simboli Non Terminali (categorie sintattiche ( articolo, nome, verbo, aggettivo,... )); 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). 15

Definizione di Linguaggio { * * } : L( G) = w T S w E una definizione generativa di linguaggio; Un linguaggio, funzione di una grammatica, è l insieme di tutte le frasi ottenute come combinazione di simboli terminali, ammessi dalle regole di produzione che dallo scopo S generano le possibili frasi (w*) del linguaggio. 16

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

Esempio di Grammatica S = frase; T = {UN, GATTO, MANGIA, TOPO, VELOCEMENTE, GIRA, LENTAMENTE, BIANCO, NERO, 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 ]. 18

Produzioni descritte mediante EBNF 1. Frase = soggetto predicato. 2. Soggetto = frase-nominale 3. Predicato = verbo (frase-nominale avverbio) 4. Frase-nominale = articolo nome [lista-di-aggettivi] 5. Lista-di-aggettivi = aggettivo {, aggettivo} 6. Articolo = UN IL 7. Nome = GATTO TOPO 8. Aggettivo = NERO BIANCO MAGRO GRASSO 9. Verbo = GIRA MANGIA 10. Avverbio = VELOCEMENTE LENTAMENTE ( = oppure; { } = ripetizione; ( ) = raggruppamento di alternative; [ ] = parte opzionale) 19

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

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

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

Struttura di un Programma Un Programma 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, e/o dichiarazione di variabili e funzioni); Frasi esecutive (azioni da applicare ai dati, corrispondono ad una o più istruzioni di macchina). 23