I Linguaggi di Programmazione

Похожие документы
Unità Didattica 2 I Linguaggi di Programmazione

Linguaggi di Programmazione

LINGUAGGI DI ALTO LIVELLO

Linguaggi di Programmazione

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

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

Elementi di programmazione

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

Introduzione alla programmazione. Walter Didimo

Il linguaggio di programmazione Python

Linguaggi, Traduttori e le Basi della Programmazione

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

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

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

Linguaggi e Ambienti di Programmazione

Programmazione Procedurale in Linguaggio C++

Introduzione alla programmazione

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

Linguaggi, compilatori e interpreti

Concetti di Base sulla Programmazione. Prof.Ing.S.Cavalieri

FONDAMENTI DI INFORMATICA

COMPILAZIONE. Tarsformazione di linguaggi

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

Linguaggi di programmazione

Fasi di un Compilatore

Il Software programmabili programma algoritmo

Linguaggi di programmazione

Programmazione C Massimo Callisto De Donato

Primi passi col linguaggio C

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

Lezione 6 Introduzione al C++ Mauro Piccolo

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

ELABORAZIONE DELLE INFORMAZIONI (ALGORITMI E LINGUAGGI DI PROGRAMMAZIONE)

Cosa è l Informatica?

Unità di apprendimento 6. Dal problema al programma

Introduzione alla Programmazione. Giselda De Vita

TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE

Prof.Claudio Maccherani 1995

FONDAMENTI DI INFORMATICA

Sorgenti di errore. Laboratorio di Informatica 1

Informatica Generale Andrea Corradini I linguaggi di programmazione

Linguaggi di programmazione

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Linguaggi di alto livello, compilatori e interpreti

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

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI BASSO LIVELLO

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Linguaggi di Programmazione

Fondamenti d Informatica: linguaggi formali. Barbara Re, Phd

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

I linguaggi di alto livello

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX

Algoritmi e Linguaggi

Introduzione al Linguaggio C Corso di Informatica Laurea in Fisica

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

Calcolatori Elettronici Parte VIII: linguaggi assemblativi

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

STORIA E CARATTERISTICHE

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

Introduzione alla programmazione

Le basi del linguaggio Java

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

Lezione 16. Il Software di base

Teoria dell Informazione

Linguaggi di programmazione

L ELABORATORE ELETTRONICO

Транскрипт:

I 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 (codice binario): Vantaggi: Legato alla struttura fisica dell elaboratore; 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; Descrive gli algoritmi in modo rigoroso. 3

Linguaggio Naturale Linguaggio di Programmazione Linguaggio Macchina Grammatica Traduttore 4

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

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. 6

Traduttori Programma sorgente: 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 Traduttore Programma oggetto Programma sorgente e programma oggetto sono equivalenti (stessi risultati sugli stessi dati) 7

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

Il compilatore 2

Il compilatore 2

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

Schema di Interpretazione Programma sorgente Interprete Dati Risultati 12

Schema di Compilazione Compilatore: riceve un intero programma sorgente e produce in un file l intero programma oggetto. Compilatore Linker Es in C: Programma sorgente mod1.c mod2.c Programma oggetto mod1.obj mod2.obj Programma eseguibile Dati 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. nome_progr.exe Risultati 13

3 Linguaggio sorgente e obiettivo Esistono... migliaia di linguaggi sorgente Linguaggi di programmazione generici C, C++, Pascal, Fortran, Java, Basic, Lisp, Prolog, perl... Linguaggi specializzati Formattazione di testi (Tex, Latex...) Interrogazione di basi di dati Il compilatore traduce il linguaggio sorgente in Un altro linguaggio di programmazione (pascal -> C) Il linguaggio macchina per un dato processore

5 Il contesto del compilatore scheletro programma sorgente preprocessore include, define (macro) programma sorgente programma assembly assembler programma oggetto librerie linker/loader programma eseguibile

4 Analisi e sintesi X = A+B*C X = A + * B C

7 Analisi lessicale (scanning) int somma, diff = 0.3;

7 Analisi lessicale (scanning) int somma, diff = 0.3;

8 Analisi sintattica istruzione di assegnazione identificatore = espressione A espressione + espressione identificatore B espressione identificatore C * espressione numero 60

9 Regole sintattiche regole base regole ricorsive

10 Analisi semantica Ricava il significato associato alla struttura sintattica Verifica che le regole di impiego del linguaggio siano soddisfatte dichiarazione degli identificatori (ridefinizione,...) controllo dei tipi (uso nelle espressioni, conversione automatica di tipo, tipo di indici nei vettori, ecc..) * int D; float C; C D funzione di conversione int -> float

11 Tavola dei simboli Memorizza gli identificatori con i relativi attributi utilizzo di memoria tipo campo di visibilità numero e tipo dei parametri per le funzioni Allocazione in memoria

12 Generazione del codice oggetto rappresentazione interna id1 = id2 + id3 * int-to-float generazione di codice intermedio 60 t1 = int-to-float(60) t2 = id3 * t1 t3 = id2 + t2 id1 = t3 ottimizzazione del codice t1 = id3 * 60.0 id1 = id2 + t1 generazione del codice oggetto MOVF id3, R2 MULF #60.0, R2...

Compilatori e Interpreti: caratteristiche Compilatori: 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. 24

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 Dati Risultati 25

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