Corso di Progetto di compilatori ed interpreti

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Corso di Progetto di compilatori ed interpreti"

Transcript

1 Corso di Progetto di compilatori ed interpreti Corso di Laurea Specialistica in Ingegneria Informatica A.A Requisiti preliminari e obiettivi Requisiti preliminari Conoscenza dei linguaggi di programmazione Conoscenza dei paradigmi di programmazione Conoscenza delle diverse modalita di allocazione della memoria Capacita di sviluppare applicazioni software anche complesse Conoscenza delle principali strutture dati e degli algoritmi per la loro gestione Obiettivi Tecniche di traduzione per i moderni linguaggi di programmazione sia di tipo general purpose che linguaggi per applicazioni specifiche

2 Scheduling Orario delle lezioni Martedì aula CC Giovedi 8-11 aula P5 Chiarimenti e informazioni Orario ricevimento Mercoledì dalle 11 alle 12 Venerdì dalle 10 alle 11 Course Outline Tecniche di implementazione dei linguaggi Traduttori, compilatori e interpreti Struttura di un compilatore Analisi lessicale (scanning) Grammatiche regolari Implementazione di scanner Analisi sintattica (parsing) Context Free Grammars Top-Down Parsing, LL Parsing Bottom-Up Parsing, LR Parsing Analisi Semantica (Contextsensitive Analysis) Syntax-Directed Translation Attribute Definitions Evaluation of Attribute Definitions Rappresentazone intermedia Generazione del codice Tecniche di ottimizzazione del codice Program Representation Dataflow Analysis Static Single Assignment Global Optimization Register Allocation Scheduling Interprocedural Analysis Optimizing Object-Oriented Languages (Alias analysis) Garbace collection Data Dependence Analysis Loop Transformations Scalar Compilers in Practice

3 Modalita di esami Modalità esami elaborato gruppi di 2 4 persone esame orale Prova in itinere Durante il corso sarà svolta una prova in itinere Materiale didattico R. Sebesta "Concept of Programming Language", The Benjamin Cummings Company, Inc. Fischer, Le Blanch, "Crafting a compiler", The Benjamin Cummings Company, Inc Steven Muchnick, Advanced Compiler Design Implementation, Morgan Kaufmann. Robert Morgan, Building an Optimizing Compiler, Digital Press. altro..

4 Perche studiare i compilatori? I compilatori forniscono una interfaccia essenziale fra applicazioni e architettura I compilatori inglobano una vasta gamma di tecniche basate su aspetti teorici ampiamente utilizzati Lo sviluppo dei compilatori consente di acquisire una maggiore abilità nello sviluppo del software Obiettivi dell implementazione di un linguaggio Correttezza Efficenza Time, data space, code space At compile & run-time Supporta l espressività del linguaggio Supporta caratteristiche dell ambiente di programmazione Fast turnaround time Separate compilation Source level debugging

5 Linguaggi intepretati vs. compilati C, C++, Fortran Di norma compilari Lisp, Haskell, PHP, Python Di norma interpretato Perchè? Tecniche di implementazione di un linguaggio Interprete Easy to implement Built-in run-time support Slow Compilatori Significant implementation effort Requires run-time support (e.g., garbage collector) Fast, optimized target code Hybrid Esempi: bytecode interpreters for Perl, Java

6 Compilatore vs. interprete programma sorgente Compilatore dati Programma oggetto errori risultati programma sorgente dati Interprete risultati errori Interpreti È possibile eseguire modifiche ed aggiunte al codice durante l esecuzione, ciò consente un debug interattivo. Tale modifiche possono essere gestite agevolmente se il linguaggio non gestisce blocchi strutturati il tipo di una variabile può variare durante l esecuzione dato che il programma utente e continuamente riesaminato durante l esecuzione migliore diagnostica degli errori indipendenza dalla macchina Sorgente meno compatto generano un grande overhaed: 10-1 linguaggi statici 100-1linguaggi dinamici ogni riferimento ad una variabile richiede un riesame del codice tutte le routine di supporto devono essere costantemente disponibili

7 Cosè un compilatore E un programma che legge una frase di un linguaggio e la traduce in un altro linguaggio Linguaggio sorgente Di norma un programma scritto in un linguaggio di alto livello Compilatore Linguaggio oggetto Di norma il programma equivalente scritto linguaggio macchina (machine code relocatable object file) errori Cosè un compilatore Traduttori di linguaggi di programmazione in linguaggio macchina convertitori di formato silicon compiler

8 Ruolo dei Compilatori Linguaggi di programmazione ad alto livello Incremento la produttività dei programmatori Facilità di maintenance del codice Maggiore portabilità del codice Dettagli dei linguaggi di basso livello Scelta delle istruzioni Metodi di ndirizzamento Pipelines Uso della cache Parallelismo a livello di istruzione I compilatori sono necessari per coprire il gap tra i linguaggi high-level e low-level I calcolatori continuano a cambiare da quando sono stati inventati Cambi nell architettura cambi nei compilatori Nuove caratteristiche significa nuovi problemi Modifiche nei costi Necessità di re-engineer di soluzioni conosciute Significative differenze nelle performance

9 Il progetto di compilatori investe numerosi settori della computer science All interno di un compilatore intervengono tutte queste componenti. Inteligenza artificiale Algoritmi Teoria Sistemi Architetture greedy algorithms learning algorithms graph algorithms Union-find network flows dynamic programming dfas for scanning parser generators lattice theory for analysis allocation and naming locality synchronization pipeline management memory hierarchy management instruction set use Progetto di Compilatori I compilatori sono pezzi di software di grandi dimenzioni ed enormemente complessi Lo sviluppo di compilatori richiede conoscenze su programming tools (compilers, debuggers) program generation tools (flex yacc bison) software libraries (sets collections) simulators (spim) La conoscenza della struttura di un compilatore migliora le qualita del progetista del software

10 Cosa richiedere ad un compilatore? Codice corretto Il codice prodotto sia efficiente (output runs fast) Il compilatore sia efficiente (Compiler runs fast) Il tempo di compilazione sia proporzionale alla dimenzione del codice Compilazione separata Accurata diagnosi degli errori sintattici Funzioni adeguatamente con il debugger Accurata diagnosi delle anomalie Cross language calls Ottimizzazione predicibile Altre applicazioni Le tecniche utilizzate per lo sviluppo dei compilatori travano impiego in numerosi problemi della computer science. Le techniche usate in un lexical analyzer possono essere utilizzate in un editor di test(text editors), sistemi di information retrieval, e programma di pattern recognition. Le techniche usate in un parser possono essere utilizzate in sistema di query processing come SQL. Molti software che hanno un front-end complesso possono utilzzare techniche utilizzate nel progetto dei compilatori Un risolutore simbolico di equazioni che prende una equazione in ingresso e esegue il parsing di tale equazione Natural Language Processing (NLP)

11 Struttura di un compilatore Ci sono due fasi fondamentali in un compilatore: Analisi e Sintesi Nella fase di analisi, una rappresentazione intermedia viene creata dal programma sorgente Analizzatore lessicale, Analizzatore Sintattico e Analizzatore Semanticosonopartidi questafase Nella fase di sintesi, il programma target equivalente viene creato dalla rappresentazione intermedia Generatore di codice intermedio, Generatore di Codice e Ottimizzatore sono parti di questa fase Fasi di un compilatore Source Program Lexical Analyzer Syntax Semantic Analyzer Analyzer Intermediate Code Code Generator Optimizer Code Generator Target Program Ogni fase trasforma il prgramma sorgente da una rappresentazione in un altra Durante queste fasi vengono utilizzate Error handlers. Symbol table.

12 Funzionalità di un compilatore Analisi lessicale (scanner) trasforma il codice sorgente in una forma compatta e uniforme (tokens=elementi lessicali) elimina informazioni non necessarie presenti nel codice sorgente (commenti) processa le direttive di compilazione (include, define, etc) scopre eventuali errori nel lessico le espressioni regolari è la notazione che in modo efficace consente di descrivere i tokens Analisi lessicale Un analizzatore lessicale legge il programma sorgente carattere per carattere e ritorna tokens del programma sorgente. Un token descrive un insieme di caratteri che hanno lo stesso significato (come identificatore, operatori, keywords, numeri, delimitatori etc) newval := oldval + 12 => tokens: newval identifier := assignment operator oldval identifier + add operator 12 a number Le informazioni sugli identificatori sono memorizzate nella tabella dei simboli (symbol table).

13 Analisi lessicale Le espressioni regolari sono utilizzate per descrivere I token Un Automa a Stati Finiti Deterministico (Deterministic Finite State Automaton, Deterministic FSA) può essere utilizzato per implementare una analizzatore lessicale Funzionalità di un compilatore Analisi sintattica (parser) cerca errori sintattici si raggruppano i tokens in frasi grammaticali Un Analizzatore Sintattico crea la struttura sintattica (generalmente sotto forma di un albero chiamato parse tree) di un dato programma

14 Syntax Analyzer Un analizzatore sintattico è anche chiamato parser. Un parse tree descrive la struttura sintattica. assgstmt identifier := expression In un parse tree, tutti I terminali sono foglie Tutti gli altri nodi sono non terminali newval expression + expression identifier number oldval 12 Syntax Analyzer (CFG) La sintassi di un linguaggio è specificata per mezzo di una grammatica non contestuale (context free grammar CFG). Le regole di una CFG sono ricorsive Un analizzatore sintattico verifica se un dato programma sodisfa le regole derivate dall CFG o no Se le regole sono soddisfatte l analizzatore sintattico crea un parse tree per il programma dato

15 Syntax Analyzer (CFG) Spesso per specificare una CFG viene utilizzata una BNF (Backus Naur Form) assgstmt -> identifier := expression expression -> identifier expression -> number expression -> expression + expression Syntax Analyzer versus Lexical Analyzer Quali costrutti di un programma devono essere riconosciuti da un the lexical analyzer, e quali da un syntax analyzer? Ambedue fanno le stesse cose; ma il lexical analyzer tratta solo I costrutti del linguaggio non-recursivi. Il syntax analyzer tratta I costrutti del linguaggio recursivi Il lexical analyzer semplifica il lavoro del syntax analyzer. Il lexical analyzer riconosce I componenti più piccoli (tokens) del programma sorgente. Il syntax analyzer lavora sui tokens riconoscendo le strutture del linguaggio

16 Tecniche di Parsing In relazione a come viene creato il parse tree ci sono differenti tecniche che possono essere divise in due gruppi: Top-Down Parsing, Bottom-Up Parsing Top-Down Parsing: La costruzione del parse tree inizia dalla radice e procede verso le foglie. Efficienti parser top-down possono facilmente essere costruiti a mano. Recursive Predictive Parsing, Non-Recursive Predictive Parsing (LL Parsing). Bottom-Up Parsing: La costruzione del parse tree inizia dallefogliee procedeverso la radice. Di norma efficienti parser bottom-up parsers sono creati con l ausilio di tool software I parser Bottom-up è anche conosciuto con il nome di shift-reduce parsing. Operator-Precedence Parsing facili da implementare LR Parsing molte forme di shift-reduce parsing, LR, SLR, LALR Funzionalità di un compilatore Analisi semantica cerca errori semantici informazioni sui tipi - type checking Ottimizzazione cerca di migliorare il codice per limitare il tempo di esecuzione e la memoria necessaria (questa fase può essere molto complessa) Generazione del codice

17 Analizzatore Semantico Un semantic analyzer cerca nel programma sorgente errori semantici e raccoglie informazioni necessarie per la generazione del codice Type-checking è un importante parte dell analisi semantica Di norma le informazioni semantiche non possono essere rappresentate con un context-free language Context-free grammars sono integrate con attributi (regole semantiche) Il risultato e una traduzione syntax-directed, Grammatiche ad attributi Esempio: newval := oldval + 12 Il tipo dell identificatore newval deve corrispondere (match) con il tipo dell espressione (oldval+12) Generazione di codice intermedio Un compilatore può produrre una rappresentazione intermedia esplicita del codice intermedio. Questo codice intermedio e generalmente indipendente dall architecture. Il livello del codice intermedio è generalmente vicino a quello del codice macchina. Esempio: newval := oldval * fact + 1 id1 := id2 * id3 + 1 MULT ADD MOV id2,id3,temp1 temp1,#1,temp2 temp2,,id1

18 Ottimizzatore di codice (per codice intermedio) Ottimizzatore di codice ottimizza il codice intermedio in termini di tempo e spazio Esempio: MULT id2,id3,temp1 ADD temp1,#1,id1 Generatore di codice Produce il linguaggio target per una specifica architettura IL programma target è normalmente un codice oggetto rilocabile contenente codice macchina. Esempio: ( simpponendo che noi abbiamo un architettura per cui al più un operando è un registro) MOVE MULT ADD MOVE id2,r1 id3,r1 #1,R1 R1,id1

19 Classificazione dei compilatori Numero di passi compilatori a singolo passo - compilatori a più passi con numero di passi si intende il numero di volte che viene letto il codice sorgente durante la compilazione Ottimizzazione nessuna ottimizzazione ottimizzazione in spazio ottimizzazione in tempo Classificazione dei compilatori: Linguaggio oggetto prodotto pure machine code i compilatori generano codice per un particolare set di istruzioni macchina non assumendo l esistenza di alcun sistema operativo o libreria di funzioni questo approccio è raro ed è utilizzato per compilatori di linguaggi per l implementazione di sistemi augmented machine code i compilatori generano codice per un particolare set di istruzioni macchina arricchito con routine di sistema operativo o di supporto. Per eseguire un tale codice oggetto sulla macchina devono esistere un sistema operativo e una collezione di routine di supporto (I/O, allocazione di memoria) che vanno lincate al codice oggetto il grado di corrispondenza fra codice virtuale e hardware può variare moltissimo

20 Classificazione dei compilatori: Linguaggio oggetto prodotto Virtual machine code i compilatori generano codice composto esclusivamente da codice virtuale. Questo approccio è attraente perché permette di generare codice eseguibile indipendente dall hardware questo approccio penalizza la velocità di esecuzione Struttura di un compilatore: singolo passo analizzatore lessicale generatore del codice analizzatore sintattico - semantico

21 Struttura di un compilatore: due passi Front-end Back-end Linguaggio sorgente Linguaggio intermedio Linguaggio oggetto Front-end O(n) o O(nlogn) errori Back-end NPC Compilazione a due passi Front end : dipendenza da linguaggio sorgente - indip. da macchina (analisi e generazione codice intermedio...) Back end : indipendenza da linguaggio sorgente - dip. da macchina (ottimiz. e generazione codice) Front e back end si possono riutilizzare separatamente per nuovi compilatori Passate una singola passata può bastare per più fasi (interfogliate durante la passata) (es: analisi e generazione codice intermedio in una sola passata "guidata" da analiz. sintattico) Ridurre il numero di passate diminuisce tempo - aumenta memoria richiesta tecnica del backpatching per raggruppare generazione di codice intermedio e oggettosi lasciano "vuoti" gli indirizzi non deducibili una lista collega tutti i "buchi" relativi alla stessa entry nella symbol table i "buchi" si riempiono quando si arriva ad avere le informazioni necessarie

22 Struttura di un compilatore: due passi Linguaggio intermedio di alto livello: gli operatori del linguaggio sorgente sono ancora presenti nel linguaggio Linguaggio intermedio di basso livello: gli operatori sorgenti sono tradotti in altri più semplici o specializzati if cond then ramo1 else ramo2 Ifop cond ramo1 ramo2 Jump iffalse cond etich2 ramo1 jump etich_uscita etich2: ramo2 etich_uscita Implicazione della compilazione a due passi Utilizzo di una rappresentazione intermedia (IL = intermediate language) il front-end traduce il codice corretto in IL il back-and traduce il codice in formato IL nel target code rende più semplice la costruzione di un compilatore per un nuovo processore (retargeting) consente di progettare compilatori con multipli front-end

23 Struttura di un compilatore: due passi Codice PASCAL Codice PASCAL Codice PASCAL Codice PASCAL Front-end Compilatore per PASCAL per il processore Back-end P1per PASCAL processore P1 Compilatore PASCAL per il processore P2 Front-end per PASCAL Front-end Compilatore per PASCAL per il processore Back-end P3 per PASCAL processore P3 Compilatore PASCAL per il processore P4 Front-end per PASCAL Back-end per processore P2 Back-end per processore P4 Oggetto per P1 Oggetto per P2 Oggetto per P3 Oggetto per P4 Struttura di un compilatore: due passi Codice PASCAL Codice C Front-end per PASCAL Front-end per C Back-end per processore P1 Back-end per processore P2 Codice ADA Front-end per ADA Back-end per processore P3 3 front-end + 4 back-end = 12 compilatori Back-end per processore P4

24 Struttura di un compilatore: un compilatore a sei passi Codice sorgente ANALISI LESSICALE L1 ANALISI SINTATTICA L2 L4 ANALISI DELLE DICHIARAZIONI L3 ANALISI DEI NOMI ANALISI DEI CORPI L5 SELEZIONE DEI CODICI OPER. L7 Codice oggetto ASSEMBLAGGIO CODICE Analisi lessicale: elimina spazi, commenti e transcodifica gli identificatori in interi Analisi sintattica: esegue una analisi sintattica e produce una rappresentazione intermedia tramite un albero sintattico linearizzato nella postfissa Analisi dei nomi: sostituisce alla codifica dei nomi un preciso riferimento alla dichiarazione dello stesso risolvendo le omonimie Analisi delle dichiarazioni: assegna un indirizzo virtuale ad ogni variabile e analizza le strutture dati. Le informazioni raccolte sono distribuite nel testo e non raccolte in apposite tabelle dei simboli Analisi dei corpi: verifica la compatibilità dei tipi degli operandi, degli operatori e specifica ulteriormente la codifica degli operatori Selezione dei codici operativi: calcola l occupazione di memoria per le istruzioni generate da un blocco e raccoglie le etichette in una tabella con accanto gli indirizzi

25 Scanner Parser Symbol Table Semantic checker Intermediate code generator Error Handler Optimizer Code generator Optimizer

26 Tool per il progetto di compilatori tool di software development general- purpose + tool specializzati Tool per il progetto automatico di parti di compilatori parser generators: producono analizzatori sintattici scanner generators: producono analizzatori lessicali syntax- directed translator engines: producono collezioni di routine che visitanoil parse tree e generano il codice intermedio ogni nodo una o più traduzioni... automatic code generators: prendono regole per tradurre da ling. intermedio in ling. Macchina soluzioni alternative gestite con "template matching data-flow engines: analisi data- flow per ottimizzare il codice fornisce info su come si propagano i dati da una parte all'altra del programma - intervento dell'utente Formalismi di interesse Analisi lessicale Regular Grammars Finite State Automata Regular Expressions Analisi sintattica Grammatiche non contestuali (Context-Free Grammars CFGs) Generalmente i parser CFG hanno una complessita O(n 3 ) Non ogni elemento linguistico in un linguaggio di programmazione puo essere trattato come grammatica non contestuale

27 Formalismi di interesse Analisi semantica Traduzione diretta alla sintassi (Syntax-directed translation) Grammatiche ad attributi (Attribute grammars) Altri approcci piu sofisticati Code generation: Pattern matching Euristica Soluzioni ad-hoc Tabella dei simboli

Corso di Laurea Magistrale in Ingegneria Informatica A.A. 2011-2012. Linguaggi Formali e Compilatori. Compilatori. Giacomo PISCITELLI

Corso di Laurea Magistrale in Ingegneria Informatica A.A. 2011-2012. Linguaggi Formali e Compilatori. Compilatori. Giacomo PISCITELLI Corso di Laurea Magistrale in Ingegneria Informatica A.A. 2011-2012 Linguaggi Formali e Compilatori Compilatori Giacomo PISCITELLI I traduttori Genericamente, i programmi responsabili della traduzione

Dettagli

Corso di Progetto di compilatori ed interpreti

Corso di Progetto di compilatori ed interpreti Corso di Progetto di compilatori ed interpreti Corso di Laurea Specialistica in Ingegneria Informatica A.A. 2009-2010 Requisiti preliminari e obiettivi Requisiti preliminari Conoscenza dei linguaggi di

Dettagli

Corso di Laurea Magistrale in Ingegneria Informatica

Corso di Laurea Magistrale in Ingegneria Informatica Corso di Laurea Magistrale in Ingegneria Informatica CFU 9 A.A. 2012-2013 Requisiti preliminari Conoscenza dei linguaggi di programmazione Conoscenza dei paradigmi di programmazione Conoscenza delle diverse

Dettagli

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI BASSO LIVELLO

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI BASSO LIVELLO LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI BASSO LIVELLO Linguaggio macchina Uno per ogni processore o famiglia di processori Linguaggio assembler Versione simbolica di quello macchina. LINGUAGGI DI ALTO

Dettagli

Linguaggi e Traduttori: Introduzione al corso

Linguaggi e Traduttori: Introduzione al corso Linguaggi e Traduttori: Introduzione al corso Armando Tacchella Sistemi e Tecnologie per il Ragionamento Automatico (STAR-Lab) Dipartimento di Informatica Sistemistica e Telematica (DIST) Università di

Dettagli

Principi dell ingegneria del software Relazioni fra

Principi dell ingegneria del software Relazioni fra Sommario Principi dell ingegneria del software Leggere Cap. 3 Ghezzi et al. Principi dell ingegneria del software Relazioni fra Principi Metodi e tecniche Metodologie Strumenti Descrizione dei principi

Dettagli

Linguaggi e Paradigmi di Programmazione

Linguaggi e Paradigmi di Programmazione Linguaggi e Paradigmi di Programmazione Cos è un linguaggio Definizione 1 Un linguaggio è un insieme di parole e di metodi di combinazione delle parole usati e compresi da una comunità di persone. È una

Dettagli

Dispensa 3. 1.1 YACC: generalità

Dispensa 3. 1.1 YACC: generalità Dispensa 3 1.1 YACC: generalità Il tool Yacc (acronimo per Yet Another Compiler Compiler) è uno strumento software che a partire da una specifica grammaticale context free di un linguaggio scritta in un

Dettagli

Fondamenti di Informatica 7. Linguaggi di programmazione

Fondamenti di Informatica 7. Linguaggi di programmazione I linguaggi di alto livello Fondamenti di Informatica 7. Linguaggi di programmazione Introduzione alla programmazione Caratteristiche dei linguaggi di programmazione I linguaggi di programmazione di alto

Dettagli

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

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware COS È UN LINGUAGGIO? Un linguaggio è un insieme di parole e di metodi di combinazione delle

Dettagli

Programmi. Algoritmi scritti in un linguaggio di programmazione

Programmi. Algoritmi scritti in un linguaggio di programmazione Programmi Algoritmi scritti in un linguaggio di programmazione Sistema operativo:programma supervisore che coordina tutte le operazioni del calcolatore Programmi applicativi esistenti Sistemi di videoscrittura

Dettagli

Trattamento degli errori

Trattamento degli errori Corso di Laurea Magistrale in Ingegneria Informatica A.A. 2011-2012 Linguaggi Formali e Compilatori Trattamento degli errori Giacomo PISCITELLI Trattamento degli errori Comunemente gli errori di programmazione

Dettagli

Linguaggi di Programmazione

Linguaggi di Programmazione Linguaggi di Programmazione Linguaggi di Programmazione Sintassi e semantica Compilatori, interpreti e il linker Introduzione al C La funzione main del C 2 Definizione 1 Un linguaggio è un insieme di parole

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Programmazione L attività con cui si predispone l elaboratore ad eseguire un particolare insieme di azioni su particolari dati, allo scopo di risolvere un problema Dati Input

Dettagli

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione

Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione Università Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 4 Linguaggi di programmazione Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

E una notazione per descrivere gli algoritmi.

E una notazione per descrivere gli algoritmi. Linguaggio di Programmazione E una notazione per descrivere gli algoritmi. Programma:: e la rappresentazione di un algoritmo in un particolare linguaggio di programmazione. In generale, ogni linguaggio

Dettagli

LINGUAGGI - COMPILATORI - INTERPRETI

LINGUAGGI - COMPILATORI - INTERPRETI LINGUAGGI - COMPILATORI - INTERPRETI Per poter risolvere un dato problema utilizzando un computer è necessario che questo venga guidato da una serie di istruzioni che specificano, passo dopo passo, la

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann permette l esecuzione di un programma, cioè di una sequenza di istruzioni descritte nel linguaggio interpretabile dal calcolatore

Dettagli

Cinc. Linguaggio ed Implementazione. Claudia Strazzari. Fabio G. Strozzi. Matteo Benevelli. http://www.cs.unibo.it/ fstrozzi/cinc.

Cinc. Linguaggio ed Implementazione. Claudia Strazzari. Fabio G. Strozzi. Matteo Benevelli. http://www.cs.unibo.it/ fstrozzi/cinc. Cinc Linguaggio ed Implementazione Claudia Strazzari Fabio G. Strozzi Matteo Benevelli http://www.cs.unibo.it/ fstrozzi/cinc.html 1 Prefazione Cinc è un linguaggio di programmazione imperativo, fortemente

Dettagli

Corso di INFORMATICA 2 (Matematica e Applicazioni)

Corso di INFORMATICA 2 (Matematica e Applicazioni) Università di Camerino Scuola di Scienze e Tecnologie Sezione di Matematica Corso di INFORMATICA 2 (Matematica e Applicazioni) Anno Accademico 2014/15 3 Anno Primo Semestre Docenti: Paolo Gaspari Roberto

Dettagli

Analizzatore lessicale o scanner

Analizzatore lessicale o scanner Analizzatore lessicale o scanner Lo scanner rappresenta un'interfaccia fra il programma sorgente e l'analizzatore sintattico o parser. Lo scanner, attraverso un esame carattere per carattere dell'ingresso,

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T2 3-Compilatori e interpreti 1 Prerequisiti Principi di programmazione Utilizzo di un compilatore 2 1 Introduzione Una volta progettato un algoritmo codificato in un linguaggio

Dettagli

Introduzione alla Programmazione

Introduzione alla Programmazione Programmazione 1: Introduzione alla Programmazione Michele Nappi, Ph.D Dipartimento di Matematica e Informatica Università degli Studi di Salerno mnappi@unisa.it www.dmi.unisa.it/people/nappi it/people/nappi

Dettagli

Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona

Programmazione per Bioinformatica Il Calcolatore e la Programmazione. Dr Damiano Macedonio Università di Verona Programmazione per Bioinformatica Il Calcolatore e la Programmazione Dr Damiano Macedonio Università di Verona Architettura del calcolatore La prima decomposizione di un calcolatore è relativa a due macrocomponenti:

Dettagli

Analisi e Verifica di Programmi Laboratorio di AVP

Analisi e Verifica di Programmi Laboratorio di AVP Analisi e Verifica di Programmi Laboratorio di AVP Corso di Laurea in Informatica AA 2004-05 Tino Cortesi Analisi e Verifica Cosa Individuare proprietà interessanti dei nostri programmi: Valori prodotti,

Dettagli

PROGRAMMAZIONE II Corso B Introduzione al corso

PROGRAMMAZIONE II Corso B Introduzione al corso AA 2014-2015 PROGRAMMAZIONE II Corso B Introduzione al corso Andrea Corradini o Email: andrea@di.unipi.it o Web: www.di.unipi.it/~andrea 1 INFORMAZIONI GENERALI Pagina web del corso: http://www.di.unipi.it/~andrea/didattica/pr2-b-14/

Dettagli

PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE

PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE PROTOTIPAZIONE DI UN TRADUTTORE DA SORGENTE PLC AD ASSEMBLY DI UNA MACCHINA VIRTUALE Relatore: prof. Michele Moro Laureando: Marco Beggio Corso di laurea in Ingegneria Informatica Anno Accademico 2006-2007

Dettagli

con ANTLR tesi di laurea Anno Accademico 2007-2008 Relatore Ch.mo prof. Porfirio Tramontana Candidato Fabio Canova Matr. 534001505

con ANTLR tesi di laurea Anno Accademico 2007-2008 Relatore Ch.mo prof. Porfirio Tramontana Candidato Fabio Canova Matr. 534001505 tesi di laurea con ANTLR Anno Accademico 2007-2008 Relatore Ch.mo prof. Porfirio Tramontana Candidato Fabio Canova Matr. 534001505 Obiettivo Analisi statica di codice sorgente, realizzato in javascript,

Dettagli

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio

Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Fondamenti di Informatica Laurea in Ingegneria Civile e Ingegneria per l ambiente e il territorio Il software di base Software

Dettagli

Richiami di informatica e programmazione

Richiami di informatica e programmazione Richiami di informatica e programmazione Il calcolatore E una macchina usata per Analizzare Elaborare Collezionare precisamente e velocemente una grande quantità di informazioni. Non è creativo Occorre

Dettagli

Il Software... A.A. 2013-14 Informatica 96

Il Software... A.A. 2013-14 Informatica 96 Il Software... A.A. 2013-14 Informatica 96 Il software L hardware non è direttamente utilizzabile Sono necessari dei programmi per far svolgere delle funzioni all insieme di circuiti Informatica 97 Il

Dettagli

Ambienti di sviluppo integrato

Ambienti di sviluppo integrato Ambienti di sviluppo integrato Un ambiente di sviluppo integrato (IDE - Integrated Development Environment) è un ambiente software che assiste i programmatori nello sviluppo di programmi Esso è normalmente

Dettagli

Introduzione alla Programmazione ad. Oggetti (OOP)

Introduzione alla Programmazione ad. Oggetti (OOP) Introduzione alla Programmazione ad Oggetti (OOP) Prof. Emanuele Papotto Introduzione alla Programmazione ad Oggetti Cosa Faremo: I linguaggi OOP Definizione di : classe, oggetto, attributi, metodi Cenni

Dettagli

Informatica: Evoluzione dei Linguaggi di Specifica e Programmazione. Informatica: Evoluzione dei Linguaggi di Specifica e Programmazione

Informatica: Evoluzione dei Linguaggi di Specifica e Programmazione. Informatica: Evoluzione dei Linguaggi di Specifica e Programmazione Informatica: Evoluzione dei Linguaggi di Specifica e Programmazione Ugo Montanari Dipartimento di Informatica, Università di Pisa 0 Roadmap Perchè i linguaggi? Che cosa sono i linguaggi? Esempio: i numeri

Dettagli

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013 Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario Contenuti del Corso Riferimenti Regole del Corso Materiale Didattico Scheduling Esami Strumenti Software 16/01/2013 2 Contenuti

Dettagli

Quali sono i programmi più eseguiti e meno DENTRO LA SCATOLA. La compilazione: concetti e sviluppi tecnologici. Rubrica a cura di Fabio A.

Quali sono i programmi più eseguiti e meno DENTRO LA SCATOLA. La compilazione: concetti e sviluppi tecnologici. Rubrica a cura di Fabio A. DENTRO LA SCATOLA Rubrica a cura di Fabio A. Schreiber Dopo aver affrontato negli scorsi anni due argomenti fondanti dell Informatica il modo di codificare l informazione digitale e la concreta possibilità

Dettagli

Software. Algoritmo. Algoritmo INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042)

Software. Algoritmo. Algoritmo INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042) INFORMATICA PER LE DISCIPLINE UMANISTICHE 2 (13042) Gli elaboratori utilizzano memoria per Dati da elaborare Istruzioni eseguite dall elaboratore software differenti risoluzione problemi differenti Algoritmo

Dettagli

CALCOLATORI ELETTRONICI

CALCOLATORI ELETTRONICI CALCOLATORI ELETTRONICI Giuseppe Coldani Tel. 0382 985678 e-mail: giuseppe.coldani@unipv.it giuseppe.coldani@tin.it orario delle lezioni: Mercoledì 14.00-18.00 orario di ricevimento: su appuntamento 1

Dettagli

Linguaggi e tecnologie per il Web

Linguaggi e tecnologie per il Web Sapienza Università di Roma Corso di Laurea in Ingegneria Informatica e Automatica Linguaggi e tecnologie per il Web a.a. 2015/2016 Riccardo Rosati Dipartimento di ingegneria informatica, automatica e

Dettagli

Istituto Universitario Navale Facoltà di Ingegneria Corso di Laurea in Ingegneria delle Telecomunicazioni

Istituto Universitario Navale Facoltà di Ingegneria Corso di Laurea in Ingegneria delle Telecomunicazioni Istituto Universitario Navale Facoltà di Ingegneria Corso di Laurea in Ingegneria delle Telecomunicazioni Fondamenti di Informatica Modulo 1 Programma dell'a.a. 2003/2004 Luigi Romano Dipartimento di Informatica

Dettagli

Linguaggi per COMUNICARE. Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni

Linguaggi per COMUNICARE. Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni Linguaggi per COMUNICARE Il linguaggio è un sistema codificato di segni che consente la comunicazione, intesa come scambio di informazioni Sintassi e semantica dei linguaggi Un informazione può : Essere

Dettagli

Programmazione ad Oggetti. Java Parte I

Programmazione ad Oggetti. Java Parte I Programmazione ad Oggetti Java Parte I Overview Caratteristiche generali 1 Caratteristiche generali Un moderno linguaggio orientato agli oggetti Pensato per lo sviluppo di applicazioni che devono essere

Dettagli

La macchina programmata Instruction Set Architecture (1)

La macchina programmata Instruction Set Architecture (1) Corso di Laurea in Informatica Architettura degli elaboratori a.a. 2014-15 La macchina programmata Instruction Set Architecture (1) Schema base di esecuzione Istruzioni macchina Outline Componenti di un

Dettagli

Sistema Operativo Compilatore

Sistema Operativo Compilatore MASTER Information Technology Excellence Road (I.T.E.R.) Sistema Operativo Compilatore Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Il Sistema

Dettagli

Contenuti del corso. Parsing: esempio. Cosa aggiungiamo in questo corso. Parsing. Data una grammatica: E T T + E

Contenuti del corso. Parsing: esempio. Cosa aggiungiamo in questo corso. Parsing. Data una grammatica: E T T + E Continuazione del corso di linguaggi. Nuovi paradigmi di computazione logico: Prolog logic - funzionale: Curry Teoria base dei compilatori parsing grammatiche ad attributi type checking generazione codice

Dettagli

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup Progetto Automi e Linguaggi Parser svliluppato con JLex e cup Sviluppato da Santoro Carlo Maurizio Matricola:0108/528 Sviluppo terminato il: 18/06/06 TRACCIA DEL PROGETTO Si costruisca, utilizzando la

Dettagli

Introduzione alla Progettazione per Componenti

Introduzione alla Progettazione per Componenti Introduzione alla Progettazione per Componenti Alessandro Martinelli 6 ottobre 2014 Obiettivo del Corso Il Progetto Software Reale Il Componente Software La Programmazione Ad Oggetti Fondamenti di Informatica

Dettagli

INFORMATICA 1 L. Mezzalira

INFORMATICA 1 L. Mezzalira INFORMATICA 1 L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software del modello

Dettagli

LICEO DELLE SCIENZE APPLICATE

LICEO DELLE SCIENZE APPLICATE LICEO DELLE SCIENZE APPLICATE San Benedetto PIANO DI LAVORO Docente Stefano Maggi Disciplina INFORMATICA Libro di testo INFORMATICA 2 di Gallo Sirsi ed. Minerva Scuola Classe/Sezione Terza Anno scolastico

Dettagli

Logic Lab. un progetto italiano. www.axelsw.it. soluzioni SOFTWARE PER L'AUTOMAZIONE INDUSTRIALE

Logic Lab. un progetto italiano. www.axelsw.it. soluzioni SOFTWARE PER L'AUTOMAZIONE INDUSTRIALE Logic Lab soluzioni SOFTWARE PER L'AUTOMAZIONE INDUSTRIALE un progetto italiano www.axelsw.it Logic Lab La garanzia e l economia degli standard più diffusi sul mercato LogicLab è un ambiente di sviluppo

Dettagli

FONDAMENTI di INFORMATICA L. Mezzalira

FONDAMENTI di INFORMATICA L. Mezzalira FONDAMENTI di INFORMATICA L. Mezzalira Possibili domande 1 --- Caratteristiche delle macchine tipiche dell informatica Componenti hardware del modello funzionale di sistema informatico Componenti software

Dettagli

Il calcolatore oggi : UN SISTEMA DI ELABORAZIONE

Il calcolatore oggi : UN SISTEMA DI ELABORAZIONE Il calcolatore oggi : UN SISTEMA DI ELABORAZIONE hardware Firmware, software memorizzato su chip di silicio Sistema Operativo venduto con l, comprende vari programmi di gestione del sistema Applicativo,

Dettagli

Linguaggi formali e compilazione

Linguaggi formali e compilazione Linguaggi formali e compilazione Corso di Laurea in Informatica A.A. 2015/2016 Linguaggi formali e compilazione Elementi generali Un parser generico di tipo procede operando una sequenza di riduzioni a

Dettagli

Esercitazioni di Programmazione I canale A-D. Alessio Malizia malizia@di.uniroma1.it

Esercitazioni di Programmazione I canale A-D. Alessio Malizia malizia@di.uniroma1.it Esercitazioni di Programmazione I canale A-D Alessio Malizia malizia@di.uniroma1.it I docenti Docente: T. Calamoneri Esercitatore: A. Malizia calamo@di.uniroma1.it Ricevimento: lun. 14.00-15.30 (mandando

Dettagli

Introduzione. Laboratorio di Calcolo Corso di Laurea in Fisica. Università degli Studi di Roma La Sapienza

Introduzione. Laboratorio di Calcolo Corso di Laurea in Fisica. Università degli Studi di Roma La Sapienza Introduzione Laboratorio di Calcolo Corso di Laurea in Fisica Università degli Studi di Roma La Sapienza WARNING Questo canale è solo per studenti di Fisica il cui cognome inizia con le lettere A-D Laboratorio

Dettagli

2008/2009. Pierpaolo Corvese Costante Luca [COMPILATORI]

2008/2009. Pierpaolo Corvese Costante Luca [COMPILATORI] 2008/2009 Pierpaolo Corvese Costante Luca [COMPILATORI] Sommario LEZIONE 1 - INTRODUZIONE... 4 PROCESSO DI TRADUZIONE... 4 LEZIONE 2 IL COMPILATORE... 7 LEZIONE 3 ANALISI LESSICALE (1 PARTE)... 12 LEZIONE

Dettagli

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO

EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO EVOLUZIONE DEI LINGUAGGI DI ALTO LIVELLO Linguaggi di programmazione classificati in base alle loro caratteristiche fondamentali. Linguaggio macchina, binario e fortemente legato all architettura. Linguaggi

Dettagli

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi

Il software impiegato su un computer si distingue in: Sistema Operativo Compilatori per produrre programmi Il Software Il software impiegato su un computer si distingue in: Software di sistema Sistema Operativo Compilatori per produrre programmi Software applicativo Elaborazione testi Fogli elettronici Basi

Dettagli

Metodologie di programmazione in Fortran 90

Metodologie di programmazione in Fortran 90 Metodologie di programmazione in Fortran 90 Ing. Luca De Santis DIS - Dipartimento di informatica e sistemistica Anno accademico 2007/2008 Fortran 90: Metodologie di programmazione DIS - Dipartimento di

Dettagli

FONDAMENTI DI INFORMATICA

FONDAMENTI DI INFORMATICA Fondamenti di Informatica FONDAMENTI DI INFORMATICA Fondamenti di Informatica -Obiettivi L obiettivo del corso e' lo studio delle metodologie di base della programmazione dei calcolatori e della loro applicazione

Dettagli

Introduzione ai linguaggi di programmazione

Introduzione ai linguaggi di programmazione Università degli Studi di Milano Laurea Specialistica in Genomica Funzionale e Bioinformatica Corso di Linguaggi di Programmazione per la Bioinformatica Introduzione ai linguaggi di programmazione Giorgio

Dettagli

Stimare il WCET Metodo classico e applicazione di un algoritmo genetico

Stimare il WCET Metodo classico e applicazione di un algoritmo genetico Stimare il WCET Metodo classico e applicazione di un algoritmo genetico Sommario Introduzione Definizione di WCET Importanza del WCET Panoramica dei classici metodi per calcolare il WCET [1] Utilizzo di

Dettagli

INFORMATICA E COMPUTER : INTRODUZIONE

INFORMATICA E COMPUTER : INTRODUZIONE INFORMATICA E COMPUTER : INTRODUZIONE! Informatica: dal francese, informatique informat(ion) (automat)ique [termine coniato dall'ingegnere francese Philippe Dreyfus nel 1962] è la scienza che studia i

Dettagli

CPU pipeline 4: le CPU moderne

CPU pipeline 4: le CPU moderne Architettura degli Elaboratori e delle Reti Lezione 25 CPU pipeline 4: le CPU moderne Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 25 1/16

Dettagli

Programmi e programmazione

Programmi e programmazione Programmi e programmazione Lezione n. 4 Dall algoritmo al programma L algoritmo è l idea risolutiva con caratteristiche di rigore (non brevettabile, non tutelabile dal diritto d autore) Si rappresenta

Dettagli

Algoritmi, Linguaggi e Programmi

Algoritmi, Linguaggi e Programmi Algoritmi, Linguaggi e Programmi Algoritmi Definizione di algoritmo e caratteristiche di un algoritmo Nel linguaggio comune, da qualche decina d anni, è entrata a far parte la parola programma ; il significato

Dettagli

Corso di Alfabetizzazione Informatica

Corso di Alfabetizzazione Informatica Corso di Alfabetizzazione Informatica Lezione 6 a.a. 2010/2011 Francesco Fontanella La Complessità del Hardware Il modello di Von Neumann è uno schema di principio. Attualmente in commercio esistono: diversi

Dettagli

CPU pipeline 4: le CPU moderne

CPU pipeline 4: le CPU moderne Architettura degli Elaboratori e delle Reti Lezione 25 CPU pipeline 4: le CPU moderne Proff. A. Borghese, F. Pedersini Dipartimento di Scienze dell Informazione Università degli Studi di Milano L 25 1/17

Dettagli

Laurea Triennale in Informatica (F004) a.a. 2011/12. Insegnamenti complementari

Laurea Triennale in Informatica (F004) a.a. 2011/12. Insegnamenti complementari Laurea Triennale in Informatica (F004) a.a. 2011/12 Insegnamenti complementari Attivazioni e programmi Gli insegnamenti complementari del corso di laurea sono di norma erogati ad anni alterni. L effettiva

Dettagli

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Fondamenti di Informatica

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Fondamenti di Informatica Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Fondamenti di Informatica Linguaggi di Programmazione Michele Tomaiuolo Linguaggi macchina I

Dettagli

Elementi di Informatica

Elementi di Informatica Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica Algoritmi, e Programmi D. Gubiani 29 marzo 2010 D. Gubiani Algoritmi, e Programmi

Dettagli

Linguaggi 2 e laboratorio

Linguaggi 2 e laboratorio Linguaggi 2 e laboratorio Docente: Leonardo Badia Contatti: leonardo.badia@gmail.com Pagina web del corso: www.unife.it/scienze/informatica/ insegnamenti/linguaggi-2-laboratorio Argomenti del corso: Java

Dettagli

Realizzazione di un applicazione per la visualizzazione grafica didattica e di debug per algoritmi in Java

Realizzazione di un applicazione per la visualizzazione grafica didattica e di debug per algoritmi in Java La Sapienza Università di Roma Facoltà di Ingegneria Corso di Laurea in Ingegneria Informatica Anno Accedemico 2008-2009 Relazione finale su progetto interno Realizzazione di un applicazione per la visualizzazione

Dettagli

SOFTWARE. SOFTWARE Sistema operativo. SOFTWARE Sistema operativo SOFTWARE. SOFTWARE Sistema operativo. SOFTWARE Sistema operativo

SOFTWARE. SOFTWARE Sistema operativo. SOFTWARE Sistema operativo SOFTWARE. SOFTWARE Sistema operativo. SOFTWARE Sistema operativo Franco Sartore ottobre 2006, febbraio 2010 v_03 Software di base: programmi di gestione dell Elaboratore: Programmi di Utilità Applicazioni: Programmi che svolgono attività specifiche di alto livello (Word

Dettagli

Processing. Argomenti trattati nella lezione: CONCETTI INTRODUTTIVI NATURAL LANGUAGE ANALYSIS ARCHITETTURA SISTEMA NLA TAGGER PARSER A PPLICAZIONE

Processing. Argomenti trattati nella lezione: CONCETTI INTRODUTTIVI NATURAL LANGUAGE ANALYSIS ARCHITETTURA SISTEMA NLA TAGGER PARSER A PPLICAZIONE Natural Language Processing 1 Argomenti trattati nella lezione: CONCETTI INTRODUTTIVI NATURAL LANGUAGE ANALYSIS ARCHITETTURA SISTEMA NLA STEMMER TAGGER PARSER A PPLICAZIONE Concetti Introduttivi Trattamento

Dettagli

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1

Fondamenti di Informatica PROBLEMI E ALGORITMI. Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica PROBLEMI E ALGORITMI Fondamenti di Informatica - D. Talia - UNICAL 1 Specifica di un algoritmo Primo approccio, scrittura diretta del programma: la soluzione coincide con la codifica

Dettagli

lcosmo@dsi.unive.it Computer Vision, in particolare Nonrigid Matching.

lcosmo@dsi.unive.it Computer Vision, in particolare Nonrigid Matching. F ORMATO EUROPEO PER IL CURRICULUM VITAE INFORMAZIONI PERSONALI Nome COSMO LUCA Indirizzo 6, VIA ACHILLE GRANDI, 31038 PAESE, TREVISO, ITALIA Telefono +39 349 1580861 E-mail lcosmo@dsi.unive.it Nazionalità

Dettagli

Architettura di un computer

Architettura di un computer Architettura di un computer Modulo di Informatica Dott.sa Sara Zuppiroli A.A. 2012-2013 Modulo di Informatica () Architettura A.A. 2012-2013 1 / 36 La tecnologia Cerchiamo di capire alcuni concetti su

Dettagli

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

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso Obiettivi formativi Introdurre i principi del funzionamento di un elaboratore e della programmazione. Presentare gli approcci elementari alla soluzione di problemi (algoritmi)e al progetto di strutture

Dettagli

1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata

1 introdurre le monete per l importo necessario. 2 selezionare la quantità di zucchero. 3 selezionare la bevanda desiderata Esempi di Problema: Prendere un Caffè al Distributore Università degli Studi di Udine Facoltà di Ingegneria CORSO DI LAUREA IN SCIENZE dell ARCHITETTURA Elementi di Informatica, e Programmi D. Gubiani

Dettagli

La Macchina Virtuale

La Macchina Virtuale Università degli Studi di Palermo Dipartimento di Ingegneria Informatica Elaborazione di Immagini e Suoni / Riconoscimento e Visioni Artificiali 12 c.f.u. Anno Accademico 2008/2009 Docente: ing. Salvatore

Dettagli

Corso di Informatica. Sistemi Software. Ing Pasquale Rota

Corso di Informatica. Sistemi Software. Ing Pasquale Rota Corso di Informatica Sistemi Software Ing Pasquale Rota Sistemi Software Macchina virtuale Tipi di software Software di sistema o Sistema operativo o Assemblatori e linguaggio assemblativo o Linguaggi

Dettagli

Informatica Applicata

Informatica Applicata Ing. Irina Trubitsyna Concetti Introduttivi Programma del corso Obiettivi: Il corso di illustra i principi fondamentali della programmazione con riferimento al linguaggio C. In particolare privilegia gli

Dettagli

Analisi dei requisiti e casi d uso

Analisi dei requisiti e casi d uso Analisi dei requisiti e casi d uso Indice 1 Introduzione 2 1.1 Terminologia........................... 2 2 Modello del sistema 4 2.1 Requisiti hardware........................ 4 2.2 Requisiti software.........................

Dettagli

Compiti del S.O. Lezione 2: Gestione dei processi. La struttura e funzioni dei Sistemi Operativi

Compiti del S.O. Lezione 2: Gestione dei processi. La struttura e funzioni dei Sistemi Operativi Lezione 2: Compiti del S.O. La struttura e funzioni dei Sistemi Operativi Un S.O. ha il compito di rendere semplice (all utente), l utilizzo del calcolatore componenti di un sistema operativo servizi dei

Dettagli

Sistemi elettronici per la sicurezza dei veicoli: presente e futuro. Il ruolo della norma ISO 26262 per la Sicurezza Funzionale

Sistemi elettronici per la sicurezza dei veicoli: presente e futuro. Il ruolo della norma ISO 26262 per la Sicurezza Funzionale La Sicurezza Funzionale del Software Prof. Riccardo Sisto Ordinario di Sistemi di Elaborazione delle Informazioni Dipartimento di Automatica e Informatica Sicurezza Funzionale del Vari Aspetti Sicurezza

Dettagli

Elementi di Programmazione: con Java dal Computer, al Web, al Cellulare

Elementi di Programmazione: con Java dal Computer, al Web, al Cellulare Minicorso tematico: Elementi di Programmazione: con Java dal Computer, al Web, al Cellulare Dott. Francesco Ricca Dipartimento Di Matematica Università della Calabria ricca@mat.unical.it Presentiamoci

Dettagli

Il laboratorio di Fisica Computazionale: strumentazione

Il laboratorio di Fisica Computazionale: strumentazione http://www.laureescientifiche.units.it/ Il laboratorio di Fisica Computazionale: strumentazione G. Pastore, M. Peressi Dip. Fisica - Università di Trieste (aggiornamento e formazione insegnanti; corso

Dettagli

Corso di Informatica Applicata. Lezione 3. Università degli studi di Cassino

Corso di Informatica Applicata. Lezione 3. Università degli studi di Cassino Università degli studi di Cassino Corso di Laurea in Ingegneria della Produzione Industriale Corso di Informatica Applicata Lezione 3 Ing. Saverio De Vito e-mail: saverio.devito@portici.enea.it Tel.: +39

Dettagli

POLITECNICO DI BARI FACOLTA DI INGEGNERIA CORSO DI LAUREA MAGISTRALE IN INGEGNERIA INFORMATICA PHP2C

POLITECNICO DI BARI FACOLTA DI INGEGNERIA CORSO DI LAUREA MAGISTRALE IN INGEGNERIA INFORMATICA PHP2C POLITECNICO DI BARI FACOLTA DI INGEGNERIA CORSO DI LAUREA MAGISTRALE IN INGEGNERIA INFORMATICA PROGETTO DI LINGUAGGI FORMALI E COMPILATORI Docente Prof. Giacomo Piscitelli Bavaro Gianvito Capurso Domenico

Dettagli

Linguaggi Formali e Compilatori. Premessa

Linguaggi Formali e Compilatori. Premessa Corso di Laurea Magistrale in Ingegneria Informatica A.A. 2013-2014 Linguaggi Formali e Compilatori Premessa Le pagine che seguono hanno lo scopo di presentare una sintesi dei principali elementi utili

Dettagli

Ingegneria del Software UML - Unified Modeling Language

Ingegneria del Software UML - Unified Modeling Language Ingegneria del Software UML - Unified Modeling Language Obiettivi. Presentare un approccio visuale alla progettazione. Illustrare i vantaggi dell utilizzo di diagrammi nella fase di progettazione. Rispondere

Dettagli

Corso di Linguaggi di Programmazione

Corso di Linguaggi di Programmazione Corso di Linguaggi di Programmazione Lezione 3 Alberto Ceselli alberto.ceselli@unimi.it Università degli Studi di Milano 5 Marzo 2013 Storicamemente Introduzione al paradigma funzionale 1977: ACM Turing

Dettagli

Object Oriented Programming

Object Oriented Programming OOP Object Oriented Programming Programmazione orientata agli oggetti La programmazione orientata agli oggetti (Object Oriented Programming) è un paradigma di programmazione Permette di raggruppare in

Dettagli

Codifica: dal diagramma a blocchi al linguaggio C++

Codifica: dal diagramma a blocchi al linguaggio C++ Codifica: dal diagramma a blocchi al linguaggio C++ E necessario chiarire inizialmente alcuni concetti. La compilazione Il dispositivo del computer addetto all esecuzione dei programmi è la CPU La CPU

Dettagli

Programmazione in Java e gestione della grafica (I modulo) Lezione 1: Presentazione corso

Programmazione in Java e gestione della grafica (I modulo) Lezione 1: Presentazione corso Programmazione in Java e gestione della grafica (I modulo) Lezione 1: Presentazione corso Informazioni generali Docente: Prof.ssa Dora Giammarresi: giammarr@mat.uniroma2.it Tutor:??? Informazioni generali

Dettagli

Elementi del calcolatore: CPU

Elementi del calcolatore: CPU Elementi del calcolatore: CPU Elementi del calcolatore: Memoria Elementi del calcolatore: Memoria Elementi del calcolatore: Hard Disk Antefatto Sistema Operativo Come il computer appare Il calcolatore

Dettagli

Strumenti per la programmazione

Strumenti per la programmazione Editing del programma Il programma deve essere memorizzato in uno o più files di testo editing codice sorgente 25 Traduzione del programma Compilazione: è la traduzione effettuata da un compilatore Un

Dettagli

FONDAMENTI di INFORMATICA Prof. Lorenzo Mezzalira Appunti del corso

FONDAMENTI di INFORMATICA Prof. Lorenzo Mezzalira Appunti del corso FONDAMENTI di INFORMATICA Prof. Lorenzo Mezzalira Appunti del corso 4 Introduzione alla programmazione in linguaggio C Indice 1. Sviluppo del software 2. Sistema operativo 3. Linguaggi di basso livello

Dettagli