120 likes | 276 Views
Laboratorio di Programmazione. Lezione X. classe.h. classe.cpp. Struttura di un programma. Definizione classe e specifica (parziale). Specifica metodi mancanti in classe.h usando op. di scope resolution ::. main.cpp. Include “classe.h”. //file class.h class c { public:
E N D
Laboratorio di Programmazione Lezione X
classe.h classe.cpp Struttura di un programma Definizione classe e specifica (parziale) Specifica metodi mancanti in classe.h usando op. di scope resolution :: main.cpp Include “classe.h”
//file class.h class c { public: void prova(); } //file class.cpp #include “class.h” void c::prova() { //corpo funzione } Struttura di un programma (2) //file main.cpp #include “class.h” void main() { c oggetto; oggetto.prova(); }
Per la gestione di un progetto su piu’ files e’ possibile creare un makefile, contenente l’elenco delle dipendenze dei files e delle azioni per compilare e linkare i componenti. Il makefile Main.cpp Class.cpp Class.h
Etichetta Files dipendenti da etichetta Il makefile Main.cpp all: main.o class.o g++ -o execName class.o main.o main.o : main.cpp g++ -c main.cpp class.o : class.cpp g++ -c class.cpp Class.cpp Class.h Cosa fare se bisogna aggiornare l’etichetta
All class.o main.o Il makefile Main.cpp main.cpp class.cpp all: main.o class.o g++ -o execName class.o main.o main.o : main.cpp g++ -c main.cpp class.o : class.cpp g++ -c class.cpp Class.cpp Class.h All e’ il default quando si ricompila tutto il progetto
Il programma “make” prende in pasto un makefile ed esegue le compilazioni specificate. Uso (da riga di comando): make make all // all e’ l’etichetta di default make etichetta // si ricompila solo il sottoinsieme dipendente // da etichetta. Il make controlla se i files cpp e h sono stati aggiornati e ricompilare solo le parti di programma modificate. Come usare make
Oggi parliamo delle pile (stack in inglese) Mnemonico: pila di piatti Una pila e’ un insieme ordinato di oggetti dello stesso tipo su cui e’ possibile eseguire le seguenti operazioni: Push: inserimento in testa di un oggetto Pop: prelevamento dell’oggetto in testa Empty: flag che indica se la pila e’ vuota Un po’ di strutture dati D A Push D A Pop A Pop C C C C B B B B
La classe pila, dunque deve possedere almeno i 3 metodi: Push, Pop, Empty. Per implementare gli elementi ricorriamo ad un array, dove un indice top descrive l’elemento in testa: class pila { private: int* A; int top; public: int Pop( ); void Push ( int e); int Empty; }; La classe pila di interi
Introduciamo i templates per descrivere una generica pila di oggetti della classe T: template <class T> class pila { private: T* A; int top; public: T Pop( ); void Push ( T e); int Empty; }; La classe pila di oggetti
template <class T> class pila { … }; // specificare un metodo con l’operatore :: template <class T> T pila <T> :: Pop( ) { … } // e’ necessario specificare il tipo di pila // istanziare una pila pila<int> P1; pila<char> P2; Come usare i templates
Scrivere un programma che, utilizzando una pila di char, sia in grado di dire se in un file di testo la sequenza di parentesi tonde ( ad es. una espressione aritmetica) risulta bilanciata e coerente: (1+(2*3) Caso errato (1+(2*3)) Caso corretto (1+(2*3))) Caso errato Programma del giorno