Appendice B - Othello come applet

Dimensione: px
Iniziare la visualizzazioe della pagina:

Download "Appendice B - Othello come applet"

Transcript

1 Appendice B - Othello come applet Il gioco dell'othello, detto anche Reversi, consiste in una scacchiera di 64 caselle, 8 x 8, su cui all'inizio si trovano quattro pedine, due nere e due bianche, vedi figura B.1. Ognuno dei due avversari è legato a un colore diverso e può mettere sulla scacchiera pedine del proprio colore. Una pedina può essere posta sulla scacchiera solo se racchiude una o più pedine del colore avversario fra se stessa e un altra pedina del proprio colore. Tutte le pedine racchiuse in questo modo diventano del colore della pedina posta sulla scacchiera. Lo scopo del gioco è di riempire la scacchiera con il maggior numero di pedine del proprio colore. Figura B.1 Posizioni di partenza del gioco Othello Viene qui presentato un applet Java che permette di giocare a Othello contro il computer. In questa versione il computer gioca con le pedine nere mentre il giocatore ha le pedine bianche. Il giocatore pone le sue pedine effettuando un click con il mouse sulla casella prescelta. Alla prima mossa, il giocatore può passare il gioco al computer effettuando un click in una posizione non valida. La stessa cosa deve essere fatta nel caso in cui il giocatore non abbia mosse valide. Effettuando un click dopo la fine del gioco, si fa iniziare una nuova partita. Sono disponibili più livelli che possono essere impostati dal documento HTML per mezzo del parametro livello: il livello 1 è per principianti e man mano che si sale di livello, aumenta la bravura del computer e i suoi tempi di elaborazione per generare una mossa. Il livello di default è il 4. I sorgenti contengono in totale circa 500 linee di codice, esclusi i commenti, e le classi compilate occupano circa 10K, per cui possono essere eseguite da un browser Internet anche disponendo solo di una connessione via modem a bassa velocità. Il codice è stato scritto per essere più leggibile che efficiente, ma comunque, con le potenze elaborative attuali, non c è nessun problema fino al livello 4 compreso. I sorgenti del gioco possono essere inseriti in un file di nome Othello.java e sono riportati di seguito. Gioco dell'othello di Marco Bertacca

2 import java.awt.; import java.awt.event.; import java.applet.applet; Questa classe rappresenta la scacchiera del gioco dell'othello. Essa si occupa di accettare le mosse, verificarle e memorizzare la situazione derivante da 1.00 Marco Bertacca class Scacchiera { Larghezza della scacchiera espressa in numero di celle static final int LARGHEZZA = 8; Altezza della scacchiera espressa in numero di celle static final int ALTEZZA = 8; Intero indicante una casella vuota static final int VUOTO = -1; Intero indicante una casella occupata da una pedina bianca static final int BIANCO = 0; Intero indicante una casella occupata da una pedina bianca static final int NERO = 1; Indice dell'elemento dell'array che riporta il punteggio posizionale static final int POSIZIONALE = 0; Indice dell'elemento dell'array che riporta il numero di pedine girate static final int PEDINE = 1; Matrice del punteggio di ogni casella #aggiorna private static final int puntiinterni[][] ={ { 50, 50, 50, 50, 50, 50, 50, 50, { 50, 0, 0, 0, 0, 0, 0, 50, { 50, 0, 20, 10, 10, 20, 0, 50, { 50, 0, 10, 20, 20, 10, 0, 50, { 50, 0, 10, 20, 20, 10, 0, 50, { 50, 0, 20, 10, 10, 20, 0, 50, { 50, 0, 0, 0, 0, 0, 0, 50, { 50, 50, 50, 50, 50, 50, 50, 50 ; Matrice del punteggio di ogni casella #aggiorna

3 private static final int puntiesterni[][] ={ { 800, -20, 20, 20, 20, 20,-20, 800, { -20,-400,-40,-20,-20,-40,-400,-20, { 20, -40, 20, 0, 0, 20, -40, 20, { 20, -20, 0, 0, 0, 0, -20, 20, { 20, -20, 0, 0, 0, 0, -20, 20, { 20, -40, 20, 0, 0, 20, -40, 20, { -20,-400,-40,-20,-20,-40,-400,-20, { 800, -40, 20, 20, 20, 20, -20,800 ; Matrice per individuare velocemente le posizioni intorno a una casella data private static final int intorno[][] = { { -1, -1, { -1, 0, { -1, 1, { 0, -1, { 0, 1, { 1, -1, { 1, 0, { 1, 1 ; Array contenente le pedine della scacchiera private int tavola[][]; Costruisce una scacchiera con le pedine per iniziare una nuova #reset Scacchiera() { reset(); Costruisce una scacchiera copiando lo stato da quella passata come argomento. Scacchiera(Scacchiera s) { int y; tavola = (int[][]) s.tavola.clone(); for (y = 0; y < ALTEZZA; y++) tavola[y] = (int[]) s.tavola[y].clone(); Inizializza la scacchiera alle condizioni iniziali void reset () { int y, x; tavola = new int[altezza][larghezza]; for (y = 0; y < ALTEZZA; y++) for (x = 0; x < LARGHEZZA; x++) tavola[y][x] = VUOTO; tavola[altezza / 2][LARGHEZZA / 2] = BIANCO; tavola[altezza / 2-1][LARGHEZZA / 2-1] = BIANCO; tavola[altezza / 2][LARGHEZZA / 2-1] = NERO; tavola[altezza / 2-1][LARGHEZZA / 2] = NERO; Restituisce la pedina a riga y e colonna x int pedinaa(int y, int x) { if (y >= 0 && y < ALTEZZA && x >= 0 && x < LARGHEZZA)

4 return tavola[y][x]; else return VUOTO; Aggiorna la scacchiera in conseguenza dell'inserimento di una pedina nella posizione indicata da y e x e col colore colore colore della pedina da y riga su cui porre la x colonna su cui porre la punteggio pone in punteggio[posizionale] una valutuzione posizionale della mossa e in punteggio[pedine] il numero di pedine girate void aggiorna(int colore, int y,int x, int punteggio[]) { int ny, nx; int i; boolean gira; int altrocolore = colore == BIANCO? NERO : BIANCO; punteggio[posizionale] = puntiesterni[y][x]; punteggio[pedine] = 0; tavola[y][x] = colore; for (i = 0; i < 8; i++) { ny = y + intorno[i][0]; nx = x + intorno[i][1]; if (ny >= 0 && ny < ALTEZZA && nx >= 0 && nx < LARGHEZZA && tavola[ny][nx] == altrocolore) { gira = false; ny += intorno[i][0]; nx += intorno[i][1]; for ( ; ny >= 0 && ny < ALTEZZA && nx >= 0 && nx < LARGHEZZA; ny += intorno[i][0], nx += intorno[i][1]) { if (tavola[ny][nx] == colore) { gira = true; else if (tavola[ny][nx] == VUOTO) if (gira) { ny = y + intorno[i][0]; nx = x + intorno[i][1]; for ( ; ny >= 0 && ny < ALTEZZA && nx >= 0 && nx < LARGHEZZA; ny += intorno[i][0], nx += intorno[i][1]) { if (tavola[ny][nx] == altrocolore) { tavola[ny][nx] = colore; punteggio[posizionale] += puntiinterni[ny][nx]; punteggio[pedine]++; else Restituisce true se è ammesso porre una pedina nella posizione specificata, false colore colore della pedina da y riga su cui porre la pedina

5 @param x colonna su cui porre la pedina boolean èvalida(int colore, int y,int x) { boolean Return = false; int ny, nx; int i; int altrocolore = colore == BIANCO? NERO : BIANCO; if (y >= 0 && y < ALTEZZA && x >= 0 && x < LARGHEZZA && tavola[y][x] == VUOTO && (colore == BIANCO colore == NERO)) for (i = 0; i < 8 &&!Return; i++) { ny = y + intorno[i][0]; nx = x + intorno[i][1]; if (ny >= 0 && ny < ALTEZZA && nx >= 0 && nx < LARGHEZZA) { if (tavola[ny][nx] == altrocolore) { ny += intorno[i][0]; nx += intorno[i][1]; for ( ; ny >= 0 && ny < ALTEZZA && nx >= 0 && nx < LARGHEZZA; ny += intorno[i][0], nx += intorno[i][1]) { if (tavola[ny][nx] == colore) { Return = true; else if (tavola[ny][nx] == VUOTO) return Return; Se è ammesso porre una pedina nella posizione specificata, la pedina viene posta e viene restituito true, altrimenti viene restituito colore colore della pedina da y riga su cui porre la x colonna su cui porre la pedina boolean mettipedina(int colore, int y, int x) { boolean Return; int punteggio[] = { 0, 0 ; if (Return = èvalida (colore, y, x)) aggiorna (colore, y, x, punteggio); return Return; Restituisce il numero di pedine vuote sulla scacchiera. L'array di due elementi fornito come argomento viene riempito con il numero di pedine bianche e colore array di due elementi il cui elemento colore[bianco] viene riempito col numero di pedine bianche mentre l'elemento colore[nero] viene riempito col numero di pedine il numero di caselle vuote int punti (int colore[]) { int y, x; int Return = colore[bianco] = colore[nero] = 0; for (y = 0; y < ALTEZZA; y++) for (x = 0; x < LARGHEZZA; x++)

6 if (tavola[y][x] == BIANCO) colore[bianco]++; else if (tavola[y][x] == NERO) colore[nero]++; else Return++; return Return; Questa classe rappresenta un giocatore di 1.00 Marco Bertacca class Computer { L'oggetto scacchiera su cui giocare private Scacchiera scacchiera; Il colore associato al giocatore private int colore; Il livello di gioco private int livello; Variabile usata per eseguire il numero di ricorsioni pari al livello di gioco. private int livellotemp; Flag per stabilire quando il gioco è nella fase finale private boolean finale; Contiene il numero di mosse da giocare nella fase finale private int finaleda; Costruisce sc scacchiera su cui co colore assegnato li livello di gioco. Computer (Scacchiera sc, int co, int li) { scacchiera = sc; colore = co; livello = li; if (livello < 4) finaleda = 2 livello + 2; else finaleda = 10; Sollecita una true se la mossa viene eseguita, false se non ci sono mosse possibili

7 boolean muovi () { int x, y; int mx = -1, my = -1; int punteggio[] = { 0, 0 ; int valore, maxvalore = Integer.MIN_VALUE; if (scacchiera.punti(punteggio) < finaleda) finale = true; else finale = false; for (y = 0; y < 8; y++) for (x = 0; x < 8; x++) if (scacchiera.èvalida (colore, y, x)) { livellotemp = 0; valore = valutamossa (colore, y, x, scacchiera); if (valore > maxvalore) { maxvalore = valore; mx = x; my = y; if (mx >= 0) { scacchiera.mettipedina (colore, my, mx); return true; else return false; Esegue una valutazione della mossa. Questo metodo richiama se stesso per un numero di volte pari al numero del livello meno colore colore della pedina da y riga su cui porre la x colonna su cui porre la sc scacchiera su cui valutare la un intero corrispondente alla bontà della mossa private int valutamossa (int colore, int y, int x, Scacchiera sc) { int Return; int nx, ny; int punteggio[] = { 0, 0 ; int punti; int altropuntitmp, altropuntimax; int altrocolore = colore == Scacchiera.BIANCO? Scacchiera.NERO : Scacchiera.BIANCO; Scacchiera sclocale = new Scacchiera(sc); sclocale.aggiorna (colore, y, x, punteggio); if (finale) punti = punteggio[scacchiera.pedine]; else punti = punteggio[scacchiera.pedine] + punteggio[scacchiera.posizionale]; if ((y == 0 y == 7 x == 0 x == 7)) punti += valutabordi(y, x, colore, sclocale); if (++livellotemp < livello finale) { altropuntimax=-10000; for (ny=0; ny < 8; ny++) for (nx = 0; nx < 8; nx++) if (sclocale.èvalida (altrocolore, ny, nx )) { altropuntitmp = valutamossa(altrocolore, ny, nx, sclocale); if ( altropuntitmp > altropuntimax ) altropuntimax = altropuntitmp; punti -= altropuntimax;

8 --livellotemp; return punti; Valuta la bontà di una mossa sul bordo della y riga su cui porre la x colonna su cui porre la colore colore della pedina da sc scacchiera su cui valutare la un intero corrispondente alla bontà della mossa private int valutabordi (int y, int x, int colore, Scacchiera sc) { int Return = 0; int altrocolore = colore == Scacchiera.BIANCO? Scacchiera.NERO : Scacchiera.BIANCO; int pedinasx = Scacchiera.VUOTO; int pedinadx = Scacchiera.VUOTO; if (y == 0 y == 7) { if (x == 0 x == 7) Return = 100; else { pedinasx = sc.pedinaa (y, x - 1); pedinadx = sc.pedinaa (y, x + 1); if (pedinasx == altrocolore && pedinadx == altrocolore) Return = 100; else if (pedinasx==scacchiera.vuoto && pedinadx==scacchiera.vuoto && (x - 2 >= 0 && sc.pedinaa (y, x - 2) == colore x + 2 < 8 && sc.pedinaa (y, x + 2) == colore)) Return = -10; if (pedinasx == Scacchiera.VUOTO) { if (pedinadx == Scacchiera.VUOTO) if (pedinadx == altrocolore) { x++; while (x < 8); if (pedinasx == altrocolore) { if (pedinadx == altrocolore) if (pedinadx == Scacchiera.VUOTO) { x++; while (x < 8); if (pedinadx == Scacchiera.VUOTO) { if (pedinasx == Scacchiera.VUOTO) if (pedinasx == altrocolore) { x--; while (x >= 0);

9 if (pedinadx == altrocolore) { if (pedinasx == altrocolore) if (pedinasx == Scacchiera.VUOTO) { x--; while (x >= 0); else if (x == 0 x == 7) { pedinasx = sc.pedinaa (y - 1, x); pedinadx = sc.pedinaa (y + 1, x); if (pedinasx == altrocolore && pedinadx == altrocolore) Return = 100; else if (pedinasx==scacchiera.vuoto && pedinadx==scacchiera.vuoto && (y - 2 >= 0 && sc.pedinaa (y - 2, x) == colore y + 2 < 8 && sc.pedinaa (y + 2, x) == colore)) Return = -10; if (pedinasx == Scacchiera.VUOTO) { if (pedinadx == Scacchiera.VUOTO) if (pedinadx == altrocolore) { y++; while (y < 8); if (pedinasx == altrocolore) { if (pedinadx == altrocolore) if (pedinadx == Scacchiera.VUOTO) { y++; while (y < 8); if (pedinadx == Scacchiera.VUOTO) { if (pedinasx == Scacchiera.VUOTO) if (pedinasx == altrocolore) { y--; while (y >= 0); if (pedinadx == altrocolore) { if (pedinasx == altrocolore) if (pedinasx == Scacchiera.VUOTO) { y--; while (y >= 0);

10 return Return; Questa classe rappresenta l'interfaccia grafica per giocare a othello. Essa accetta le mosse dall'utente e sollecita le mosse del Marco Bertacca public class Othello extends Applet implements Runnable, MouseListener { Larghezza di una cella della scacchiera in pixel private int larghcella; Altezza di una cella della scacchiera in pixel private int altcella; Larghezza totale private int larghezza; Altezza totale private int altezza; Colore assegnato al giocatore umano private int colore; Colore assegnato al computer private int altrocolore; Flag che indica se il giocatore umano deve passare private boolean passa = false; Flag che indica quando il computer sta elaborando una mossa private boolean muovecomputer = false; Scacchiera di gioco private Scacchiera scac; Il giocatore computer private Computer comp; Livello di gioco private int livello = 4; Stringa per fornire informazioni al giocatore umano private String lineastato;

11 Font usato per visualizzare le informazioni private Font font = new Font("Courier", Font.PLAIN, 12); Altezza del font usato per visualizzare le informazioni private int altezzafont; Effettua l'inizializzazione dell'applet public void init() { int livn; String livs = getparameter ("livello"); if (livs!= null) { livn = new Integer(livs).intValue(); if (livn > 0 && livn < 9) livello = livn; altezzafont = getfontmetrics(font).getheight(); Dimension d = getsize(); larghcella = d.width / 8; altcella = (d.height - altezzafont) / 8; larghezza = larghcella 8; altezza = altcella 8; lineastato = "Othello livello: " + livello; scac = new Scacchiera(); comp = new Computer (scac, Scacchiera.NERO, livello); colore = Scacchiera.BIANCO; altrocolore = Scacchiera.NERO; addmouselistener (this); Disegna la scacchiera e le informazioni per l'utente public void paint (Graphics g) { int i, j; Color oldcolor = g.getcolor(); g.setcolor (new Color (0, 128, 0)); g.fillrect (0, 0, larghezza, altezza); g.setcolor (Color.black); for (i = 0; i < 9; i++) g.drawline (0, i altcella, larghezza, i altcella); for (i = 0; i < 9; i++) g.drawline (i larghcella, 0, i larghcella, altezza); for (i = 0; i < 8; i++) for (j = 0; j < 8; j++) { switch(scac.pedinaa(i, j)) { case Scacchiera.BIANCO: g.setcolor (Color.white); g.filloval (j larghcella + 1, i altcella + 1, larghcella - 1, altcella - 1); case Scacchiera.NERO: g.setcolor (Color.black); g.filloval (j larghcella + 1, i altcella + 1, larghcella - 1, altcella - 1); g.setfont(font); g.setcolor (Color.black); g.drawstring (lineastato, 0, altezza + altezzafont);

12 Valuta se esiste una mossa possibile per una pedina del colore specificato private boolean esistemossa(int col) { int y, x; for (y = 0; y < Scacchiera.ALTEZZA; y++) for (x = 0; x < Scacchiera.LARGHEZZA; x++) if (scac.èvalida (col, y, x)) return true; return false; public void mouseclicked(mouseevent e) { public void mousepressed(mouseevent e) { public void mouseentered(mouseevent e) { public void mouseexited(mouseevent e) { In base alla posizione del mouse, ricava la mossa del giocatore umano. Se il gioco è già finito, fa iniziare una nuova partita. Se siamo alla prima mossa e la mossa del giocatore umano non è valida, passa la mossa al computer. Se la mossa è valida, aggiorna la scacchiera e se a quel punto il gioco è finito, visualizza i risultati, altrimenti attiva un thread per l'elaborazione della mossa del computer. public void mousereleased(mouseevent e) { int x = e.getx(); int y = e.gety(); int punteggio[] = { 0, 0 ; if (!muovecomputer) { if (!esistemossa(colore) &&!esistemossa(altrocolore)) { scac.reset(); lineastato = "Othello livello: " + livello; repaint(); else if (passa scac.mettipedina(colore,y/altcella,x/larghcella)) { if (!esistemossa(colore) &&!esistemossa(altrocolore)) stampapunteggio(); else { muovecomputer = true; Thread t = new Thread(this); t.start (); lineastato = "Sto pensando..."; repaint(); else if (scac.punti (punteggio) == 60) { muovecomputer = true; Thread t = new Thread(this); t.start (); lineastato = "Sto pensando..."; repaint(); Sollecita una mossa del computer. public void run() { comp.muovi(); passa = false; if (!esistemossa(colore)) if (!esistemossa(altrocolore)) stampapunteggio();

13 else { lineastato = "Devi passare: clicka"; passa = true; else lineastato = "Tocca a te"; repaint(); muovecomputer = false; Visualizza il punteggio finale di una partita. void stampapunteggio () { int punteggio[] = { 0, 0 ; scac.punti (punteggio); if (punteggio[scacchiera.bianco] > punteggio[scacchiera.nero]) lineastato = "Hai vinto " + punteggio[scacchiera.bianco] + " a " + punteggio[scacchiera.nero]; else if (punteggio[scacchiera.bianco] < punteggio[scacchiera.nero]) lineastato = "Hai perso " + punteggio[scacchiera.bianco] + " a " + punteggio[scacchiera.nero]; else lineastato = "Hai pareggiato " + punteggio[scacchiera.bianco] + " a " + punteggio[scacchiera.nero]; passa = false; repaint(); Per eseguire l applet si può ricorrere a un testo in formato HTML come il seguente <title>othello</title> <hr> <applet code=othello.class width=161 height=190> <param name=livello value=4> </applet> <hr> Il livello di gioco viene impostato tramite il parametro livello e per default è 4. Il programma è formato da tre sole classi: Othello, che deriva da Applet e si occupa dell interazione con l utente, Computer, che elabora le mosse del computer e infine Scacchiera, che rappresenta appunto la scacchiera del gioco. Si può notare come la valutazione della mossa del computer sia eseguita da un thread indipendente in modo tale da permettere il ridisegno della scacchiera senza dover aspettare il termine dell elaborazione della mossa. Il metodo repaint infatti non causa l immediato ridisegno della finestra, ma segnala solo una necessità, a cui il sistema risponde appena possibile. I tempi di valutazione della mossa sono quasi impercettibili se il livello è basso ma crescono vertiginosamente al crescere del livello. Per capirne il perché, vediamo come fa il computer a generare una mossa. La classe Scacchiera comprende il metodo èvalida che permette di valutare se una mossa è valida o meno, e il metodo aggiorna che, oltre ad accettare una mossa e a modificare la scacchiera di conseguenza, restituisce anche una valutazione sulla sua validità. Questa valutazione è espressa da due numeri, uno dei quali rappresenta semplicemente il numero di pedine convertite mentre l altro corrisponde a una valutazione strategica basata su due matrici, puntiinterni e puntiesterni. Ogni volta che il computer deve muovere, viene invocato il metodo muovi nel quale vengono riconosciute le mosse valide tramite il metodo èvalida e per ognuna di esse viene invocato il metodo valutamossa passandogli come argomento anche l oggetto della classe

14 Scacchiera che rappresenta la scacchiera corrente, vedi figura B.2. Quest ultimo metodo si crea una scacchiera temporanea identica a quella passata come argomento e su di essa applica la mossa in valutazione, ricavando in tal modo un punteggio che ne indica la validità. Se stiamo giocando al livello 1, questo valore viene direttamente restituito al metodo muovi che alla fine premierà la mossa col punteggio maggiore. Giocando al livello 2 invece vengono valutate tutte le mosse che possono derivare dalla mossa in esame e il punteggio più alto viene sottratto a quello della mossa in esame. Giocando a livello n vengono valutati quindi n livelli di mosse e contro mosse, dando luogo a un esplosione combinatoria di valutazioni che rapidamente satura la potenza d elaborazione di un computer. Il procedimento può apparire complicato ma invece diventa di semplice implementazione utilizzando la ricorsione. Figura B.2 E in corso la valutazione delle possibili mosse valide Per migliorare la capacità di gioco del calcolatore, è stato aggiunto il metodo valutabordi per compensare la valutazione delle mosse effettuate sul bordo. Oltre a questo, quando si arriva al finale del gioco, il computer valuta in modo esaustivo tutte le mosse che rimangono basando a questo punto il proprio giudizio solo sul numero di pedine convertite.

Chiamata delle funzioni JavaScript da un applet

Chiamata delle funzioni JavaScript da un applet Chiamata delle funzioni JavaScript da un applet Il codice Java delle applet può essere eseguito nei browser Web su cui è presente il Java Plug-in, un meccanismo che gestisce le interazioni tra i browser

Dettagli

public static boolean occorre (int[] a, int n) { int i = 0; boolean trovato = false;

public 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

Dettagli

I Canvas. import java.awt.*; import javax.swing.*; public class Graf{ public Graf () { JFrame f = new JFrame("Finestra"); // crea frame invisibile

I Canvas. import java.awt.*; import javax.swing.*; public class Graf{ public Graf () { JFrame f = new JFrame(Finestra); // crea frame invisibile I Canvas Tra i vari contenitori Java il Canvas (area di disegno o tela) è una semplice superficie di disegno particolarmente utile per visualizzare immagini o per effettuare altre operazioni grafiche.

Dettagli

Gestione dell interattività: gli eventi

Gestione dell interattività: gli eventi Gestione dell interattività: gli eventi Gli eventi sono una modalità di comunicazione tra l utente (sistema) e il programma in esecuzione. Tipi di eventi: Input da parte dell utente: pressione del(i) bottone(i)

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA5 C2.1 Animazioni 1 Prerequisiti Programmazione base in Java Utilizzo di classi e oggetti Utilizzo di elementi grafici ed eventi Utilizzo classe Canvas 2 1 Introduzione

Dettagli

Ereditarietà (ultima)

Ereditarietà (ultima) Ereditarietà (ultima) Classi astratte Un ibrido tra classi e interfacce Hanno alcuni metodi implementati normalmente, altri astratti Un metodo astratto non ha implementazione abstract class AccountTransaction...

Dettagli

Corso: Fondamenti di Informatica (Gruppo 2) a.a Corsi di laurea: Ing. Settore Informazione

Corso: Fondamenti di Informatica (Gruppo 2) a.a Corsi di laurea: Ing. Settore Informazione Corso: Fondamenti di Informatica (Gruppo 2) a.a. 2017-18 Corsi di laurea: Ing. Settore Informazione Questionario a Risposte Multiple per auto-valutazione del Lab05 Domanda n. 1 Argomento: Iterazioni, array

Dettagli

Array di array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 03. A. Miola Febbraio 2008

Array di array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 03. A. Miola Febbraio 2008 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa Array di array A. Miola Febbraio 8 http://www.dia.uniroma.it/~java/fondinf/ Array di array Contenuti Array bidimensionali creazione

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

Progetto: Dama. 1 - Descrizione. 2 - Regole del gioco. Appello di febbraio 2003

Progetto: Dama. 1 - Descrizione. 2 - Regole del gioco. Appello di febbraio 2003 Appello di febbraio 2003 Progetto: Dama Laurea triennale in Comunicazione Digitale Laboratorio di Informatica Generale 1 - Descrizione Il progetto consiste nell implementare un rudimentale programma di

Dettagli

Le basi del linguaggio Java

Le basi del linguaggio Java Le basi del linguaggio Java Compilazione e interpretazione Quando si compila il codice sorgente scritto in Java, il compilatore genera il codice compilato, chiamato bytecode. È un codice generato per una

Dettagli

Esercitazione n 2. Obiettivi

Esercitazione n 2. Obiettivi Esercitazione n 2 Obiettivi Progettazione di una applicazione Java Utilizzo di classi come schemi Utilizzo di costruttori Utilizzo di stringhe Uguaglianza tra oggetti Utilizzo di classi come componenti

Dettagli

Fondamenti di Informatica T-1. Classi e array

Fondamenti di Informatica T-1. Classi e array Classi e array 2 Classi e metodi statici Una classe è un costrutto linguistico che permette di modellare un'entità di un sistema, definendone le caratteristiche (variabili interne) e le azioni (metodi).

Dettagli

Grafico della parabola

Grafico della parabola Grafico della parabola Il grafico matematico è un disegno che mostra l andamento di una funzione f(x) al variare della variabile x. Per tracciare un grafico sul video del computer, si deve scegliere un

Dettagli

Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo) Esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo) Selezione di prove di esame al calcolatore Esercizio 1 (esame del 13/01/2006) La classe Matrice definisce oggetti che rappresentano matrici

Dettagli

Algoritmi di Ricerca. Esempi di programmi Java

Algoritmi di Ricerca. Esempi di programmi Java Fondamenti di Informatica Algoritmi di Ricerca Esempi di programmi Java Fondamenti di Informatica - D. Talia - UNICAL 1 Ricerca in una sequenza di elementi Data una sequenza di elementi, occorre verificare

Dettagli

Perché il linguaggio C?

Perché il linguaggio C? Il linguaggio C 7 Perché il linguaggio C? Larga diffusione nel software applicativo Standard di fatto per lo sviluppo di software di sistema Visione a basso livello della memoria Capacità di manipolare

Dettagli

! Programmazione strutturata. ! OO: TDA, scambio messaggi, eredità, polimorfismo, OO in Java. ! Rassegna API. ! Documentazione Javadoc delle API

! Programmazione strutturata. ! OO: TDA, scambio messaggi, eredità, polimorfismo, OO in Java. ! Rassegna API. ! Documentazione Javadoc delle API Riassunto Applet (e altro dell AWT ) Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Programmazione, lezione 22 19 maggio

Dettagli

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni Esercizio 1 Dire quale è la complessità temporale del seguente metodo, espressa con notazione asintotica O(.) (con la migliore

Dettagli

Esercitazione gennaio 2015

Esercitazione gennaio 2015 Esercitazione 10 19 gennaio 2015 Termine per la consegna dei lavori: martedì 26 gennaio ore 23.59. Istruzioni I lavori dovranno essere salvati in una cartella che deve contenere tutto e solo ciò che volete

Dettagli

Esempio: Tombola! Vogliamo progettare una applicazione che realizza il gioco della tombola Versione semplificata: un banco, un

Esempio: Tombola! Vogliamo progettare una applicazione che realizza il gioco della tombola Versione semplificata: un banco, un Esempio: Tombola! Vogliamo progettare una applicazione che realizza il gioco della tombola Versione semplificata: un banco, un giocatore, ogni giocatore una scheda Ci vengono già fornite le classi necessarie

Dettagli

Programmazione web lato client con JavaScript. Marco Camurri 1

Programmazione web lato client con JavaScript. Marco Camurri 1 Programmazione web lato client con JavaScript Marco Camurri 1 JavaScript E' un LINGUAGGIO DI PROGRAMMAZIONE che consente di inserire codice in una pagina web Sintassi simile a Java (e al C), ma NON E'

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014

Programmazione. Cognome... Nome... Matricola... Prova scritta del 11 luglio 2014 Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 11 luglio 2014 TEMPO DISPONIBILE: 2 ore Negli esercizi

Dettagli

Esempi di programmazione

Esempi di programmazione Esempi di programmazione Applet che disegna cerchi Costruire un'applet disegnoapplet che ad ogni pressione del mouse disegna un cerchio 1 disegnoapplet 1. Deve usare la classe Applet? NO 2. Deve estendere

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito al momento della creazione

Dettagli

Applet. Applet: il termine identifica piccole applicazioni da eseguirsi all interno di un browser.

Applet. Applet: il termine identifica piccole applicazioni da eseguirsi all interno di un browser. Applet IngSW0304 p.1 Applet Applet: il termine identifica piccole applicazioni da eseguirsi all interno di un browser. Una pagina web può contenere un riferimento al codice di un applet che verrà scaricato

Dettagli

Fondamenti di Informatica T2 Modulo 2. Corso di Laurea in Ingegneria Informatica Anno accademico 2008/2009. Enumerativi

Fondamenti 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

Dettagli

24 - Possibili approfondimenti

24 - Possibili approfondimenti 24 - Possibili approfondimenti 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

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo L6 (JAVA9) 1 Introduzione alle applet 1 Prerequisiti Architettura client/server Elementi di base HTML Programmazione Java Utilizzo package awt di Java 2 1 Introduzione

Dettagli

Corso di Laurea in Matematica Corso di Informatica Prova d Esame del 02/02/2010

Corso di Laurea in Matematica Corso di Informatica Prova d Esame del 02/02/2010 Esercizio 1. Si deve modellare con una classe Java il contenuto di un portamonete, con delle opportune semplificazioni. Le monete da considerare sono di soli 4 tagli: 10, 20, 50 e 100 centesimi (cioè 1

Dettagli

Esercitazione 11. Liste semplici

Esercitazione 11. Liste semplici Esercitazione 11 Liste semplici Liste semplici (o lineari) Una lista semplice (o lineare) è una successione di elementi omogenei che occupano in memoria una posizione qualsiasi. Ciascun elemento contiene

Dettagli

interfacce ed eventi intercettare il mouse ed altri eventi

interfacce ed eventi intercettare il mouse ed altri eventi interfacce ed eventi intercettare il mouse ed altri eventi interfacce: premessa il termine "interfaccia" occorre in Java con due significati, collegati ma distinti 1. interface, parola chiave di Java e

Dettagli

Laboratorio di Programmazione Lezione 3. Cristian Del Fabbro

Laboratorio di Programmazione Lezione 3. Cristian Del Fabbro Laboratorio di Programmazione Lezione 3 Cristian Del Fabbro Prossima lezione GIOVEDÌ 12 NOVEMBRE ORE 14:00 Array a.k.a. vettore Un array è una collezione ordinata di dati omogenei (cioé sono tutti dello

Dettagli

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013

Programmazione a Oggetti e JAVA. Prof. B.Buttarazzi A.A. 2012/2013 Programmazione a Oggetti e JAVA Prof. B.Buttarazzi A.A. 2012/2013 Sommario La ricorsione Metodi ricorsivi Esercizi proposti 16/01/2013 2 La ricorsione In Java ogni metodo può chiamare anche se stesso,

Dettagli

REGOLE DI BASE DEL GIOCO DEGLI SCACCHI

REGOLE DI BASE DEL GIOCO DEGLI SCACCHI REGOLE DI BASE DEL GIOCO DEGLI SCACCHI Queste sono le regole di base del gioco degli scacchi. Per giocare nei tornei occorre seguire anche altre regole comportamentali ed agonistiche. Il regolamento completo

Dettagli

Esempio: Ogni colonna può contenere un solo tipo di dati. Colonne e righe sono numerate partendo da zero. L Header non conta nella numerazione:

Esempio: Ogni colonna può contenere un solo tipo di dati. Colonne e righe sono numerate partendo da zero. L Header non conta nella numerazione: JTable Cos è una JTable Una JTable è un elemento Swing che rende possibile visualizzare delle informazioni sotto forma di tabella e se necessario ne permette la modifica. Header - Nelle JTabel è possibile

Dettagli

3. un metodo che restituisce l elenco delle matricole di tutti gli studenti del corso;

3. un metodo che restituisce l elenco delle matricole di tutti gli studenti del corso; Un esempio di definizione di classe con array di oggetti Sia data la classe StudUniv per gli studenti universitari (definita in una lezione precedente). Scrivere una nuova classe Corso, dove ciascun corso

Dettagli

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore Programma del corso Introduzione agli algoritmi Rappresentazione delle Informazioni Architettura del calcolatore Reti di Calcolatori Elementi di Programmazione Algoritmi e programmi Algoritmo Sequenza

Dettagli

Programmazione Orientata agli Oggetti. Polimorfismo: Studio di caso

Programmazione Orientata agli Oggetti. Polimorfismo: Studio di caso Programmazione Orientata agli Oggetti Polimorfismo: Studio di caso Riprendiamo il nostro studio di caso Nelle lezioni precedenti abbiamo già individuato (e rimosso) alcuni limiti del codice del nostro

Dettagli

VBA Principali Comandi

VBA Principali Comandi VBA Principali Comandi Sintassi Significato Esempio Dim As Dichiarazione Dim x As Integer di una variabile Dim , , ,.,

Dettagli

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi:

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre 2014. Negli esercizi proposti si utilizzano le seguenti classi: Cognome................................ Nome................................... Matricola............................... Programmazione Prova scritta del 22 settembre 2014 TEMPO DISPONIBILE: 2 ore Negli

Dettagli

Alberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione

Alberi. Strutture dati: Alberi. Alberi: Alcuni concetti. Alberi: definizione ricorsiva. Alberi: Una prima realizzazione. Alberi: prima Realizzazione Alberi Strutture dati: Alberi Strutture gerarchiche di dati Esempi Il file system di un sistema operativo L organigramma di un azienda Alberi generali, alberi n-ari, alberi binari, Ogni nodo ha un unico

Dettagli

Uguaglianza e copia di oggetti

Uguaglianza e copia di oggetti Uguaglianza e copia di oggetti Sommario 1. Classi Object e Class 2. Uguaglianza superficiale e uguaglianza profonda 3. Copia superficiale e copia profonda 4. Uguaglianza e copia in classi derivate 1 La

Dettagli

Definizione di metodi in Java

Definizione di metodi in Java Definizione di metodi in Java Un metodo in Java definisce un operazione ad alto livello (sottoprogramma) che consente di manipolare dati e oggetti. Durante la computazione effettuata da un programma, un

Dettagli

Costrutti iterativi. Utilizzo dei costrutti iterativi

Costrutti iterativi. Utilizzo dei costrutti iterativi Costrutti iterativi Utilizzo dei costrutti iterativi Costrutti iterativi (1/3) I costrutti iterativi permettono di eseguire ripetutamente del codice Il linguaggio Java mette a disposizione tre costrutti

Dettagli

Linguaggi di Programmazione II Matricole con le due ultime cifre dispari

Linguaggi di Programmazione II Matricole con le due ultime cifre dispari Cognome e Nome: Numero di Matricola: Spazio riservato alla correzione 1 2 3 4 5 6 totale /5 /10 /10 /30 /25 /20 /100 Non usare altri fogli, usare solo lo spazio sottostante. Fogli differenti da questo

Dettagli

Javascript. - Corso Web Design - Media Dream Academy. Stefano Gaborin

Javascript. - Corso Web Design - Media Dream Academy. Stefano Gaborin Javascript - Corso Web Design - Media Dream Academy Stefano Gaborin stefano.gaborin@above.company www.above.company Cos è Javascript? JavaScript è un linguaggio di programmazione interpretato. Utilizzato

Dettagli

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro Laboratorio di Programmazione Lezione 2 Cristian Del Fabbro Prossima lezione GIOVEDÌ 29 OTTOBRE 14:00 Input da tastiera package input; import java.io.*; public class Input { public static void main(string[]

Dettagli

Con il pulsante Start si introducono palline che rimbalzano in un area di disegno fino a che non è terminato il loro ciclo di vita (1000 movimenti).

Con il pulsante Start si introducono palline che rimbalzano in un area di disegno fino a che non è terminato il loro ciclo di vita (1000 movimenti). Rimbalzi. import java.awt.*; import java.awt.event.*; import java.applet.applet; public class Bounce extends Applet implements ActionListener { private Canvas canvas; private Button b1; private Button

Dettagli

Java Applet. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010

Java Applet. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2009-2010 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it Java Applet 1 Application VS Applet Una

Dettagli

Java, Oggetti e Strutture Dati di G. Callegarin - Edizioni CEDAM

Java, Oggetti e Strutture Dati di G. Callegarin - Edizioni CEDAM Java, Oggetti e Strutture Dati di G. Callegarin - Edizioni CEDAM ERRATA CORRIGE dei programmi della prima stampa (Aprile 2004) aggiornato al 20/05/2017 Nota: il codice corretto è ottenibile da quella errato

Dettagli

Java Interfaccia Grafica

Java Interfaccia Grafica Java Interfaccia Grafica Testi di consultazione: a) core Java 1.1 (Volume I Fundamentals) Cay S. Horstmann, Gary Cornell, Prentice Hall, 1997. b) Java 1.2 Unleashed, Jamie Jaworski, Sams Publishing, 1998.

Dettagli

Strutture dati e loro organizzazione. Gabriella Trucco

Strutture dati e loro organizzazione. Gabriella Trucco Strutture dati e loro organizzazione Gabriella Trucco Introduzione I linguaggi di programmazione di alto livello consentono di far riferimento a posizioni nella memoria principale tramite nomi descrittivi

Dettagli

International Olympiad in Informatics 2013

International Olympiad in Informatics 2013 International Olympiad in Informatics 2013 6-13 July 2013 Brisbane, Australia Day 2 tasks game Italian 1.1 Bazza e Shazza iniziano un gioco. Il gioco si svolge su una griglia di celle, con R righe numerate

Dettagli

Quale e' l'espressione regolare corretta per validare una stringa contentente uno o piu caratteri qualsiasi tra "a" oppure "b" oppure "d"?

Quale e' l'espressione regolare corretta per validare una stringa contentente uno o piu caratteri qualsiasi tra a oppure b oppure d? Qual e' il modo corretto per creare una classe MiaClasse di tipo Generics, parametrizzata con un tipo in input? [1] class MiaClasse class MiaClasse class MiaClasse(Type Generics) 4. Generics

Dettagli

Programmazione con Java

Programmazione con Java Programmazione con Java Classi e istanze in Java Definizione di classe in Java A meno che non si usino classi già scritte da altri, prima di poter creare un qualsiasi oggetto devo creare la sua rappresentazione:

Dettagli

Programmazione 1 A.A. 2015/2016

Programmazione 1 A.A. 2015/2016 Cognome e Nome Matricola Programmazione 1 A.A. 2015/2016 Appello del 16 Dicembre 2015 Compito n 1 Prima parte Esercizio 1 (10 punti) Cosa stampa il seguente frammento di codice Java? int[] A = {3, 8, 91,

Dettagli

Java Virtual Machine. Indipendenza di java dalla macchina ospite. I threads in Java

Java Virtual Machine. Indipendenza di java dalla macchina ospite. I threads in Java programmi sorgente: files.java compilatore Indipendenza di java dalla macchina ospite Programmi java Programmi java Programmi java files.class bytecode linker/loader bytecode bytecode Java API files.class

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2012

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a settembre 2012 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2011-12 17 settembre 2012 Testo Il database di un videonoleggio è costituito da due vettori paralleli.

Dettagli

Classe Vettore (i) Creare una classe che consenta di gestire un vettore di N elementi reali (double), che preveda i seguenti metodi:

Classe Vettore (i) Creare una classe che consenta di gestire un vettore di N elementi reali (double), che preveda i seguenti metodi: Classe Vettore (i) Creare una classe che consenta di gestire un vettore di N elementi reali (double), che preveda i seguenti metodi: Vettore(int n): crea un oggetto Vettore contente n elementi, inizializzati

Dettagli

Esempio su strutture dati dinamiche: ArrayList

Esempio su strutture dati dinamiche: ArrayList Esempio su strutture dati dinamiche: ArrayList Fondamenti di Informatica L-B 1 ArrayList Abbiamo detto che gli array non possono cambiare la propria dimensione: il numero di elementi contenuti viene stabilito

Dettagli

Esercizio. Scrivere una classe ListMap<K, V> che implementa la mappa con una lista. Strutture Dati

Esercizio. Scrivere una classe ListMap<K, V> che implementa la mappa con una lista. Strutture Dati Esercizio Scrivere una classe ListMap che implementa la mappa con una lista Esercizio Si scriva un metodo public static PositionList preorder(linkedbinarytree T) che preso in

Dettagli

Capitolo 9. Tipi enumerativi, tipi generici e interfacce. c 2005 Pearson Education Italia Capitolo 9-1 / 73

Capitolo 9. Tipi enumerativi, tipi generici e interfacce. c 2005 Pearson Education Italia Capitolo 9-1 / 73 Capitolo 9 Tipi enumerativi, tipi generici e interfacce c 2005 Pearson Education Italia Capitolo 9-1 / 73 Sommario: Tipi enumerativi, tipi generici e interfacce 1 Definizione di tipi enumerativi La classe

Dettagli

n n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita

n n 1 n = > Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita Il calcolo del fattoriale La funzione fattoriale, molto usata nel calcolo combinatorio, è così definita n! = 1 n( n 1)! se se n n = > 0 0 dove n è un numero intero non negativo Il calcolo del fattoriale

Dettagli

Alberi Binario in Java

Alberi Binario in Java Alberi Binario in Java Realizzare un albero binario di ricerca. L albero binario è di ricerca se esiste una relazione di ordinamento tra i valori dei nodi (valori comparabili). In particolare, dato un

Dettagli

4. I moduli in Access 2000/2003

4. I moduli in Access 2000/2003 LIBRERIA WEB 4. I moduli in Access 2000/2003 Il modulo è uno degli oggetti del database di Access e rappresenta un insieme di dichiarazioni e routine scritte con il linguaggio Visual Basic, memorizzate

Dettagli

Fogli Google: nozioni di base sui fogli di lavoro

Fogli Google: nozioni di base sui fogli di lavoro Fogli Google: nozioni di base sui fogli di lavoro Una volta acquisita familiarità con le procedure di accesso, creazione e modifica dei Documenti Google, leggi queste informazioni per conoscere le nozioni

Dettagli

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 9 - Array 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 Laurea

Dettagli

Studente (Cognome Nome):

Studente (Cognome Nome): Studente (Cognome Nome): Matricola: Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a. 2005-06 Terzo Scritto 7 Febbraio 2006 Si noti che le soluzioni ai quesiti saranno considerate valide

Dettagli

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo 19 - Eccezioni 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

Dettagli

Application VS Applet

Application VS Applet Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A. 2007-2008 Alessandro Longheu http://www.diit.unict.it/users/alongheu alessandro.longheu@diit.unict.it - lezione 20 - Java Applet 1 Application

Dettagli

lezione 9 min-heap binario Heap e Alberi posizionali generali

lezione 9 min-heap binario Heap e Alberi posizionali generali lezione 9 Heap e Alberi posizionali generali min-heap binario Un min-heap è un albero binario quasi completo in cui ogni nodo i diverso dalla radice soddisfa la seguente proprietà: il valore memorizzato

Dettagli

Classi e array. Viene ora affrontato un problema di definizione di una classe in cui una variabile d istanza è di tipo array

Classi e array. Viene ora affrontato un problema di definizione di una classe in cui una variabile d istanza è di tipo array Classi e array Viene ora affrontato un problema di definizione di una classe in cui una variabile d istanza è di tipo array Si vuole definire una classe Polinomio per la rappresentazione di polinomi a

Dettagli

APPLICAZIONI & APPLET

APPLICAZIONI & APPLET APPLICAZIONI & APPLET Una applet ("applicazioncina") è una applicazione non autonoma, ma pensata per far parte di una pagina Internet Porta dinamicità alle pagine HTML "statiche" Viene eseguita dal browser,

Dettagli

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE

INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE INTERFACCE GRAFICHE IN JAVA CON SWING DISPENSE La Gestione degli Eventi Ogni oggetto grafico è predisposto ad essere sollecitato in qualche modo dall utente (per esempio un pulsante può essere premuto).

Dettagli

SUDOKU Come si gioca Regole del Gioco Risolvere un Sudoku Consigli

SUDOKU Come si gioca Regole del Gioco Risolvere un Sudoku Consigli SUDOKU Come si gioca Sudoku consiste in un diagramma di 81 quadretti con dei numeri all interno, disposti in modo simmetrico. L obiettivo del gioco consiste nel riempire il diagramma in modo che in tutte

Dettagli

Cognome Nome Matricola Postazione PC. Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a Gennaio 2015

Cognome Nome Matricola Postazione PC. Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a Gennaio 2015 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a. 2014 15 Gennaio 2015 Testo Il database di un bar è costituito da due vettori paralleli. Il primo

Dettagli

Manuale di KSquares. Matt Williams Revisore: Eugene Trounev Traduzione della documentazione: Federico Zenith

Manuale di KSquares. Matt Williams Revisore: Eugene Trounev Traduzione della documentazione: Federico Zenith Matt Williams Revisore: Eugene Trounev Traduzione della documentazione: Federico Zenith 2 Indice 1 Introduzione 5 2 Come si gioca 6 3 Regole del gioco, strategie e suggerimenti 8 3.1 Regole del gioco.......................................

Dettagli

Fondamenti di Informatica T-1. Classi & vettori

Fondamenti di Informatica T-1. Classi & vettori Classi & vettori 2 Array Un vettore (array) è un insieme ordinato, di dimensione fissa, di oggetti dello stesso tipo. Esempio: array capace di contenere al più 10 numeri interi int[] arrayinteri = new

Dettagli

Ottava Esercitazione. introduzione ai thread java mutua esclusione

Ottava Esercitazione. introduzione ai thread java mutua esclusione Ottava Esercitazione introduzione ai thread java mutua esclusione Agenda Esempio 1 Concorrenza in Java: creazione ed attivazione di thread concorrenti. Esercizio 2 da svolgere Concorrenza in Java: sincronizzazione

Dettagli

Eccezioni Precisazioni e approfondimenti

Eccezioni Precisazioni e approfondimenti Eccezioni Precisazioni e approfondimenti Costruttore: il parametro String definisce il messaggio di errore associato all eccezione Metodi particolarmente significativi getmessage(): ritorna l istanza di

Dettagli

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO IX.2017

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO IX.2017 APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO 2016 2017 18.IX.2017 VINCENZO MARRA Indice Premessa 2 Esercizio 1 2 Lettura da file della cartella e dell

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a febbraio 2013

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a febbraio 2013 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2012-13 22 febbraio 2013 Testo Il database di un videonoleggio è costituito da due vettori paralleli.

Dettagli

giochi sulla persistenza

giochi sulla persistenza UdA 6 Applicazioni Web in PHP lezione 1 giochi sulla persistenza In questa lezione impareremo... ad applicare i campi nascosti, le sessioni e i cookies per realizzare semplici giochi Primo esempio: il

Dettagli

Gocce di Java. Gocce di Java. Metodi e ricorsione. Pierluigi Crescenzi. Università degli Studi di Firenze

Gocce di Java. Gocce di Java. Metodi e ricorsione. Pierluigi Crescenzi. Università degli Studi di Firenze Gocce di Java Pierluigi Crescenzi Università degli Studi di Firenze Ancora sui metodi Interfaccia di un metodo Consente di utilizzarlo senza sapere nulla dell implementazione Consente di implementarlo

Dettagli

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); }

/** * VETTORE DINAMICO elementi */ private Vector elementi; /** * METODO COSTRUTTORE */ public coda() { elementi=new Vector(); } import java.util.*; class coda * Questa classe contiene tutti i metodi per la gestione della coda * @author D'Ambrosio Giovanni Classe 4D I.T.I.S. Grottaminarda * @version 26/02/2010 * VETTORE DINAMICO

Dettagli

Gli Array. Dichiarazione di un array

Gli Array. Dichiarazione di un array Gli Array Un array rappresenta una variabile indicizzata (ovvero contenente un indice) che viene utilizzata per contenere più elementi dello stesso tipo. Ogni array ha un nome al quale viene associato

Dettagli

Esercitazione 2: Java Thread. Java Thread. Java Thread. Un thread:

Esercitazione 2: Java Thread. Java Thread. Java Thread. Un thread: Esercitazione 2: Thread Un thread è un singolo flusso sequenziale di controllo all interno di un processo Un thread (o processo leggero) è un unità di esecuzione che condivide codice e dati con altri thread

Dettagli

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi A.A. 2010/2011 Sommario Istruzioni di controllo Iterative Condizionali Algoritmi e Diagrammi di flusso Esercizi 28/03/2011 2 Istruzioni iterative while do

Dettagli

STRUTTURE DATI: OLTRE GLI ARRAY LISTE

STRUTTURE DATI: OLTRE GLI ARRAY LISTE STRUTTURE DATI: OLTRE GLI ARRAY le strutture dati progettate per ospitare una collezione di elementi, sono variazioni di array Ma l'array ha dimensione fissa anche in Java determinata a priori, in linguaggi

Dettagli

Informatica 3 secondo recupero 13 Settembre 2002

Informatica 3 secondo recupero 13 Settembre 2002 Informatica 3 secondo recupero 13 Settembre 2002 Nome (stampatello) Cognome (stampatello) Matr Recupero: Prima prova in itinere Seconda prova in itinere spazio per il docente Punteggi recupero prima prova

Dettagli

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a luglio 2011

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a luglio 2011 Cognome Nome Matricola Postazione PC Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a. 2010-11 8 luglio 2011 Testo Il database di un videonoleggio è costituito da due vettori paralleli.

Dettagli

Interfacce. Un interfaccia Java è una collezione di metodi astratti (e di costanti) Un metodo astratto è un metodo non implementato

Interfacce. Un interfaccia Java è una collezione di metodi astratti (e di costanti) Un metodo astratto è un metodo non implementato Interfacce 1 Interfacce Un interfaccia Java è una collezione di metodi astratti (e di costanti) Un metodo astratto è un metodo non implementato costituito dall intestazione senza il corpo della definizione

Dettagli

Traduzione e adattamento a cura di Gylas per Giochi Rari. Versione 1.1 Novembre

Traduzione e adattamento a cura di Gylas per Giochi Rari. Versione 1.1 Novembre Traduzione e adattamento a cura di Gylas per Giochi Rari Versione 1.1 Novembre 2001 http://www.giochirari.it e-mail: giochirari@giochirari.it NOTA. La presente traduzione non sostituisce in alcun modo

Dettagli

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05

Strutture dati. Il che cosa e il come. F. Damiani - Alg. & Lab. 04/05 Strutture dati Il che cosa e il come Il che cosa ed il come Struttura dati: descrive come sono organizzati i dati e come sono realizzate le operazioni su di essi (cioe come si accede ai dati) Specifica

Dettagli

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 16 Tipi riferimento e stringhe. Carla Limongelli.

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 16 Tipi riferimento e stringhe. Carla Limongelli. Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 16 Tipi riferimento e stringhe Carla Limongelli Maggio 2010 Definizione di metodi 1 Contenuti Tipi riferimento Stringhe e oggetti String

Dettagli

APPLICAZIONI & APPLET

APPLICAZIONI & APPLET APPLICAZIONI & APPLET Java è un ottimo linguaggio per costruire applicazioni anche non per Internet anche non grafiche ma si è diffuso storicamente, e trae forza, dal concetto di applet come piccola (?)

Dettagli

LPR 2005/ 2006 Lezione n.9. Elementi di grafica per lo svolgimento del progetto Double Buffering Caricamento delle immagini Gestione degli eventi

LPR 2005/ 2006 Lezione n.9. Elementi di grafica per lo svolgimento del progetto Double Buffering Caricamento delle immagini Gestione degli eventi LPR 2005/ 2006 Lezione n.9 Elementi di grafica per lo svolgimento del progetto Double Buffering Caricamento delle immagini Gestione degli eventi JAVA 2D PROGRAMMING Schermo : Matrice rettangolare composta

Dettagli

Torre di Hanoi. di Davide Bugli e Matteo Roselli rivista da Stefano Cacciaguerra Ph. D. in Informatica

Torre di Hanoi. di Davide Bugli e Matteo Roselli rivista da Stefano Cacciaguerra Ph. D. in Informatica Torre di Hanoi di Davide Bugli e Matteo Roselli rivista da Stefano Cacciaguerra Ph. D. in Informatica Indice Introduzione. pag. 3 Sviluppo del progetto. pag. 4 Script pag. 5 Problematiche affrontate...pag.

Dettagli

Laboratorio Progettazione Web Le funzioni in PHP. Angelica Lo Duca IIT-CNR 2012/2013

Laboratorio Progettazione Web Le funzioni in PHP. Angelica Lo Duca IIT-CNR 2012/2013 Laboratorio Progettazione Web Le funzioni in PHP Angelica Lo Duca IIT-CNR angelica.loduca@iit.cnr.it 2012/2013 Funzioni Una funzione è una sequenza di istruzioni che implementano una specifica funzionalità

Dettagli