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

Dimensione: px
Iniziare la visualizzazioe della pagina:

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

Transcript

1 Programmazione II Lezione 16 Daniele Sgandurra 14/12/2010 1/29 Programmazione II Lezione 16 14/12/2010

2 Sommario 1 2/29 Programmazione II Lezione 16 14/12/2010

3 Parte I 3/29 Programmazione II Lezione 16 14/12/2010

4 Un tipo di dato è una collezione di valori omogenei ed effettivamente presentati, dotata di un insieme di operazioni che manipolano tali valori. Omogeneità: i valori condividono alcune proprietà strutturali. Operazioni: ad es., assieme agli interi sono associate le operazioni di somma, sottrazione, moltiplicazione e divisione. Rappresentabilità: devono potere avere una rappresentazione finita: ad es., non esiste un tipo dei numeri reali veri e propri. 4/29 Programmazione II Lezione 16 14/12/2010

5 Tipi: a Cosa Servono? (1) Progettazione: supporto all organizzazione concettuale: dominare la complessità dei problemi; esplicitare i concetti tipici attraverso nuovi tipi; aumento di leggibilità (documentazione) e di sicurezza (controlli). Programmazione: supporto alla correttezza: evitare errori hardware (es., errori di indirizzamento) ed errori logici (es., somma di intero e stringa); vincolo di tipo (violazione = errori semantici): type checker; polimorfismo: es., stessa funzione su strutture di tipi diversi; sicurezza (safety): problemi in fase d esecuzione (es., dangling reference): linguaggi sicuri e non (violazioni a run-time dei vincoli di tipo). 5/29 Programmazione II Lezione 16 14/12/2010

6 Tipi: a Cosa Servono? (2) Traduzione: supporto all implementazione: informazioni per la macchina astratta: dimensione della memoria richiesta per l allocazione (disponibili staticamente); ottimizzazioni sulle operazioni d accesso (es., offset nei RdA): s t r u c t Professore { c h a r Nome [ 2 0 ] ; i n t Codice_Corso ; } se p è una variabile di tipo Professore, è possibile accedere ai suoi campi con p.nome o p.codice corso e l accesso ai campi avviene mediante offset relativo all indirizzo base di p. 6/29 Programmazione II Lezione 16 14/12/2010

7 Sistemi di Tipi Sistema di Tipi Complesso delle informazioni e delle regole che governano i tipi di un linguaggio, costituito da: 1 l insieme dei tipi predefiniti; 2 i meccanismi per definire nuovi tipi; 3 i meccanismi per il controllo dei tipi: regole di equivalenza: due tipi formalmente diversi possono essere equivalenti livello semantico; regole di compatibilità: un valore di un tipo diverso da quello atteso può essere comunque utilizzato; regole di inferenza: attribuzione di un tipo ad un espressione complessa. 4 se e quali vincoli controllare staticamente o dinamicamente. Un sistema di tipi è sicuro relativamente ai tipi (type-safe) quando nessun programma può ignorare le differenze di tipo definite dal sistema: non ci sono errori inattesi generati da violazioni di tipo a run-time: es., accesso a memoria non allocata; es., chiamata di un valore che non sia una funzione. 7/29 Programmazione II Lezione 16 14/12/2010

8 Classificazione di Tipi In base ai valori: denotabili: se possono essere associati a un nome; esprimibili: se possono essere il risultato di un espressione complessa (cioè, diversa da un semplice nome); memorizzabili: se possono essere memorizzati in una variabile. Esempio: tipo delle funzioni (int int): valore denotabile: possiamo associare un nome ad una funzione: i n t succ ( i n t x ){ r e t u r n x + 1 ; } valore esprimibile solo nei linguaggi funzionali e non negli imperativi: es., funzioni risultato della valutazione di un espressione. valore memorizzabile: assegnare una funzione a una variabile: linguaggi funzionali (ML, Haskell, Scheme). 8/29 Programmazione II Lezione 16 14/12/2010

9 Controlli Statici e Dinamici (1) Linguaggi a tipizzazione statica: controlli a compile-time (es., Java): controlli anticipati; correttezza garantita per ogni sequenza d esecuzione: controlli a run-time inutili: maggiore efficienza; la progettazione del linguaggio è più complessa se il linguaggio deve anche essere type-safe; compilazione lenta e complessa ma facilitati debugging/testing. Linguaggi a tipizzazione dinamica: controlli a run-time (es., Lisp): ogni oggetto ha un descrittore che ne contiene il tipo; la macchina astratta controlla la correttezza degli operandi nelle operazioni: il compilatore ha generato codice di controllo opportuno. caratteristiche: previene errori di tipo (troppo tardi?); inefficiente. 9/29 Programmazione II Lezione 16 14/12/2010

10 Controlli Statici e Dinamici (2) Programmi sicuri che la tipizzazione statica può interpretare come errati: controllo statico: più conservatore: i n t x ; i f (0 == 1) x = p i p p o ; e l s e x = ; la condizione del primo ramo del condizionale non è mai verificata, ma il controllo statico segnala un errore di tipo. Controllo sui tipi in generale: problema indecidibile: per prudenza un controllo statico esclude anche casi non pericolosi, come il precedente. In molti linguaggi (es., Pascal), controllo statico + dinamico: es., utilizzo di vettori con controllo degli indici a run-time. 10/29 Programmazione II Lezione 16 14/12/2010

11 Indecidibilità del Problema della Verifica di Errore di Tipo i n t x ; P ; x = p i p p o ; Se si potesse sapere sempre se il programma P termina, allora si può segnalare che ci sarebbe un errore di tipo. Ma se P non termina? Allora l errore di tipo non si verificherebbe, quindi il programma sarebbe corretto. Essendo la terminazione indecidibile, anche il problema del controllo della correttezza dei tipi è indecidibile. 11/29 Programmazione II Lezione 16 14/12/2010

12 (1) Tipi scalari (o semplici): tipi i cui valori non sono costituiti da aggregazioni di altri valori. Dichiarazione nuovi tipi: type nuovotipo = espressione; in C: t y p e d e f espressione nuovotipo ; Tipo dei valori booleani (o logici) costituito da: valori: due valori di verità, vero e falso; operazioni: alcune tra le operazioni logiche and, or, not, etc; valori memorizzabili, esprimibili e denotabili; rappresentazione in memoria tramite un byte (anche se basta un bit) per motivi di allineamento. Tipo dei caratteri costituito da: valori: un insieme di codici di caratteri fissato al momento della definizione del linguaggio (es., ASCII, UNICODE); operazioni: fortemente dipendenti dal linguaggio; solitamente, sono presenti l uguaglianza, i confronti; valori memorizzabili, esprimibili e denotabili; rappresentazione in memoria tramite un byte (ASCII) o due (UNICODE). 12/29 Programmazione II Lezione 16 14/12/2010

13 (2) Tipo dei numeri interi costituito da: valori: sottoinsieme finito dei numeri interi fissato al momento della definizione del linguaggio o della macchina astratta (problemi di portabilità); solitamente, nell intervallo [ 2 t, +2 t 1]; operazioni: operazioni aritmetiche e confronti; valori memorizzabili, esprimibili e denotabili; rappresentazione in memoria tramite un numero pari di byte (due, quattro, o otto) in complemento a due. Tipo dei reali (o numeri in virgola mobile) costituito da: valori: sottoinsieme finito dei numeri razionali fissato al momento della definizione del linguaggio o della macchina astratta (problemi di portabilità); operazioni: operazioni aritmetiche e confronti; valori memorizzabili, esprimibili e denotabili; rappresentazione in memoria tramite quattro, otto o dieci byte in standard IEEE /29 Programmazione II Lezione 16 14/12/2010

14 (3) Tipo dei reali in virgola fissa costituito da: valori: sottoinsieme finito dei numeri razionali fissato al momento della definizione del linguaggio o della macchina astratta (problemi di portabilità); operazioni: operazioni aritmetiche e confronti; valori memorizzabili, esprimibili e denotabili; rappresentazione in memoria tramite un quattro, otto byte in complemento a due con un numero fissato di bit per la parte decimale. Tipo dei complessi costituito da: valori: sottoinsieme finito dei numeri complessi fissato al momento della definizione del linguaggio o della macchina astratta (problemi di portabilità); operazioni: operazioni aritmetiche e confronti; valori memorizzabili, esprimibili e denotabili; rappresentazione in memoria tramite una coppia di valori in virgola mobile. Tipo primitivo formato da un solo valore void: valori: uno solo, indicato con (); operazioni: nessuna; utilità: per indicare il tipo delle operazioni che modificano lo stato ma non restituiscono alcun valore (es., assegnamento, non in C). 14/29 Programmazione II Lezione 16 14/12/2010

15 (4) Enumerazioni: insieme finito di costanti, ciascuna caratterizzata dal proprio nome: es., type nano = {Brontolo, Cucciolo, Dotto, Eolo, Gongolo, Mammolo, Pisolo }; introduce un nuovo tipo di nome nano costituito da un insieme di 7 elementi contraddistinti dal proprio nome; operazioni: confronti; programmi più leggibili; controllo dei tipi migliorato. Intervalli: sottoinsieme contiguo dei valori di un altro tipo scalare: es, in Pascal: t y p e Tombola = ; AlcuniNani = Cucciolo.. Eolo ; introduce un intervallo di 90 interi e un intervallo costituito dai valori Cucciolo, Dotto e Eolo. programmi più leggibili; controllo dei tipi migliorato; controlli a run-time per l appartenenza. 15/29 Programmazione II Lezione 16 14/12/2010

16 Tipi non scalari ottenuti per combinazione di tipi più semplici: record (o strutture): collezione di valori eterogenei; array (o vettori): collezione di valori omogenei; insiemi: sottoinsiemi di un tipo (base, ordinale); puntatori: l-valori per accedere indirettamente ad altri valori; tipi ricorsivi: definiti per ricorsione. 16/29 Programmazione II Lezione 16 14/12/2010

17 Record (1) Collezione costituita da un numero finito (e, spesso, ordinato) di elementi diversi (campi) distinti dal loro nome: Esempio: ciascun campo può essere di tipo diverso (struttura dati eterogenea). type Studente = s t r u c t { i n t matricola ; f l o a t altezza ; }; Spesso, la sola operazione possibile è la selezione di una componente: Studente s =... ; s. matricola = ; s. altezza = ; 17/29 Programmazione II Lezione 16 14/12/2010

18 Record (2) In molti linguaggi, i record possono essere annidati: type Aula = s t r u c t { c h a r nome [ 5 ] ; i n t capienza ; s t r u c t { c h a r dipartimento [ 1 0 ] ; i n t telefono ; } responsabile ; } Il terzo campo (responsabile) è un record di due campi di tipo anonimo. Se a è un Aula con a.responsabile.telefono indichiamo il secondo campo del terzo campo di a. L uguaglianza (assegnamento) tra record non sempre è definita: se non presenti, vanno confrontati (assegnati) i campi uno alla volta. 18/29 Programmazione II Lezione 16 14/12/2010

19 Record (3) I campi di un record sono memorizzati in locazione contigue: spesso, per motivi di allineamento, ci possono essere dei buchi tra i campi. Nell esempio, solo 23 byte su 28 sono significativi (se l ordine non è assicurato dalla macchina astratta, si possono usare solo 6 parole). 19/29 Programmazione II Lezione 16 14/12/2010

20 Record Varianti Forma particolare di record in cui alcuni campi sono mutuamente esclusivi. Causa di molte complicazioni. t y p e Stud = r e c o r d nome : a r r a y [ ] o f c h a r ; matricola : i n t e g e r ; c a s e fuoricorso : b o o l e a n o f t r u e : ( ultimoanno : maxint ) ; f a l s e : ( inpari : b o o l e a n ; anno : ( primo, secondo, terzo ) ) end ; Il terzo campo (fuoricorso) è il tag (discriminante) del record variante: se true, il record ha un ulteriore campo ultimoanno (di tipo intervallo); se false, il record ha due ulteriori campi: inpari (boolean) e anno (enumerazione). 20/29 Programmazione II Lezione 16 14/12/2010

21 Unioni (1) In C non esiste il record variante, ma l unione: nella definizione e uso, analogo al record (struct); solo uno dei campi può essere attivo in qualsiasi momento; i campi (anche di tipo diverso) condividono la rappresentazione in memoria. s t r u c t Stud{ c h a r [ 6 ] nome ; i n t matricola ; i n t fuoricorso ; u n i o n{ i n t ultimoanno ; s t r u c t { i n t inpari ; i n t anno ; } stud_in_corso ; } campivarianti ; } 21/29 Programmazione II Lezione 16 14/12/2010

22 Unioni (2) La differenza fondamentale tra i record varianti in Pascal e le unioni in C è che il tag non è vincolato: è compito del programmatore metterlo in relazione ai campi seguenti. Ad esempio, è sintatticamente corretto fare: s. fuoricorso = 0 ; s. campivarianti. ultimoanno = ; //ma s. f u o r i c o r s o = f a l s e i f ( s. fuoricorso ) printf ( s. campivarianti. ultimoanno ) e l s e printf ( s. campivarianti. stud_in_corso. anno ) ; Anche in Pascal non si può garantire un legame formale e controllato tra il tag e le varianti. Inoltre, la macchina astratta non può controllare dinamicamente l accesso alle varianti solo se il tag è corretto (non tutti gli errori sono catturabili). 22/29 Programmazione II Lezione 16 14/12/2010

23 Array Collezione finita di elementi dello stesso tipo (tipo base) indicizzata su un intervallo di tipo ordinale (tipo indice). Specifica: nome; tipo indice; tipo base dei componenti; es., int v[10];: parentesi quadre: array; 10 elementi di tipo int; tipo degli indici: intervallo di 10 elementi, numerati da 0 a 9. Array multidimensionali (array indicizzati su due o più tipi indice): int V [ , ] ; c h a r C [ Dotto.. Mammolo, , ] ; V è una matrice quadrata di elementi, C è una matrice di caratteri. 23/29 Programmazione II Lezione 16 14/12/2010

24 Array Multidimensionali In alcuni linguaggi, si può ottenere un array multidimensionale anche dichiarando che il tipo degli elementi è a sua volta un array: int V [ ] [ ] ; c h a r C [ Dotto.. Mammolo ] [ ] [ ] ; Operazioni ammesse: selezione di un elemento: es., W[e] indica l elemento di W di indice dato dal valore dell espressione e; per array multidimensionali: es., C[Eolo,1,2] o C[Eolo][1][2]. alcuni linguaggi: assegnamento, uguaglianza, confronti, operazioni aritmetiche (es., elemento per elemento). 24/29 Programmazione II Lezione 16 14/12/2010

25 Array: Slice Uno slice di un array è una sua porzione costituita da elementi contigui, ad esempio: V[3]: terza riga della matrice V; C[Eolo]: piano della matrice tridimensionale C che si ottiene selezionando la sua prima componente. 25/29 Programmazione II Lezione 16 14/12/2010

26 Array: Controlli Il controllo dei tipi del linguaggio dovrebbe verificare che ogni accesso a un elemento avvenga entro i limiti dell array: si può fare solo a tempo di esecuzione; linguaggio sicuro: controllo ad ogni accesso; inefficienza. Sicurezza: attacchi buffer overflow; esempio: programma di rete scritto in C: il mittente invia una stringa al destinatario; il destinatario non controlla che la lunghezza della stringa sia minore del buffer allocato; la stringa inviata sovrascrive il buffer e altri campi del RdA; l indirizzo di ritorno cambiato; l esecuzione è ripresa nel codice (maligno) inserito nel buffer. 26/29 Programmazione II Lezione 16 14/12/2010

27 Array: Memorizzazione Un array è memorizzato in una porzione contigua di memoria: array monodimensionale: allocazione secondo l ordine degli indici. array multidimensionale: ordine di riga: elementi contigui differiscono di un unita nell indice più a destra; ordine di colonna: elementi contigui differiscono di un unita nell indice più a sinistra; più diffuso per colonna: più semplice selezionare lo slice di una riga. diverso impatto sull efficienza del caching. 27/29 Programmazione II Lezione 16 14/12/2010

28 Array: Calcolo degli Indici Dato un array a n dimensioni, con elementi di tipo T : T V[L 1..U 1 ]...[L n..u n]; Sia S n il numero di unità memorizzabili (byte) necessarie per memorizzare un elemento di tipo T; per calcolare la quantità di memoria necessaria per memorizzare slice sempre più grandi (in ordine di riga): S n 1 = (U n L n + 1)S n... S 1 = (U 2 L 2 + 1)S 2 L indirizzo dell elemento V[i 1,..., i n] si ottiene sommando all indirizzo base di V l offset: (i 1 L 1 )S (i n L n)s n Se le dimensioni sono tutte note staticamente: i 1 S i ns n (L 1 S L ns n) indirizzo calcolato con n moltiplicazioni e n addizioni (la sottrazione finale scompare se gli indici partono da zero). 28/29 Programmazione II Lezione 16 14/12/2010

29 Riferimenti [1] Linguaggi di programmazione: principi e paradigmi (Cap. 8). Maurizio Gabbrielli, Simone Martini. 29/29 Programmazione II Lezione 16 14/12/2010

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

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

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

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

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

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

Corso di Linguaggi di Programmazione

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

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

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

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

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

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

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

Indice. Prefazione. 3 Oggetti e Java 53

Indice. Prefazione. 3 Oggetti e Java 53 Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware

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

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

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX Indice Prefazione Gli Autori Ringraziamenti dell Editore La storia del C XVII XXIX XXXI XXXIII PARTE A Capitolo 1 Computer 1 1.1 Hardware e software 2 1.2 Processore 3 1.3 Memorie 5 1.4 Periferiche di

Dettagli

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

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

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 11 Array A. Miola Dicembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Array 1 Contenuti Il problema degli studenti da promuovere

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

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

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

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

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

Gli array, le stringhe e le strutture

Gli array, le stringhe e le strutture INFORMATICA B Ingegneria Elettrica Gli array, le stringhe e le strutture Limiti dei tipi di dato semplici Utilizzare solo i tipi di dato semplici può essere limitante e rendere il programma poco flessibile

Dettagli

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Fondamenti di Informatica 6. Algoritmi e pseudocodifica Vettori e matrici #1 Fondamenti di Informatica 6. Algoritmi e pseudocodifica Corso di Laurea in Ingegneria Civile A.A. 2010-2011 1 Semestre Prof. Giovanni Pascoschi Le variabili definite come coppie

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algebra di Boole Stefano Cagnoni Algebra di Boole L algebra

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

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

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.

Unità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;

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

LA CODIFICA DELL INFORMAZIONE. Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2

LA CODIFICA DELL INFORMAZIONE. Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2 LA CODIFICA DELL INFORMAZIONE Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2 Codifica dati e istruzioni Per scrivere un programma è necessario rappresentare istruzioni

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

Tipi di dato strutturati: Array

Tipi di dato strutturati: Array Tipi di dato strutturati: Array I dati visti finora sono: numeri (interi o razionali), booleani le stringhe (sequenze di caratteri) ma i dati manipolati nelle applicazioni reali sono spesso complessi (o

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

Basi della programmazione in Java. Anteprima. Uso delle variabili. Il concetto di variabile Uso delle variabili. Input da tastiera I tipi Esercizi

Basi della programmazione in Java. Anteprima. Uso delle variabili. Il concetto di variabile Uso delle variabili. Input da tastiera I tipi Esercizi Basi della programmazione in Java Nicola Drago nicola.drago@univr.it Dipartimento di Informatica Università di Verona Anteprima Il concetto di variabile Uso delle variabili Dichiarazione Assegnamento Visualizzazione

Dettagli

Informatica 3. Informatica 3. LEZIONE 5: Tipi di dati. Lezione 5 - Modulo 1. Tipi predefiniti. Introduzione

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

Dettagli

Rappresentazione dell Informazione

Rappresentazione dell Informazione Rappresentazione dell Informazione Rappresentazione delle informazioni in codice binario Caratteri Naturali e Reali positivi Interi Razionali Rappresentazione del testo Una stringa di bit per ogni simbolo

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

Sistemi di Numerazione

Sistemi di Numerazione Sistemi di Numerazione Corso Università Numeri e Numerali Il numero cinque 5 V _ Π Arabo Romano Maya Greco Cinese Il sistema decimale Sistemi Posizionali 1 10 3 + 4 10 2 + 9 10 1 + 2 10 0 Sistemi Posizionali

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

Fondamenti di Programmazione. Sistemi di rappresentazione

Fondamenti di Programmazione. Sistemi di rappresentazione Fondamenti di Programmazione Sistemi di rappresentazione Numeri e numerali Il numero cinque 5 V _ Π 五 Arabo Romano Maya Greco Cinese Il sistema decimale Sistemi posizionali 1 10 3 + 4 10 2 + 9 10 1 + 2

Dettagli

MODULO 1. Prof. Onofrio Greco. Prof. Greco Onofrio

MODULO 1. Prof. Onofrio Greco. Prof. Greco Onofrio ECDL MODULO 1 Prof. Onofrio Greco Modulo 1 Concetti di base dell ICT Modulo 2 Uso del Computer e Gestione dei File Modulo 3 - Elaborazione testi Modulo 4 Foglio Elettronico Modulo 5 Uso delle Basi di Dati

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

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

Appunti del corso di Informatica 1 (IN110 Fondamenti) 5 Rappresentazione delle informazioni

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

Dettagli

Introduzione a C# Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

Introduzione a C# Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni Introduzione a C# Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni C#: Strumento Principe per.net Primo linguaggio orientato alle componenti della famiglia C/C++ Tutto è DAVVERO un oggetto

Dettagli

Il linguaggio assembly

Il linguaggio assembly Il linguaggio assembly PH 2.3 (continua) 1 Argomenti Organizzazione della memoria Istruzioni di trasferimento dei dati Array Istruzioni logiche 2 1 La memoria del MIPS I contenuti delle locazioni di memoria

Dettagli

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di

Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere

Dettagli

Sommario PREFAZIONE...XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLA PROGRAMMAZIONE IN C...

Sommario PREFAZIONE...XI CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 CAPITOLO 2: INTRODUZIONE ALLA PROGRAMMAZIONE IN C... Sommario PREFAZIONE...XI Aggiornamenti e novità... xi Lo scopo di questo libro... xii Diagramma delle dipendenze... xii La metodologia di insegnamento... xiii Panoramica sul libro... xvi Ringraziamenti...

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

Unità aritmetica e logica

Unità aritmetica e logica Aritmetica del calcolatore Capitolo 9 Unità aritmetica e logica n Esegue le operazioni aritmetiche e logiche n Ogni altra componente nel calcolatore serve questa unità n Gestisce gli interi n Può gestire

Dettagli

Array k-dimensionali

Array k-dimensionali Informatica B a.a 2005/06 (Meccanici 4 squadra) Scaglione: da PO a ZZZZ PhD. Ing. Michele Folgheraiter Array k-dimensionali In C è possibile definire array con più dimensioni (ANSI C massimo k=12), per

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

Modelli di interazione tra processi

Modelli di interazione tra processi Modelli di interazione tra processi Modello a memoria comune (ambiente globale, global environment) Modello a scambio di messaggi (ambiente locale, message passing) 1 Modello a memoria comune Il sistema

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

Indice generale Introduzione...vii Parte I Concetti e costrutti fondamentali... 1 Capitolo 1 Introduzione al linguaggio... 3

Indice generale Introduzione...vii Parte I Concetti e costrutti fondamentali... 1 Capitolo 1 Introduzione al linguaggio... 3 Introduzione...vii Organizzazione del libro... viii Struttura del libro e convenzioni... ix Codice sorgente e progetti... x Compilare ed eseguire direttamente i listati e gli snippet di codice... x Compilare

Dettagli

Corso di Programmazione Record e Insiemi. Record. Record. Dott. Pasquale Lops.

Corso di Programmazione Record e Insiemi. Record. Record. Dott. Pasquale Lops. Materiale didattico preparato dal dott. Stefano Ferilli Corso di Programmazione e Insiemi Dott. Pasquale Lops lops@di.uniba.it Corso di Programmazione - DIB 1/14 Registra in una n-pla di dati le principali

Dettagli

Problema. Vettori e matrici. Vettori. Vettori

Problema. Vettori e matrici. Vettori. Vettori e matrici Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Problema Si vuole un programma che chieda 10 numeri dalla tastiera e li visualizzi dall ultimo al primo Soluzione attuale (con le

Dettagli

Introduzione alla programmazione

Introduzione alla programmazione Introduzione alla programmazione Risolvere un problema Per risolvere un problema si procede innanzitutto all individuazione Delle informazioni, dei dati noti Dei risultati desiderati Il secondo passo consiste

Dettagli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli ELEMENTI DI INFORMATICA L-B Ing. Claudia Chiusoli Materiale Lucidi delle lezioni Date degli appelli Testi di esami precedenti Informazioni e contatti http://www.lia.deis.unibo.it/courses/ Programma del

Dettagli

Descrizione delle operazioni di calcolo. Espressioni costanti semplici

Descrizione delle operazioni di calcolo. Espressioni costanti semplici Descrizione delle operazioni di calcolo Come abbiamo detto l interprete è in grado di generare nuovi valori a partire da valori precedentemente acquisiti o generati. Il linguaggio di programmazione permette

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

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

Array multidimensionali e stringhe

Array multidimensionali e stringhe Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Array uni-dimensionali (richiami) Dichiarazione: int vet[100]; float x[50]; Gli elementi

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

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

Elementi di Informatica A. A. 2016/2017

Elementi di Informatica A. A. 2016/2017 Elementi di Informatica A. A. 2016/2017 Ing. Nicola Amatucci Università degli studi di Napoli Federico II Scuola Politecnica e Delle Scienze di Base nicola.amatucci@unina.it Programmazione C++ Parte 2

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

Fondamenti di Programmazione. Sistemi di rappresentazione

Fondamenti di Programmazione. Sistemi di rappresentazione Fondamenti di Programmazione Sistemi di rappresentazione Numeri e numerali Il numero cinque 5 V _ Π 五 Arabo Romano Maya Greco Cinese Sistemi posizionali 1 10 3 + 4 10 2 + 9 10 1 + 2 10 0 Sistemi posizionali

Dettagli

Rappresentazione dei numeri interi in un calcolatore

Rappresentazione dei numeri interi in un calcolatore Corso di Calcolatori Elettronici I Rappresentazione dei numeri interi in un calcolatore Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle

Dettagli

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Variabili. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico

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

ML è un linguaggio interattivo La modalità interattiva di OCaml Ciclo: LETTURA, VALUTAZIONE, STAMPA. Objective Caml version 3.06

ML è un linguaggio interattivo La modalità interattiva di OCaml Ciclo: LETTURA, VALUTAZIONE, STAMPA. Objective Caml version 3.06 1 ML è un linguaggio interattivo La modalità interattiva di OCaml Ciclo: LETTURA, VALUTAZIONE, STAMPA # Objective Caml version 3.06 Il cancelletto è il prompt di Caml. # 3*8;; - : int = 24 LETTURA: viene

Dettagli

Il linguaggio C. Caratteristiche generali

Il linguaggio C. Caratteristiche generali Il linguaggio C Caratteristiche generali Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni

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

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 Di seguito vengono riportate una serie di domande che possono essere poste durante la prova formale del corso. Le seguenti domande non sono da ritenersi esaustive ma esemplificative. 1. Architettura

Dettagli

Dati aggregati. Violetta Lonati

Dati aggregati. Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica - in breve: Definizione di tipi Array Stringhe Strutture

Dettagli

Introduzione al linguaggio C Puntatori

Introduzione al linguaggio C Puntatori Introduzione al linguaggio C Puntatori Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 19 ottobre 2016

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

Array. Parte 7. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Array. Parte 7. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm

Dettagli

Dalla precedente lezione: LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 3 LA RAPPRESENTAZIONE DEI DATI (1) 28/02/2016

Dalla precedente lezione: LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 3 LA RAPPRESENTAZIONE DEI DATI (1) 28/02/2016 LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 3 LA RAPPRESENTAZIONE DEI DATI (1) Marco Lapegna Dipartimento di Matematica e Applicazioni Universita degli Studi di Napoli Federico II wpage.unina.it/lapegna

Dettagli

Rappresentazione dei numeri interi in un calcolatore

Rappresentazione dei numeri interi in un calcolatore Corso di Calcolatori Elettronici I A.A. 2012-2013 Rappresentazione dei numeri interi in un calcolatore Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica

Dettagli

L Allocazione Dinamica della Memoria

L Allocazione Dinamica della Memoria L Allocazione Dinamica della Memoria Maurizio Palesi DIIT Università di Catania Viale Andrea Doria 6, 95125 Catania mpalesi@diit.unict.it http://www.diit.unict.it/users/mpalesi Sommario Questo documento

Dettagli

IL LINGUAGGIO C TIPI DI DATO

IL LINGUAGGIO C TIPI DI DATO IL LINGUAGGIO C Un elaboratore è un manipolatore di simboli (segni) L'architettura fisica di ogni elaboratore è intrinsecamente capace di trattare vari domini di dati, detti tipi primitivi dominio dei

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla

Dettagli

Programmazione con il linguaggio LibreOffice Basic

Programmazione con il linguaggio LibreOffice Basic Programmazione con il linguaggio LibreOffice Basic L ambiente di programmazione Il software LibreOffice possiede un ambiente di programmazione in linguaggio Basic, che consente di creare procedure software

Dettagli

Calcolo numerico e programmazione Rappresentazione dei numeri

Calcolo numerico e programmazione Rappresentazione dei numeri Calcolo numerico e programmazione Rappresentazione dei numeri Tullio Facchinetti 16 marzo 2012 10:54 http://robot.unipv.it/toolleeo Rappresentazione dei numeri nei calcolatori

Dettagli

Paradigmi. Alcune ulteriori note

Paradigmi. Alcune ulteriori note Paradigmi Alcune ulteriori note Il paradigma I linguaggi possono essere classificati anche in base al modello concettuale che implementano o descrivono: Imperativo Dichiarativo Funzionale Orientato agli

Dettagli

Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.

Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense. Fondamenti di Informatica - A. Fantechi Raccolta di esercizi Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.

Dettagli

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna: Prova di Laboratorio del 12.1.2005 [durata 90 min.] Corso A-B di Programmazione (A.A. 2004/05) 1. Leggere da tastiera un insieme di numeri interi ed inserirli in un vettore A 2. Calcolare tramite una funzione

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

Modelli di interazione tra processi

Modelli di interazione tra processi Modelli di interazione tra processi Modello a memoria comune (ambiente globale, global environment) Modello a scambio di messaggi (ambiente locale, message passing) 1 Modello a memoria comune Il sistema

Dettagli

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012 Fondamenti di Informatica - 1 Prof. B.Buttarazzi A.A. 2011/2012 I numeri reali Sommario Conversione dei numeri reali da base 10 a base B Rappresentazione dei numeri reali Virgola fissa Virgola mobile (mantissa

Dettagli

Introduzione ai puntatori in C Definizione

Introduzione ai puntatori in C Definizione Introduzione ai puntatori in C Definizione Un puntatore è una variabile che contiene l indirizzo di un altra variabile Tramite i puntatori si può quindi accedere a un oggetto indirettamente (si usa il

Dettagli

LEZIONE 11 IMPARIAMO A PROGRAMMARE: I DATI E LE VARIABILI Laboratorio di Informatica per l Educazione A. A. 2014/2015

LEZIONE 11 IMPARIAMO A PROGRAMMARE: I DATI E LE VARIABILI Laboratorio di Informatica per l Educazione A. A. 2014/2015 1 LEZIONE 11 IMPARIAMO A PROGRAMMARE: I DATI E LE VARIABILI A. A. 2014/2015 PRIMI PASSI La più semplice sequenza di istruzioni che possiamo scrivere è quella costituita da un solo comando. come si fa a

Dettagli

Linguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin

Linguaggio C. Vettori, Puntatori e Funzioni Stringhe. Università degli Studi di Brescia. Prof. Massimiliano Giacomin Linguaggio C Vettori, Puntatori e Funzioni Stringhe Università degli Studi di Brescia Prof. Massimiliano Giacomin SCHEMA DELLA LEZIONE RELAZIONE TRA VETTORI E PUNTATORI (e le stringhe letterali come caso

Dettagli

Il linguaggio C. Puntatori e Array

Il linguaggio C. Puntatori e Array Il linguaggio C Puntatori e Array Puntatori I puntatori sono variabili i cui valori sono indirizzi di locazioni in cui sono memorizzate altre variabili architettura a 32 bit: 232-1 indirizzi, ma non si

Dettagli

C: panoramica. Violetta Lonati

C: panoramica. Violetta Lonati C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati

Dettagli