Lezione X Laboratorio di Programmazione. Struttura di un programma Definizione classe e specifica (parziale) classe.hclasse.cpp main.cpp Specifica metodi.

Slides:



Advertisements
Presentazioni simili
Programmazione ad oggetti
Advertisements

Introduzione al linguaggio C++
1 La Standard Template Library vettori, liste, mappe, …. find, replace, reverse, sort, …. puntatori intelligenti La libreria standard STL e una libreria.
Funzioni e procedure Ogni linguaggio di programmazione ad alto livello mette a disposizione del programmatore questi strumenti, ed il C non è da meno!
Iterazione A. Ferrari.
Tipi di dato astratti Lista, Pila, Coda, Albero.
Strutture dati lineari
Programmazione object oriented in C++
1 Semantica Operazionale di un frammento di Java: lo stato.
Classi ed Oggetti in Java (Cenni). Richiami Ruolo delle Classi in Java Oggetti.
1 Classi di memorizzazione. 2 Definiscono le regole di visibilità delle variabili e delle funzioni quando il programma è diviso su più file Stabiliscono.
Fondamenti di Informatica
UD 3: “Le Liste” UD 4: “Pile e Code” UD 5: “Alberi e grafi”
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Tail recursion: esempio
Alberi binari Definizione della struttura dati: struct tree { };
Process synchronization
1 Programmazione ad oggetti in Java E.Mumolo, DEEI
Introduzione al linguaggio C++ 5 lezioni
Progettazione dei sistemi interattivi (A.A. 2004/05) - Lezione 3 1 La relazione di ereditarietà Punto di vista insiemistico: la relazione di ereditarietà
Esercizi su pile Scrivere una funzione che restituisca una nuova pila che contiene i valori di una pila in ingresso in ordine inverso. La pila originale.
Esercizi su code Date due code in ingresso a valori interi in ordine crescente, scrivere una funzione che restituisca una terza coda che contenga i valori.
Type int_stack = struct { int top; int P[100]; } int_stack creapila() { int_stack s = new int_stack; s.top = 0; return s; } int_stack push(int_stack s,
Type int_stack = struct { int top; int P[100]; } int_stack creapila() { int_stack s = new int_stack; s.top = 0; return s; } int_stack push(int_stack s,
Le classi Definizione di classe Attributi e metodi di una classe Costruttori e distruttori Private e public Funzioni friend Il puntatore this.
Le funzioni.
Lezione VII Laboratorio di Programmazione. Simulazione esame Scrivere in C++ una funzione di nome RICERCA che, presi come parametri. un array A di numeri.
Lezione IX Laboratorio di Programmazione. Le Classi Una classe C++ è definita come segue: class Nomeclasse { private: // metodi e attrib. visibili solo.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
Esercizio 10.* Un cassiere vuole dare un resto di n centesimi di euro usando il minimo numero di monete. a) Descrivere un algoritmo goloso per fare ciò.
CODIFICA Da flow-chart a C++.
2000 Prentice Hall, Inc. All rights reserved. Capitolo 10 (Deitel) Strutture, unioni ed enumerazioni Sommario Introduzione Definire le strutture.
void binario(int n); …………………
INTERFACCIAMENTO ASSEMBLY - C++
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA FINALE DEL 21 MAGGIO 2007 NOME: COGNOME: ________________________________________________________________________________.
Conversione da base 10 a base X (Utilizzo della pila)
Alberi binari Definizione della struttura dati: struct tree { };
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 9 Tipi parametrici Collezioni generiche. Strutture matematiche parametriche.
Ricerca sequenziale in un array di interi
Complessità di un algoritmo
Nota (rif. alla lezione precedente): Vector vs ArrayList Le classi generiche Vector e ArrayList sono sostanzialmente equivalenti, ma: I metodi.
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
CORSO DI PROGRAMMAZIONE II Lezione 22
Una "vera" classe.. ..un esempio pratico: la calcolatrice
ESERCITAZIONE 12 ESERCIZIO 2 14/05/2014. Consegne 1/4 Definire la classe MyBufferedReader che estende la classe BufferedReader, implementando il metodo.
Programmazione ad oggetti
Sistemi e Tecnologie Informatiche Verifica di correttezza di un programma.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Pile e Code.
Esercitazione su Vector. Permette di definire collezioni di dati generiche, che sono in grado di memorizzare elementi di ogni sottotipo di Object Definito.
AlgoLab - Pile e Code Pile e code Laboratorio di Algoritmi 02/03 Prof. Ugo de’ Liguoro.
Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 7 – Array.
1 Tipi di Dato §descrittori, tipi, controllo e inferenza dei tipi §specifica (semantica) e implementazione di tipi di dato l implementazioni “sequenziali”
CORSO DI PROGRAMMAZIONE II
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Nucleo di Java: Struttura e Semantica Espressioni Assegnamento Controllo di sequenza Dichiarazioni.
1 Analisi ammortizzata Si considera il tempo richiesto per eseguire, nel caso pessimo, una intera sequenza di operazioni. Se le operazioni costose sono.
Ese 3 (del 3 Aprile 2003). Testo Progettare la specifica e l’implementazione del tipo di dato astratto modificabile Stack, supponendo che gli elementi.
Ese 3 (del 3 Aprile 2003). Testo Progettare la specifica e l’implementazione del tipo di dato astratto modificabile Stack, supponendo che gli elementi.
LIP: 2 Maggio 2008 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
Ese 1 e 3 (del 6 Aprile 2005). Primo Ese Si identifichino gli errori che il compilatore segnalerebbe per il seguente programma Tipi Legami tra dichiarazioni.
LIP: 11 Maggio 2007 Classi Astratte. Cos’e’ una Classe Astratta una classe astratta e’ un particolare tipo di classe permette di fornire una implementazione.
Ex.1 - Astrazioni su Dati Si abbia il tipo di dato stack di interi, IntStack, specificato sotto: public class IntStack { \\ OVERVIEW: uno Stack è una collezione.
DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOINGEGNERIA Lab 3: 27 Aprile 2015 Marco D. Santambrogio – Gianluca Durelli –
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Corso di Algoritmi e Strutture Dati con Laboratorio Tipi di dato pila e coda.
Lezione n. Parole chiave: Corso di Laurea: Insegnamento: Docente: A.A Salvatore Cuomo Strutture dati di tipo astratto 19 Strutture dati,
Introduzione alle Classi e agli Oggetti in Java 1.
Transcript della presentazione:

Lezione X Laboratorio di Programmazione

Struttura di un programma Definizione classe e specifica (parziale) classe.hclasse.cpp main.cpp Specifica metodi mancanti in classe.h usando op. di scope resolution :: Include “classe.h”

Struttura di un programma (2) //file class.cpp #include “class.h” void c::prova() { //corpo funzione } //file class.h class c { public: void prova(); } //file main.cpp #include “class.h” void main() { c oggetto; oggetto.prova(); }

Il makefile 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. Class.h Class.cpp Main.cpp

Il makefile Etichetta Class.h Class.cpp 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 Files dipendenti da etichetta Cosa fare se bisogna aggiornare l’etichetta

Il makefile Class.h Class.cpp 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 All e’ il default quando si ricompila tutto il progetto All main.o class.o main.cppclass.cpp

Come usare make 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.

Un po’ di strutture dati 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 A C B Push D A C B D A C B C B Pop

La classe pila di interi 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 oggetti Introduciamo i templates per descrivere una generica pila di oggetti della classe T: template class pila { private: T* A; int top; public: T Pop( ); void Push ( T e); int Empty; };

Come usare i templates template class pila { … }; // specificare un metodo con l’operatore :: template T pila :: Pop( ) { … } // e’ necessario specificare il tipo di pila // istanziare una pila pila P1; pila P2;

Programma del giorno 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