Utilizzo e scrittura di classi
|
|
|
- Eva Ceccarelli
- 9 anni fa
- Просмотров:
Транскрипт
1 Utilizzo e scrittura di classi Corso di Programmazione 3 - Ingegneria dell Informazione e dell Organizzazione 14 novembre, 2001 Gino Perna
2 Implementazione di classi in C++ UN ESEMPIO DI CLASSE: RISULTATI E PARTITE GIOCATE DA UN ATLETA Vedremo un semplice esempio di classe per la gestione dei risultati delle partite di un atleta. Si vogliono memorizzare e gestire: Nome atleta; Partite giocate; Numero di punti effettuati; Calcolo della media. Definizione della classe class giocatori{ private: char nome[80]; int partite; int punti; double media; double calcola_media(void); public: giocatori(); //costruttore default giocatori(char *,int,int); // cotruttore 3 argomenti giocatori(); // distruttore void print(); // stampa dati void update(); // aggiorna numero partite e punti void setall(); // input dati totale ;
3 Un esempio di classe: risultati e partite giocate da un atleta Implementazione classe #include <iostream> #include <giocatori.h> #include <string.h> giocatori::giocatori(char *nome, int partite, int punti){ // inizializzare nome, partite e punti media = calcola_media(); giocatori::giocatori(){ // azzerare tutte le variabili compresa la stringa media = calcola_media(); double calcola_media(void){ return (double) punti/partite; giocatori::giocatori(){ cout << distruggo <<nome<< \n ; giocatori::update(){ // da implementare media = calcola_media(); giocatori::print(){ cout << giocatore <<nome<< \n ; cout << partite <<partite<< \n ; cout << punti <<punti<< \n ; cout << Media: <<media<< \n\n ; Programma test #include <iostream> #include giocatori.h> #include <string.h> int main(){ giocatori A; giocatori B=giocatori( max,5,3); Implementazione di classi in C++ 1
4 il costruttore di copia giocatori C( eli,8,3); C.print(); B.print(); B.update(); B.print return 0; Esercizio Si completi la classe nelle parti mancanti e si proceda alla verifica dell implementazione. Esercizio Si implementi il lcostruttore di copia (vedi oltre) per la classe giocatore e si utilizzi un array di oggetti per simulare una squadra di 12 giocatori. IL COSTRUTTORE DI COPIA La filosofia di utilizzo dell'operatori di assegnamento è molto simile a quella di un altra tipica funzione membro di una classe: il costruttore di copia. Esso viene chiamato ogni volta che si ha la necessità di creare un oggetto a partire da uno preesistente, ovvero nelle inializzazioni sulla base di oggetti dello stesso tipo; il costruttore di copia (copy constructor) è indicato solitamente con X::X(X&). Le operazioni da eseguire all'interno di esso sono formalmente identiche a quelle dell'operatore di assegnamento, con l'unica importante differenza che non è necessario deallocare memoria: gli oggetti da inizializzare non esistono prima di tale operazione. Si faccia bene attenzione che, supponendo che x1 sia un oggetto di tipo X, lo statement: X* x2 = new X(x1); effettua una inizializzazione di x1 con i dati di x2; non ci si faccia trarre in inganno dal simbolo =: non si tratta di un assegnamento! Vediamo un esempio con una classe ArrayS : class ArrayS { /*... */ public: /*... */ ArrayS (const ArrayS& a); ; 2 Implementazione di classi in C++
5 il costruttore di copia ArrayS::ArrayS (const ArrayS& a) { n = a.n; array = new double[n]; for (int i = 0; i < n; i++) array[i] = a.array[i]; Il costruttore di copia, come ogni costruttore, viene chiamato automaticamente dal C++, non è possibile cioè invocarlo esplicitamente come l'operatore di assegnamento, o qualunque altra funzione membro. Se il costruttore di copia non è presente, esso viene automaticamente generato dal compilatore; in tal caso l'unica operazione compiuta è la copia membro a membro dei dati della classe; come l'operatore di assegnamento e il distruttore, il costruttore di copia è dunque necessario solo se la classe alloca memoria dinamica al suo interno. Tali speciali funzioni membro, qualora non fosse necessaria la loro esistenza, è bene dichiararle commentate, come abbiamo visto per il distruttore nella sezione precedente. Un esempio del costruttore di copia per ArrayS è il seguente: #include "arrays2.h" void main() { int n; cout << "quanti elementi? "; cin >> n; ArrayS x(n); for (int i = 0; i < n; i++) { cout << "? "; cin >> x[i]; // copiamo il vettore x in un vettore y dinamico // ed in un vettore z non dinamico ArrayS y(x); ArrayS* z = new ArrayS(x); // ordiniamo i due vettori y e z z->ordina(); cout << "\ncopia del vettore:\n"; y.stampa(); cout << "\ncopia ordinata:\n"; z->stampa(); esempio di output: quanti elementi? 4? 2.71? 3.14? -1.4? 5e-6 copia del vettore: e-06 copia ordinata: e Un'ultima osservazione: l'operazione di copia di una classe potrebbe essere priva di senso; si pensi ad esempio ad una classe la quale rappresenti il sistema sul quale viene Implementazione di classi in C++ 3
6 Le liste linkate semplici eseguito il programma: che senso avrebbe crearne una copia? In casi come questi, è possibile utilizzare uno stratagemma sottile: si dichiarino il costruttore di copia e l'operatore di assegnamento come funzioni membro private, senza definirle; sarà compito del compilatore inibire l'utilizzatore della nostra classe ad effettuare copie di un oggetto di tale classe. LE LISTE LINKATE SEMPLICI Introduzione Una lista è costituita dal unità elementare, che noi chiameremo celle o elementi o unità, come abbiamo già fatto per l'array; i dati che le celle possono contenere sono del tutto arbitrari, ma devono essere omogenei: si possono avere liste di interi, di reali, di stringhe, di array, di oggetti strutture, ma non liste di cui alcuni elementi siano di un tipo e altri di uno diverso da esso. Inoltre le liste non sono indicizzate, come l'array; ovvero non è possibile accedere in maniera diretta un singolo elemento di una lista, ma bisogna scorrere necessariamente tutti gli elementi che lo precedono; una lista è dunque un dato ad accesso sequenziale. Per capire le liste è molto importante avere bene fissato un modello mentale cui fare riferimento; per le liste semplici possiamo immaginare di avere delle celle, ognuna delle quali contiene un dato di un certo tipo, collegate l'un l'altra tramite una freccia la quale può portarci solo in un senso; il primo elemento ha una freccia che indica il nome della lista, la freccia dell'ultimo elemento punta 0: Ciascun elemento è dunque costituito da due zone: una contenente l'informazione della cella, l'altra che permette di identificare l'elemento a essa successivo; un caso particolare è dato dall'ultimo elemento della lista, il quale non riferisce nessun ulteriore elemento. Definiamo infine come lista vuota quella che non ha alcun elemento. Una lista dunque ha come scopo quello di rappresentare un insieme di dati, la cui dimensione varia fortemente durante l'esecuzione del programma; tale struttura dati è infatti intrinsecamente dinamica: ogni volta che un nuovo elemento viene aggiunto alla lista si alloca nuova memoria nello heap, facendo in modo che un puntatore a tale zona di memoria venga inserito all'interno della lista, nella maggior parte dei casi all'inizio o alla fine di essa. Tale flessibilità richiede tuttavia un prezzo da pagare: le liste non sono efficaci come gli array per la ricerca all'interno di esse, non consentendo esse modalità di accesso diretto; notiamo infatti che una lista è costituita da celle fondamentali, in ognuna delle quali è esclusivamente contenuto l'indirizzo della cella successiva: per accedere un elemento di una lista bisogna necessariamente accedere tutti i precedenti. Liste semplici In C++ non esiste un tipo ``lista'', per cui dobbiamo costruire autonomamente una serie di funzioni le quali ci permettano di effetturare delle operazioni sulle nostre liste. In realtà ci sono numerose librerie, fornite a corredo di ogni distribuzione del C++, che forniscono una classe lista, ma ci sono due motivi per i quali non ne faremo uso: è un buon 4 Implementazione di classi in C++
7 Le liste linkate semplici esercizio ``reinventare la ruota'', cioè costruire da zero buona parte delle funzioni permesse sulle liste; inoltre, non abbiamo ancora le conoscenza necessarie per affrontare lo studio di una classe complessa, come quelle fornite con i compilatori C++. Ovviamente le liste che utilizzeremo saranno a scopo esclusivamente didattico, nel senso che ogni loro utilizzo professionale è impensabile per scarsezza di flessibilità ed efficienza. Definizione classe struct NODE { char nome[80]; // nome concorrente int voto; //voto NODE * next; //puntatore al prossimo elemento ; class LISTA { private: NODE *head; NODE *tail; public: LISTA(); //cotruttore ~LISTA();//distruttore void insertstart(char *, int ); //inserisci all inizio void insertend(char *, int ); //inserisci alla fine void print(); //stampa la lista void printtail(); // stampa la fine della lista void printhead(); // stampa l inizio della lista void clear(); //cancella la lista NODE * search(char *); // ricerca l elemento per nome ; L elemento principale è la struttura NODE che contiene le informazioni riguardanti i dati da memorizzare ed un puntatore al prossimo elemento; La classe di per sè stessa non contiene nulla di nuovo eccetto che per la dichiarazione di due puntatori HEAD e TAIL che servono a tenere traccia del primo e dell ultimo elemento della lista (normalmente nelle liste semplici si tiene traccia della sola testa). Implementazione classe #include <iostream.h> #include <string.h> #include "lli.h" LISTA::LISTA(){ head=null; // inizializzo a NULL sia la testa che la coda tail = NULL; LISTA::~LISTA(){ clear(); // distruttore: cancello la lista Implementazione di classi in C++ 5
8 Le liste linkate semplici void LISTA::clear(){ NODE *walker = head; // Set a "walker node" to the front of the list while(walker!= NULL) { NODE *temp = walker; // Create a temp node walker = walker->next; // Move the walker to the next node on the list delete temp; // Free the memory head = tail = NULL; // Set everything to NULL Inserzione in testa e in coda L'operazione più semplice che si possa effettuare su di una lista è l'inserzione di un elemento in testa, ovvero come primo elemento; si noti che tale operazione in pratica provoca uno shift (trad. ``scorrimento'') della lista verso destra: se inseriamo dei dati sempre in testa, otterremo una lista con i nostri dati inseriti in ordine inverso. Una semplice funzione che effettua l'inserzione in testa di un elemento è la seguente: void LISTA::insertstart(char *nome, int voto){ NODE *temp = new NODE; strcpy(temp->nome,nome); temp->voto = voto; temp->next = head; if(head == NULL) { tail=temp; head = temp; L'inserzione in testa presenta un notevole svantaggio: i dati risultano inseriti in ordine inverso rispetto a quello con il quale li si immette; conviene allora spesso eseguire delle inserzioni in coda, cioè aggiungere ogni nuovo elemento alla fine della lista. Tale procedura è un poco più articolata perché, mentre sappiamo bene dove inizia una lista, non possiamo immaginare dove essa termini se non la scorriamo completamente da sinistra a destra (immaginiamo sempre di avere la testa all'estrema sinistra e la coda all'estrema destra). Ricordiamo che la fine della lista è segnalata dal puntatore next messo a 0: void LISTA::insertend(char *nome, int voto){ NODE *temp = new NODE; 6 Implementazione di classi in C++
9 Le liste linkate semplici strcpy(temp->nome,nome); temp->voto = voto; temp->next = NULL; if(head == NULL) head=temp; if (tail!= NULL)tail->next = temp; tail = temp; NODE * LISTA::search(char *nome){ NODE *walker=head; while(walker!= NULL){ if(strcmp(nome,walker->nome) == 0) return walker; walker=walker->next; return walker; void LISTA::print(){ NODE *walker=head; while(walker!= NULL){ cout << "Elemento:"<<walker->nome<<" Voto "<<walker- >voto<<"\n"; walker=walker->next; cout << "Fine Lista\n"; void LISTA::printTail(){ cout << "ElementoT:"<<tail->nome<<" Voto "<<tail- >voto<<"\n"; void LISTA::printHead(){ cout << "ElementoH:"<<head->nome<<" Voto "<<head- >voto<<"\n"; Programma di test #include "lli.h" #include <string.h> #include <iostream.h> int main(){ LISTA A; for(int i=0;i<5;i++){ Implementazione di classi in C++ 7
10 Le liste linkate semplici A.insertstart("pippoooo",i); A.print(); A.printTail(); A.printHead(); A.clear(); A.insertend("clarabella",-1); A.print(); A.insertstart("orazio",27); A.print(); if(a.search("clarabella")!= NULL) cout <<"Ti ho Trovato\n"; return 0; Esercizi Si completi la classe con i metodi per: Inserimento dopo un certo elemento; Cancellazione di un elemento (attenzione se è il primo o l ultimo). 8 Implementazione di classi in C++
Inizializzazione, Assegnamento e Distruzione di Classi
Inizializzazione, Assegnamento e Distruzione di Classi Lezione 9 Operazioni Automatiche In ogni programma C++ oggetti classe vengono gestiti automaticamente dal compilatore Inizializzati al momento della
Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori
Gli array Array e puntatori Laboratorio di Informatica I un array è un insieme di elementi (valori) avente le seguenti caratteristiche: - un array è ordinato: agli elementi dell array è assegnato un ordine
http://www.programmiamo.altervista.org/c/oop/o...
PROGRAMMIAMO Programma per la gestione di un conto corrente C++ - Costruttore e distruttore C++ Home Contatti Supponiamo ora di voler scrivere un programma a menu per la gestione di un conto corrente bancario.
Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:
Tipi primitivi Il linguaggio Java offre alcuni tipi di dato primitivi Una variabile di tipo primitivo può essere utilizzata direttamente. Non è un riferimento e non ha senso tentare di istanziarla mediante
costruttori 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,
Realizzazione di una classe con un associazione
Realizzazione di una classe con un associazione Nel realizzare una classe che è coinvolta in un associazione, ci dobbiamo chiedere se la classe ha responsabilità sull associazione. Diciamo che una classe
Informatica 3. LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1)
Informatica 3 LEZIONE 7: Fondamenti di programmazione orientata agli oggetti (1) Modulo 1: Introduzione: oggetti e classi Modulo 2: Link e associazioni Modulo 3: Aggregazione Informatica 3 Lezione 7 -
Le 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
Gestione della memoria centrale
Gestione della memoria centrale Un programma per essere eseguito deve risiedere in memoria principale e lo stesso vale per i dati su cui esso opera In un sistema multitasking molti processi vengono eseguiti
La struttura dati ad albero binario
La struttura dati ad albero binario L albero è una struttura dati nella quale le informazioni sono organizzate in modo gerarchico, dall alto verso il basso. Gli elementi di un albero si chiamano nodi,
Concetto di Funzione e Procedura METODI in Java
Fondamenti di Informatica Concetto di Funzione e Procedura METODI in Java Fondamenti di Informatica - D. Talia - UNICAL 1 Metodi e Sottoprogrammi Mentre in Java tramite le classi e gli oggetti è possibile
12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)
12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP) Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica,
Corso di Fondamenti di Informatica
Corso di Fondamenti di Informatica I tipi strutturati: gli array e le strutture Claudio De Stefano - Corso di Fondamenti di Informatica 1 arrays un array (o vettore) è una sequenza di oggetti dello stesso
void 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
Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};
ESERCIZI 2 LABORATORIO Problema 1 Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12}; Chiede all'utente un numero e, tramite ricerca
SOMMARIO Coda (queue): QUEUE. QUEUE : specifica QUEUE
SOMMARIO Coda (queue): Specifica: interfaccia. Implementazione: Strutture indicizzate (array): Array di dimensione variabile. Array circolari. Strutture collegate (nodi). Prestazioni. Strutture Software
2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.
1 Esercizio 1 1. Immaginate di avere una calcolatore che invece che poter rappresentare i classici due valori per ogni bit (0/1) possa rappresentare 7 valori per ogni bit. (a) Quanti bit gli occorreranno
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa 10 Strutture collegate - 2 A. Miola Febbraio 2008 http://www.dia.uniroma3.it/~java/fondinf2/ Strutture collegate - 2 1 Contenuti!Strutture
Algoritmi 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
dall argomento argomento della malloc()
Allocazione dinamica Quando? Tutte le volte in cui i dati possono crescere in modo non prevedibile staticamente a tempo di sviluppo Un array con dimensione i fissata a compile-time non è sufficiente È
Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli
CODICE Le fonti in cui si possono trovare tutorial o esempi di progetti utilizzati con Arduino si trovano nel sito ufficiale di Arduino, oppure nei forum di domotica e robotica. Il codice utilizzato per
Visibilità dei Membri di una Classe
Visibilità dei Membri di una Classe Lezione 10 Ogni classe definisce un proprio scope racchiude il codice contenuto nella definizione della classe e di tutti i suoi membri ogni metodo della classe definisce
Funzioni in C. Violetta Lonati
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica Funzioni - in breve: Funzioni Definizione di funzioni
Allocazione dinamica della memoria - riepilogo
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Storage duration Allocazione dinamica della
Esercizi su. Funzioni
Esercizi su Funzioni ๒ Varie Tracce extra Sul sito del corso ๓ Esercizi funz_max.cc funz_fattoriale.cc ๔ Documentazione Il codice va documentato (commentato) Leggibilità Riduzione degli errori Manutenibilità
Appunti sulla Macchina di Turing. Macchina di Turing
Macchina di Turing Una macchina di Turing è costituita dai seguenti elementi (vedi fig. 1): a) una unità di memoria, detta memoria esterna, consistente in un nastro illimitato in entrambi i sensi e suddiviso
Corso 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
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a. 2009-10. prof.
Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a. 009-10 prof. Viviana Bono Blocco 9 Metodi statici: passaggio parametri, variabili locali, record
Laboratorio di programmazione
Laboratorio di programmazione Lezione VI Tatiana Zolo [email protected] 1 LE STRUCT Tipo definito dall utente i cui elementi possono essere eterogenei (di tipo diverso). Introduce un nuovo tipo di
3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo
3 - Variabili 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 di
Università 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)
Complessità Computazionale
Complessità Computazionale Analisi Algoritmi e pseudocodice Cosa significa analizzare un algoritmo Modello di calcolo Analisi del caso peggiore e del caso medio Esempio di algoritmo in pseudocodice INSERTION
Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti
Capitolo 3 L applicazione Java Diagrammi ER Dopo le fasi di analisi, progettazione ed implementazione il software è stato compilato ed ora è pronto all uso; in questo capitolo mostreremo passo passo tutta
Sistema operativo: Gestione della memoria
Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Sistema operativo: Gestione della memoria La presente dispensa e
Esempio: dest = parolagigante, lettere = PROVA dest (dopo l'invocazione di tipo pari ) = pprrlogvgante
Esercizio 0 Scambio lettere Scrivere la funzione void scambiolettere(char *dest, char *lettere, int p_o_d) che modifichi la stringa destinazione (dest), sostituendone i caratteri pari o dispari (a seconda
13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti
13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/
Introduzione alla programmazione in C
Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale
Introduzione al linguaggio C Gli array
Introduzione al linguaggio C Gli array Vettori nome del vettore (tutti gli elementi hanno lo stesso nome, c) Vettore (Array) Gruppo di posizioni (o locazioni di memoria) consecutive Hanno lo stesso nome
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2
Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2 Dispensa E08 Soluzione Esercizi F. Gasparetti, C. Limongelli Marzo 2008 http://www.dia.uniroma3.it/~java/fondinf1/ Soluzione Esercizi
Strutture. 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
Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti:
Javadoc Uno dei pregi di Java è quello di integrare la documentazione con il codice stesso Formato dei commenti: /* commenti */ // commenti /** commenti documentazione */ Questi ultimi generano automaticamente
Compito di Fondamenti di Informatica
Compito di Fondamenti di Informatica In un magazzino viene utilizzato un archivio informatico, nel quale vengono memorizzate le informazioni relative ai prodotti contenuti nel magazzino e che ne permette
Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati
Realizzazione di Politiche di Gestione delle Risorse: i Semafori Privati Condizione di sincronizzazione Qualora si voglia realizzare una determinata politica di gestione delle risorse,la decisione se ad
Siamo così arrivati all aritmetica modulare, ma anche a individuare alcuni aspetti di come funziona l aritmetica del calcolatore come vedremo.
DALLE PESATE ALL ARITMETICA FINITA IN BASE 2 Si è trovato, partendo da un problema concreto, che con la base 2, utilizzando alcune potenze della base, operando con solo addizioni, posso ottenere tutti
Introduzione al MATLAB c Parte 2
Introduzione al MATLAB c Parte 2 Lucia Gastaldi Dipartimento di Matematica, http://dm.ing.unibs.it/gastaldi/ 18 gennaio 2008 Outline 1 M-file di tipo Script e Function Script Function 2 Costrutti di programmazione
Laboratorio di Algoritmi e Strutture Dati
Realizzazione di Liste Laboratorio di Algoritmi e Strutture Dati Domenico Redavid [email protected] Materiale di base gentilmente concesso dal dott. Nicola Di Mauro Ricercatore presso l'univ. di Bari
Uso di JUnit. Fondamenti di informatica Oggetti e Java. JUnit. Luca Cabibbo. ottobre 2012
Fondamenti di informatica Oggetti e Java ottobre 2012 1 JUnit JUnit è uno strumento per assistere il programmatore Java nel testing JUnit consente di scrivere test di oggetti e classi Java i test sono
Guida all uso di Java Diagrammi ER
Guida all uso di Java Diagrammi ER Ver. 1.1 Alessandro Ballini 16/5/2004 Questa guida ha lo scopo di mostrare gli aspetti fondamentali dell utilizzo dell applicazione Java Diagrammi ER. Inizieremo con
Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005
Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Secondo Compitino 17 Dicembre 2005 Si noti che le soluzioni ai quesiti saranno considerate
INDICE. Proposta aggiornamento Aggiungi scritta 2. Proposta aggiornamento Sposta scritta 3. Proposta aggiornamento Ruota scritta 4
Prodotto da INDICE Proposta aggiornamento Aggiungi scritta 2 Proposta aggiornamento Sposta scritta 3 Proposta aggiornamento Ruota scritta 4 Proposta aggiornamento Aggiungi simbolo 5 Proposta aggiornamento
PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0)
PROCEDURA INVENTARIO DI MAGAZZINO di FINE ESERCIZIO (dalla versione 3.2.0) (Da effettuare non prima del 01/01/2011) Le istruzioni si basano su un azienda che ha circa 1000 articoli, che utilizza l ultimo
Uso di base delle funzioni in Microsoft Excel
Uso di base delle funzioni in Microsoft Excel Le funzioni Una funzione è un operatore che applicato a uno o più argomenti (valori, siano essi numeri con virgola, numeri interi, stringhe di caratteri) restituisce
I puntatori e l allocazione dinamica di memoria
I puntatori e l allocazione dinamica di memoria L allocazione delle variabili Allocazione e rilascio espliciti di memoria Le funzioni malloc e free 2 2006 Politecnico di Torino 1 Allocare = collocare in
Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica
Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,
GESTIONE INFORMATICA DEI DATI AZIENDALI
GESTIONE INFORMATICA DEI DATI AZIENDALI Alberto ZANONI Centro Vito Volterra Università Tor Vergata Via Columbia 2, 00133 Roma, Italy [email protected] Rudimenti di programmazione Programming
Tutorial sugli ambienti di sviluppo: Eclipse e NetBeans
Tutorial sugli ambienti di sviluppo: Eclipse e NetBeans Prima di tutto va installato il compilatore, ottenibile scaricando ed installando MinGW o CygWin. MinGW: http://www.mingw.org/download.shtml CygWin:
Record in C: il costruttore struct.
Record in C: il costruttore struct. Le variabili di tipo record e i nuovi tipi record si dichiarano in C tramite il costruttore di tipo struct:. ::= ;
Laboratorio di Algoritmi e Strutture Dati
Laboratorio di Algoritmi e Strutture Dati Prof. Aniello Murano Implementazioni di Liste Doppiamente Puntate e Circolari Corso di Laurea Codice insegnamento Email docente Anno accademico Informatica 13917
Corso di Informatica
Corso di Informatica Modulo T Scorrimento-Rotazione-Ricerca Prerequisiti Programmazione elementare Conoscenza ed uso di vettori Introduzione Lo scopo di questa Unità è approfondire il concetto di vettore
A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.
Algoritmi di routing dinamici (pag.89) UdA2_L5 Nelle moderne reti si usano algoritmi dinamici, che si adattano automaticamente ai cambiamenti della rete. Questi algoritmi non sono eseguiti solo all'avvio
Università degli Studi di Messina
Università degli Studi di Messina Guida alla Rendicontazione on-line delle Attività del Docente Versione della revisione: 2.02/2013-07 A cura di: Fabio Adelardi Università degli studi di Messina Centro
Strutturazione logica dei dati: i file
Strutturazione logica dei dati: i file Informazioni più complesse possono essere composte a partire da informazioni elementari Esempio di una banca: supponiamo di voler mantenere all'interno di un computer
INFORMATICA - I puntatori Roberta Gerboni
1 2 I puntatori in C++ Il puntatore un tipo di dato scalare, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore è un
Relazioni tra oggetti e classi : Composizione. Relazioni tra oggetti e classi : esempio di Aggregazione. classe contenitore
Relazioni tra oggetti e classi : Generalizzazione Fondamenti di Informatica II 20. Laboratorio 6 Collegamenti e associazioni Le relazioni di tipo generalizzazione (specializzazione), servono per poter
Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica
Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL 1 Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono
Algoritmi e strutture dati. Codici di Huffman
Algoritmi e strutture dati Codici di Huffman Memorizzazione dei dati Quando un file viene memorizzato, esso va memorizzato in qualche formato binario Modo più semplice: memorizzare il codice ASCII per
Vettori Algoritmi elementari di ordinamento
Dipartimento di Informatica e Sistemistica Antonio Ruberti Sapienza Università di Roma Vettori Algoritmi elementari di ordinamento Corso di Fondamenti di Informatica Laurea in Ingegneria Informatica (Canale
Fondamenti di Informatica T. Linguaggio C: i puntatori
Linguaggio C: i puntatori Il puntatore E` un tipo di dato scalare, che consente di rappresentare gli indirizzi delle variabili allocate in memoria. Dominio: Il dominio di una variabile di tipo puntatore
Matematica in laboratorio
Unità 1 Attività guidate Attività 1 Foglio elettronico Divisibilità tra numeri naturali Costruisci un foglio di lavoro per determinare se a è divisibile per b, essendo a e b due numeri naturali, con a
Equilibrio bayesiano perfetto. Giochi di segnalazione
Equilibrio bayesiano perfetto. Giochi di segnalazione Appunti a cura di Stefano Moretti, Silvia VILLA e Fioravante PATRONE versione del 26 maggio 2006 Indice 1 Equilibrio bayesiano perfetto 2 2 Giochi
puntatori Lab. Calc. AA 2007/08 1
puntatori Lab. Calc. AA 2007/08 1 parametri delle funzioni (dalla lezione scorsa) gli argomenti in C vengono passati by value dalla funzione chiamante alla funzione chiamata la lista degli argomenti viene
Soluzione dell esercizio del 2 Febbraio 2004
Soluzione dell esercizio del 2 Febbraio 2004 1. Casi d uso I casi d uso sono riportati in Figura 1. Figura 1: Diagramma dei casi d uso. E evidenziato un sotto caso di uso. 2. Modello concettuale Osserviamo
Il tipo di dato astratto Pila
Il tipo di dato astratto Pila Il tipo di dato Pila Una pila è una sequenza di elementi (tutti dello stesso tipo) in cui l inserimento e l eliminazione di elementi avvengono secondo la regola seguente:
Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011
Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 13 settembre 2011 Testo Il database di un videonoleggio è costituito da due vettori paralleli.
Excel. A cura di Luigi Labonia. e-mail: [email protected]
Excel A cura di Luigi Labonia e-mail: [email protected] Introduzione Un foglio elettronico è un applicazione comunemente usata per bilanci, previsioni ed altri compiti tipici del campo amministrativo
Laboratorio di Algoritmi e Strutture Dati
Laboratorio di Algoritmi e Strutture Dati Docente: Camillo Fiorentini 18 dicembre 2007 Esercizio 1: rappresentazione di una tabella di occorrenze L obiettivo è quello di rappresentare in modo efficiente
Esempi di algoritmi. Lezione III
Esempi di algoritmi Lezione III Scopo della lezione Implementare da zero algoritmi di media complessità. Verificare la correttezza di un algoritmo eseguendolo a mano. Imparare a valutare le prestazioni
Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio
Appunti tratti dal videocorso on-line di Algoritmi e Programmazione Avanzata By ALeXio 1-La memoria dinamica La scrittura di un programma (indipendentemente dal linguaggio adottato) deve sempre tener conto
CMS MUSEO&WEB. Mappe grafiche. Andrea Tempera (OTEBAC) 12 aprile 2010
CMS MUSEO&WEB Mappe grafiche Andrea Tempera (OTEBAC) 12 aprile 2010 Introduzione Grazie ad appositi tag HTML possiamo associare molteplici collegamenti a differenti zone di un'unica immagine; un'immagine
Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30'
Prima di cominciare: si scarichi dal sito http://esamix.labx il file StartKit5.zip contenente i file necessari (solution di VS2008 e progetto compresi). Avvertenze per la consegna: apporre all inizio di
Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1. a cura di Giancarlo Cherchi
Eredità in C++ Corso di Linguaggi di Programmazione ad Oggetti 1 a cura di Giancarlo Cherchi 1 Introduzione Il meccanismo dell eredità consente di sfruttare delle relazioni tipo/sottotipo, ereditando attributi
Monitor. Introduzione. Struttura di un TDA Monitor
Monitor Domenico Cotroneo Dipartimento di Informatica e Sistemistica Introduzione E stato introdotto per facilitare la programmazione strutturata di problemi in cui è necessario controllare l assegnazione
LINGUAGGI DI PROGRAMMAZIONE
LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di
Laboratorio di Algoritmi e Strutture Dati
Laboratorio di Algoritmi e Strutture Dati Aniello Murano http://people.na.infn.it people.na.infn.it/~murano/ 1 Operazioni su Liste Doppie e Circolari 2 1 Indice Liste puntate semplici: Gli elementi sono
Cos è ACCESS? E un programma di gestione di database (DBMS) Access offre: un ambiente user frendly da usare (ambiente grafico)
Cos è ACCESS? E un programma di gestione di database (DBMS) Access offre: un ambiente user frendly da usare (ambiente grafico) 1 Aprire Access Appare una finestra di dialogo Microsoft Access 2 Aprire un
APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI
APPUNTI DI MATEMATICA LE FRAZIONI ALGEBRICHE ALESSANDRO BOCCONI Indice 1 Le frazioni algebriche 1.1 Il minimo comune multiplo e il Massimo Comun Divisore fra polinomi........ 1. Le frazioni algebriche....................................
Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica
Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica Dipartimento di Elettronica, Informazione e Bioingegneria Informatica B Sezione D Franchi Alessio Mauro,
IL MIO PRIMO SITO NEWS USANDO GLI SCHEDARI
Pagina 1 UN SISTEMA DI NEWS Sommario UN SISTEMA DI NEWS...1 Introduzione...2 Scelgo l'area su cui operare...3 Un minimo di teoria...3 Creo le Pagine...4 Definizione dello Schedario Novità...6 Compilo la
Oggetti Lezione 3. aspetti generali e definizione di classi I
Programmazione a Oggetti Lezione 3 Il linguaggio Java: aspetti generali e definizione di classi I Sommario Storia e Motivazioni Definizione di Classi Campi e Metodi Istanziazione di oggetti Introduzione
Breve riepilogo della puntata precedente:
Breve riepilogo della puntata precedente: 1. In C, il passaggio dei parametri alle funzioni avviene sempre per copia, ovvero il valore del parametro viene copiato all'interno della variabile che rappresenta
. A primi passi con microsoft a.ccepss SommarIo: i S 1. aprire e chiudere microsoft access Start (o avvio) l i b tutti i pro- grammi
Capitolo Terzo Primi passi con Microsoft Access Sommario: 1. Aprire e chiudere Microsoft Access. - 2. Aprire un database esistente. - 3. La barra multifunzione di Microsoft Access 2007. - 4. Creare e salvare
Registratori di Cassa
modulo Registratori di Cassa Interfacciamento con Registratore di Cassa RCH Nucleo@light GDO BREVE GUIDA ( su logiche di funzionamento e modalità d uso ) www.impresa24.ilsole24ore.com 1 Sommario Introduzione...
Indirizzo di una funzione. Puntatori a funzioni. Definizione di variabili. Definizione di variabili
Indirizzo di una funzione 2 Puntatori a funzioni Ver. 2.4 Si può chiamare una funzione utilizzando l indirizzo di memoria dal quale inizia il codice eseguibile della funzione stessa L indirizzo di memoria
Utilizzo delle formule in Excel
Utilizzo delle formule in Excel Excel è dotato di un potente motore di calcolo che può essere utilizzato per elaborare i dati immessi dagli utenti. I calcoli sono definiti mediante formule. Ogni formula
