ARRAY BIDIMENSIONALI float [][] mx = new float[3][4]; (float []) [] mx = new float[3][4];



Похожие документы
Fondamenti di Informatica. Dichiarazione, creazione e gestione di array in Java

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:

Le variabili. Olga Scotti

Algoritmi di Ricerca. Esempi di programmi Java

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

dall argomento argomento della malloc()

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

3. La sintassi di Java

Concetto di Funzione e Procedura METODI in Java

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Luglio Soluzione degli Esercizi

Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1

10 - Programmare con gli Array

Soluzioni degli esercizi di riepilogo (Fondamenti di Informatica 1 Walter Didimo)

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Esercizi della lezione 5 di Java

costruttori e distruttori

Parcheggio.rtf 1/8 6 gennaio Prova di programmazione: parcheggio a pagamento

Esercizi sulla definizione di classi (Fondamenti di Informatica 1 Walter Didimo) Soluzioni

Inizializzazione, Assegnamento e Distruzione di Classi

Prova di Laboratorio di Programmazione

Matlab: Strutture di Controllo. Informatica B

Esercitazione N7:Gioco dei 21 fiammiferi (impariamo java giocando)

Programmare in Java. Olga Scotti

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO V Indice

Esempi di esercizi d esame

Introduzione al linguaggio C Gli array

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Corso di Laurea in Ingegneria Gestionale Esame di Informatica - a.a luglio 2013

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Variabili e tipi di dato

INFORMATICA GRAFICA - FONDAMENTI DI INFORMATICA Ing. Civile - Edile/Architettura Dott. Penzo SOLUZIONE PROVA SCRITTA DEL 16/09/2002.

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Tris, anagrammi e dintorni

Programmazione Orientata agli Oggetti in Linguaggio Java

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Il tipo di dato astratto Pila

Progetto Automi e Linguaggi Parser svliluppato con JLex e cup

Introduzione al Linguaggio C

Vettori Algoritmi elementari di ordinamento

[MANUALE VISUAL BASIC SCUOLA24ORE PROF.SSA PATRIZIA TARANTINO] 14 dicembre 2008

Sottoprogrammi: astrazione procedurale

La struttura dati ad albero binario

Corso sul linguaggio Java

Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A Esercitazione. Programmazione Object Oriented in Java

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Funzioni in C. Violetta Lonati

Esercizio: la classe CashRegister

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Introduzione a Classi e Oggetti

Allocazione dinamica della memoria - riepilogo

INFORMATICA - I puntatori Roberta Gerboni

Matematica - SMID : Programmazione Febbraio 2009 FOGLIO RISPOSTE

Cosa è un foglio elettronico

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Programmazione a Oggetti Lezione 10. Ereditarieta

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

Programmazione in Java Parte I: Fondamenti

Definizione di classi con array di oggetti

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

ControlloCosti. Cubi OLAP. Controllo Costi Manuale Cubi

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

Esercitazione 6. Tutor: Ing. Diego Rughetti. Anno Accademico 2007/2008

Visibilità dei Membri di una Classe

Programmazione ad Oggetti: JAVA. Esercitazione

puntatori Lab. Calc. AA 2007/08 1

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

Dati importati/esportati

Reflection in Java. Linguaggi Corso M-Z - Laurea in Ingegneria Informatica A.A

Corso di Fondamenti di Informatica

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

Controllo degli accessi

Java threads (2) Programmazione Concorrente

Record in C: il costruttore struct.

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Relazioni tra oggetti e classi : Composizione. Relazioni tra oggetti e classi : esempio di Aggregazione. classe contenitore

Realizzazione di una classe con un associazione

SAPIENZA Università di Roma Facoltà di Ingegneria dell Informazione, Informatica e Statistica

Esercizi di Algoritmi e Strutture Dati

Fondamenti di Informatica Corsi di Laurea in Ingegneria Gestionale Canale AL ESERCITAZIONE 8

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Introduzione al MATLAB c Parte 2

Fondamenti di Informatica T-1, 2009/2010 Modulo 2 Prova d Esame 5 di Giovedì 15 Luglio 2010 tempo a disposizione 2h30'

Java: Compilatore e Interprete

Chat. Si ha un server in ascolto sulla porta Quando un client richiede la connessione, il server risponde con: Connessione accettata.

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

ARRAY E STRINGHE. G. Frosini Slide 1

Parola chiave extends

Le funzioni in C. I programmi C sono costituiti da definizioni di variabili e funzioni.

Librerie. Laboratorio di Informatica Antonio Monteleone 28

Breve riepilogo della puntata precedente:

Carte Laurea triennale in Comunicazione Digitale Laboratorio di Informatica Generale

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Primo scritto 11 Gennaio 2008

Транскрипт:

ARRAY BIDIMENSIONALI Si possono definire array di qualunque tipo di dato, quindi anche di altre array float [][] mx = new float[3][4]; ovvero.. (float []) [] mx = new float[3][4]; La loro motivazione (storica) è stata ovviamente quello di rappresentare le matrici in matematica.

float[][] mx = new float[3][4]; righe colonne Rappresentazione astratta: mx[0][0] mx[0][1] mx[0][2] mx[0][3] mx[1][0] mx[1][1] mx[1][]2 mx[1][3] mx[2][0] mx[2][1] mx[2][2] mx[2][3]

RAPPRESENTAZIONE CONCRETA float [][] matrice = new float[3][4]; matrice:

Esempio di codice tipico su matrici (somma) float[][] A = new float[n][n]; float[][] B = new float[n][n]; float[][] C = new float[n][n];.... for (int i = 0; i<n; i++) for (int j = 0; j<n; j++) A[i,j] = A[i,j] = B[i,j]; (notare il doppio for annidato, tipico dei programmi che percorrono le matrici)

UN ESEMPIO: il TRIS (o TicTacToe) Il gioco del TRIS si gioca su una scacchiera 3x3. Due giocatori sono indicati da X e O, fanno una mossa a turno. Vince che riesca ad allineare tre dei suoi simboli sulla stassa riga, o colonna, o diagonale. E possibile (anzi probabile) la patta!

Una scacchiera per il gioco Tic-Tac-Toe

Rappresentazione della scacchiera in JAVA E naturale usare una matrice 3x3. Gli elementi della matrice sono di tipo char, e possono essere x oppure o oppure (lo spazio vuoto, che rappresenta una posizione vuota). E anche naturale, in Java, disegnare una classe per ragruppare la definizione della scacchiera e di tutti i metodi che si devono usare su di essa.

La classe TicTacToe Variabli istanziabili: char[][] board //reppresenta la scacchiera Costanti private static final int ROWS = 3; private static final int COLUMNS = 3; Le dimensini della scacchiera sono fisse, ma è comunque buona abitudine dar loro un nome piuttosto che usare semplicemente 3. Non si sa mai e comunque è più chiaro.

metodi: un insieme minimale e il seguente. public TicTacToe() il costruttore. Quando si costruisce un oggetto della classe deve allocare fisicamente l array contenente tutti (scacchiera vuota). public void set(int i, int j, char player) registra la giocata del giocatore player in posizione board[i]j] public String tostring() costruisce una stringa che rappresenta la scacchiera del tipo x o x x o questa è rappresentata dalla stringa: ~~x~o~ \n ~~x~~~ \n x~o~~~ (qui ~ sta per spazio ) dove ricordiamo che \n rappresenta un a capo.

Altri possibili metodi utili public boolean free(int p, int j) testa se una posizione è libera o occupata. public boolean win(char p) testa se una configurazione di scacchiera è vincente per un giocatore p. public TicTacToe copy() copia la scacchiera restituendone una eguale

Un programma di prova (file TicTacToeTest.java) Il file TicTacToeTest.java contiene un programma di prova che esege queste operazioni: inzia a far giocare x. fa giocare a turno i due giocatori, senza però controllare la correttezza delle mosse nè verificare se un giocatore ha vinto. si esca quando al posto delle prima coordinata un giocatore digita direttamente invio.

Programma di prova File TicTacToeTest.java import javax.swing.joptionpane; /** Questo programma collauda la classe TicTacToe chiedendo all utente di selezionare posizioni sulla scacchiera e visualizzando il risultato. */ public class TicTacToeTest { public static void main(string[] args) { char player = 'x'; String input; TicTacToe game = new TicTacToe();

while (true) {System.out.println(game.toStrig()); input = In.readLine("Row for " + player); if (input == "") return; int row = Integer.parseInt(input); input = In.readLine("Column for " + player); int column = Integer.parseInt(input); game.set(row, column, player); if (player == 'x') player = 'o'; } } } else player = 'x';

La classe In per l input La classe In è una semplice classse per gestire l input da terminale. I metodi principali sono public static String readline() legge una linea (fino a invio ) e la restituisce come stringa public static String readline(string prompt) come prima ma prima di accettare l input stampa il prompt di avertimento public static int readint(string prompt) public static double readdouble(string prompt) (leggono rispetivamente un intero e un double) Per usarla basta aggiungere il file In.class nel folder del programma

Ancora sugli array doppi Ricordiamo che gli arry doppi sono array di array. L inizializzazione in un colpo del tipo float [][] matrice = new float[3][4]; (1) è molto comoda ma sono possibili forme alternative di inizializzazione. Per esempio (1) è equivalente a: float [][] matrice; (2) matrice = new float [4][]; (3) matrice[0]=new float[3]; (4) matrice[1] = new float[3]; (5) matrice[2] = new float[3]; (6) matrice[3] = new float[3]; (7)

Ricordiamo infatti l allocazine in memoria dell array doppio: matrice: (3) (2) (4) (5) (6) (7)

Sono però possibli schemi di allocazione più liberali. per esempio una matrice triangolare di interi (potrebbe servire a memorizzare un triangolo di Tartaglia ) con elementi: a[0][0] a[1][0] a[2][0] a[3][0] a[1][1] a[2][1] a[2][2] a[3][1] a[3][2] a[3][3] Puo essere costruita semza spreco di memoria in questo modo:

int [][] mt; array triangolari 1 mt:

int [][] mt; mt = new int [4][]; array triangolari 2 mt: registri adatti a contenere elementi di tipo int[], cioè puntatori (freccie)

int [][] mt; mt = new int [4][]; mt[0] = new int[1]; array triangolari 3 mt:

int [][] mt; mt = new int [4][]; mt[0] = new int[1]; mt[1] = new float[2]; array triangolari 4 mt:

int [][] mt; mt = new int [4][]; mt[0] = new int[1]; mt[1] = new int[2]; mt[2] = new int[3]; array triangolari 5 mt:

int [][] mt; mt = new int [4][]; mt[0] = new int[1]; mt[1] = new int[2]; mt[2] = new int[3]; mt[3] = new int[4]; array triangolari 7 mt:

Si vedono i vantaggi del trattamento omogeneo delle strutture dati in Java. Lo stesso effetto si può ottenere con un ciclo di questo tipo int [][] mt = new int[4][]; for (int i=0; i<mt.length; i++) mt[i]=new int[i+1]; così si possono alllocare matrici triangolari anche di grandi dimensioni.