Tipi di Dato Derivati

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Tipi di Dato Derivati"

Transcript

1 Un tipo di dato derivato è ottenuto a partire da tipi di dato predefiniti attraverso gli operatori *, &, [] definendo enumerazioni definendo struct I tipi di dato derivati non sono tipi di dati nuovi, ma semplice composizione di tipi di dati esistenti /02 1

2 Array Un array è un insieme di oggetti dello stesso tipo referenziati da un unico identificatore Gli oggetti dell array sono referenziati tramite l identificatore dell array e la loro posizione nell insieme (indicizzazione) int ia[10]; int i = ia[2]; ia[7] = i; // ia è un vettore di 10 interi // copia il terzo elemento di ia in i // copia i sull' ottavo elemento di ia La dimensione dell array può essere qualsiasi espressione costante non può essere variabile 2 Indicizzazione di un Array Le posizioni degli oggetti in un array si contano da 0 Il compilatore non effettua nessun controllo sulla correttezza dell indicizzazione char c[7]; c[7] = `Y ; // scrive Y nell ottavo elemento di c Indicizzazione errata implica un accesso ad aree di memoria non allocate all array Può provocare errori in esecuzione (segmentation fault) Può distruggere i dati del programma /02 2

3 Inizializzazione di un Array L array è inizializzato dando la lista dei valori int ia[3] = {0, 1, 2}; Se il vettore è inizializzato si può non specificare la dimensione int ia[] = {0, 1, 2}; E possibile inizializzare parzialmente un array int ia[3] = {1}; // ia[0] = 1, gli altri elementi valgono 0 4 Array di char E possibile inizializzare un array di char con una stringa costante Una stringa è un array di char con il simbolo finale `\0 const char ca[] = {`C, `+, `+ }; // ca lungo 3 const char ca[] = C++ ; // ca lungo 4 const char ca[5] = prova ; // ERRORE /02 3

4 Operazioni su Array Non è possibile inizializzare o assegnare un array ad un altro array int ia[] = {1, 2, 3}; int ia2[] = ia; Se si vuole copiare un array bisogna copiare un elemento per volta for(int i = 0; i<3; i++) ia2[i] = ia[i]; // ERRORE 6 Array Multidimensionali Si definisce un array multidimensionale specificando ogni dimensione tra parentesi quadre char a[3][4]; // matrice di 3 righe e 4 colonne Un array bidimensionale è un array di array a a[0] a[1] a[2] /02 4

5 Inizializzazione di Array Multidimensionali Un array bidimensionale è un array di array ogni array inizializzato separatamente int ia[3][4] = {{0, 1, 2, 3}, {4, 5, 6, 7}, {8, 9, 10, 11}}; int ia[3][4] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}; E possibile inizializzare parzialmente un array multidimensionale int ia[3][4] = {0, 1, 2, 3}; int ia[3][4] = {{0}, {4}, {8}}; 8 Accesso a Array Multidimensionali Per accedere ad un elemento di un array multidimensionale bisogna specificare ogni indice in una parentesi quadra int i = ia[2][3]; i = ia[2, 3]; // ERRORE cosa fa in realtà l'istruzione errata? assegna ia[3] ad i ia[3] è un array /02 5

6 Relazione tra Array e Puntatori Alla definizione di un array il compilatore alloca spazio per contenere tutti gli elementi dell array e definisce un puntatore inizializzato con l indirizzo del primo byte allocato char ac[5]; nome tipo indir. ac char* 10 Tipo di un Array Il tipo di un array è puntatore al tipo degli oggetti dell array Ogni operazione di indicizzazione è implementata attraverso l aritmetica dei puntatori ia[4] = 3; // implementata come *(ia + 4) = 3 m[1][2] = 0; /* implementata come *(*(m + 1) + 2) = 0 */ /02 6

7 Tipo di un Array L identificatore dell array si comporta come un puntatore costante E sempre possibile assegnare un array ad un puntatore dello stesso tipo char buffer[256]; char *p = buffer; // p indirizza il primo elemento di buffer Non è possibile assegnare un puntatore ad un array buffer = p; // ERRORE 12 Differenze tra Array e Puntatori La definizione di un array implica allocazione di memoria per tutti gli oggetti dell array e per il puntatore che li indirizza La definizione di un puntatore implica allocazione di memoria per un indirizzo /02 7

8 Il Contenitore vector La classe vector della libreria standard è una valida alternativa agli array stile C #include <vector> Differenze tra vector e array // include definizione classe vector È possibile definire vector di dimensione variabile è possibile modificare le dimensioni di un vector Non è possibile inizializzare esplicitamente oggetti vector È possibile assegnare un vector ad un altro vector Esistono operazioni su vector 14 Definizione di oggetti vector vector<t> a; /* Definisce un vettore di tipo T il cui identificatore è a e la cui dimensione è 0 */ vector<t> a(5); // equivale a T a[5]; // Definisce un vettore di tipo T di 5 elementi vector<t> a(5, 4); // equivale a T a[] = {4, 4, 4, 4, 4} /* Definisce un vettore di tipo T di 5 elementi inizializzati con 4 */ /02 8

9 Accesso a elementi di vector L'accesso al vector può essere fatto tramite l'operatore [] Simile all'accesso agli array #include <vector> vector<int> vec(10); for(int i = 1; i <= 10; ++i) vec[i] = i; 16 Accesso a elementi di vector stile STL E' possibile accedere agli elementi del vector in maniera indipendente dalla rappresentazione della classe stessa tecnica per accedere ad ogni tipo di classe contenitore #include <vector> vector<int> vec(10); vector<int>::iterator it = vec.begin(); for(int i = 0; it!= vec.end(); ++i, ++it) *it = i; /02 9

10 Iteratori L'iteratore è una classe che implementa l'astrazione del puntatore operazioni ammissibili =, *, ++, -- ogni contenitore ha la propria implementazione di iteratore, definita all'interno della classe Ogni contenitore fornisce metodi per recuperare indirizzi di suoi elementi tramite iteratori è possibile accedere e scorrere gli elementi di tutti i contenitori alla stessa maniera vector<t>::begin(); // primo elemento di vector vector<t>::end(); // elemento successivo all ultimo 18 Alcuni metodi della classe vector empty() // restituisce vero se il vettore è vuoto size() // restituisce # di elementi nel vettore capacity() // restituisce la grandezza del vettore resize(n) // la nuova dimensione del vettore è N push_back(x) // aggiunge x alla fine del vettore pop_back() // elimina l ultimo elemento del vettore per utilizzare i metodi della classe vector si usa l'operatore di selezione vector<int> v; v.metodo(); /02 10

11 Ridimensionamento dinamico di vector un oggetto vector può essere allungato dinamicamente senza allocare esplicitamente la memoria #include <vector> #include <iostream> vector<string> testo; string parola; while(cin >> parola) testo.push_back(parola); cout << "Le parole lette sono:" << endl; for(vector<string>::iterator it = testo.begin(); it!= testo.end(); ++it) cout << *it << ' '; cout << endl; 20 Algoritmi su vector La libreria standard fornisce una serie di algoritmi generici per operare su qualsiasi tipo di contenitore algoritmi di ricerca ed ordinamento find(), find_if(), search(), binary_search(), count(), count_if() sort(), merge(), partition(), reverse(), rotate(), random_shuffle() algoritmi di creazione e cancellazione generate(), fill(), transform(), copy(), for_each(), remove(), unique() algoritmi relazionali e numerici equal(), min(), max() partial_sum(), inner_product(), accumulate(), adjacent_differences() /02 11

12 Esempio uso vector #include <vector> #include <algorithm> #include <iostream> main() { int ia[10] = {51, 23, 7, 88, 41, 98, 12, 103, 37, 6}, x; vector<int> vec(ia, ia+10); sort(vec.begin(), vec.end()); reverse(vec.begin(), vec.end()); cin >> x; vector<int>::iterator trovato; trovato = find(vec.begin(), vec.end(), x); if(trovato!= vec.end()) cout << "valore trovato" << endl; else cout << "valore non presente" << endl; } 22 Stringhe Una stringa (stile C) è un array di caratteri indirizzato attraverso un puntatore Il tipo di una stringa è char* char *s = ciao mondo\n ; Una stringa è rappresentata in memoria da una sequenza di caratteri seguiti dal segnale di fine stringa (`\0 ) /02 12

13 Esempio Stringhe Calcolare la lunghezza della stringa ciao mondo\n #include <iostream> char *st = ciao mondo\n ; int main() { int lung = 0; char *p = st; while( *p!= `\0 ) { lung = lung + 1; p = p+1; } cout << lunghezza di << st << = << lung; return 0; } 24 Operazioni sulle Stringhe La libreria standard del C fornisce funzioni per effettuare alcune operazioni su stringhe #include <cstring> int strlen(const char* s); // calcola lunghezza di s int strcmp(const char* s, const char* t); // controlla se s e t sono uguali int strcpy(const char* s, const char* t); // copia t su s /02 13

14 Il Tipo string La libreria standard fornisce una nuova implementazione delle stringhe come classe Principali differenze Inizializzare una stringa con un'altra stringa Copia di stringhe Accesso ai singoli elementi della stringa Operazioni di confronto tra stringhe Operazioni di concatenazione e calcolo lunghezza Operazioni di manipolazione stringhe Controllo stringa vuota Conversione a stringa C-style 26 Esempio uso di string Calcolare la lunghezza della stringa ciao mondo\n #include <iostream> #include <string> string st = ciao mondo\n ; int main() { int lung = st.size(); cout << lunghezza di << st << = << lung; return 0; } /02 14

15 Alcuni metodi della classe string bool empty() // restituisce vero se la stringa è vuota int size() // restituisce # di caratteri nella stringa string operator+(const string&) string operator+=(const string&) // concatena due stringhe const char* c_str() // converte la stringa in stile C 28 Enumerazioni Un enumerazione è un insieme di costanti simboliche intere Insieme di attributi da associare ad un oggetto enum stato { caldo, freddo }; // caldo = 0, freddo = 1; Gli enumeratori non sono singolarmente indirizzabili non si può applicare l operatore (&) ad un enumeratore Definizione di un enumerazione enum colore { giallo, rosso, verde = 1, bianco }; // giallo = 0, rosso = 1, verde = 1, bianco = /02 15

16 Enumerazioni E possibile definire una variabile del tipo definito da un enumerazione colore vernice = giallo; //vernice può assumere solo i valori giallo, rosso, verde e bianco Non è possibile assegnare valori interi ad una variabile di tipo enumerazione E' possibile assegnare una variabile di tipo enumerazione ad una variabile int vernice = giallo; // giallo contiene il valore 0 vernice = 0; // ERRORE int i = vernice; // i = 0 30 Tipo bool Una variabile di tipo bool può assumere come valori solo i valori true e false bool trovato = false; /02 16

17 Struct Uno struct è un insieme di oggetti, non necessariamente dello stesso tipo, memorizzati sequenzialmente ed identificati da un unico nome Gli elementi di uno struct sono referenziati attraverso l identificatore dello struct ed il loro specifico identificatore attraverso gli operatori di selezione (.) e (->) struct record { string nome, cognome, indirizzo; int eta; }; record dipendente; dipendente.nome = mario ; 32 Classi La classe è una generalizzazione dello struct Insieme di oggetti e funzioni (metodi) che operano su questi oggetti Ogni elemento di una classe ha un livello di visibilità Una funzione può accedere soltanto agli elementi di visibilità public di oggetti della classe Per ogni classe si definisce un interfaccia pubblica che consente di interagire con oggetti di quella classe l interfaccia pubblica è un insieme di metodi che hanno visibilità public La classe implementa il concetto di Abstract Data Type string e vector<t> sono classi /02 17

18 Esempio di classe String class String { public: String(); String(const char *); String(const String&); ~String(); String& operator=(const String&); bool operator==(const String&); char& operator[](int); int size(); char* c_str(); private: int dim; char *arr; }; // String str; // String str("ciao"); // String str1 = str; 34 Typedef L operatore typedef consente di assegnare un identificatore ad un tipo di dato derivato Il typedef non crea un nuovo tipo di dato typedef char* stringa; Il tipo definito dal typedef può essere utilizzato come specificatore di tipo in una definizione o dichiarazione stringa c = ciao ; Il typedef è usato per diminuire la complessità notazionale delle definizioni /02 18

19 Variabili Volatili Una variabile è dichiarata volatile se il suo valore può cambiare al di fuori del controllo del programma Variabili che leggono il time dal sistema Il compilatore deve evitare di applicare tecniche di ottimizzazione del codice a queste variabili volatile int time; volatile char* buffer; /02 19

Lezione 3 Tipi di Dato Derivati

Lezione 3 Tipi di Dato Derivati Lezione 3 Un tipo di dato derivato è ottenuto a partire da tipi di dato predefiniti attraverso gli operatori *, &, [] definendo enumerazioni definendo struct I tipi di dato derivati non sono tipi di dati

Dettagli

Tipi strutturati - struct

Tipi strutturati - struct Fondamenti di Programmazione A Appunti per le lezioni Gianfranco Rossi Tipi strutturati - struct Struttura dati (concreta) struct: sequenza di n elementi (n 0), rispettivamente di tipo t1,,tn (non necessariamente

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 2017

Dettagli

La Standard Template Library Heap, algoritmi e funtori

La Standard Template Library Heap, algoritmi e funtori La Standard Template Library Heap, algoritmi e funtori Pericle Perazzo 27 maggio 2011 Riassunto contenitori e iteratori Un contenitore è un oggetto che contiene un insieme di altri oggetti di tipo omogeneo

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

L AMBIENTE CODE BLOCKS E L IO

L AMBIENTE CODE BLOCKS E L IO L AMBIENTE CODE BLOCKS E L IO Il primo programma in C++ #include using namespace std; main() { cout

Dettagli

Tipi derivati. Strutture Matrici typedef enum

Tipi derivati. Strutture Matrici typedef enum Tipi derivati Strutture Matrici typedef enum Le strutture Una struttura, o struct, è un tipo di dato derivato che permette di aggregare un insieme di elementi, detti campi, all'interno di un unica entità

Dettagli

I tipi strutturati e i record in C++

I tipi strutturati e i record in C++ I tipi strutturati e i record in C++ Docente: Ing. Edoardo Fusella Dipartimento di Ingegneria Elettrica e Tecnologie dell Informazione Via Claudio 21, 4 piano laboratorio SECLAB Università degli Studi

Dettagli

Puntatori e array. Violetta Lonati

Puntatori e array. Violetta Lonati Puntatori e array Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Violetta Lonati Puntatori e array

Dettagli

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella

Università degli Studi di Cassino Corso di Fondamenti di Informatica Tipi strutturati: Stringhe. Anno Accademico 2010/2011 Francesco Tortorella Corso di Informatica Tipi strutturati: Stringhe Anno Accademico 2010/2011 Francesco Tortorella Stringhe di caratteri La stringa è il tipo strutturato con cui vengono rappresentati gruppi di caratteri quali

Dettagli

Ripasso R1. Dati strutturati. Esempi. Array. Dichiarazione di un array. Dichiarazione di un array in C

Ripasso R1. Dati strutturati. Esempi. Array. Dichiarazione di un array. Dichiarazione di un array in C Ripasso R1 Dati strutturati Aggregazione di dati omogenei: gli array Spesso gli algoritmi lavorano su insiemi di dati omogenei. o l insieme dei valori reali che rappresentano le temperature medie delle

Dettagli

Laboratorio di Algoritmi e Strutture Dati. Esercizi

Laboratorio di Algoritmi e Strutture Dati. Esercizi Laboratorio di Algoritmi e Strutture Dati Esercizi Teresa M.A. Basile basile@di.uniba.it Dipartimento di Informatica Università degli Studi di Bari Aldo Moro 1 Operatori Indispensabili Ogni Classe che

Dettagli

Programmazione I Prova scritta - 10 gennaio h20min

Programmazione I Prova scritta - 10 gennaio h20min Programmazione I Prova scritta - 10 gennaio 2019-1h20min NOTA: Nei programmi si trascuri ogni problema legato al tipo ed al valore di ritorno della funzione main, inoltre si sottintenda la presenza delle

Dettagli

Introduzione alla STL

Introduzione alla STL Introduzione alla STL Corso di Linguaggi di Programmazione ad Oggetti 1 a cura di: Giancarlo Cherchi Introduzione Cosa s intende per STL? STL? Standard Template Library E una libreria di programmazione

Dettagli

4 GLI ARRAY E LE STRINGHE

4 GLI ARRAY E LE STRINGHE 13 4 GLI ARRAY E LE STRINGHE 4.1 Gli array monodimensionali Un array è un insieme di variabili dello stesso tipo, cui si fa riferimento mediante uno stesso nome. L accesso ad un determinato elemento si

Dettagli

ARRAY DI PUNTATORI. ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori

ARRAY DI PUNTATORI. ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori 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

Corso di Fondamenti di Informatica Tipi strutturati: Stringhe

Corso di Fondamenti di Informatica Tipi strutturati: Stringhe Corso di Fondamenti di Informatica Tipi strutturati: Stringhe Anno Accademico Francesco Tortorella Stringhe di caratteri La stringa è il tipo strutturato con cui vengono rappresentati gruppi di caratteri

Dettagli

Fondamenti di C++ Input/Output di base

Fondamenti di C++ Input/Output di base Università della Calabria Corso di Laurea in Ingegneria Elettronica Programmazione Orientata agli Oggetti A.A. 2006/2007 Fondamenti di C++ Paolo Trunfio * * DEIS, Università della Calabria http://si.deis.unical.it/~trunfio

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

L AMBIENTE CODE BLOCKS E L IO

L AMBIENTE CODE BLOCKS E L IO L AMBIENTE CODE BLOCKS E L IO Il primo programma #include main() { printf("ciao Mondo!"); } Il file deve essere salvato con estensione.c Il primo programma in C++ #include using

Dettagli

Capitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61

Capitolo 5. Array e collezioni. c 2005 Pearson Education Italia Capitolo 5-1 / 61 Capitolo 5 Array e collezioni c 2005 Pearson Education Italia Capitolo 5-1 / 61 Sommario: Array e collezioni 1 Array Array di oggetti Lunghezza di un array Accesso agli elementi di un array Array e cicli

Dettagli

Esercitazione di Reti degli elaboratori

Esercitazione di Reti degli elaboratori Esercitazione di Prof.ssa Chiara Petrioli Christian Cardia, Gabriele Saturni Cosa vedremo in questa lezione? Gli Array Gli array multidimensionali Le stringhe I puntatori Esercizi Pagina 1 Gli Array Definizione

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

Linguaggio C: Stringhe Valeria Cardellini

Linguaggio C: Stringhe Valeria Cardellini Linguaggio C: Stringhe Valeria Cardellini Corso di Calcolatori Elettronici A.A. 2018/19 Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Argomenti q

Dettagli

Le stringhe. Un vettore di caratteri non è necessariamente una stringa perché non sempre termina con \0.

Le stringhe. Un vettore di caratteri non è necessariamente una stringa perché non sempre termina con \0. LE STRINGHE IN C++ Le stringhe Si usano per rappresentare parole, frasi, codici alfanumerici e più in generale qualunque tipo di sequenza numerica non aritmetizzabile. In C e C++ non esiste un vero e proprio

Dettagli

Lezione 8: Stringhe ed array multidimensionali

Lezione 8: Stringhe ed array multidimensionali Lezione 8: Stringhe ed array multidimensionali Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione AVVISO: la lezione di laboratorio di 28/5 non si

Dettagli

Corso di Fondamenti di Informatica

Corso di Fondamenti di Informatica Corso di Fondamenti di Informatica Il tipo puntatore; l allocazione dinamica della memoria Claudio De Stefano - Corso di Fondamenti di Informatica 1 puntatori una variabile di tipo puntatore al tipo x

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

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - Programma 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

Corso di Fondamenti di Programmazione canale E-O. Strutture. Strutture. Definizione di strutture (2) Definizione di strutture (1)

Corso di Fondamenti di Programmazione canale E-O. Strutture. Strutture. Definizione di strutture (2) Definizione di strutture (1) Corso di Fondamenti di Programmazione canale E-O Tiziana Calamoneri Strutture e Unioni DD Cap. 10, pp. 379-391, 405-406 KP Cap. 9, pp. 361-379 Strutture Strutture Collezioni di variabili correlate (aggregati)

Dettagli

I Dati Strutturati ed il Linguaggio C

I Dati Strutturati ed il Linguaggio C 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 Dati Strutturati Esigenze Vettori

Dettagli

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1

Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Informatica 1 Tipi e dichiarazioni in C++ C++ - Tipi e dichiarazioni 1 Cosa è il C++ E un linguaggio di programmazione derivato dal C Può essere usato per modificare il SO Unix e i suoi derivati (Linux)

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

Sovrapposizione di Funzioni

Sovrapposizione di Funzioni Sovrapposizione di un Nome La sovrapposizione (overloading) è un meccanismo che consente di assegnare ad un nome significati differenti Quando il nome viene utilizzato in una frase il significato corretto

Dettagli

Stringhe in C. Luca Abeni. Informatica Luca Abeni 1 / 10

Stringhe in C. Luca Abeni. Informatica Luca Abeni 1 / 10 Stringhe in C Luca Abeni Informatica Luca Abeni 1 / 10 Stringhe in C Stringhe: tipo di dato strutturato Sequenze di caratteri Linguaggio C: progettato per la semplicità No supporto nativo per le stringhe

Dettagli

La classe string. Tale classe evita agli utilizzatori tutte le problematiche di allocazione e de-allocazione dei buffer di caratteri

La classe string. Tale classe evita agli utilizzatori tutte le problematiche di allocazione e de-allocazione dei buffer di caratteri La classe string La libreria standard del del C++ definisce la classe string, dichiarata in , per la rappresentazione e manipolazione di stringhe. Tale classe evita agli utilizzatori tutte le problematiche

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

Esercizio 2: Algebra dei Puntatori e Puntatori a Puntatori

Esercizio 2: Algebra dei Puntatori e Puntatori a Puntatori Esercizio 2: Algebra dei Puntatori e Puntatori a Puntatori Salvatore Mandrà 7 Ottobre 2008 1 Esercizio L esercizio prevede l implementazione di funzioni per il prodotto di una matrice per un vettore, attraverso

Dettagli

Quando è necessario elaborare una certa quantità di dati omogenei si possono usare variabili indicizzate: int a0, a1, a2;

Quando è necessario elaborare una certa quantità di dati omogenei si possono usare variabili indicizzate: int a0, a1, a2; Array Quando è necessario elaborare una certa quantità di dati omogenei si possono usare variabili indicizzate: int a0, a1, a2; Il C supporta questo uso attraverso il tipo di dati array (o vettore): int

Dettagli

Esempio: Mergesort. void mergesort(int *a, int *b, int l, int r) { int i,j,k,m;

Esempio: Mergesort. void mergesort(int *a, int *b, int l, int r) { int i,j,k,m; Esempio: Giro del cavallo modificato: La dimensione del lato (e quindi della matrice che rappresenta la scacchiera) viene specificata da input, e la matrice allocata dinamicamente: #include #include

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

(Def. funzioni con parametri di tipo matrice)

(Def. funzioni con parametri di tipo matrice) ESERCIZIO 1 (Def. funzioni con parametri di tipo matrice) Scrivere un sotto-programma in linguaggio C++ che ricevuta una matrice quadrata come parametro restituisca al chiamante un valore booleano indicante

Dettagli

Introduzione al C Lez. 4

Introduzione al C Lez. 4 Introduzione al C Lez. 4 Allocazione Dinamica della memoria http://www.di.unipi.it/~rossano/algo1/lez4.pdf Allocazione dinamica memoria In C la memoria può essere anche gestita in modo dinamico, attraverso

Dettagli

Ingegneria Elettronica Ingegneria delle Telecomunicazioni (J-Z) Ing. Antonio Monteleone A.A. 2001/02 3 ciclo

Ingegneria Elettronica Ingegneria delle Telecomunicazioni (J-Z) Ing. Antonio Monteleone A.A. 2001/02 3 ciclo Ingegneria Elettronica Ingegneria delle Telecomunicazioni (J-Z) Ing. Antonio Monteleone A.A. 2001/02 3 ciclo In C++ è possibile distinguere due aree distinte di memoria: memoria stack e memoria heap E

Dettagli

Introduzione alle stringhe e algoritmi collegati

Introduzione alle stringhe e algoritmi collegati Introduzione alle stringhe e algoritmi collegati Algoritmicamente August 15, 2009 1 Introduzione 1.1 Introduzione ai caratteri In informatica o più generalmente in una terminologia scientifica, il carattere

Dettagli

Gestione di stringhe. Le stringhe in C/C++

Gestione di stringhe. Le stringhe in C/C++ Alessio Bechini - Corso di - Gestione di stringhe Parte del materiale proposto è stato gentilmente fornito da G. Lipari Le stringhe in C/C++ In C e in C++ non esiste un vero e proprio tipo stringa. Una

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Tipi Strutturati Parte 7 Dettagli e Approfondimenti versione 2.0 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima

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

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 Soluzione della prova scritta del 31 Gennaio 2006 Esercizio 1 (4 punti) Elencare i tipi di dato predefiniti del linguaggio C, precisandone il dominio e le operazioni principali

Dettagli

Informatica Applicata

Informatica Applicata Ing. Irina Trubitsyna Elementi di base di un programma Dichiarazione dei dati in un programma Sommario Panoramica Elementi di Base di un Programma Struttura Direttive Elementi Sintattici di Base Commenti

Dettagli

Introduzione al C++ Parte 2

Introduzione al C++ Parte 2 Introduzione al C++ Parte 2 Sommario Le differenze fra C e C++ il qualificatore const i namespace gli stream Evitare modifiche accidentali Il qualificatore const indica che la variabile non può più essere

Dettagli

Strutture come parametri di funzioni

Strutture come parametri di funzioni Strutture come parametri di funzioni int main() { struct PolReg { int numlati; float lunghezzalato; PolReg p1; p1.numlati = 3; p1.lunghezzalato = 10.0; float perimetro = p1.numlati * p1.lunghezzalato;

Dettagli

definisce un vettore di 4 puntatori a carattere (allocata memoria per 4 puntatori)!

definisce un vettore di 4 puntatori a carattere (allocata memoria per 4 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 (allocata

Dettagli

La classe std::vector della Standard Template Library del C++

La classe std::vector della Standard Template Library del C++ La classe std::vector della Standard Template Library del C++ Alberto Garfagnini Università degli studi di Padova 23 Ottobre 2013 Programmazione generica in C++ : i Template I templates sono probabilmente

Dettagli

Esercitazioni di Fondamenti di Informatica - Lez. 7 20/11/2018

Esercitazioni di Fondamenti di Informatica - Lez. 7 20/11/2018 Esercitazioni di Fondamenti di Informatica - Lez. 7 0/11/018 Esercizi sull allocazione dinamica della memoria in C 1. Cosa stampa il seguente programma? 1 #d e f i n e MAXLENGTH 0 4 typedef struct { char

Dettagli

Gli array Array multidimensionali I puntatori L aritmetica dei puntatori Puntatori ed array I reference L attributo const a puntatori e reference

Gli array Array multidimensionali I puntatori L aritmetica dei puntatori Puntatori ed array I reference L attributo const a puntatori e reference Sintassi III Parte Indice Gli array Array multidimensionali I puntatori L aritmetica dei puntatori Puntatori ed array I reference L attributo const a puntatori e reference Array Per un tipo T t[size] è

Dettagli

Puntatori in C Lucidi della Pof.ssa Pazienza

Puntatori in C Lucidi della Pof.ssa Pazienza Puntatori in C Lucidi della Pof.ssa Pazienza http://www.uniroma2.it/didattica/foi2/ Puntatori L operatore di indirizzo & Indirizzi, puntatori Aritmetica dei puntatori L operatore di dereferenziazione *

Dettagli

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

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

Dettagli

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

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

Dettagli

Dati due punti sul piano calcolare la loro distanza

Dati due punti sul piano calcolare la loro distanza Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12

Dettagli

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

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

Dettagli

Elementi di Informatica

Elementi di Informatica Corso di Laurea triennale in Ingegneria Chimica in condivisione con Corso di Laurea triennale in Ingegneria Navale e Scienze dei Materiali Elementi di Informatica A.A. 2016/17 prof. Mario Barbareschi Tipi

Dettagli

Introduzione al linguaggio C Dati aggregati

Introduzione al linguaggio C Dati aggregati Introduzione al linguaggio C Dati aggregati Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica 5 ottobre

Dettagli

Variabili e Funzioni. Informatica 1 / 19

Variabili e Funzioni. Informatica 1 / 19 Variabili e Funzioni Informatica 1 / 19 Programmi C e Un programma C e composto da funzioni e variabili Variabile: memorizza valori appartenenti ad un insieme di definizione (dipendente dal tipo) Funzione:

Dettagli

Sommario. Tipo stringa: string. Tipo stringa: stile C. Tipo stringa Tipo booleano

Sommario. Tipo stringa: string. Tipo stringa: stile C. Tipo stringa Tipo booleano Tipo stringa Tipo booleano Sommario Ricorsione: Definizione Chiamata di funzione Ricorsione in coda Ricorsione non in coda Ricorsionei eccessiva Esempio di ricorsione: ricerca binaria Tipo stringa Il C++

Dettagli

Un tipo di dato astratto (ADT) definisce una categoria concettuale con le sue proprietà: una definizione di tipo

Un tipo di dato astratto (ADT) definisce una categoria concettuale con le sue proprietà: una definizione di tipo TIPI DI DATO ASTRATTO Un tipo di dato astratto (ADT) definisce una categoria concettuale con le sue proprietà: una definizione di tipo implica un dominio, D un insieme di operazioni ammissibili su oggetti

Dettagli

Standard Template Library

Standard Template Library Standard Template Library Standard Template Library Progettata per gestire insiemi di dati in modo comodo ed efficiente senza conoscere dettagli implementativi Fa parte dello standard C++ È basata a sulla

Dettagli

Lezione 8 Struct e qsort

Lezione 8 Struct e qsort Lezione 8 Struct e qsort Rossano Venturini rossano@di.unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Esercizio 3 QuickSort strambo Modificare il Quicksort

Dettagli

Laboratorio di Algoritmi

Laboratorio di Algoritmi Laboratorio di Algoritmi Corso di Laurea in Matematica Roberto Cordone DI - Università degli Studi di Milano Lezioni: Martedì 8.30-10.30 in aula 3 Mercoledì 10.30-12.30 in Aula 2 Giovedì 8.30-10.30 in

Dettagli

Stringhe in C. Nicu Sebe. Informatica Nicu Sebe 1 / 14

Stringhe in C. Nicu Sebe. Informatica Nicu Sebe 1 / 14 Stringhe in C Nicu Sebe Informatica Nicu Sebe 1 / 14 Stringhe in C Stringhe: tipo di dato strutturato Sequenze di caratteri Linguaggio C: progettato per la semplicità No supporto nativo per le stringhe

Dettagli

Linguaggio C: Array Valeria Cardellini

Linguaggio C: Array Valeria Cardellini Linguaggio C: Array Valeria Cardellini Corso di Calcolatori Elettronici A.A. 2018/19 Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Array in C q Dichiarazione

Dettagli

Corso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica

Corso di Fondamenti di Informatica. Puntatori e Allocazione Dinamica Corso di Fondamenti di Informatica Puntatori e Allocazione Dinamica I puntatori (Richiamo) Il C++ prevede puntatori a dati di qualsiasi natura, semplici o strutturati e puntatori a funzione. In particolare

Dettagli

Allocazione Dinamica della Memoria

Allocazione Dinamica della Memoria Allocazione Dinamica della Memoria Elisa Marengo Università degli Studi di Torino Dipartimento di Informatica Elisa Marengo (UNITO) Allocazione Dinamica della Memoria 1 / 10 Scelta delle variabili Quando

Dettagli

Introduzione al C Lez. 4. Allocazione Dinamica della memoria

Introduzione al C Lez. 4. Allocazione Dinamica della memoria Introduzione al C Lez. 4 Allocazione Dinamica della memoria Allocazione dinamica memoria In C la memoria può essere anche gestita in modo dinamico, attraverso l allocazione esplicita di blocchi di memoria

Dettagli

Array. Unità 7. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Array. Unità 7. 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

La programmazione Object Oriented e le sue applicazioni in Fisica.

La programmazione Object Oriented e le sue applicazioni in Fisica. La programmazione Object Oriented e le sue applicazioni in Fisica. Gabriella Cataldi, INFN Lecce Daniele Martello, dip. Fisica & INFN Lecce definizione di variabili Un metodo per automatizzare il processo

Dettagli

Lezione 12: Allocazione Dinamica della Memoria

Lezione 12: Allocazione Dinamica della Memoria Lezione 12: Allocazione Dinamica della Memoria Laboratorio di Elementi di Architettura e Sistemi Operativi 17 Aprile 2013 Puntatori e vettori Puntatori ed indirizzi Semplificando, la memoria di un computer

Dettagli

Le strutture /1. struct temp {char titolo[200]; char autore[100]; int pagine; } ; typedef struct temp libro;

Le strutture /1. struct temp {char titolo[200]; char autore[100]; int pagine; } ; typedef struct temp libro; Le strutture /1 Le strutture rappresentano un tipo di variabile che, diversamente dagli array, consente di gestire in modo compatto, mediante un'unico identificatore, un insieme di valori che non possiedano

Dettagli

Programmazione template

Programmazione template Programmazione template Funzionalità ed operatori Anche se con comportamenti simili, i vari tipi (int, float, double) in C++ non sono interscambiabili automaticamente una medesima azione (es. la somma)

Dettagli

Variabili e Costanti

Variabili e Costanti Struttura di un Programma C++ Un programma descrive una sequenza di azioni ogni azione è descritta da una espressione un insieme di espressioni seguite da ; è un istruzione espressione = più piccola unità

Dettagli

Lezione 6 Struct e qsort

Lezione 6 Struct e qsort Lezione 6 Struct e qsort Rossano Venturini rossano.venturini@unipi.it Pagina web del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start Struct Struct Fino ad ora abbiamo utilizzato

Dettagli

Per fare riferimento ad un elemento, specificare il nomedel vettore. numerodi posizione(indice)

Per fare riferimento ad un elemento, specificare il nomedel vettore. numerodi posizione(indice) Vettore(Array monodimensionale) Sequenza di posizioniconsecutive (o locazioni di memoria) che vengono chiamate elementi del vettore Gli elementi hanno tutti lo stesso nomee sono tutti dell stesso tipo

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

Esercitazioni di Fondamenti di Informatica - Lez. 4 23/10/2018

Esercitazioni di Fondamenti di Informatica - Lez. 4 23/10/2018 Esercitazioni di Fondamenti di Informatica - Lez. 4 2/0/20 Esercizi sui tipi in C I codici e le soluzioni degli esercizi sono nella cartella parte. Dato il seguente codice, trovare gli errori, correggerli

Dettagli

Strutture. Array dei nomi degli esami (MAX ESAMI è il massimo numero degli esami). Array con i crediti degli esami.

Strutture. Array dei nomi degli esami (MAX ESAMI è il massimo numero degli esami). Array con i crediti degli esami. Consideriamo l esercizio assegnato la scorsa lezione per rappresentare il libretto di uno studente. Per memorizzare i dati si sono utilizzati tre array: char* nomiesami[max ESAMI] Array dei nomi degli

Dettagli

Programmazione generica

Programmazione generica Programmazione generica Il C++ fornisce un metodo per creare un polimorfismo parametrico. E possibile utilizzare lo stesso codice per tipi differenti: il tipo della variabile diventa un parametro template

Dettagli

Laboratorio di programmazione

Laboratorio di programmazione Laboratorio di programmazione Lezione IX Tatiana Zolo zolo@cs.unipr.it 1 TIPI STRINGA Il C++ fornisce due rappresentazioni: stringa di caratteri stile C e la classe stringa introdotta nel C++ standard.

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

Struct, enum, Puntatori e Array dinamici

Struct, enum, Puntatori e Array dinamici Struct, enum, Puntatori e Array dinamici Tratti dal corso del Dr. Francesco Fabozzi Corso di Informatica Tipi di dato in C Abbiamo esaminato diversi tipi di dato che il C mette a disposizione dell utente

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Strutture dati complesse Esempi di strutture dati complesse analizzate in questa lezione: Fondamenti di Informatica 21. Strutture di dati complesse in C++ Array di puntatori Pila (Stack) Coda (queue) Liste

Dettagli

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

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

Dettagli

Fondamenti di Informatica 12. Linguaggio C -4

Fondamenti di Informatica 12. Linguaggio C -4 Strutture Dati in C Le strutture dati sono entità che permettono di memorizzare dati in modo organizzato e funzionale a particolari esigenze Fondamenti di Informatica 12. Linguaggio C -4 Strutture Dati

Dettagli

#include <iostream> #include <cstring> #include <fstream> using namespace std; struct elem{ char parola[31]; elem *pun; };

#include <iostream> #include <cstring> #include <fstream> using namespace std; struct elem{ char parola[31]; elem *pun; }; #include #include #include using namespace std; struct elem{ char parola[31]; elem *pun; ; struct Dizionario{ elem *testa; ; void inizializzadizionario(dizionario &D){ D.testa

Dettagli

Esame di Ingegneria del software Appello del 16 febbraio 2018

Esame di Ingegneria del software Appello del 16 febbraio 2018 Esame di Ingegneria del software Appello del 16 febbraio 2018 Nome e cognome: Matricola: Il punteggio relativo a ciascuna domanda, indicato fra parentesi, è in trentesimi. I candidati devono consegnare

Dettagli

Sono variabili il cui valore corrisponde ad un indirizzo di memoria. Puntatori

Sono variabili il cui valore corrisponde ad un indirizzo di memoria. Puntatori Sono variabili il cui valore corrisponde ad un indirizzo di memoria Puntatori Dichiarazione di variabile puntatore Esistono puntatori per ogni tipo di variabile puntata Un dato puntatore può puntare solo

Dettagli

ARRAY E TYPEDEF. A volte è utile definire un nuovo tipo di dato come array. Si usa la solita sintassi del linguaggio C

ARRAY E TYPEDEF. A volte è utile definire un nuovo tipo di dato come array. Si usa la solita sintassi del linguaggio C A volte è utile definire un nuovo tipo di dato come array. Si usa la solita sintassi del linguaggio C Es typedef ; typedef char stringa[10]; dichiara che il tipo stringa è un array

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

Laboratorio di algoritmi e strutture dati

Laboratorio di algoritmi e strutture dati Laboratorio di algoritmi e strutture dati G. Melideo CdL in Informatica A.A. 2009/2010 G. Melideo (CdL in Informatica) Laboratorio di algoritmi e strutture dati A.A. 2009/2010 1 / 23 Indice 1 Richiami

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