Programmazione II. Lezione 16. Daniele Sgandurra 14/12/2010.
|
|
- Fausta Messina
- 6 anni fa
- Visualizzazioni
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 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
DettagliLezione 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,
DettagliCostanti 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
DettagliIl 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
DettagliIl 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
DettagliStrutture 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
DettagliCorso 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
DettagliLINGUAGGI 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
DettagliIL 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
DettagliIl 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;
DettagliTipi 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
DettagliAlgoritmi 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
Dettaglicap.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
DettagliIndice. 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
DettagliLinguaggio 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
DettagliIndice 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
DettagliMacchine 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
DettagliTipi 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
DettagliArray. 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
DettagliUtilizza 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
DettagliInformatica 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
DettagliInformatica 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:
DettagliIntroduzione 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
DettagliInformatica 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
DettagliGli 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
DettagliFondamenti 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
DettagliLaboratorio 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
DettagliLe 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
DettagliFunzioni, 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
DettagliUnità 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;
DettagliLinguaggi, 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
DettagliLA 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
Dettagli19 - 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
DettagliTipi 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
DettagliCaratteristiche 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
DettagliBasi 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
DettagliInformatica 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
DettagliRappresentazione 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
DettagliProgrammazione 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:
DettagliSistemi 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
DettagliEspressioni 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
DettagliFondamenti 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
DettagliMODULO 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
DettagliElementi 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
DettagliINTRODUZIONE 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
DettagliAppunti 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)
DettagliIntroduzione 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
DettagliIl 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
DettagliNon 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
DettagliSommario 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...
DettagliStrutture 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
DettagliUnità 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
DettagliArray 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
DettagliTipi 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
DettagliProgrammazione 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
DettagliModelli 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
DettagliTipi 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
DettagliIndice 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
DettagliCorso 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
DettagliProblema. 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
DettagliIntroduzione 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
DettagliELEMENTI 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
DettagliDescrizione 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
DettagliLinguaggi 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
DettagliStrutture. 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
DettagliArray 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
DettagliInformatica 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
DettagliPrimi 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
DettagliElementi 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
DettagliFasi 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
DettagliFondamenti 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
DettagliRappresentazione 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
DettagliVariabili. 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
DettagliIl 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
DettagliML è 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
DettagliIl 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
DettagliIntroduzione 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)
DettagliUniversità 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
DettagliDati 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
DettagliIntroduzione 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
DettagliEspressioni. 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
DettagliArray. 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
DettagliDalla 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
DettagliRappresentazione 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
DettagliL 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
DettagliIL 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
DettagliSviluppo 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
DettagliProgrammazione 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
DettagliCalcolo 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
DettagliParadigmi. 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
DettagliPer 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.
DettagliProva 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
DettagliCorso 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
DettagliModelli 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
DettagliFondamenti 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
DettagliIntroduzione 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
DettagliLEZIONE 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
DettagliLinguaggio 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
DettagliIl 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
DettagliC: 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