1 struct Pila { private: int size; int defaultGrowthSize; int marker; int * contenuto; void cresci(int increment); public: Pila(int initialSize) ; Pila();

Slides:



Advertisements
Presentazioni simili
Puntatori Linguaggio C.
Advertisements

Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) dopo ciascuna istruzione del main: public class Up extends Object { public.
Uso avanzato di C.
Interfacce Java.
Package Utilizzo classi.
Generazione di numeri casuali in Dev C++
Alcune Classi Standard Object, Vettori. Esercizio dellultima volta Superclasse Persona Sottoclasse Libro.
Esercizio 2. Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) durante la valutazione delle seguenti dichiarazioni di classe.
Si consideri il seguente programma: class Up extends Object { public static int x; public int y; public static void metodo(Up o) {Up w=o.metodo1(x); o.y=w.y+6;}
Differenze tra C e C++ Commenti: Adesso puoi inserire dei commenti tra // e la fine della linea. Usare le librerie C: In C++ puoi anche chiamare una funzione.
Layouts and Graphics. component - container - layout Un Container contiene [0 o +] Components Il Layout specifica come i Components sono disposti nel.
Esempio: Tombola! Parte seconda.
Unified Modeling Language class C {…} class B extends C {…} Esiste una notazione grafica per mostrare le relazioni di ereditarietà. Object StringC B Tutte.
1 Il nostro esempio guida: La costruzione di uno stack.
Sezione: Costruttori Costruttori. Definizione dei costruttori Se per una classe A non scrivo nessun costruttore, il sistema automaticamente crea il costruttore.
prompt> java SumAverage
1 struct Pila { private: int size; int defaultGrowthSize; int marker; int * contenuto; void cresci(int increment); public: Pila(int initialSize) ; Pila();
Introduzione alla Object Oriented Programming, OOP E.Mumolo. DEEI
E.Mumolo. DEEI Introduzione alla programmazione ad oggetti in C++ Object Oriented Programming, OOP E.Mumolo. DEEI
Costruzione di Interfacce Lezione 10 Dal Java al C++ parte 1
1 Ultima Lezione del Corso di Fondamenti di Informatica 1 a.a – 06 Ma 29-Nov-2005.
JAVA C import java.util.*; #include <stdio.h>
1 Modulo II – Dettagli Deve: (1)Scorrere tutti gli elementi del dizionario (usare la lista ls della table ) (2)Per ogni elemento del dizionario: (2.1)
Selezione (=scelta) con “if-else”
Le liste dinamiche La ricorsione
OGGETTI COMPOSTI Una classe può contenere riferimenti a altre classi (o anche a se stessa): public class Orologio { Counter ore, minuti; } Loggetto Orologio.
TIPI DI DATO Un tipo di dato T è definito come: un dominio di valori, D un insieme di funzioni F 1,..,F n sul dominio D un insieme di predicati P 1,..,P.
Crivello Di Eratostene (fonte wikipedia
1 Lucidi delle esercitazioni di Sistemi di Elaborazione in Rete Università degli Studi della Calabria Corso di Laurea in Ingegneria Informatica A.A. 2003/2004.
Università degli Studi di BresciaA.A. 2012/2013 Fondamenti di Programmazione Docente: Alessandro SaettiA.A. 2012/2013 Università degli Studi di Brescia.
void binario(int n); …………………
Ese 2 (del 31 Marzo 2004). Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) durante la valutazione delle seguenti dichiarazioni.
Multiset. Progettare (specifica con identificazione delle eventuali astrazioni necessarie, incluse eccezioni, e implementazione) del tipo di dato Multiset,
Soluzioni 1.Struttura base soluzione 2.Lettura dei tasti 3.Identificazione dei tasti 4.Accensione dei LED 5.Rotazione dei LED 6.Rotazione dei tasti fino.
Programmazione concorrente
Tail recursion: esempio
1 Applet ed HTML Fondamenti di Informatica Corso D.
Appunti di Java (J2SDK 1.4.2, JDK 1.6.0) prof. Antonella Schiavon settembre 2009.
Matrici: un’implementazione parametrica in C++
Ricerca sequenziale in un array di interi
Corso di Programmazione Grafica e Laboratorio Daniele Marini
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Polimorfismo.
Algoritmo che viene utilizzato per elencare gli elementi di un insieme secondo una sequenza stabilita da una relazione d'ordine, in modo che ogni elemento.
Collection & Generics in Java
Un algoritmo è un procedimento che risolve un determinato problema attraverso un numero finito di passi. Un problema risolvibile mediante un algoritmo.
Ugo de'Liguoro - Informatica 2 a.a. 03/04 Lez. 5 Le strutture informative Corso di Informatica 2 a.a. 2003/04 Lezione 5.
#include void main() { int a,b,c,; float s, x,x1,x2,delta,alfa,beta; int num[3]; int i; printf("La forma classica dell'equazione di 2° grado è: a*x^2+b*x+c=0\n.
Il linguaggio C Puntatori e dintorni.
1 novembre I nomi in Java F. Bombi 1 novembre 2002.
Scrollbar java.awt.Scrollbar. Scrollbar Può essere usata anche da sola come slider ha vari costruttori, il più completo permette di inserire orientamento,
Heap concetti ed applicazioni. maggio 2002ASD - Heap2 heap heap = catasta condizione di heap 1.albero binario perfettamente bilanciato 2.tutte le foglie.
Definizione di algoritmo: Un algoritmo è un procedimento che risolve un determinato problema attraverso un numero finito di passi. Un problema risolvibile.
Fondamenti di informatica Oggetti e Java Luca Cabibbo Luca Cabibbo – Fondamenti di informatica: Oggetti e Java Copyright © 2004 – The McGraw-Hill Companies.
CORSO DI PROGRAMMAZIONE II
Temp. Esercizio DataSet Generare 100 numeri interi casuali tra 1 e Visualizzare la loro media e il valore massimo. A questo scopo realizzare la.
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C Esercizi su Alberi.
30/10/01Array 1  Un array e’ una struttura dati che contiene piu’ valori del medesimo tipo.  La lunghezza di un array e’ stabilita quando l’array viene.
Input in Java. Uso Scanner Un oggetto per la lettura dalla tastiera Piuttosto, per rappresentare la tastiera del nostro calcolatore useremo un oggetto.
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Esercizi.
Pila.h struct Pila { int size; int defaultGrowthSize; int marker;
Unità didattica 1: Introduzione al linguaggio Java
esercizi alberi binari
Ese 2 (del 31 Marzo 2004).
Esercizio 2.
concetti ed applicazioni
UML Diagramma statico di una classe
Dalla programmazione tradizionale al paradigma OO
Scandire …...
Transcript della presentazione:

1 struct Pila { private: int size; int defaultGrowthSize; int marker; int * contenuto; void cresci(int increment); public: Pila(int initialSize) ; Pila(); ~Pila() ; void copy(Pila * to) ; void inserisci(int k) ; int estrai() ; void stampaStato() ; } ; Pila.h versione 6 class Pila { private: int size; int defaultGrowthSize; int marker; int * contenuto; void cresci(int increment); public: Pila(int initialSize) ; Pila(); ~Pila() ; void copy(Pila * to) ; void inserisci(int k) ; int estrai() ; void stampaStato() ; } ;

La Pila in Java - 1 package strutture; public class Pila { int size; int defaultGrowthSize; int marker; int contenuto[]; final int initialSize=3; Pila() { size=initialSize; defaultGrowthSize=initialSize; marker=0; contenuto=new int[size]; }

La Pila in Java - 1 package strutture; public class Pila { int size; int defaultGrowthSize; int marker; int contenuto[]; final int initialSize=3; Pila() { size=initialSize; defaultGrowthSize=initialSize; marker=0; contenuto=new int[size]; } costante

La Pila in Java - 2 private void cresci(int dim){ size+=defaultGrowthSize; int temp[ ]=new int[size]; for (int k=0;k<marker;k++) temp[k]=contenuto[k]; contenuto=temp; }

La Pila in Java - 3 void inserisci(int k) { if (marker==size){ cresci(defaultGrowthSize;)} contenuto[marker]=k; marker++; } int estrai() { if (marker==0) { System.out.println( "Non posso estrarre da una pila vuota"); System.exit(1); } return contenuto[--marker]; }

La Pila in Java - 4 public static void main(String args[]) { int dim=10; Pila s=new Pila(); for (int k=0;k<2*dim;k++) s.inserisci(k); for (int k=0;k<3*dim;k++) System.out.println(s.estrai()); }

Using assertions (da Java 1.4) int estrai() { assert(marker>0):"Invalid marker"; return contenuto[--marker]; } Compilare con: java –ea Pila.java java.lang.AssertionError: Invalid marker at pila.Pila.estrai(Pila.java:22) at pila.Pila.main(Pila.java:39)

Using System.arrayCopy() System.arraycopy( Object src, int src_position, Object dst, int dst_position, int length ); Copies the specified source array, beginning at the specified position, to the specified position of the destination array.

La Pila in Java - 2 private void cresci(int dim){ size+=defaultGrowthSize; int temp[ ]=new int[size]; System.arraycopy( contenuto, 0, temp, 0, marker-1); contenuto=temp; }

Tipi di dato derivati (reference data) Java, come tutti i linguaggi OO, permette di definire NUOVI TIPI DI DATO (classi). Alcuni tipi di dato (classi) sono predefinite: ad esempio le stringhe. (String) Point punto = new Point(10,10); No Structures or Unions Java does not support C struct or union types. Note, however, that a class is essentially the same thing as a struct, but with more features. And you can simulate the important features of a union by subclassing. tipo identificatore costruttore Operatore di creazione

Java non ha i puntatori Ma è vero? Point punto = new Point(10,10); lidentificatore di un oggetto (punto) sembra proprio un puntatore! Quel che Java non ha è laritmetica dei puntatori.

Confronto delloperatore new in C++: Point * punto = new Point(10,10); in Java: Point punto = new Point(10,10); punto.x di Java equivale a punto->x del C++ In Java gli oggetti sono accessibili SOLO per referenza.

memory management La gestione (dinamica) della memoria e automatica, tramite la creazione (operatore new ) e la distruzione (garbage collection) di oggetti. GC interviene quando serve memoria. GC elimina gli oggetti per i quali non vi sono piu riferimenti attivi. GC puo essere attivato su richiesta esplicita: System.gc()

memory management - costruttori Operazioni da eseguirsi alla nascita di un oggetto vanno definite nel metodo costruttore. Ogni classe deve avere uno (o più) costruttori. I costruttori possono differire per numero e tipo di parametri. Es.: Pila() { size=100; … } Pila(int size) { this.size=size }

memory management - distruttori Operazioni da associarsi con leliminazione di un oggetto possono essere definite nel metodo distruttore finalize() (opzionale) NOTA: il metodo finalize POTREBBE NON ESSERE CHIAMATO DAL SISTEMA (es. se il programma finisce prima…) Per essere certi che vengano chiamati i metodi finalize, occorre chiamare la System.runFinalization() subito DOPO la System.gc()

System agisce come libreria System.out.println(…); System.gc(); System.runFinalization(); System.exit(int status); System.arraycopy(Object src, int srcPos, Object dest, int destPos, int length); long System. currentTimeMillis();

Class String

String Per trasformare il contenuto di una stringa in un intero: int Integer.parseInt(String s) Per trasformare il contenuto di una stringa in un float: float Float.parseFloat(String s)

23 Esercizio: Costruite una Coda analoga alla Pila