Array Bidimensionali in Java. Esempi di Elaborazioni su Matrici

Documenti analoghi
IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

Fondamenti di Informatica. Dichiarazione, creazione e gestione di array in Java

Proprietà delle Classi e degli Oggetti in Java

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

Polinomio di secondo grado: Calcolo delle soluzioni di una equazione di secondo grado: import GraphicIO.*; public class Polinomio2 {

Algoritmi di Ricerca. Esempi di programmi Java

Array multidimensionali e stringhe

Programmazione Procedurale in Linguaggio C++

Definizione di classi

Laboratorio di Programmazione 1 [Java]

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

STRINGHE IN JAVA In Java, le stringhe non sono pezzi di memo-ria con dentro dei caratteri, come in C: sono oggetti appartenenti alla classe

Uso di metodi statici. Walter Didimo

Programmazione Orientata agli Oggetti in Linguaggio Java

Definizione di classi con array di oggetti

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

Esercizi della lezione 5 di Java

Lezione 10 programmazione in Java. Anteprima. Programmazione OO. La programmazione orientata agli Oggetti. Javadoc. Esercizi

Java: Compilatore e Interprete

Ingegneria del Software

COMPITO DI LABORATORIO DI PROGRAMMAZIONE Luglio Soluzione degli Esercizi

n deve essere maggiore di 0, altrimenti il metodo restituisce null.

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1

MATRICI E VETTORI APPROFONDIMENTO PER IL CORSO DI LABORATORIO DI INFORMATICA SARA POLTRONIERI

7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

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

CLASSI ASTRATTE - ESERCIZIO

Esempi di esercizi d esame

Esercizio 3. Oppure fare queste operazioni nel metodo main all interno della classe Persona.

ARRAY E STRINGHE. ESERCIZIO 2 Scrivere un programma che calcola il numero di doppie e di dittonghi (2 vocali vicine) presenti in una stringa.

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

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

Programmazione 1 A.A. 2015/2016

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 2

Esercitazione 8. Array multidimensionali

Corso di Laurea in Ingegneria Gestionale Esame di Informatica a.a I scritto Febbraio 11 Febbraio 2011

1 Esercizi di Matlab. L operatore : permette di estrarre sottomatrici da una matrice assegnata. Vediamo alcuni esempi.

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:

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

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

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

L Allocazione Dinamica della Memoria

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

ARRAY E STRINGHE. G. Frosini Slide 1

Concetto di Funzione e Procedura METODI in Java

Programmazione a oggetti e JAVA. Prof. B.Buttarazzi A.A. 2011/2012

3. La sintassi di Java

4 GLI ARRAY E LE STRINGHE

Esercizi Java. class somma2 { static int somma(int a,int b) {return a+b; }

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

Problemi, algoritmi e oggetti

Lezione 9 programmazione in Java Classi come contenitori

Prova di Laboratorio del [ Corso A-B di Programmazione (A.A. 2004/05) Esempio: Media Modalità di consegna:

Strutture dati e loro organizzazione. Gabriella Trucco

esercizi Esercizi / problemi

Corso di Fondamenti di Informatica. Dispensa 3: Espressioni artimetico-logiche e costrutti di decisione. Prof. Domenico Rosaci

Array Tipi di dato semplici e strutturati strutturati array elementi omogenei numero d ordine indice lunghezza dimensione

Definizione Allocazione e deallocazione di variabili Allocazione e deallocazione di vettori

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

RETI DI CALCOLATORI Linguaggio Java: Eccezioni

Esercizi classi e array

PON Liceo Scientifico Leonardo da Vinci. Vallo della Lucania

= elemento che compare nella seconda riga e quinta colonna = -4 In generale una matrice A di m righe e n colonne si denota con

sayhello public private protected return public class Greeter { public String sayhello() { String message = Hello, World! ; return message; } }

Definizione di metodi in Java

ARRAY RESTITUITI DA FUNZIONI

3. Matrici e algebra lineare in MATLAB

Linguaggio C++ 8. Matrici

Ereditarietà e Polimorfismo

ESERCITAZIONE MATLAB

Programmazione ad Oggetti: JAVA. Esercitazione

Fondamenti di Informatica I

Esercitazione 15. Il problema dello Sleeping Barber

5 - Istruzioni condizionali

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

Esercizi per il recupero del debito formativo:

Un esercizio d esame. Flavio De Paoli

Transcript:

Fondamenti di Informatica Array Bidimensionali in Java Esempi di Elaborazioni su Matrici Fondamenti di Informatica - D. Talia - UNICAL 1 Oggetti e array bidimensionali Sviluppiamo un programma Java che effettua elaborazioni su matrici. Il programma è composto da due classi: Matrice UsaMatrice. La classe Matrice definisce oggetti che sono matrici bidimensionali di valori interi con i metodi leggi, stampa, copia, estrai, sommariga e sommacolonna. La classe definisce un costruttore Matrice per creare matrici con dimensioni di volta in volta diverse.

Oggetti e array bidimensionali La classe UsaMatrice definisce il main che usa la classe Matrice, creando oggetti Matrice e invocando i metodi pubblici della classe. Dopo aver creato un oggetto Matrice, il main: Assegna i valori ai vari elementi leggendoli dalla tastiera, Stampa la matrice, Stampa il valore minimo e massimo delle somme delle righe e delle colonne della matrice stessa. Quindi fa una copia della matrice ed estrae da essa una sottomatrice arbitraria tramite il metodo estrai. Fondamenti di Informatica - D. Talia - UNICAL 3 Classe Matrice /* Classe Matrice che definisce oggetti matrici bidimensionali di valori interi con i metodi costruttore, leggi, stampa, copia, estrai, sommariga e sommacolonna.*/ class Matrice private int[][] mat; /* la variabile di istanza è una matrice a due dimensioni */ Matrice(int nrig, int ncol) mat = new int[nrig][ncol]; // il metodo costruttore public void leggi(int nr, int nc) int i, j; // metodo di lettura for(i=0; i<nr; i++) for (j=0; j<nc; j++) mat[i][j]= Console.readInt("Inserire elemento " + i + "," + j + " : "); //continua

Classe Matrice /* metodo per visualizzare la matrice */ public void stampa(int nr, int nc) int i, j; for(i=0; i<nr; i++) for (j=0; j<nc; j++) System.out.print(mat[i][j] + " "); System.out.println(); /* metodo per copiare la matrice in un'altra con uguale numero di righe e colonne */ public void copia(matrice m) for(int i=0; i<mat.length; i++) for (int j=0; j<mat[0].length; j++) mat[i][j] = m.mat[i][j]; //continua Fondamenti di Informatica - D. Talia - UNICAL 5 Classe Matrice /* metodo per estrarre una matrice da un'altra */ public void estrai(matrice m, int r1, int r2, int c1,int c2) for(int i=r1; i<=r2; i++) for (int j=c1; j<=c2; j++) mat[i-r1][j-c1] = m.mat[i][j]; /* metodo per sommare gli elementi di una riga */ public int sommariga(int ir) int j, sommar=0; for (j=0; j < mat[ir].length; j++) sommar = sommar + mat[ir][j]; return sommar; /* metodo per sommare gli elementi di una colonna */ public int sommacolonna(int ic) int i, sommac=0; for (i=0; i < mat.length; i++) sommac = sommac + mat[i][ic]; return sommac; // fine classe Matrice

Classe UsaMatrice /* La classe seguente definisce il main che usa la classe Matrice, creando oggetti Matrice e invocando i metodi pubblici della classe. class UsaMatrice public static void main (String args[]) int numr; int numc = 5; Matrice mat1, mat2, mat3; int sc, sr; int minsommarig, minsommacol; int maxsommarig, maxsommacol; int ri, rf, ci, cf; int rig, col; numr = Console.readInt("Inserire numero righe: "); numc = Console.readInt("Inserire numero colonne: "); mat1 = new Matrice(numr,numc); mat1.leggi(numr,numc); mat1.stampa(numr,numc);......... //continua Fondamenti di Informatica - D. Talia - UNICAL 7 Classe UsaMatrice minsommarig=mat1.sommariga(0); for (int i=1; i<numr ; i++) sr = mat1.sommariga(i); if(minsommarig >= sr) minsommarig = sr; System.out.println("minimo tra le somme delle righe= " + minsommarig); minsommacol=mat1.sommacolonna(0); for (int j=1; j<numc ; j++) sc = mat1.sommacolonna(j); if(minsommacol >= sc) minsommacol = sc; System.out.println("minimo tra le somme delle colonne= " + minsommacol);......... //continua

Classe UsaMatrice maxsommarig=mat1.sommariga(0); for (int i=1; i<numr ; i++) sr = mat1.sommariga(i); if(maxsommarig <= sr) maxsommarig = sr; System.out.println("massimo tra le somme delle righe = " + maxsommarig); maxsommacol=mat1.sommacolonna(0); for (int j=1; j<numc ; j++) sc = mat1.sommacolonna(j); if(maxsommacol <= sc) maxsommacol = sc; System.out.println("massimo tra le somme delle colonne = " + maxsommacol);......... //continua Fondamenti di Informatica - D. Talia - UNICAL 9 Classe UsaMatrice mat2 = new Matrice(numr, numc); mat2.copia(mat1); mat2.stampa(numr,numc); ri = Console.readInt("Inserire riga iniziale: "); rf = Console.readInt("Inserire riga finale: "); ci = Console.readInt("Inserire colonna iniziale: "); cf = Console.readInt("Inserire colonna finale: "); rig = (rf-ri)+1; col = (cf-ci)+1; mat3 = new Matrice(rig, col); mat3.estrai(mat2, ri, rf, ci, cf); mat3.stampa(rig,col); //fine classe UsaMatrice

Array bidimensionali Lo stesso programma Java che effettua elaborazioni su matrici senza definire oggetti si può sviluppare come composto da una sola classe Matrice. La classe Matrice definisce array bidimensionali di valori interi che non sono oggetti ed i metodi (statici) leggi, stampa, copia, estrai, sommariga e sommacolonna. La classe definisce al suo interno anche il main. Il programma è simile al precedente ma non usa oggetti e metodi di istanza, ma variabili e metodi di classe (statici). Fondamenti di Informatica - D. Talia - UNICAL 11 Oggetti e array bidimensionali Il metodo main crea array bidimensionali e invoca i metodi della classe per effettuare elaborazioni sulle matrici. Dopo aver creato un array mat1, legge i valori dei vari elementi, stampa la matrice, stampa il valore minimo e massimo delle somme delle righe e delle colonne della matrice, quindi fa una copia della matrice mat1 in mat2 ed estrae da essa una sottomatrice arbitraria mat3 tramite il metodo statico estrai.

public class Matrice public static void leggi(int[][] mat, int nr, int nc) int i, j; for(i=0; i<nr; i++) for (j=0; j<nc; j++) mat[i][j]= Console.readInt("Inserire elemento " + i + "," + j + " : "); public static void stampa(int[][] mat, int nr, int nc) int i, j; for(i=0; i<nr; i++) for (j=0; j<nc; j++) System.out.print(mat[i][j] + " "); System.out.println(); //continua Fondamenti di Informatica - D. Talia - UNICAL 13 public static void copia(int[][] mat1, int[][] mat2) for(int i=0; i<mat1.length; i++) for (int j=0; j<mat1[0].length; j++) mat2[i][j] = mat1[i][j]; public static int[][] estrai(int[][]mat, int r1, int r2, int c1, int c2) int sm[][] = new int[(r2-r1)+1][(c2-c1)+1]; for(int i=r1; i<=r2; i++) for (int j=c1; j<=c2; j++) sm[i-r1][j-c1] = mat[i][j]; return sm; public static int sommariga(int[][] mat, int ir) int j, sommar=0; for (j=0; j < mat[ir].length; j++) sommar = sommar + mat[ir][j]; return sommar; //continua

public static int sommacolonna(int[][] mat, int ic) int i, sommac=0; for (i=0; i < mat.length; i++) sommac = sommac + mat[i][ic]; return sommac; /* Inizio del metodo main */ public static void main (String args[]) int numr; int numc = 5; int [][] mat1, mat2, mat3; /* matrici a due dimensioni */ int sc, sr; int minsommarig, minsommacol; int maxsommarig, maxsommacol; int ri, rf, ci, cf; int rig, col; //continua Fondamenti di Informatica - D. Talia - UNICAL 15 numr = Console.readInt("Inserire numero righe: "); numc = Console.readInt("Inserire numero colonne: "); mat1 = new int[numr][numc]; leggi(mat1, numr,numc); stampa(mat1, numr,numc); minsommarig=sommariga(mat1, 0); for (int i=1; i<numr ; i++) sr = sommariga(mat1, i); if(minsommarig >= sr) minsommarig = sr; System.out.println("minimo tra le somme delle righe = " + minsommarig); //continua

minsommacol=sommacolonna(mat1, 0); for (int j=1; j<numc ; j++) sc = sommacolonna(mat1, j); if(minsommacol >= sc) minsommacol = sc; System.out.println("minimo tra le somme delle colonne = + minsommacol); maxsommarig=sommariga(mat1, 0); for (int i=1; i<numr ; i++) sr = sommariga(mat1, i); if(maxsommarig <= sr) maxsommarig = sr; System.out.println("massimo tra le somme delle righe = " + maxsommarig); maxsommacol=sommacolonna(mat1, 0); for (int j=1; j<numc ; j++) sc = sommacolonna(mat1, j); if(maxsommacol <= sc) maxsommacol = sc; System.out.println("massimo tra le somme delle colonne = " + maxsommacol); //continua Fondamenti di Informatica - D. Talia - UNICAL 17 mat2 = new int[numr][numc]; copia(mat1, mat2); stampa(mat2, numr,numc); ri = Console.readInt("Inserire riga iniziale: "); rf = Console.readInt("Inserire riga finale: "); ci = Console.readInt("Inserire colonna iniziale: "); cf = Console.readInt("Inserire colonna finale: "); rig = (rf-ri)+1; col = (cf-ci)+1; mat3 = new int[rig][col]; mat3 = estrai(mat2, ri, rf, ci, cf); stampa(mat3, rig,col); // fine del main // fine della classe

Matrici in Java Per estendere i metodi della classe Matrice bisognerebbe: - Inserire un metodo per il calcolo dei valori medi di ogni riga e ogni colonna della matrice. - Inserire un metodo per estrarre una matrice quadrata. - Inserire un metodo per il calcolo della diagonale. - Modificare il metodo estrai per controllare gli indici forniti. - Definire i metodi di somma e prodotto tra matrici - Per estendere il programma main si potrebbe - Usare i metodi per effettuare operazioni più complesse sulle matrici. - Fondamenti di Informatica - D. Talia - UNICAL 19