Corso di Linguaggi di Programmazione

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Corso di Linguaggi di Programmazione"

Transcript

1 Corso di Linguaggi di Programmazione Lezione 13 Alberto Ceselli (thanks C. Braghin) Dipartimento di Tecnologie dell Informazione Università degli Studi di Milano 21 Aprile 2009

2 Motivation Importante Alcune proprietà ( siamo ancora nell ambito della semantica di un linguaggio) degli elementi di un programma sono determinate dall implementazione del linguaggio. Nelle prossime lezioni, analizziamo diversi aspetti dei linguaggi di programmazione, cercando di capire cosa si può valutare in modo automatico, come e perchè. In particolare, parleremo di costrutti o feature safe se il loro corretto utilizzo (semantica) può essere determinato automaticamente dal compilatore costrutti o feature unsafe se il loro corretto utilizzo è a carico del programmatore

3 Linguaggi e compilatori Struttura di un compilatore Struttura di un interprete Sistemi ibridi Per capire cosa si può valutare automaticamente utilizzando un particolare linguaggio e come dobbiamo avere una sensibilità a basso livello del funzionamento del relativo compilatore / interprete...

4 Struttura di un compilatore Struttura di un compilatore Struttura di un interprete Sistemi ibridi Vantaggi: massima efficienza! Es. C, C++

5 Struttura di un interprete Struttura di un compilatore Struttura di un interprete Sistemi ibridi Vantaggi: massima flessibilità! Es. Scheme, Prolog

6 Sistema ibrido Compilatori ed interpreti Struttura di un compilatore Struttura di un interprete Sistemi ibridi

7 Generazione di codice intermedio Struttura di un compilatore Struttura di un interprete Sistemi ibridi Es. Java un compilatore genera solo codice intermedio una macchina virtuale interpreta ed esegue il codice intermedio

8 Compilatori just-in-time Struttura di un compilatore Struttura di un interprete Sistemi ibridi Es. C# una macchina virtuale riceve il codice quando una porzione di codice deve essere eseguita, la macchina virtuale ne richiede la compilazione viene eseguito il codice compilato il controllo torna alla macchina virtuale N.B. ogni porzione di codice è compilata una sola volta (indipendentemente dal numero di attivazioni)

9 Linguaggi interpretati e compilati Struttura di un compilatore Struttura di un interprete Sistemi ibridi N.B. in linea di principio, ogni linguaggio può essere sia compilato che interpretato nulla vieta di scrivere interpreti per C. nulla vieta di compilare ed ottimizzare codice SCHEME, ottenendo degli eseguibili.... oppure operare scelte intermedie

10 Cosa servono i tipi durante l analisi semantica?

11 Obiettivi dell analisi semantica Controllo di tipo Controllare che gli identificatori siano stati dichiarati prima di essere usati come supporto a questa fase viene creata una tabella dei simboli (symbol table) che contiene informazioni su tutti gli elementi simbolici incontrati quali nome, scope, tipo (se presente) etc. il risultato di questa fase è l albero di sintassi astratta (AST).

12 Descrittore di Tipo Compilatori ed interpreti Un descrittore di tipo è una struttura dati che contiene tutte le informazioni necessarie a definire il tipo: se il tipo della variabile è determinato all inizio dell esecuzione del programma (statico), serve al compilatore per controlli di tipo. se il tipo della variabile è determinato o può cambiare in fase di esecuzione (dinamico), una sua parte può servire per i controlli durante l esecuzione (es. controllo sugli indici di un vettore dinamico).

13 Controllo sui Tipi Compilatori ed interpreti Determina e controlla la compatibilità dei tipi degli oggetti: assegnazioni, dichiarazioni, uso parametri, conversioni,... Il controllo avviene rispetto alle regole di tipo definite dal particolare linguaggio Tipo di controllo: statico: avviene in fase di compilazione - segue l albero sintattico (bottom-up) - determina e trasmette le informazioni sui tipi degli oggetti coinvolti dinamico: modulo di supporto a run-time - pesante dal punto di vista prestazionale - tipico dei linguaggi interpretati

14 Tipo di dato Compilatori ed interpreti Definition In un linguaggio di programmazione, un tipo di dato (o semplicemente tipo) è un nome che indica l insieme di valori omogenei che una variabile, o il risultato di un espressione, possono assumere, e le operazioni che manipolano tali valori. L insieme dei valori ha una cardinalità finita. Un tipo è caratterizzato da un nome e dalla sintassi della dichiarazione di tipo. Es.: in C, la definizione int x; indica che x può assumere come valori solo numeri interi (appartenenti ad un certo intervallo) e che su tali valori sono ammesse solo certe operazioni.

15 Classificazioni del processo di tipizzazione (1) Statico vs dinamico Fa riferimento al momento in cui alla variabile è associato il suo tipo (binding tipo-variabile). - la tipizzazione è statica quando a una variabile viene associato rigidamente in fase di compilazione un tipo che rimane lo stesso durante tutta l esecuzione. - la tipizzazione è dinamica quando una variabile può cambiare tipo durante l esecuzione a seconda del tipo dell espressione che le viene assegnata. Esplicito vs implicito Fa riferimento al modo in cui le annotazioni o dichiarazioni di tipo vengono generate, se specificate esplicitamente dal programmatore, o dedotte automaticamente dal compilatore.

16 Inferenza di Tipo Compilatori ed interpreti Il tipo di un espressione è dedotto senza richiedere al programmatore di specificare il tipo delle variabili. Quando non si può determinare subito il tipo, si utilizza una variabile di tipo. Es.: data la seguente istruzione ML fun(n) {return n+1;} si può dedurre che f è di tipo int -> int

17 Conversione di Tipo Compilatori ed interpreti Conversione implicita (coercion) operata in fase di compilazione del programma indebolisce il meccanismo di verifica dei tipi in quasi tutti i linguaggi capita se si esegue un operazione tra tipi numerici diversi. Es v e q reali, p intero: v = p + q Conversione esplicita (cast) indicata mediante costrutti linguistici nel sorgente del programma. Es v e q interi, p reale: v = (int) p + q

18 Svantaggi della tipizzazione dinamica Permette la cattura di errori di tipo solo durante l esecuzione del programma. Es.: (in pseudo-codice, L# indica la linea) L1 var x = 5; L2 var y = "test"; L3 var z = x + y; In un linguaggio con tipizzazione dinamica, solo in fase di esecuzione viene segnalato un errore quando si cerca di eseguire l istruzione alla linea L3. L implementazione è più costosa: maggiore tempo di esecuzione perché il controllo dei tipi deve venire fatto durante l esecuzione del programma maggior utilizzo della memoria perché si deve tenere memoria del tipo delle variabili durante l esecuzione del programma.

19 Classificazioni del processo di tipizzazione (2) Dal punto di vista qualitativo: Forte vs Debole Fa riferimento alle regole imposte dal linguaggio sull utilizzo dei tipi: possono essere rigide (forti) ed impedire qualsiasi uso dei dati incoerente con il tipo specificato in fase di dichiarazione (ogni errore di tipo è rilevato dal compilatore) in caso contrario (qualche errore di tipo può sfuggire al compilatore) la tipizzazione è debole. Safe vs Unsafe Un linguaggio type safe garantisce che tutti gli errori di tipo siano catturati, ma non necessariamente durante la compilazione (un programma potrebbe fallire durante l esecuzione a causa di violazioni di tipo). Linguaggi che permettono aritmetica dei puntatori non possono essere type safe. Un linguaggio con tipizzazione debole non è necessariamente unsafe (es. il controllo ritardato in fase di esecuzione Perl).

20 Linguaggi fortemente tipati In genere, un linguaggio di programmazione si considera fortemente tipato (strongly typed) se: Utilizza tipizzazione statica i tipi delle variabili sono fissati in fase di compilazione e non sono modificabili. non ci sono tipi di dato varianti (es. union in C) Impedisce qualsiasi uso dei dati incoerente con il tipo specificato in fase di dichiarazione (i.e., impossibilità di conversione di tipi) a volte la conversione esplicita (casting) è permessa, mentre quella implicita (coercion) no. Impedisce di evadere il sistema di tipi. Questo permette di avere una garanzia piuttosto forte sul comportamento del programma in fase di esecuzione.

21 Forte e Debole, Safe e Unsafe Linguaggio Statico / Dinamico Strong / Weak Safety Ada statico strong safe C statico weak unsafe C++ statico Java statico Pascal statico Lisp dinamico strong ML dinamico JavaScript dinamico Perl dinamico PHP dinamico Python dinamico Ruby dinamico Esercizio: riempire la tabella.

22 Tipizzazione Esempi nei vari linguaggi (1) Compilatori ed interpreti Linguaggi a tipizzazione statica: Ada, C, C++, Java, Fortran: tipizzazione esplicita Perl, JavaScript, ML: tipizzazione implicita in Perl, ogni nome che inizia con $ può contenere una stringa o un valore numerico in ML, la definizione fun square(x): real = x * x; è corretta. di norma vengono compilati (i tipi sono importanti anche in fase di ottimizzazione del codice).

23 Tipizzazione Esempi nei vari linguaggi (1) Compilatori ed interpreti Linguaggi a tipizzazione statica: Ada, C, C++, Java, Fortran: tipizzazione esplicita Perl, JavaScript, ML: tipizzazione implicita in Perl, ogni nome che inizia con $ può contenere una stringa o un valore numerico in ML, la definizione fun square(x): real = x * x; è corretta. di norma vengono compilati (i tipi sono importanti anche in fase di ottimizzazione del codice). Linguaggi a tipizzazione dinamica: Lisp, Scheme, Python, Perl, Ruby, JavaScript, PHP la maggior parte dei linguaggi di scripting o di sviluppo rapido sono di solito a tipizzazione dinamica di norma vengono interpretati.

24 Tipizzazione Esempi nei vari linguaggi (2) Compilatori ed interpreti Linguaggio debolmente tipato: Perl print 2 + 4; in Perl stampa a video 6 poiché viene fatta una conversione implicita

25 Tipizzazione Esempi nei vari linguaggi (2) Compilatori ed interpreti Linguaggio debolmente tipato: Perl print 2 + 4; in Perl stampa a video 6 poiché viene fatta una conversione implicita Linguaggio debolmente tipato e unsafe: C vs C++ char* buf = malloc(20); viene compilata in C senza problemi, ma genera un errore in C++ perché malloc ritorna un valore di tipo void* e il C++ richiede una conversione esplicita (cast).

26 Tipizzazione Esempi nei vari linguaggi (2) Compilatori ed interpreti Linguaggio debolmente tipato: Perl print 2 + 4; in Perl stampa a video 6 poiché viene fatta una conversione implicita Linguaggio debolmente tipato e unsafe: C vs C++ char* buf = malloc(20); viene compilata in C senza problemi, ma genera un errore in C++ perché malloc ritorna un valore di tipo void* e il C++ richiede una conversione esplicita (cast). Linguaggio fortemente tipato ma unsafe: C++ Quando viene eseguito il seguente programma (che passa senza problemi la fase di compilazione), va in crash. int* p = 0; *p = 5;

27 Tipizzazione Esempi nei vari linguaggi (3) Compilatori ed interpreti Classifica di linguaggi fortemente tipati: OCaml, Haskell: non permettono alcuna conversione di tipo implicita (coercion) Ada: non permette alcuna conversione di tipo implicita, ma ha la possibilità di sospendere temporaneamente il controllo di tipo. Java, C# permettono alcuni tipi di casting, e coercion nel caso di operatori aritmetici Es.: l istruzione x = 3 1.5; è valida, in quanto l espressione intera viene convertita in floating-point.

28 Sistema di tipo di un linguaggio di programmazione Complesso delle informazioni e delle regole che governano i tipi di un linguaggio: Insieme dei tipi predefiniti Costrutti per definire nuovi tipi Meccanismi per il controllo dei tipi: Regole di equivalenza: due tipi formalmente diversi possono essere equivalenti a livello semantico; Regole di compatibilità: un valore di un tipo diverso da quello atteso può comunque essere utilizzato; Regole di inferenza attribuzione di un tipo ad un espressione complessa. Lista (possibilmente vuota) di vincoli da controllare staticamente o dinamicamente.

29 Equivalenza di Tipi Compilatori ed interpreti Stabilire quando due tipi, formalmente diversi, sono intercambiabili, ossia non distinguibili nel loro uso. Equivalenza per nome Due tipi sono equivalenti se e solo se hanno lo stesso nome (sono lo stesso tipo) Es.: T1 = int e T2 = int sono diversi Facile da implementare ma molto restrittiva Indebolita in alcuni linguaggi: la ridenominazione (T3 e T4) genera alias e non nuovi tipi Equivalenza strutturale Due tipi sono equivalenti se e solo se hanno la stessa struttura (dichiarazioni equivalenti) Più flessibile, ma più complicata da implementare (specialmente per tipi definiti ricorsivamente).

30 Equivalenza strutturale Problemi: nel caso di strutture, si confronta solo il tipo dei campi o anche il loro nome? E l ordine in cui compaiono? se due tipi derivano da uno stesso tipo base, ma identificano entità diverse (es. typedef celsius float; typedef fahrenheit float)?

31 Equivalenza di Tipi Esempi Compilatori ed interpreti C, C++ utilizzano la versione indebolita dell equivalenza per nome nel caso di un unico file, mentre l equivalenza strutturale nel caso di file compilati separatemente - struct e union creano sempre un nuovo tipo che non è equivalente con nessun altro tipo. Es.: (in pseudo-codice) type T1 = int; type T2 = char; type T3 = struct { T1 a; T2 b; } type T4 = struct { T1 a; T2 b; }

32 Compatibilità di Tipi Compilatori ed interpreti Definition Il tipo T è compatibile con il tipo S sse un valore del tipo T è ammesso in qualsiasi contesto in cui sarebbe richiesto un valore di tipo S. Ogni linguaggio definisce le regole di compatibilità tra oggetti di tipo differente, che vengono adottate nella disciplina dell assegnazione, delle operazioni aritmetiche e del passaggio dei parametri. Compatibilità più debole dell equivalenza: Due tipi equivalenti sono sempre compatibili, ma non viceversa. Relazione riflessiva, transitiva, ma non simmetrica.

33 Classificazione di Tipi A seconda della loro struttura: - semplici o primitivi: tipi che non possono essere decomposti; - strutturati: tipi ottenuti dai tipi semplici mediante operatori forniti dal linguaggio. A secondo di chi li definisce: - predefiniti: insieme di tipi predefiniti dal linguaggio; - definiti dall utente: definiti mediante l utilizzo di operatori forniti dal linguaggio.

34 Classificazione di Tipi A seconda della loro struttura: - semplici o primitivi: tipi che non possono essere decomposti; - strutturati: tipi ottenuti dai tipi semplici mediante operatori forniti dal linguaggio. A secondo di chi li definisce: - predefiniti: insieme di tipi predefiniti dal linguaggio; - definiti dall utente: definiti mediante l utilizzo di operatori forniti dal linguaggio. Nota bene Le due classificazioni non sono perfettamente sovrapponibili: non tutti i tipi predefiniti dal linguaggio sono primitivi. Es.: le strinche in C sono tipi derivati ma predefiniti dal linguaggio.

35 Tipi e Linguaggi Compilatori ed interpreti Ogni linguaggio definisce accuratamente i tipi che permette di gestire, associando agli stessi: un insieme di operazioni ammesse l insieme di operazioni ammesse dipende dal linguaggio (vedi operazioni su stringhe) un ordinamento totale (facoltativo) scalare una codifica, spesso dipendente dalla macchina decisa dall implementatore e a seconda della macchina insieme di regole che permette di tradurre ogni valore in una stringa di bit (complemento a 1, complemento a 2, floating,...) viene ignorata dal programmatore

36 Esempio: array Compilatori ed interpreti Elementi sintattici: Forma di accesso ai dati: parentesi (Fortran, COBOL unici elementi stampabili su schede perforate), caratteri [ ] indice di partenza: 0, 1 tipo richiesto per gli indici (Ada permette anche booleani, caratteri o enum) controllo del corretto uso degli indici (Java, ML, C#)

37 Esempio: array Compilatori ed interpreti Tipo di allocazione: static array: allocazione di memoria statica e dimensione fissata fixed-stack dynamic array: dimensione fissata, allocazione nello stack quando viene incontrata la dichiarazione stack-dynamic array: dimensione non fissata, allocazione nello stack quando viene incontrata la dichiarazione fixed-heap dynamic array: dimensione fissata, allocazione nello heap quando viene incontrata la dichiarazione stack-dynamic array: dimensione non fissata, allocazione nello heap quando viene incontrata la dichiarazione

38 Esempio: array Compilatori ed interpreti Possibilità di accedere a slices: In Fortran 95: Integer Cube(1:3,1:3,1:4), Cube(1:3,1:3,2) è una porzione dell array Cube comune in linguaggi di programmazione per calcolo scientifico (Matlab)

39 Tipi nei vari linguaggi (1) Tipo Booleano valori: prevede 2 soli valori, vero o falso, utilizzati soprattutto nelle espressioni condizionali operazioni: congiunzione (and), disgiunzione (or), negazione (not), uguaglianza invece che memorizzarlo in un singolo bit, per motivi di efficienza si usa un byte (unità minima di memoria) in altri linguaggio, 0 indica falso; valori maggiori di 0 vero

40 Tipi nei vari linguaggi (1) Tipo Booleano valori: prevede 2 soli valori, vero o falso, utilizzati soprattutto nelle espressioni condizionali operazioni: congiunzione (and), disgiunzione (or), negazione (not), uguaglianza invece che memorizzarlo in un singolo bit, per motivi di efficienza si usa un byte (unità minima di memoria) in altri linguaggio, 0 indica falso; valori maggiori di 0 vero Tipi Numerici (Interi o Reali) valori: a differenza degli insiemi matematici che rappresentano, includono un massimo e un minimo numero rappresentabile dovendo essere contenuti in una parola di memoria operazioni: operazioni aritmetiche e confronti (somma, differenza, prodotto, divisione, resto) alcuni degli operatori possono venire usati sia da tipi interi che reali (operatori overloaded)

41 Tipi nei vari linguaggi (2) Record (o Strutture) valori: usato per mantenere informazioni eterogenee correlate - ogni campo è caratterizzato dal suo nome e dal suo tipo (anche diverso da quello degli altri campi operazioni: ciascun campo può essere acceduto in modo indipendente mediante l operatore di selezione (.)

42 Tipi nei vari linguaggi (2) Record (o Strutture) valori: usato per mantenere informazioni eterogenee correlate - ogni campo è caratterizzato dal suo nome e dal suo tipo (anche diverso da quello degli altri campi operazioni: ciascun campo può essere acceduto in modo indipendente mediante l operatore di selezione (.) Array valori: collezione finita di elementi dello stesso tipo (tipo base), indicizzata su un intervallo di tipo ordinale (tipo indice) operazioni: selezione, assegnamento, uguaglianza si indica, spesso tra quadre, un espressione il cui valore indica l indice dell elemento da selezionare (Es.: array[< expr >]).

43 Tipi nei vari linguaggi (3) Caratteri e Stringhe il tipo carattere tradotto con la codifica ASCII o Unicode la stringa non sempre è predefinita nel linguaggio operazioni: operazioni per la concatenazione, la selezione di una sottostringa di una stringa data, ecc. nei linguaggi di scripting anche operatori per il pattern matching

44 Esercizi per casa Compilatori ed interpreti Riempire la tabella nelle slide precedenti Scrivere una grammatica che generi espressioni aritmentiche (con + e - come unici operatori)con parentesi. Scrivere una grammatica ad attributi che verifichi le seguenti proprietà: 1 il numero massimo di parentesi annidate è 3 2 il numero massimo di operatori utilizzati è 5

Macchine astratte, linguaggi, interpretazione, compilazione

Macchine astratte, linguaggi, interpretazione, compilazione Macchine astratte, linguaggi, interpretazione, compilazione 1 Macchine astratte una collezione di strutture dati ed algoritmi in grado di memorizzare ed eseguire programmi componenti della macchina astratta

Dettagli

Concetti base programmazione. Antonio Gallo

Concetti base programmazione. Antonio Gallo Concetti base programmazione Antonio Gallo info@laboratoriolibero.com Programma Insieme di istruzioni: Strtturato Ad oggetti Strutturato Ha una struttura più lineare Basato sui concetti di sequenza, selezione,

Dettagli

Costanti e Variabili

Costanti e Variabili Parte 3 Costanti e Variabili Identificatori Un identificatore è un nome che viene associato a diverse entità (costanti, tipi, variabili, funzioni, ecc.) e serve ad identificare la particolare entità Gli

Dettagli

Tipi di dato semplici

Tipi di dato semplici Tipi di dato semplici Perché dichiarare una variabile? 2 Una variabile rappresenta uno spazio di memoria centrale Prima dell esecuzione del programma deve essere chiaro quanto spazio serve al programma

Dettagli

Programmazione II. Lezione 7. Daniele Sgandurra 9/11/2010.

Programmazione II. Lezione 7. Daniele Sgandurra 9/11/2010. Programmazione II Lezione 7 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 9/11/2010 1/24 Programmazione II Lezione 7 9/11/2010 Sommario 1 Gestione della Memoria 2/24 Programmazione II Lezione 7 9/11/2010

Dettagli

Programmazione II. Lezione 16. Daniele Sgandurra 14/12/2010.

Programmazione II. Lezione 16. Daniele Sgandurra 14/12/2010. Programmazione II Lezione 16 Daniele Sgandurra daniele.sgandurra@iit.cnr.it 14/12/2010 1/29 Programmazione II Lezione 16 14/12/2010 Sommario 1 2/29 Programmazione II Lezione 16 14/12/2010 Parte I 3/29

Dettagli

Lezione 6 Introduzione al C++ Mauro Piccolo

Lezione 6 Introduzione al C++ Mauro Piccolo Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,

Dettagli

cap.6 del testo a cosa servono i tipi nei linguaggi di programmazione cos è un linguaggio type safe

cap.6 del testo a cosa servono i tipi nei linguaggi di programmazione cos è un linguaggio type safe cap.6 del testo a cosa servono i tipi nei linguaggi di programmazione cos è un linguaggio type safe 1 tipi statici e tipi dinamici in generale i LP hanno tipi statici, cioè ogni variabile ha un tipo dichiarato

Dettagli

Tipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi:

Tipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi: Tipi di dato Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi: esprimere in modo sintetico la loro rappresentazione in memoria, e un insieme di operazioni ammissibili permettere

Dettagli

Algoritmi e Strutture Dati

Algoritmi e Strutture Dati Algoritmi e Strutture Dati Università di Camerino Corso di Laurea in Informatica (12 CFU) I periodo didattico Emanuela Merelli email:emanuela.merelli@unicam.it Argomenti della lezione Elementi di un linguaggio

Dettagli

Il linguaggio C. Notate che...

Il linguaggio C. Notate che... Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione

Dettagli

Informatica 3. LEZIONE 2: Sintassi e semantica

Informatica 3. LEZIONE 2: Sintassi e semantica Informatica 3 LEZIONE 2: Sintassi e semantica Modulo 1: Introduzione ai concetti di sintassi e semantica Modulo 2: Il concetto di binding Modulo 3: Variabili Modulo 4: Routine Convenzioni dei nomi Informatica

Dettagli

Il potere espressivo di un linguaggio è caratterizzato da: PROGRAMMA = DATI + CONTROLLO

Il potere espressivo di un linguaggio è caratterizzato da: PROGRAMMA = DATI + CONTROLLO LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di

Dettagli

Linguaggi di Programmazione

Linguaggi di Programmazione 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

Dettagli

LINGUAGGI DI PROGRAMMAZIONE!

LINGUAGGI DI PROGRAMMAZIONE! LINGUAGGI DI PROGRAMMAZIONE! Il potere espressivo di un linguaggio è! caratterizzato da:! quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente)! quali istruzioni

Dettagli

Informatica 3. Informatica 3. LEZIONE 2: Sintassi e semantica. Lezione 2- Modulo 1. Le componenti di un linguaggio di programmazione

Informatica 3. Informatica 3. LEZIONE 2: Sintassi e semantica. Lezione 2- Modulo 1. Le componenti di un linguaggio di programmazione Informatica 3 Informatica 3 LEZIONE 2: Sintassi e semantica Lezione 2- Modulo 1 Modulo 1: Introduzione ai concetti di sintassi e semantica Modulo 2: Il concetto di binding Modulo 3: Variabili Modulo 4:

Dettagli

Il linguaggio di programmazione Python

Il linguaggio di programmazione Python Università Roma Tre Dipartimento di Matematica e Fisica Percorso Abilitante Speciale Classe A048 Matematica Applicata Corso di Informatica Il linguaggio di programmazione Python Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

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

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza

Dettagli

Le basi del linguaggio Java

Le basi del linguaggio Java Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una

Dettagli

I Linguaggi di Programmazione

I Linguaggi di Programmazione 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

Dettagli

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Lettura di dati da input In Java la lettura di dati da input

Dettagli

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali:

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: 1 Tipi di dati 1 Tipi di dati Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: Tutto è un oggetto Tutto eredita implicitamente

Dettagli

Strutture dati nel supporto a run time

Strutture dati nel supporto a run time Strutture dati nel supporto a run time 1 Entità presenti quando un programma va in esecuzione programmi d utente (compilati) routines del supporto interprete I/O, librerie, routines per la gestione delle

Dettagli

4 - Tipi di dato primitivi

4 - Tipi di dato primitivi 4 - Tipi di dato primitivi Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it

Dettagli

Il linguaggio C. Puntatori e dintorni

Il linguaggio C. Puntatori e dintorni Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;

Dettagli

Caratteristiche di un linguaggio ad alto livello

Caratteristiche di un linguaggio ad alto livello Caratteristiche di un linguaggio ad alto livello Un linguaggio ad alto livello deve offrire degli strumenti per: rappresentare le informazioni di interesse dell algoritmo definire le istruzioni che costituiscono

Dettagli

Linguaggi e Ambienti di Programmazione

Linguaggi e Ambienti di Programmazione Linguaggi e Ambienti di Programmazione Principi e tecniche diffuse che si incontrano spesso nelle applicazioni dell informatica. Compilatori Editor di struttura: riceve in input una sequenza di comandi

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione

Dettagli

Strutture Dati Dinamiche

Strutture Dati Dinamiche Strutture Dati Dinamiche Motivazioni Le variabili considerate fino a questo punto devono essere dichiarate staticamente, ossia la loro esistenza, il loro nome e la loro dimensione devono essere previsti

Dettagli

Strutture dati e loro organizzazione. Gabriella Trucco

Strutture dati e loro organizzazione. Gabriella Trucco Strutture dati e loro organizzazione Gabriella Trucco Introduzione I linguaggi di programmazione di alto livello consentono di far riferimento a posizioni nella memoria principale tramite nomi descrittivi

Dettagli

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

LINGUAGGI DI ALTO LIVELLO. Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware 1 LINGUAGGI DI ALTO LIVELLO Barriera di astrazione Fortran Cobol Basic Pascal Python C

Dettagli

LINGUAGGI DI ALTO LIVELLO

LINGUAGGI DI ALTO LIVELLO LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware 1 LINGUAGGI DI ALTO LIVELLO Barriera di astrazione C Fortran Modula-2 Cobol Algol Basic

Dettagli

Funzioni, Stack e Visibilità delle Variabili in C

Funzioni, Stack e Visibilità delle Variabili in C Funzioni, Stack e Visibilità delle Variabili in C Programmazione I e Laboratorio Corso di Laurea in Informatica A.A. 2016/2017 Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7

Dettagli

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

Lez. 8 La Programmazione. Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1 Lez. 8 La Programmazione Prof. Pasquale De Michele (Gruppo 2) e Raffaele Farina (Gruppo 1) 1 Dott. Pasquale De Michele Dott. Raffaele Farina Dipartimento di Matematica e Applicazioni Università di Napoli

Dettagli

LINGUAGGI DI ALTO LIVELLO

LINGUAGGI DI ALTO LIVELLO LINGUAGGI DI ALTO LIVELLO Si basano su una macchina virtuale le cui mosse non sono quelle della macchina hardware Linguaggi di alto livello Barriera di astrazione C Fortran Modula-2 Cobol Algol Basic Ada

Dettagli

Tipi di dato personalizzati Array di struct. Tipi di dato utente. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A.

Tipi di dato personalizzati Array di struct. Tipi di dato utente. Laboratorio di Programmazione I. Corso di Laurea in Informatica A.A. Array di Tipi di dato utente Laboratorio di Programmazione I Corso di Laurea in Informatica A.A. 2016/2017 Array di Calendario delle lezioni Lez. 1 Lez. 2 Lez. 3 Lez. 4 Lez. 5 Lez. 6 Lez. 7 Lez. 8 - Introduzione

Dettagli

Gestione dinamica della memoria

Gestione dinamica della memoria Programmazione M-Z Ingegneria e Scienze Informatiche - Cesena A.A. 2016-2017 Gestione dinamica della memoria Pietro Di Lena - pietro.dilena@unibo.it A pessimistic programmer sees the array as half empty.

Dettagli

Algoritmi, Strutture Dati e Programmi. UD 1.d: Dati e Tipi di Dato

Algoritmi, Strutture Dati e Programmi. UD 1.d: Dati e Tipi di Dato Algoritmi, Strutture Dati e Programmi : Dati e Tipi di Dato Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Dati: Variabili e Costanti Un algoritmo (e il programma che ne è rappresentazione)

Dettagli

Linguaggio C - sezione dichiarativa: costanti e variabili

Linguaggio C - sezione dichiarativa: costanti e variabili Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente

Dettagli

Linguaggi di programmazione e astrazione

Linguaggi di programmazione e astrazione Linguaggi di programmazione e astrazione i linguaggi di programmazione ad alto livello moderni sono il più potente strumento di astrazione messo a disposizione dei programmatori che possono, con un solo

Dettagli

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati

Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Fondamenti di Informatica e Laboratorio T-AB T-15 Strutture dati Paolo Torroni Dipartimento di Elettronica, Informatica e Sistemistica Università degli Studi di Bologna Anno Accademico 2008/2009 Sommario

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Tipi Strutturati Concetti Avanzati versione 2.5 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina) G. Mecca

Dettagli

Traduzione ed Interpretazione. Queste sconosciute

Traduzione ed Interpretazione. Queste sconosciute Traduzione ed Interpretazione Queste sconosciute Siano L Linguaggio ad alto livello M L M 0 Macchina astratta di L Macchina ospite Implementazione interpretativa di L Simulazione software di M L su M 0

Dettagli

Linguaggi, Traduttori e le Basi della Programmazione

Linguaggi, Traduttori e le Basi della Programmazione Corso di Laurea in Ingegneria Civile Politecnico di Bari Sede di Foggia Fondamenti di Informatica Anno Accademico 2011/2012 docente: Prof. Ing. Michele Salvemini Sommario Il Linguaggio I Linguaggi di Linguaggi

Dettagli

Espressioni ed operatori in C

Espressioni ed operatori in C Espressioni ed operatori in C Espressioni Il C è un linguaggio basato su espressioni Una espressione è una notazione che denota un valore mediante un processo di valutazione Una espressione può essere

Dettagli

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Anno Accademico Francesco Tortorella Struttura di un programma C++ // Programma semplice in C++ #include int main() { cout

Dettagli

Esonero di Informatica I. Ingegneria Medica

Esonero di Informatica I. Ingegneria Medica Di seguito sono elencati una serie di domande tipo esonero ; i quiz vogliono dare un sistema di autovalutazione e di confronto allo studente che deve prepararsi alla prova di metà corso. Il numero e l

Dettagli

Espressioni. Espressione = meccanismo fondamentale per esprimere computazioni in un LP importante comprenderne la semantica!

Espressioni. Espressione = meccanismo fondamentale per esprimere computazioni in un LP importante comprenderne la semantica! Espressioni Espressione = meccanismo fondamentale per esprimere computazioni in un LP importante comprenderne la semantica! Valutazione automatica di expr aritmetiche = obiettivo primario dei primi LP

Dettagli

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi.. 2010/2011 Sommario Conversione di tipo:casting Tipo enumerativo lgebra Booleana Esercizi Conversione di tipo:casting Il casting o conversione di tipo avviene

Dettagli

Informatica Generale Andrea Corradini Ancora sui linguaggi di programmazione

Informatica Generale Andrea Corradini Ancora sui linguaggi di programmazione Informatica Generale Andrea Corradini 18 - Ancora sui linguaggi di programmazione Sommario Principali componenti di un linguaggio di programmazione Variabili e costanti Strutture dati: array e record Strutture

Dettagli

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori

Puntatori. Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori Puntatori Obiettivi: Richiamare quanto noto sui puntatori dal modulo A Presentare l analogia tra puntatori e vettori e l aritmetica dei puntatori 1 Il puntatore Un tipo puntatore è un tipo scalare per

Dettagli

Puntatori in C. Puntatori. Variabili tradizionali Esempio: int a = 5; Proprietà della variabile a: nome: a

Puntatori in C. Puntatori. Variabili tradizionali Esempio: int a = 5; Proprietà della variabile a: nome: a Puntatori in C Puntatori Variabili tradizionali indirizzo int a = 5; A00E... Proprietà della variabile a: nome: a A010 A012 5 tipo: int A014 valore: 5 indirizzo: A010 Finora abbiamo usato solo le prime

Dettagli

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave

Dettagli

Allocazione dinamica della memoria

Allocazione dinamica della memoria Allocazione dinamica della memoria Allocazione statica: limiti Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente la loro esistenza deve essere prevista e dichiarata a priori

Dettagli

Programmazione. Andrea Passerini Informatica. Programmazione

Programmazione. Andrea Passerini Informatica. Programmazione Andrea Passerini passerini@disi.unitn.it Informatica Linguaggi di programmazione Il calcolatore è in grado di comprendere solo istruzioni in linguaggio macchina. Il linguaggio macchina non è adatto alla

Dettagli

Primi passi col linguaggio C

Primi passi col linguaggio C Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta

Dettagli

Traduzione ed Interpretazione

Traduzione ed Interpretazione Traduzione ed Interpretazione Queste sconosciute Siano L Linguaggio ad alto livello M L Macchina astratta di L M 0 Macchina ospite Implementazione interpretativa di L Implementazione compilativa di L Simulazione

Dettagli

Il Linguaggio C. Caratteristiche. Caratteristiche. Esempio di programma in C. Tipi di dato primitivi in C. Dati

Il Linguaggio C. Caratteristiche. Caratteristiche. Esempio di programma in C. Tipi di dato primitivi in C. Dati Caratteristiche Il Linguaggio C Linguaggio sequenziale (lineare), imperativo, strutturato a blocchi usabile anche come linguaggio di sistema software di base sistemi operativi compilatori... FI - Algoritmi

Dettagli

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010 Tipi di dati scalari (casting e puntatori) Alessandra Giordani agiordani@disi.unitn.it Lunedì 10 maggio 2010 http://disi.unitn.it/~agiordani/ I tipi di dati scalari I tipi aritmetici, i tipi enumerativi

Dettagli

Programmazione in Java (I modulo)

Programmazione in Java (I modulo) Programmazione in Java (I modulo) Lezione 4 Variabili di tipo primitivo. Dichiarazione di costanti Conversioni di tipo: operatore cast Altri operatori di assegnamento Operazioni aritmetiche e di confronto

Dettagli

Tipi di dato primitivi

Tipi di dato primitivi Tipi di dato primitivi (oltre int) Tipi di dato primitivi int (già trattati) Valori logici (ricordati) Valori reali Valori carattere Informatica - A.A. 2009/2010 - Tipi di dato 2 1 Valori logici (il caso

Dettagli

Fasi di un Compilatore

Fasi di un Compilatore Dipartimento di Matematica e Informatica Università di Camerino Un implementazione compilativa di un linguaggio di programmazione viene realizzata tramite un programma che prende il nome di compilatore

Dettagli

Informatica Generale Andrea Corradini I linguaggi di programmazione

Informatica Generale Andrea Corradini I linguaggi di programmazione Informatica Generale Andrea Corradini 17 - I linguaggi di programmazione Sommario Cos'è un linguaggio di programmazione? Una prospettiva storica: linguaggi di prima, seconda e terza generazione I paradigmi

Dettagli

Linguaggio C: introduzione

Linguaggio C: introduzione Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C: introduzione La presente dispensa e da utilizzarsi

Dettagli

Informatica 3. LEZIONE 5: Tipi di dati

Informatica 3. LEZIONE 5: Tipi di dati Informatica 3 LEZIONE 5: Tipi di dati Modulo 1: Tipi e costruttori di tipo Modulo 2: Tipi definiti dall utente e tipi di dati astratti Modulo 3: Sistemi di tipi Informatica 3 Lezione 5 - Modulo 1 Tipi

Dettagli

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C

Tipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C Tipi di dati strutturati e Linguaggio C Record o strutture Il costruttore struct in C Dati strutturati Record Un record o struttura è una struttura dati ottenuta aggregando elementi di tipo diverso che

Dettagli

Lez. 5 La Programmazione. Prof. Salvatore CUOMO

Lez. 5 La Programmazione. Prof. Salvatore CUOMO Lez. 5 La Programmazione Prof. Salvatore CUOMO 1 2 Programma di utilità: Bootstrap All accensione dell elaboratore (Bootsrap), parte l esecuzione del BIOS (Basic Input Output System), un programma residente

Dettagli

Programmazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali

Programmazione a Oggetti Lezione 7. Il linguaggio Java: aspetti generali Programmazione a Oggetti Lezione 7 Il linguaggio Java: aspetti generali Sommario Obiettivi di JAVA Portabilità: produrre codice eseguibile su più piattaforme (JVM) Affidabilità: Evitare il più possibile

Dettagli

Programmazione con Java

Programmazione con Java Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:

Dettagli

Fondamenti di Informatica T. Linguaggio C: i puntatori

Fondamenti di Informatica T. Linguaggio C: i puntatori Linguaggio C: i puntatori Il puntatore E` un tipo di dato, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un insieme

Dettagli

Tipi di dato, Alessandra Giordani Lunedì 7 maggio 2011

Tipi di dato, Alessandra Giordani Lunedì 7 maggio 2011 Tipi di dato, memoria e conversioni Alessandra Giordani agiordani@disi.unitn.it Lunedì 7 maggio 2011 http://disi.unitn.it/~agiordani/ Il linguaggio C è esplicitamente tipato: occorre esplicitamente associare

Dettagli

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

C++ Barriera di astrazione. Barriera di astrazione. Basic. Basic. Lisp. Lisp. Pascal. Prolog. Pascal. Prolog. Cobol. Fortran IMPERATIVI FUNZIONALI Linguaggi di alto livello Barriera di astrazione C Fortran Cobol Modula-2 Basic Pascal Algol Ada Lisp Smalltalk Simula67 Scheme C++ Prolog ML AN - 1995 Linguaggi di alto livello IMPERATIVI C Fortran Modula-2

Dettagli

Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011. Prof. Raffaele Nicolussi

Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011. Prof. Raffaele Nicolussi Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011 Prof. Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via del Policlinico, 147-00161 Roma Università degli Studi La Sapienza Fondamenti di

Dettagli

Programmazione ad oggetti

Programmazione ad oggetti Programmazione ad oggetti Tipi di dati Tipo = insieme di valori + insieme di operazioni Es. int: valori:, -2, -1, 0, 1, 2, operazioni:: +,-,*,/,

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 3 Istruzioni di Assegnazione G. Mecca M. Samela Università della Basilicata Elementi di Base >> Sommario Sommario Introduzione Istruzioni

Dettagli

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Corso di Fondamenti di Informatica Linguaggi di Programmazione di Cassino e del Lazio Meridionale Corso di Informatica Linguaggi di Programmazione Anno Accademico 2014/2015 Francesco Tortorella Linguaggi di programmazione Un calcolatore basato sul modello di von Neumann

Dettagli

Il puntatore. Il puntatore

Il puntatore. Il puntatore Il puntatore È un tipo scalare, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Il dominio di una variabile di tipo puntatore è un insieme di indirizzi: Il valore di una

Dettagli

Linguaggio C: puntatori

Linguaggio C: puntatori Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica A - GES Prof. Plebani A.A. 2006/2007 Linguaggio C: puntatori La presente dispensa e da utilizzarsi ai soli fini didattici previa

Dettagli

Linguaggi ad oggetti. Linguaggi di Programmazione: Paradigmi di Programmazione. I principali linguaggi ad oggetti. Programmazione ad oggetti.

Linguaggi ad oggetti. Linguaggi di Programmazione: Paradigmi di Programmazione. I principali linguaggi ad oggetti. Programmazione ad oggetti. Linguaggi di Programmazione: Paradigmi di Programmazione Linguaggi ad oggetti I linguaggi di programmazione ad oggetti consentono di applicare metodologie di sviluppo di programmi "object oriented", ossia

Dettagli

Il C nel C++: Funzioni

Il C nel C++: Funzioni Il C nel C++: Funzioni Funzioni (1) il concetto -> spezzare il programma in parti (procedure) una funzione è un parte di programma dotata di un nome che può essere richiamata in altri punti del programma

Dettagli

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

AXO - Architettura dei Calcolatori e Sistema Operativo. organizzazione strutturata dei calcolatori AXO - Architettura dei Calcolatori e Sistema Operativo organizzazione strutturata dei calcolatori I livelli I calcolatori sono progettati come una serie di livelli ognuno dei quali si basa sui livelli

Dettagli

Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.

Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 α=&a Esistono in C particolari variabili dette puntatori che possono

Dettagli

Operazioni numeriche - Input

Operazioni numeriche - Input Operazioni numeriche - Input Espressioni, funzioni matematiche, classi involucro, Acquisizione di input 11/11/2004 Laboratorio di Programmazione - Luca Tesei 1 Operazioni fra interi e decimali In Java

Dettagli

Espressioni e Comandi

Espressioni e Comandi Espressioni e Comandi March 24, 2017 Elementi di Base dei Programmi Ricordate? Macchina Astratta: Insieme di algoritmi e strutture dati che permettono di memorizzare ed eseguire programmi Abbiamo parlato

Dettagli

Macchine Astratte. Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari. Linguaggi di Programmazione feb, 2016

Macchine Astratte. Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari. Linguaggi di Programmazione feb, 2016 Macchine Astratte Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione 010194 29 feb, 2016 Sommario 1 Introduzione Macchina astratta Interprete Implementazione

Dettagli

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)

Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami

Dettagli

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 19 - Eccezioni Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso

Dettagli

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy

Dettagli

Elementi di programmazione

Elementi di programmazione Fondamenti di Informatica per la Sicurezza a.a. 2003/04 Elementi di programmazione Stefano Ferrari Università degli Studi di Milano Dipartimento di Tecnologie dell Informazione Stefano Ferrari Università

Dettagli

Introduzione a Matlab

Introduzione a Matlab INFORMATICA B Ingegneria Elettrica Introduzione a Matlab Introduzione a Matlab Matlab (MATrix LABoratory) è uno strumento per il calcolo scientifico ed ingegneristico Matlab facilita lo sviluppo di programmi

Dettagli

Strutture. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico

Strutture. Stefano Ferrari. Università degli Studi di Milano Programmazione. anno accademico Strutture Stefano Ferrari Università degli Studi di Milano stefano.ferrari@unimi.it Programmazione anno accademico 2016 2017 Tipi strutturati Rappresentano informazioni composte dall insieme di più valori

Dettagli

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal Algoritmi, Strutture Dati e Programmi : Programmazione in Pascal Prof. Alberto Postiglione AA 2007-2008 Università degli Studi di Salerno Il Linguaggio di Programmazione Pascal Esistono molti linguaggi

Dettagli

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

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina Il compilatore C Astrazione Linguaggio macchina implica la conoscenza dei metodi usati per la rappresentazione dell informazioni nella CPU Linguaggio Assembly è il linguaggio delle istruzioni che possono

Dettagli

Introduzione al Linguaggio C

Introduzione al Linguaggio C INFORMATICA 1 Lezione 3 (Introduzione al Linguaggio C, Introduzione ai Tipi di dato, Cenni alla codifica binaria) Introduzione al Linguaggio C 1 Passi fondamentali del C Definito nel 1972 (AT&T Bell Labs)

Dettagli

Verso i puntatori: Cosa è una variabile?

Verso i puntatori: Cosa è una variabile? Verso i puntatori: Cosa è una variabile? Quando si dichiara una variabile, ad es. int a; si rende noto il nome e il tipo della variabile. Il compilatore alloca l opportuno numero di byte di memoria per

Dettagli

3) Descrivere l architettura di un elaboratore tramite astrazione a livelli

3) Descrivere l architettura di un elaboratore tramite astrazione a livelli Di seguito sono elencati una serie di domande tipo esonero ; i quiz vogliono dare un sistema di autovalutazione e di confronto allo studente che deve prepararsi alla prova di metà corso. Il numero e l

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi: Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli

Dettagli

Astrazioni sui dati : Specifica di Tipi di Dato Astratti in Java

Astrazioni sui dati : Specifica di Tipi di Dato Astratti in Java Astrazioni sui dati : Specifica di Tipi di Dato Astratti in Java 1 Specifica ed Implementazione di Tipi di Dato Astratti in Java cos è un tipo di dato astratto specifica di tipi di dati astratti un tipo

Dettagli

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

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

Dettagli