Template (1) Molte volte l operato di una funzione o le proprietà di una classe non dipendono dal tipo dei dati coinvolti
|
|
- Romeo Ferrari
- 7 anni fa
- Visualizzazioni
Transcript
1 Template (1) Molte volte l operato di una funzione o le proprietà di una classe non dipendono dal tipo dei dati coinvolti int sumvector(int *array, int n) { int sum(0); for (int i = 0; i < n; ++i) sum += array[i]; return (sum); double sumvector(double *array, int n) { double sum(0); for (int i = 0; i < n; ++i) sum += array[i]; return (sum); Il C++ permette, mediante l uso dei template, la definizione di funzioni e classi in modo parametrico rispetto ai tipi di dato coinvolti Laboratorio di Informatica Antonio Monteleone 131
2 Un template specifica una famiglia di Funzioni: funzioni template Classi: classi template Template (2) L uso dei template permette di scrivere il codice in modo del tutto generico, favorendone così il riutilizzo Una versione specifica di un template è detta istanza del template Il compilatore crea un opportuna istanza del template sostituendo ogni occorrenza di un parametro formale con il corrispondente parametro attuale Laboratorio di Informatica Antonio Monteleone 132
3 Funzioni Template (1) Una funzione template può essere parametrica rispetto al tipo del valore di ritorno, ai tipi dei suoi parametri, ai tipi delle sue variabili locali max.h template <class T> T max( T p1, T p2 ) { if ( p1 < p2 ) return p2; else return p1; parametri formali template <class T1, class T2, typename T3> return_type function( parameters ) { function_body Per il tipo T deve essere definito l operatore < #include max.h int main() { cout << max<int>(10,20) << endl; cout << max<float>(2.6,1.0) << endl; Laboratorio di Informatica Antonio Monteleone 133
4 Funzioni Template (2) E possibile effettuare l overload delle funzioni template template <class T> T max( T p1, T p2 ) {/*.. */ char *max(char *s1, char *s2) {/*.. */ template <class T> T max( T p1, T p2, T p3 ) {/*.. */ Nella definizione del template possono essere inclusi parametri numerici e parametri di default template <class T=int, int n=5> T fun (){ T temp[n]; int main() { //... int a = fun(); // parametri di default //... Laboratorio di Informatica Antonio Monteleone 134
5 int sumvector(int *array, int n) { int sum(0); for (int i = 0; i < n; ++i) sum += array[i]; return (sum); In modo del tutto generico: template <typename T> T sumvector(t *array, int n) { T sum; for (int i = 0; i < n; ++i) sum += array[i]; return (sum); Funzioni Template (3) double sumvector(double *array, int n) { double sum(0); for (int i = 0; i < n; ++i) sum += array[i]; return (sum); double darray[3] = {1.0, 2.2, 3.2; double dsum = sumvector(darray, 3); int iarray[5] = {1,5,6,2,8; int isum = sumvector(iarray,5); Nell uso: Laboratorio di Informatica Antonio Monteleone 135
6 Classi template (1) Una classe template permette di definire un nuovo tipo in modo parametrico sfruttando la genericità delle proprietà di tale tipo template <class T1, class T2, typename T3> class class_name { class_declaration ; template <class T> class Stack { int size, top; T *stackptr; public: Stack(int = 10); ~Stack(); bool push(const T &); bool pop(t &); ; parametri formali #include stack.h #include person.h int main() { Stack<int> intstack; intstack.push(8); Stack<Person> people(100); people.push(person( Rossi )); people.push(person( Bianchi )); Person p; people.pop(p); Laboratorio di Informatica Antonio Monteleone 136
7 Classi template (2) Nella definizione del template possono essere inclusi parametri numerici e parametri di default template <class T = int, int size = 10> class Stack { int size, top; T items[size]; public: Stack(); ~Stack(); bool push(const T &); bool pop(t &); ; #include stack.h #include person.h int main() { Stack<Person, 100> people; Stack<> intstack; // Laboratorio di Informatica Antonio Monteleone 137
8 Un esempio d uso di template: MyDbFieldT<T> (1) // in mydbfield.h // forward declaration class MyDbIntField; class MyDbDoubleField; class MyDbTextField; class MyDbDateField; class MyDbField { public: MyDbField(MyDbFieldType type) : m_type(type) { virtual ~MyDbField() { MyDbFieldType gettype() const { return m_type; virtual MyDbIntField *tointfield() {return 0; virtual MyDbDoubleField *todoublefield() {return 0; virtual MyDbTextField *totextfield() {return 0; virtual MyDbDateField *todatefield() {return 0; private: MyDbFieldType m_type; ; // tipi di campo ammissibili enum MyDbFieldType { MyDbFieldType_INT32 = 'I', MyDbFieldType_REAL = 'R', MyDbFieldType_TEXT = 'T', MyDbFieldType_DATE = 'D' ; Laboratorio di Informatica Antonio Monteleone 138
9 Un esempio d uso di template: MyDbFieldT<T> (2) // in mydbfield.h (continua) template <typename T> class MyDbFieldT : public MyDbField { public: MyDbFieldT(MyDbFieldType type, T value) : MyDbField(type), m_value(value) { void getvalue(t &value) { value = m_value; private: T m_value; ; //--- class MyDbIntField : public MyDbFieldT<int> { public: MyDbIntField(int val) : MyDbFieldT<int>(MyDbFieldType_INT32, val) { MyDbIntField *tointfield() { return this; ; Laboratorio di Informatica Antonio Monteleone 139
10 Un esempio d uso di template: MyDbFieldT<T> (3) // in mydbfield.h (continua) class MyDbDoubleField : public MyDbFieldT<double> { public: MyDbDoubleField(double val) : MyDbFieldT<double>(MyDbFieldType_REAL, val) { MyDbDoubleField *todoublefield() { return this; ; //---- class MyDbTextField : public MyDbFieldT<string> { public: MyDbTextField(string val) : MyDbFieldT<string>(MyDbFieldType_TEXT, val) { MyDbTextField *totextfield() { return this; ; Laboratorio di Informatica Antonio Monteleone 140
11 Un esempio d uso di template: MyDbFieldT<T> (4) // in mydbrecord.h #include <vector> #include mydbfield.h class MyDbRecord { public: MyDbRecord() { ~MyDbRecord() { Fields::iterator it = m_fields.begin(); for ( ; it!= m_fields.end(); ++it) delete *it; void add(mydbfield *field) { m_fields.push_back(field); int getfieldcount() const { return m_fields.size(); MyDbField *getfield(unsigned int index) const { assert(index>=0 && index<m_fields.size()); return m_fields[index]; private: typedef vector<mydbfield*> Fields; Fields m_fields; ; Laboratorio di Informatica Antonio Monteleone 141
12 Template di operatori relazionali (1) In generale è possibile implementare un qualunque operatore relazionale in termini di operator< (>,<=,>=) o operator== (!=) Poiché ciò è vero indipendentemente dal tipo specifico, l'implementazione di >, <=, >= e!= può essere effettuata in modo del tutto generico in termini di < e ==. // lab_relops.h namespace labinfo { template<typename T> bool operator!=(const T &a, const T &b) { return!(a == b); template<typename T> bool operator>(const T &a, const T &b) { return b < a; template<typename T> bool operator<=(const T &a, const T &b) { return!(b < a); template<typename T> bool operator>=(const T &a, const T &b) { return!(a < b); // namespace labinfo Laboratorio di Informatica Antonio Monteleone 142
13 #include lab_relops.h using namespace labinfo; class MyClass { int m_aa; public : MyClass(int aa) : m_aa(aa) { Template di operatori relazionali (2) friend bool operator<(const MyClass &a, const MyClass &b); ; bool operator<(const MyClass &a, const MyClass &b) { return a.m_aa < b.m_aa; int main() { MyClass a(12); MyClass b(20); assert(a < b && b > a); assert(b >= a && a <= b); Laboratorio di Informatica Antonio Monteleone 143
14 La classe MyClass definisce il solo operator<. Template di operatori relazionali (3) Sarà compito del compilatore istanziare gli operatori >, >= e <= a partire dalle corrispondenti funzioni template definite in lab_relops.h. operator!= non è istanziabile su MyClass poichémyclass non definisce operator== STL definisce proprio come funzioni template gli operatori relazionali!=, >, >= e <= all interno del namespace std::rel_ops. Per poterli utilizzare è necessario includere il file <utility> e riferirsi al namespace std::rel_ops mediante la direttiva using. #include <utility> using namespace std::rel_ops; // codice che utilizza gli operatori relazionali // Laboratorio di Informatica Antonio Monteleone 144
15 Specializzazione di template (1) Permette di scrivere una specifica implementazione per una particolare combinazione dei parametri del template La specializzazione esplicita di una funzione template viene fatta per motivi di efficienza per motivi di correttezza (la funzione template non fa la cosa giusta per una data combinazione dei parametri del template) Laboratorio di Informatica Antonio Monteleone 145
16 template<typename T> T *LinearSearch(T *array, int size, T const &v) { T *end = array+size; for ( ; array!= end; ++array) if (*array == v) return array; return 0; LinearSearch su char* non fa la cosa giusta Specializzazione di template (2) void foo() { int intarray[] = {1, 2, 3, 4; int *ii = LinearSearch(intArray, 4, 3); int pos = ii intarray; char sarray[]={"alfa", "beta", "gamma"; char *name = new char[100]; strcpy(name, "beta"); char *aa = LinearSearch(sArray, 3, name); Laboratorio di Informatica Antonio Monteleone 146
17 Specializzazione di template (3) E necessario specializzare la funzione LinearSearch<char *> perchè il comportamento della funzione template base non è quello atteso template<> char **LinearSearch<char*>(char **array, int size, char * const &v) { char **end = array+size; for ( ; array!= end; ++array) if (strcmp(*array, v)== 0) return array; return 0; Laboratorio di Informatica Antonio Monteleone 147
18 Template meta-programming I template permettono di precalcolare qualcosa a tempo di compilazione template<int N> struct Fact { enum { value = N*Fact<N-1>::value ; ; template<> struct Fact<1> { enum { value = 1 ; ; int main(int argc, char *argv[]) { int f = Fact<10>::value; //.. Laboratorio di Informatica Antonio Monteleone 148
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
DettagliOggetti funzione (1) Laboratorio di Informatica Antonio Monteleone 177
Oggetti funzione (1) In C++ è possibile ridefinire l operatore di chiamata a funzione operator() valore_di_ritorno operator() (lista_argomenti); Un oggetto funzione è l istanza di una classe per la quale
DettagliCorso di Programmazione ad Oggetti
Corso di Programmazione ad Oggetti I Template a.a. 2008/2009 Claudio De Stefano 1 Programmazione generica E una tecnica di programmazione che permette di definire una classe di oggetti (o una funzione)
DettagliLa 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
DettagliIl paradigma OO e le Classi
Oggetti e Classi (CAP 10) Alberto Garfagnini Università degli studi di Padova 1 Dicembre 2009 Il paradigma OO e le Classi La programmazione ad Oggetti () è una filosofia di programmazione che si basa sui
DettagliOverloading di operatori
Overloading di operatori In C++ è possibile effettuare l overloading degli operatori per utilizzarli sugli oggetti delle classi definite dagli utenti complex.h class Complex { double m_re, m_im; public
DettagliInformatica 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)
DettagliComplementi. - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system -
Complementi - Ridefinizione di tipo - - Costrutto switch - - Programmazione su più file - - Parametri della funzione main - Funzione system - Università degli Studi di Brescia Prof. Massimiliano Giacomin
DettagliUn esecutore di un linguaggio simbolico e costituito dalla coppia Compilatore, processore (o Interprete, processore)
Un esecutore di un linguaggio simbolico e costituito dalla coppia Compilatore, processore (o Interprete, processore) Macchina astratta: un linguaggio di programmazione trasforma un calcolatore in una macchina
DettagliIl C nel C++: Funzioni
Il C nel C++: Funzioni Funzioni (1) il concetto -> spezzare il programma in parti (procedure) una funzione è un parte di programma dotata di un nome che può essere richiamata in altri punti del programma
DettagliCorso di Programmazione ad Oggetti
Corso di Programmazione ad Oggetti Costruttori di copia, funzioni di accesso e variabili static aa 2008/2009 Claudio De Stefano Claudio De Stefano - Corso di Programmazione ad Oggetti - aa 2008/2009 1
DettagliUniversità 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
DettagliCorso di Fondamenti di Informatica
Corso di Fondamenti di Informatica Introduzione alla programmazione in C++ 1 Un introduzione Che cosa è il C++? La programmazione procedurale La programmazione orientata agli oggetti La programmazione
DettagliInformatica 3. Informatica 3. LEZIONE 13: Liste doppie, pile e code. Lezione 13 - Modulo 1. Free list (2) Free list. Free list
LEZIONE 13: Liste doppie, pile e code Modulo 1: Free list Modulo 2: Lista doppia Modulo 3: Pila Modulo 4: Coda Lezione 13 - Modulo 1 Free list Politecnico di Milano - Prof. Sara Comai 1 Politecnico di
DettagliGeneralizzazione di funzioni e di classi. Macro come funzioni generiche
Alessio Bechini - Corso di - Generalizzazione di funzioni e di classi Il meccanismo di template Macro come funzioni generiche long longmax(long x, long y) { Possibile soluzione int intmax(int x, int y)
DettagliBreve Manuale di Riferimento sulla Sintassi Linguaggi C++ e FORTRAN
Breve Manuale di Riferimento sulla Sintassi Linguaggi e versione aggiornata al 05/02/2004 Sommario Elementi di Base... 2 Dati, Tipi e Dichiarazioni... 2 Tipi di Dato di Base... 2 Tipi di Dato Strutturati...
DettagliSommario. Introduzione... xv. Giorno 1 Elementi base del linguaggio C
Sommario Introduzione... xv Organizzazione del volume... xv Argomenti...xvi Domande...xvi Verifiche...xvi Domande e risposte...xvi Esercizi...xvi Non è richiesta alcuna precedente esperienza di programmazione...
DettagliCorso di Laboratorio 2 Programmazione C++ Silvia Arcelli. 20 Ottobre 2014
Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli 20 Ottobre 2014 1 Tipi non Predefiniti Abbiamo visto: Tipi elementari (int, float, char,...) Tipi composti (arrays e tipi non predefiniti) C++ permette
DettagliESERCIZIO 1 (Definizione funzioni passaggio parametri per copia)
ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia) Scrivere una funzione per definire se un numero è primo e un programma principale minimale che ne testa la funzionalità. #include
DettagliAmbienti di sviluppo integrato
Ambienti di sviluppo integrato Un ambiente di sviluppo integrato (IDE - Integrated Development Environment) è un ambiente software che assiste i programmatori nello sviluppo di programmi Esso è normalmente
DettagliLa programmazione ad oggetti (OOP)
Oggetti e Classi (CAP 10) Alberto Garfagnini, Marco Mazzocco Università degli studi di Padova 30 Novembre 2011 La programmazione ad oggetti (OOP) È un approccio concettuale alla programmazione (indipendente
DettagliLaboratorio di Algoritmi e Strutture Dati. Dizionari
Laboratorio di Algoritmi e Strutture Dati Dizionari Teresa M.A. Basile basile@di.uniba.it Dipartimento di Informatica Università degli Studi di Bari Aldo Moro Materiale di base gentilmente concesso dal
DettagliCorso di Grafica Computazionale
Corso di Grafica Computazionale Note di C++ Docente: Massimiliano Corsini Laurea Specialistica in Ing. Informatica Università degli Studi di Siena Note Iniziali Il C++ non ha il concetto dei packages In
DettagliCompendio sottoinsieme del C++ a comune col C. (Libreria standard, Input/Output, Costanti, Dichiarazioni e typedef, Memoria Dinamica)
Compendio sottoinsieme del C++ a comune col C (Libreria standard, Input/Output, Costanti, Dichiarazioni e typedef, Memoria Dinamica) Librerie 1/2 Il solo insieme di istruzioni di un linguaggio di programmazione
DettagliProgrammazione ad oggetti
Programmazione ad oggetti Tipi di dati Tipo = insieme di valori + insieme di operazioni Es. int: valori:, -2, -1, 0, 1, 2, operazioni:: +,-,*,/,
DettagliCorso di Laboratorio 2 Programmazione C++ Silvia Arcelli. 24 Ottobre 2014
Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli 24 Ottobre 2014 1 Una funzione membro importante: il costruttore In logica OOP l accesso allo stato interno di un istanza deve avvenire solo attraverso
DettagliClassi e oggetti Seconda parte. Oggetti dinamici
Università della Calabria Corso di Laurea in Ingegneria Elettronica Programmazione Orientata agli Oggetti A.A. 2006/2007 Classi e oggetti Seconda parte Paolo Trunfio * * DEIS, Università della Calabria
DettagliUniversità degli Studi di Cassino e del Lazio Meridionale Corso di Fondamenti di Informatica Allocazione dinamica di memoria
di Cassino e del Lazio Meridionale Corso di Informatica Allocazione dinamica di memoria Anno Accademico 2015/2016 Francesco Tortorella Allocazione dinamica di memoria Finora abbiamo considerato variabili
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
DettagliRicerca binaria (o dicotomica) di un elemento in un vettore
Ricerca binaria (o dicotomica) di un elemento in un La ricerca binaria o dicotomica è utilizzata per ricercare i dati in un ORDNATO. L algoritmo di ricerca binaria, dopo ogni confronto, scarta metà degli
DettagliPrecedenza e associatività. Complementi sul C - 2. Esempi. Esempi
Complementi sul C - 2 Ver. 2.4 2010 - Claudio Fornaro - Corso di programmazione in C Precedenza e associatività () [] ->. S D! ~ ++ + * & (cast ) sizeof S D * / % S D + - (somma e sottrazione) S D >
DettagliFondamenti di Informatica
Passaggio di parametri in C++ Il passaggio dei parametri tra funzione chiamante e funzione chiamata in C++ avviene secondo due modalità: Fondamenti di Informatica 16. Funzioni in C++ (parte 2) per valore
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
DettagliLaboratorio di Informatica
Strutture di dati Laboratorio di Informatica 5. Strutture / Array di oggetti / Pila&Coda in C++ Una struttura è un insieme finito di variabili (dette campi) non necessariamente dello stesso tipo, ognuna
DettagliCorso 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
DettagliLezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit
Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione
DettagliLezione 7. Introduzione ai Template
Lezione 7 Template Introduzione ai Template E possibile definire delle funzioni o classi dette generiche ovvero che abbiano come parametro il tipo di dato una funzione (classe) generica definisce una serie
DettagliAlgoritmo di ordinamento per scambio (a bolle o bubble sort)
Algoritmo di ordinamento per scambio (a bolle o bubble sort) Per ottenere un ordinamento crescente con l algoritmo di ordinamento per scambio (bubble sort) si prenno in considerazione i primi due elementi
DettagliGestione 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
DettagliLa 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
DettagliCorso di Fondamenti di Informatica Algoritmi su array / 2
Corso di Fondamenti di Informatica Algoritmi su array / Anno Accademico 00/009 Francesco Tortorella Algoritmi su array Operazioni tipiche sugli array: inizializzazione lettura stampa ricerca del minimo
DettagliCorso Programmazione 1 Capitolo 01: Concetti Elementari
Corso Programmazione 1 Capitolo 01: Concetti Elementari Docente: Roberto Sebastiani - roberto.sebastiani@unitn.it Esercitatori: Mario Passamani - mario.passamani@unitn.it Alessandro Tomasi - alessandro.tomasi@unitn.it
Dettagli#include <iostream> // libreria che gestisce flusso di input e output. using namespace std; // uso di librerie standard del C++
Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni
DettagliUniversità degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella
Corso di Informatica Puntatori Anno Accademico 2010/2011 Francesco Tortorella Variabili, registri ed indirizzi Abbiamo visto che la definizione di una variabile implica l allocazione (da parte del compilatore)
DettagliAlgoritmi su array / 2
Corso di Informatica Algoritmi su array / Anno Accademico / Francesco Tortorella Algoritmi su array Operazioni tipiche sugli array: inizializzazione lettura stampa ricerca del minimo e del massimo ricerca
Dettaglipublic static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;
Metodi iterativi con array monodimensionali 1. Scrivere un metodo che, dato un array di interi a, restituisce il valore minimo in a. public static int minimo (int[] a) { int min = a[0]; for (int i=1; i
DettagliRicerca sequenziale di un elemento in un vettore
Ricerca sequenziale di un elemento in un vettore La ricerca sequenziale o lineare è utilizzata per ricercare i dati in un vettore NON ordinato. L algoritmo di ricerca sequenziale utilizza quan non ha alcuna
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;
DettagliCorso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I)
Corso di Algoritmi e Strutture dati Programmazione Object- Oriented in Java (Parte I) Ing. Gianluca Caminiti Sommario ( OOP ) Programmazione Object-Oriented Incapsulamento, Ereditarietà, Polimorfismo Richiami
DettagliLe operazioni di allocazione e deallocazione sono a carico del sistema.
Allocazione della memoria In C++ è possibile creare (allocare) variabili in maniera statica o dinamica. Nell allocazione statica una variabile esiste ed è utilizzabile dal momento della sua dichiarazione
DettagliL organizzazione dei programmi
L organizzazione dei programmi Lo sviluppo top-down L.S. Touschek - A.S. 2015/2016 - I fondamenti del Linguaggio C F. Cardarelli Lo sviluppo top-down I problemi complessi Blocco 1 Istruzione 1 Istruzione
DettagliLaboratorio di Informatica
Liste semplici (semplicemente linkate) Una lista semplice e costituita da nodi Laboratorio di Informatica 7. Strutture complesse di dati in C++ Ogni nodo e una struttura che contiene : Dati Un riferimento
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;
DettagliIndice. Introduzione PARTE PRIMA LE BASI DEL C++: IL LINGUAGGIO C 1
Indice Introduzione XV PARTE PRIMA LE BASI DEL C++: IL LINGUAGGIO C 1 Capitolo 1 Una panoramica sul linguaggio C 3 1.1 Le origini e la storia del linguaggio C 3 1.2 Il C è un linguaggio di medio livello
DettagliProgrammazione Java Avanzata Programmazione Object- Oriented in Java
Programmazione Java Avanzata Programmazione Object- Oriented in Java Ing. Gianluca Caminiti Testi di Riferimento (Java) Cay Horstmann Concetti di informatica e fondamenti di Java Apogeo, 2007 (Versione
DettagliLinguaggio C: PUNTATORI
Linguaggio C: PUNTATORI I puntatori sono una delle più importanti caratteristiche del linguaggio C. Permettono di lavorare a basso livello, mantenendo flessibilità e praticità. Il C utilizza molto i puntatori
DettagliSoluzione del 25 giugno 2015
Soluzione del 25 giugno 2015 Problema unico Per quanto richiesto dal problema la class Isola dovrà avere un costruttore default accessibile e marcati con la clausola delete sia i costruttori copy e move
DettagliFunzioni e. Alessandra Giordani Mercoledì 16 maggio 2012
Funzioni e passaggio parametri Alessandra Giordani agiordani@disi.unitn.it Mercoledì 16 maggio 2012 http://disi.unitn.it/~agiordani/ Cosa vedremo oggi Le funzioni Il passaggio dei parametri Le dichiarazioni
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 1. Prova di recupero 21 Settembre 2001
Informatica 1 Prova di recupero 21 Settembre 2001 Si risolvano i seguenti esercizi. Ai fini della determinazione del voto finale il loro punteggio andrà sommato al punteggio del laboratorio. Il tempo complessivo
DettagliCorso di Laboratorio 2 Programmazione C++ Silvia Arcelli. 3 Novembre 2014
Corso di Laboratorio 2 Programmazione C++ Silvia Arcelli 3 Novembre 2014 1 Programmazione Generica Polimorfismo attraverso l ereditarietà: Attraverso le classi, esiste la possibilità di definire nuovi
Dettagli1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio
soluzione di un problema 1) definizione di una rappresentazione 2) specificazione di un algoritmo (dipendente dalla rappresentazione) 3) traduzione in un linguaggio rappresentazioni disponibili in C++:
DettagliEspressioni logiche. Espressioni logiche. Operatori logici. Operatori logici. Operatori logici. Espressioni Logiche e Istruzione di Test
Espressioni logiche Espressioni Logiche e Istruzione di Test Fondamenti di Informatica 1 Massimo Di Nanni Gennaio, 2001 Espressioni logiche nelle Istruzioni di Test e di Iterazione Calcolo del massimo
DettagliGrammatica di base: esempio
Grammatica di base: esempio Esempio di funzione con assegnazione condizionata: Calcoliamo il fattoriale int fac(int ); int main(){ int bb=3; return fac(3); main.cpp int fac( int b){ return (n
DettagliCorso di Programmazione a oggetti
Corso di Programmazione a oggetti Introduzione alla programmazione a oggetti aa 2014/2015 Francesco Fontanella La Programmazione Modulare Un programma può essere visto come un insieme di moduli che interagiscono
DettagliEsercitazione: Implementazione in linguaggio C dell ADT. Stack con l utilizzo. di linked list
Esercitazione: Implementazione in linguaggio C dell ADT Stack con l utilizzo di linked list Laboratorio di Programmazione Introduzione un ADT (Abstract Data Type) è un modello (formale) che generalizza
DettagliPassare argomenti al programma
Passare argomenti al programma Quando si invoca un programma è possibile passare degli argomenti ad esso durante la chiamata. Gli argomenti ricevuti saranno stringhe (array di char) quindi l insieme di
DettagliAstrazione Dati. Nicola Fanizzi. Linguaggi di Programmazione [010194] 10 mag, Dipartimento di Informatica Università degli Studi di Bari
Astrazione Dati Nicola Fanizzi Dipartimento di Informatica Università degli Studi di Bari Linguaggi di Programmazione [010194] 10 mag, 2016 Sommario 1 Astrazione dati Incapsulamento Esempio / ADT pila
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
DettagliLaboratorio di Algoritmi e Strutture Dati
Realizzazione di Liste Laboratorio di Algoritmi e Strutture Dati Domenico Redavid redavid@di.uniba.it Materiale di base gentilmente concesso dal dott. Nicola Di Mauro Ricercatore presso l'univ. di Bari
Dettagli1: /* Nome del programma: gestione_articoli_01.cpp 2: Realizzato da: Gaetano Della Cerra 3: Data: 06/02/2010 - III Informatica Serale I.T.I.S.
1: /* Nome del programma: gestione_articoli_01.cpp 2: Realizzato da: Gaetano Della Cerra 3: Data: 06/02/2010 - III Informatica Serale I.T.I.S. Molinari 4: Il programma gestisce gli articoli di un negozio
DettagliMemory Management. Local Storage. Global Storage. Delete esplicite
Memory Management Costruzione di Interfacce Lezione 13 Dal Java al C++ cignoni@iei.pi.cnr.it http://vcg.iei.pi.cnr.it/~cignoni Due grandi categorie di storage: Local, memoria valida solo all interno di
DettagliOperatore di indirizzo
Operatore di indirizzo L operatore unario di indirizzo & restituisce l indirizzo della locazione di memoria dell operando Il valore restituito non va usato come l- value (in quanto l indirizzo di memoria
DettagliCorso di Programmazione ad Oggetti
Corso di Programmazione ad Oggetti Funzioni e classi friend Overloading di operatori aa 2008/2009 Claudio De Stefano 1 Le funzioni friend Nella definzione di una classe è possibile elencare quali funzioni,
DettagliESERCIZI DI PROGRAMMAZIONE C/C++ per le classi seconde
ESERCIZI DI PROGRAMMAZIONE C/C++ per le classi seconde vers.0 in lavorazione Docente SAFFI FABIO Contenuti Struttura del file sorgente...2 Organizzazione della directory di lavoro...2 Esercizi sulle funzione
DettagliSottoprogrammi: astrazione procedurale
Sottoprogrammi: astrazione procedurale Incapsulamento di un segmento di programma presente = false; j = 0; while ( (j
DettagliQualsiasi programma in C++ segue lo schema:
Qualsiasi programma in C++ segue lo schema: #include // libreria che gestisce flusso di input e output using namespace std; // uso di librerie standard del C++ int main() { // dichiarazioni
DettagliCapitolo 5 - Funzioni
Capitolo 5 - Funzioni Divide and conquer Introduzione Costruire un programma da pezzi più piccoli o da singole componenti Questi pezzi più piccoli sono chiamati moduli Ogni singolo pezzo è più facilmente
DettagliLe strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.
Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura
DettagliCorso di Programmazione a oggetti
Corso di Programmazione a oggetti Overloading delle funzioni e parametri di default a.a. 2014/2015 Francesco Fontanella Overloading delle funzioni In C++, è possibile dare a funzioni diverse lo stesso
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
DettagliSTRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe
STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe String Una stringa Java rappresenta uno specifico valore e come
DettagliSommario. Le strutture dati elementari per implementare sequenze: Vettori Liste
Sequenze Sommario Le strutture dati elementari per implementare sequenze: Vettori Liste Strutture dati elementari Le strutture dati vettore e lista sono fra le strutture dati più usate e semplici Il loro
DettagliIl primo programma C++
Il linguaggio C++ A better C Il linguaggio C++ nasce presso i laboratori di ricerca della AT&T Bell (Murray Hill, NJ) a partire dal 1979, ad opera di Bjarne Stroustrup. Rappresenta una estensione del linguaggio
DettagliIntroduzione alle classi 2
Introduzione alle classi 2 Corso di Programmazione 3 - Ingegneria dell Informazione e dell Organizzazione 31 ottobre, 2001 Gino Perna Utilizzo di una classe in C++ UN ESEMPIO DI CLASSE: LO STACK Supponiamo
Dettaglicostruttori e distruttori
costruttori e distruttori Costruttore E un metodo che ha lo stesso nome della classe a cui appartiene: serve per inizializzare un oggetto all atto della sua creazione Ce ne possono essere uno, più di uno,
DettagliCorso 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
DettagliEsercizi Strutture dati di tipo astratto
Salvatore Cuomo Esercizi Strutture dati di tipo astratto Lezione n. 20 Parole chiave: Strutture dati, pile code, liste Corso di Laurea: Informatica Insegnamento: Programmazione II, modulo di Laboratorio
DettagliFondamenti di Informatica T2 Modulo 2. Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009. Enumerativi
Università degli Studi di Bologna Facoltà di Ingegneria Fondamenti di Informatica T2 Modulo 2 Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009 Enumerativi Finora abbiamo creato enumerativi
DettagliProgrammazione ad Oggetti. Java Parte II
Programmazione ad Oggetti Java Parte II Overview Caratteristiche lessicali Il primo programma Java 1 Commenti /* Commento tradizionale, eventualmente su più linee, non nidificato */ // Commento su di una
DettagliADT: Abstract Data Type. Quasi ADT. ADT per collezioni di dati (code generalizzate) 04 I tipi di dati astratti (I parte)
ADT: Abstract Data Type I tipi di dati astratti (I parte) Gianpiero Cabodi e Paolo Camurati Dip. Automatica e Informatica Politecnico di Torino Scopo Livello di astrazione sui dati tale da mascherare completamente
DettagliProgrammazione ad oggetti
Programmazione ad oggetti OOP La programmazione orientata agli oggetti (Object Oriented Programming) ha l obiettivo di formalizzare gli oggetti del mondo reale e di costruire con questi un mondo virtuale.
Dettagli6SC Informatica 9/12/2015
6SC-C-007-2015-12-09 (S) Studente: THE TEACHER CLASSE MATERIA DATA OGGETTO VALUTAZIONE 6SC Informatica 9/12/2015 Preparazione alla verifica di venerdì 18/12 (soluzioni) N.A. Scrivere, in linguaggio C++,
DettagliLa sintassi del C APPENDICE H
APPENDICE H La sintassi del C Nella notazione della sintassi utilizzata, le categorie sintattiche (non terminali) sono state indicate da uno stile tipografico in corsivo, mentre le parole letterali e i
Dettaglivoid funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }
FUNZIONI 57. Cosa servono le funzioni? A spezzare il programma in diverse parti relativamente indipendenti fra loro, ovvero interagenti sono attraverso i parametri di input ed IL VALORE di uscita. In questo
DettagliALGORITMI E STRUTTURE DATI
ALGORITMI E STRUTTURE DATI Esercitazioni AndreA Orlandini http://www.dia.uniroma3.it/~orlandin/asd/ e-mail: orlandin@dia.uniroma3.it Orario di ricevimento: Martedì 14.00-16.00 Introduzione al C + Array
DettagliFondamenti di Programmazione. Antonio Pescapè e Marcello Esposito Parte Quinta v1.0
Fondamenti di Programmazione Antonio Pescapè e Marcello Esposito Parte Quinta v1.0 Agenda I linguaggi C e C++: introduzione Elementi Lessicali Commenti Identificatori Parole Chiave Costanti Letterali Elementi
DettagliBloodshed Dev-C++ Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio. IDE = Integrated Development Environment. Codice corso: 21012
Bloodshed Dev-C++ Bloodshed Dev-C++ è l IDE usato durante le esercitazioni/laboratorio IDE = Integrated Development Environment Pagina 1 di 8 Dev-C++ - Installazione Con sistema operativo Windows, potete
DettagliStrutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)
Strutture Strutture e Unioni DD cap.10 pp.379-391, 405-406 KP cap. 9 pp.361-379 Strutture Collezioni di variabili correlate (aggregati) sotto un unico nome Possono contenere variabili con diversi nomi
DettagliProgrammazione modulare
Programmiamo in.. Programmazione modulare Un programma complesso si suddivide in più sottoprogrammi o funzioni. Un programma suddiviso in piccoli pezzi, è più semplice da gestire da aggiornare da correggere
Dettagli