Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Documenti analoghi
Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Traduzione ed esecuzione di programmi. Dispensa 08

Strumenti per la programmazione

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

AMBIENTI DI PROGRAMMAZIONE

Introduzione alla programmazione. Walter Didimo

10: I LINGUAGGI di PROGRAMMAZIONE PARTE 1

Strumenti per la programmazione

Corso sul linguaggio Java

LINGUAGGI DI ALTO LIVELLO

la traduzione dei programmi ed introduzione a Java

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Linguaggi, compilatori e interpreti

DAGLI ALGORITMI AI LINGUAGGI. Linguaggi di Programmazione

Corso di Fondamenti di Informatica Linguaggi di Programmazione

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

Le basi del linguaggio Java

Linguaggi di Programmazione

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

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

Introduzione alla Programmazione. Giselda De Vita

Corso sul linguaggio Java

Macchina Astratta: struttura e realizzazione.

Linguaggi di alto livello, compilatori e interpreti

Il linguaggio di programmazione Python

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

Corso di Linguaggi di Programmazione + Laboratorio

Linguaggi di programmazione

Il software: dall algoritmo al linguaggio macchina

Istallazione di Java - Uso delle librerie

Un semplice programma L ambiente di sviluppo Dev-C++ Codifica del programma Compilazione e correzione errori Esecuzione e verifica

Linguaggi di Programmazione

Cosa è l Informatica?

Programmazione. Andrea Passerini Informatica. Programmazione

Linguaggi di programmazione

Macchine astratte, linguaggi, interpretazione, compilazione

Indice. Prefazione. 3 Oggetti e Java 53

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

Lezione 16. Il Software di base

Traduzione ed Interpretazione

Programmazione: Sommario

Introduzione al Linguaggio C Corso di Informatica Laurea in Fisica

COMPILAZIONE. Tarsformazione di linguaggi

Introduzione a Java. Riferimenti

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

Programmi e Oggetti Software

Istruzioni Condizionali

Esercitazione n 1. Obiettivi

Introduzione a Visual Studio 2005

Il calcolatore. Architettura di un calcolatore (Hardware)

Corso di Architettura (Prof. Scarano) 09/04/2002

Concetti introduttivi

Prof. Rossella Cancelliere

Introduzione al Linguaggio C ed all IDE DEV-C++

Lab 01 Introduzione a Codelite

Fondamenti di programmazione!! Parte 2!

Scrivere un programma in Java

Linguaggio C: Introduzione ad ambienti di sviluppo integrati (IDE) e a Dev-C++ Università degli Studi di Brescia

Fondamenti di Informatica T. Il Software

Come funzionano i computer

Primi passi col linguaggio C

Docente: Prof. Marco Patella Tutor: Vincenzo Lomonaco

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina

Unità Didattica 2 I Linguaggi di Programmazione

Calcolatori Elettronici Parte VIII: linguaggi assemblativi

Il paradigma di programmazione a oggetti

Il linguaggio del calcolatore: linguaggio macchina e linguaggio assembly

L hardware da solo non è sufficiente per il funzionamento dell elaboratore È necessario introdurre il software:

Fondamenti di programmazione e Laboratorio di introduzione alla programmazione (modulo 1)

LINGUAGGI DI PROGRAMMAZIONE E CODIFICA PROGRAMMI

Architettura di Von Neumann

Unità di apprendimento 6. Il software: dal linguaggio alla applicazione

Laboratorio di Informatica 4 Novembre 2005

Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso

LA CODIFICA DELLE INFORMAZIONI

Prof. Pagani corrado JAVA

Fondamenti VBA. Che cos è VBA

Macchine Astratte. Luca Abeni. February 22, 2017

La Programmazione. Programmare Macchine Astratte Compilazione / Interpretazione Java. Laboratorio di Programmazione - Luca Tesei

Architettura dei calcolatori e Software di sistema

Corso sul linguaggio Java

Linee di programmazione

Sistema operativo & file system 1

Assembler. In verde sono evidenziati i comandi del debug. Attiva la scrittura di istruzioni assembler nella locazione 0100.

Sistemi di Elaborazione delle Informazioni 6 CFU. Il software di sistema

I.I.S. N. PELLATI Nizza Monferrato - Canelli

Introduzione al funzionamento di un calcolatore elettronico

Introduzione ai Calcolatori Elettronici

Concetti Introduttivi. Il Computer

IDE DevC

Definizione di metodi in Java

Laboratorio di Calcolo Linguaggi di programmazione

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

FONDAMENTI DI INFORMATICA

Il Sistema Operativo

PROBLEMI ALGORITMI E PROGRAMMAZIONE

APPENDICE. Appendice. Strumenti per lo sviluppo dei programmi Java

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

Sistemi Operativi. A.M. Fanelli Architettura dei Sistemi a. a Livello di Sistema Operativo. Livello di Linguaggi Applicativi

Transcript:

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 07 Traduzione ed esecuzione di programmi Carla Limongelli Ottobre 2011 Traduzione ed esecuzione di programmi 1

Prerequisiti Architettura calcolatore Sistema di numerazione in base 2 Sistema operativo http://www.dia.uniroma3.it/~java/fondinf/ La rappresentazione dell informazione 2

Contenuti Traduzione ed esecuzione di programmi Dalla definizione del problema alla sua esecuzione Compilatori ed interpreti L approccio misto di Java L uso di ambienti di sviluppo integrati (IDE) http://www.dia.uniroma3.it/~java/fondinf/ La rappresentazione dell informazione 3

Obiettivi (competenze da acquisire) Al termine dell unita didattica lo studente sarà in grado di Capire la distinzione tra un linguaggio di lato livello e uno di basso livello Distinguere un linguaggio compilato da uno interpretato Distinguere le varie fasi del processo di realizzazione di un programma: dall editor del testo alla traduzione del programma in linguaggio macchina Capire il ruolo che svolge la Java Virtual Machine http://www.dia.uniroma3.it/~java/fondinf/ La rappresentazione dell informazione 4

Calcolatori e programmazione Un calcolatore è una macchina per eseguire programmi qualcuno ha già fatto per noi alcuni programmi che possiamo eseguire così come facciamo con ogni applicazione Un calcolatore è anche una macchina programmabile, ossia una macchina le cui potenzialità possono essere aumentate da noi con la scrittura di nuovi programmi per far questo dobbiamo far uso di opportuni linguaggi di programmazione che ci permettono di esprimere nel modo più naturale le nostre esigenze di calcolo Traduzione ed esecuzione di programmi 5

Linguaggi di programmazione Traduzione ed esecuzione di programmi 6

Dal problema alla sua esecuzione Problema: a x 2 + b x + c = 0 Linguaggio a molto alto livello: SOLVE (A, B, C) A,B,C: coefficienti dell equazione X: soluzioni Traduzione ed esecuzione di programmi 7

Dal problema alla sua esecuzione Linguaggio ad alto livello esplicita il modo in cui devono essere calcolate le soluzioni... readln (A, B, C); D B**2-4*A*C; if (D 0) then { } else { }... E SQRT (D); X1 (-B + E) / (2 * A); X2 (-B - E) / (2 * A); writeln (X1, X2) writeln ( L equazione non ammette soluzioni reali ) Traduzione ed esecuzione di programmi 8

Dal problema alla sua esecuzione Linguaggio intermedio Non sa eseguire l elevamento a potenza, Puo eseguire solo un operazione alla volta D1 := B * B D2 := 4 * A D3 := D2 * C D := D1 - D3 Linguaggio macchina Per eseguire una singola operazione R1 B C B * B R2B R1R1 * R2 CR1 Traduzione ed esecuzione di programmi 9

Dal problema alla sua esecuzione Complessivamente R1 B R2 B R1 R1 * R2 D1 R1 R1 4 R2 A R1 R1 * R2 R2 C R1 R1 * R2 R2 D1 R1 R2 - R1 D R1 Traduzione ed esecuzione di programmi 10

Dal problema alla sua esecuzione Come vengono tradotte le istruzioni in linguaggio macchina Consideriamo un linguaggio macchina semplificato L istruzione occupa una sola locazione in memoria centrale ed e costituita da Codice istruzione Indirizzo Operando Abbreivazioni: IND indirizzo di memoria ACC registro accumulatore trasferimento UL unita di lettura US unita di scrittura (X) contenuto di X Traduzione ed esecuzione di programmi 11

Dal problema alla sua esecuzione Supponiamo di avere a disposizione un linguaggio ridotto in cui troviamo solo operazioni di somma, sottrazione, caricamento, memorizzazione lettura e scrittura: sintassi semantica Codice istruzione operando 00000001 IND ACC ACC + IND somma 00000010 IND ACC ACC - IND sottrazione 00000011 IND ACC IND caricamento 00000100 IND IND ACC memorizzzione 00000101 IND IND UL lettura 00000110 IND US IND scrittura Traduzione ed esecuzione di programmi 12

Dal problema alla sua esecuzione Supponiamo di eseguire la somma di due valori che vengono memorizzati in 0000000000 e 0000000001 Inidirizzo in memoria Istruzione 00000000 00000000 00001000 IND1 00000001 00000000 00001101 IND2 00000010 00000000 00010101 IND3 Semantica o nome simbolico 00010000 00000011 00000000 ACC (IND1) 00010001 00000001 00000001 ACC (ACC) + (IND2) 00010010 00000100 00000010 IND3 (ACC) Traduzione ed esecuzione di programmi 13

Dal problema alla sua esecuzione Ogni isturzione in memoria centrale, a sua volta, viene eseguita in 3 fasi: fetch (lettura) legge dalla memoria la prossima istruzione da eseguire decode (decodifica) determina il tipo di istruzione che deve essere eseguito execute (esecuzione) richiede lo svolgimento di tutte le azioni necessarie per l esecuzione dell istruzione ciascuna azione viene richiesta al componente opportuno Traduzione ed esecuzione di programmi 14

Le fasi della traduzione a x 2 + b x + c = 0 D B**2-4*A*C; if(d 0) then { E SQRT (D); X1 (-B + E) / (2 * A); X2 (-B - E) / (2 * A); writeln (X1, X2) SOLVE (A,B,C) } else { E SQRT (-D); X1 -B / (2 * A); X21 E / (2 * A); X22 -E / (2 * A); writeln (X1, X21, X22) } R1 B R2 B R1 R1 * R2 D1 R1 R1 4 R2 A R1 R1 * R2 R2 C R1 R1 * R2 R2 D1 R1 R2 - R1 D R1 Linguaggio a basso livello Linguaggio assemblativo ACC (IND2) ACC ACC-(IND1) IND3 ACC Linguaggio macchina 00000011 00000000 00000010 00000001 00000100 00000010 Linguaggio ad alto livello L unica differenza tra un linguaggio assembler e un linguaggio macchina e che Solo quest ultimo puo essere eseguito dalla CPU Traduzione ed esecuzione di programmi 15

Compilazione Il calcolatore con un programma compilatore, ricevendo un programma sorgente in linguaggio simbolico esegue la traduzione producendo in uscita il corrispondente programma eseguibile in linguaggio macchina Traduzione ed esecuzione di programmi 16

Esecuzione dei programmi Traduzione ed esecuzione di programmi 17

Programmi in linguaggio macchina Un calcolatore è una macchina che ricevendo un programma in linguaggio macchina e i relativi dati in ingresso lo esegue producendo dati in uscita (i risultati dell elaborazione) durante questa esecuzione la macchina (hardware) diventa una macchina virtuale Traduzione ed esecuzione di programmi 18

Compilazione e interpretazione Esistono due approcci alla traduzione ed esecuzione dei programmi compilazione un programma scritto in un linguaggio di programmazione di alto livello viene trasformato in un programma in linguaggio macchina e poi eseguito interpretazione ciascuna istruzione del programma scritto in un linguaggio di programmazione di alto livello viene trasformata in istruzioni del linguaggio macchina ed eseguita i traduttori del primo tipo sono chiamati effettivamente compilatori, quelli del secondo tipo sono chiamati interpreti Una analogia con la traduzione tra linguaggi diversi la compilazione è analoga alla traduzione di un libro l interpretazione è analoga alla traduzione simultanea Traduzione ed esecuzione di programmi 19

Interpretazione Il calcolatore con un programma interprete, ricevendo un programma sorgente in linguaggio simbolico e i relativi dati in ingresso lo interpreta e lo esegue, istruzione dopo istruzione, producendo direttamente i dati in uscita Traduzione ed esecuzione di programmi 20

Confronto tra compilazione ed interpretazione I linguaggi compilati prevedono la distribuzione di un file eseguibile (in linguaggio macchina) specifico per ogni piattaforma il file sorgente, che consentirebbe di modificare il programma, rimane di esclusiva pertinenza del programmatore I linguaggi interpretati prevedono la distribuzione diretta del file sorgente (che è il medesimo per tutte le piattaforme) su ogni piattaforma deve essere disponibile il programma interprete Traduzione ed esecuzione di programmi 21

Il linguaggio Java Java adotta una strategia mista il file sorgente contenente un programma Java viene prima compilato, generando un file in ByteCode il file in ByteCode è un file in linguaggio macchina per una macchina non esistente, detta macchina virtuale o Java Virtual Machine per essere eseguito il ByteCode viene interpretato su ogni piattaforma esistono programmi interpreti, che realizzano una Java Virtual Machine, per ogni piattaforma in questo modo il file sorgente non viene distribuito, mentre il file ByteCode distribuito è il medesimo per tutte le piattaforme Traduzione ed esecuzione di programmi 22

Compilazione di programmi Java Il calcolatore con un programma Compilatore Java, ricevendo un programma sorgente in linguaggio Java esegue la traduzione producendo in uscita il corrispondente programma in un linguaggio intermedio ByteCode Traduzione ed esecuzione di programmi 23

Interpretazione di programmi in ByteCode Il calcolatore con un programma interprete Java Virtual Machine (JVM), ricevendo un programma ByteCode e i relativi dati in ingresso lo interpreta e lo esegue, istruzione dopo istruzione, producendo direttamente i dati in uscita Traduzione ed esecuzione di programmi 24

Riassumendo /* Applicazione che visualizza una frase sullo schermo. */ class ScrittoreSulloSchermo { public static void main(string[] args) { System.out.println("Questo corso"); System.out.println("introduce i concetti di"); System.out.println("base dell'informatica"); } }... getstatic #6 <Field java.io.printstream out>... Traduzione ed esecuzione di programmi 25

Che cosa fare in pratica esecuzione Per eseguire una applicazione si deve usare il comando java di Java 2 SDK per eseguire il comando java si deve specificare il nome della classe applicazione che si vuole eseguire una applicazione Java viene eseguita come segue viene inizializzata una macchina virtuale Java (JVM) la JVM costruisce l oggetto classe corrispondente alla classe applicazione la JVM invia il messaggio main(...) a questo oggetto classe Per eseguire l applicazione ScrittoreSulloSchermo è necessario eseguire il comando java ScrittoreSulloSchermo si osservi come il nome del metodo main non compare esplicitamente nel comando Traduzione ed esecuzione di programmi 26

Uso di Java 2 SDK La seguente figura mostra la compilazione ed esecuzione dell applicazione ScrittoreSulloSchermo nella finestra del prompt dei comandi di Windows si osservi che System.out corrisponde alla finestra in cui viene eseguita l applicazione Traduzione ed esecuzione di programmi 27

Ambienti integrati di sviluppo Un ambiente integrato di sviluppo (o IDE, che è l acronimo di Integrated Development Environment) è una applicazione che permette di editare, compilare ed eseguire programmi nell ambito di un unico ambiente Alcune funzionalità tipiche di un IDE Java sono le seguenti editor (integrato) guidato dalla sintassi sintassi evidenziata mediante colori aiuto in linea e sensibile al contesto editor visuale di interfacce grafiche (GUI) accesso al compilatore e alla macchina virtuale Java mediante menu e/o bottoni altri strumenti browser della documentazione debugger integrato gestore di progetti e classi Traduzione ed esecuzione di programmi 28

Ambienti integrati di sviluppo per Java Ci sono due tipologie di IDE per Java IDE dotati di una propria versione di Java SDK Borland JBuilder Foundation, http://www.borland.com/jbuilder/foundation/ Metrowerks CodeWarrior Microsoft Visual J++ Symantec Visual Café IDE che non sono dotati di una propria versione di Java SDK ma che ne richiedono una installazione separata Kawa (Allaire, Tek-Tools) http://www.allaire.com/products/kawa/ Forte for Java, Community Edition (Sun) http://www.sun.com/forte/ffj/ce/ TextPad (Helios Software Solutions) http://www.textpad.com diversamente dai precedenti, TextPad è un editor di testi arricchito con alcune funzionalità degli IDE Traduzione ed esecuzione di programmi 29

Riepilogo della dispensa Vengono mostrate le varie fasi dello sviluppo di un programma, supponendo di avere gia a disposizione un algoritmo risolutivo di un dato problema L algoritmo viene tradotto nel linguaggio di programmazione scelto, scritto utilizzando un editor di testi. Il programma viene poi compilato o interpretato, in dipendenza dal linguaggio scelto Il codice puo essere tradotto direttamente in codice eseguibile oppure in byte code Il byte code (come nel caso di Java) necessita di un ulteriore strato software che traduce il byte code nel formato eseguibile per la piattaforma su cui deve essere eseguito Esempio di questo processo e la JVM che riceve un programma in byte code (estensione.class) http://www.dia.uniroma3.it/~java/fondinf/ La rappresentazione dell informazione 30

Conoscenze acquisite Distinzione tra un linguaggio di lato livello e uno di basso livello Distinzione tra un linguaggio compilato e uno interpretato Distinzione delle varie fasi del processo di realizzazione di un programma: dall editor del testo alla traduzione del programma in linguaggio macchina Ruolo della Java Virtual Machine Esistenza di diversi editor e di ambienti integrati di sviluppo che permettono sia di editare che compilare I programmi http://www.dia.uniroma3.it/~java/fondinf/ La rappresentazione dell informazione 31

Competenze acquisite Distinzione tra un linguaggio di lato livello e uno di basso livello Distinzione tra un linguaggio compilato e uno interpretato Distinzione delle varie fasi del processo di realizzazione di un programma: dall editor del testo alla traduzione del programma in linguaggio macchina Ruolo della Java Virtual Machine http://www.dia.uniroma3.it/~java/fondinf/ La rappresentazione dell informazione 32

Rifermimenti al libro di testo Per lo studio di questi argomenti si fa riferimento al libro di testo, e in particolare al capitolo 4 (Strumenti per la programmazione) 4.1 Strumenti per la programmazione 4.1.1 Editing ed editor 4.1.2 Compilazione e compilatori 4.1.3 Esecuzione 4.1.4 Compilatori e interpreti 4.1.5 Compilazione ed esecuzione di programmi Java 4.1.6 Java 2 Software Development Kit 4.2 Che cosa fare in pratica 4.4 Ambienti integrati di sviluppo Traduzione ed esecuzione di programmi 33

Parole chiave Linguaggio ad alto livello, Linguaggio a basso livello Linguaggio macchina Programma sorgente, compilatore, programma eseguibile Compilatori, interpreti Editor, ambienti integrati di sviluppo Java Vitrual Machine, byte code http://www.dia.uniroma3.it/~java/fondinf/ La rappresentazione dell informazione 34