tipi primitivi ed array - prog.di.unimi.itprog.di.unimi.it/laboratorio/lezioni/lez04.pdf · array...
TRANSCRIPT
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Tipi primitivi ed array
G. Grossi
8 novembre 2006
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Indice
1 Tipi numericiTipi interiTipi in virgola mobile
2 Conversioni e promozioniTipi ed espressioni
3 Array di tipi primitiviCalcolo delle permutazioniAlgebra delle matrici
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Indice
1 Tipi numericiTipi interiTipi in virgola mobile
2 Conversioni e promozioniTipi ed espressioni
3 Array di tipi primitiviCalcolo delle permutazioniAlgebra delle matrici
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Indice
1 Tipi numericiTipi interiTipi in virgola mobile
2 Conversioni e promozioniTipi ed espressioni
3 Array di tipi primitiviCalcolo delle permutazioniAlgebra delle matrici
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Tipi interiVirgola mobile
Tipi numerici
Tipo Contiene Default Size Range
char car Unicode \u0000 16 bit da \u0000 a \uFFFF
byte int con segno 0 8 bit da −27 a 27 − 1
short int con segno 0 16 bit da −215 a 215 − 1
int int con segno 0 32 bit da −231 a 231 − 1
long int con segno 0 64 bit da −263 a 263 − 1
float Std IEEE 754 0.0 32 bit (± 1.4E-45, ± 3.4E+38)
double Std IEEE 754 0.0 64 bit (± 4.9E-324, ± 1.8E+308)
Osservazione: 10 ≈ 23.32, da cui si ha che 231 ≈ 1031
3.32 ≈ 2 · 109
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Tipi interiVirgola mobile
Letterali numerici
char c = 0xffff; // massimo valore char (hex)byte b = 0x7f; // massimo valore byte (hex)short s = 0x7fff; // massimo valore short (hex)int i1 = 0x2f; // Hexadecimal (minuscolo)int i2 = 0X2F; // Hexadecimal (maiuscolo)int i3 = 0177; // Ottale (zero seg. da cifre 1..7)long n1 = 200L; // suffisso longlong n2 = 200l; // suffisso longlong n3 = 200;float f1 = 1;float f2 = 1F; // suffisso floatfloat f3 = 1f; // suffisso floatfloat f4 = 1e-45f; // 10ˆ(-45)float f5 = 1e+9f; // suffisso floatdouble d1 = 1d; // suffisso doubledouble d2 = 1D; // suffisso doubledouble d3 = 47e47d; // 10ˆ(47)
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Tipi interiVirgola mobile
Indice
1 Tipi numericiTipi interiTipi in virgola mobile
2 Conversioni e promozioniTipi ed espressioni
3 Array di tipi primitiviCalcolo delle permutazioniAlgebra delle matrici
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Tipi interiVirgola mobile
Aritmetica modulare
Con l’aritmetica intera non si verificano overflow o underflow
int i = 1000000; // 10ˆ6
int j = 1000000; // 10ˆ6
out.println(i * j);
i = 2147483647; // 2ˆ31 - 1
out.println(i + 1);
i = -2147483648; // -2ˆ31
out.println(i - 1);
Che cosa viene stampato?
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Tipi interiVirgola mobile
Aritmetica modulare
Outputprompt> -727379968
prompt> -2147483648
prompt> 2147483647
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Tipi interiVirgola mobile
Doppia precisione intera
long l = 9223372036854775807; // non compila!
long l = 9223372036854775807L; // 2ˆ63-1
//ordine 10ˆ18
out.println(l + 1);
Che cosa viene stampato?
prompt> -9223372036854775808
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Tipi interiVirgola mobile
Indice
1 Tipi numericiTipi interiTipi in virgola mobile
2 Conversioni e promozioniTipi ed espressioni
3 Array di tipi primitiviCalcolo delle permutazioniAlgebra delle matrici
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Tipi interiVirgola mobile
Aritmetica in virgola mobile
Overflow e underflow in virgola mobile
double d = 1e308;out.print("L’overflow produce infinito: ");out.println(d + "*10==" + d*10);
out.println("underflow graduale:");d = 1e-305 * 3.14;out.println(d);for (i = 0; i < 4; i++)
out.println(d /= 100000);
Che cosa viene stampato?
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Tipi interiVirgola mobile
Aritmetica in virgola mobile
Outputprompt> 1.0E308*10==Infinity
prompt> 3.14E-3053.14E-3103.14E-3153.14E-3200.0
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Tipi interiVirgola mobile
Aritmetica in virgola mobile
Non e un numero!
// Un esempio di NaN:
out.print("0.0/0.0, cioe’ Not-a-Number: ");d = 0.0/0.0;out.println(d);
Che cosa viene stampato?prompt> 0.0/0.0, cioe’ Not-a-Number: NaN
// e nel caso intero?
out.print("0/0 = " + 0/0);
Che cosa viene stampato?
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Tipi interiVirgola mobile
Aritmetica in virgola mobile
Risultato non corretto per effetto di arrotondamenti
out.print("risultato non corretto con i float:");for (i = 0; i < 100; i++) {
float z = 1.0f / i;if (z * i != 1.0f)
out.print(" " + i);}out.print("risultato non corretto con i double:");for (i = 0; i < 100; i++) {
double z = 1.0 / i;if (z * i != 1.0)
out.print(" " + i);}
Che cosa viene stampato?
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Tipi interiVirgola mobile
Aritmetica in virgola mobile
Outputprompt> 0 41 47 55 61 82 83 94 97
prompt> 0 49 98
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Tipi interiVirgola mobile
Letterali di default
int per i tipi numerici interi
byte b = 10;int i = 10;long l = 10L;
double per i tipi floating point
float s = 1; // compila
float s = 1.3; // non compila
float s = 1.3f; // compila
double d = 1.3; // compila
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitiviTipi ed espressioni
Tipi di conversione: riassunto
Esistono due tipi di conversione in Java:widening conversion (= ampliamento, promozione) siverifica quando un valore numerico di un dato tipo vieneassegnato a una variabile il cui tipo supporta un insieme divalori piu estesonarrowing conversion (= restringimento, forzatura) siverifica quando un valore numerico di un dato tipo vieneassegnato a una variabile il cui tipo supporta un insieme divalori meno esteso
Nel primo caso le conversioni sono implicite (o automatiche).Nel secondo caso devono essere rese esplicite (o forzate) conil costrutto cast
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitiviTipi ed espressioni
Conversioni di tipi: tabella riassuntiva
Da: A: byte short char int long float double
byte → - W N W W W W
short → N - N W W W W
char → N N - W W W W
int → N N N - W W∗ W
long → N N N N - W∗ W∗
float → N N N N N - W
double → N N N N N N -
N = narrowing (restringimento)W = widening (ampliamento)W∗ = widening con possibile perdita di cifre meno significative
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitiviTipi ed espressioni
Cast
Necessita del cast nelle operazioni aritmetiche
int i = 1000000000;// i = 1.000.000.000
int j = 3*i; // j = -1.294.967.296
long k = 3*i; // k = -1.294.967.296
long w = (long)3*i;// w = 3.000.000.000
Cast richiesto dal controllo sui tipi
byte b = 1000; // non compila
int i = 10;byte b = i; // non compila
byte b = (byte)i;char c = (char)i;double d = 1.33;float f = d; // non compila
float f = (double)d;
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitiviTipi ed espressioni
Perdita d’informazione
Assegnamento accettato senza cast (widening)
// perdita d’informazione
i = 1234567890;float f = i;out.println("f - i = " + ((int)f - i));
long p = 1234567890123456789L;double q = p;out.println("q - p = " + ((long)q - p));
Che cosa viene stampato?
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitiviTipi ed espressioni
Perdita d’informazione
Outputprompt>f - i = 46
prompt>q - p = -21
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitiviTipi ed espressioni
Indice
1 Tipi numericiTipi interiTipi in virgola mobile
2 Conversioni e promozioniTipi ed espressioni
3 Array di tipi primitiviCalcolo delle permutazioniAlgebra delle matrici
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitiviTipi ed espressioni
Espressioni semplici
Il piu semplice tipo di espressioni consite di letterali e variabili(espressioni semplici)
Esempi:
13.452; // letterale floating point
somma; // variabile
L’interprete Java valuta un’espressione e ne restituisce il valoreSe si tratta di un letterale e il valore rappresentato dalletterale stessoSe si tratta di una variabile il valore in essa contenuto
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitiviTipi ed espressioni
Espressioni composte
Le espressioni composte si ottengono combinandoopportunamente espressioni semplici e operatori
Esempi:
// operatori di prodotto e divisione
area = base * altezza / 2;
// invocazione di metodo
in.readDouble();
Osservazione: l’invocazione di metodo costituisce anch’essaun’espressione semplice
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitiviTipi ed espressioni
Operatori e operandi
Gli operandi sono gli argomenti dell’operatore. Alcunioperatori operano solo su un operando (operatore unario),altri ne richiedono due (operatore binario) ecc.Java ha operatori unari, binari e ternari (un solo caso!)Ogni operatore si aspetta che i suoi operandi siano di unparticolare tipoFissato l’operatore e il tipo degli operandi e univocamentedeterminato il tipo del risultato dell’espressioneOgni espressione ha un tipo determinato da quello dei suoicomponenti e dalla semantica degli operatori coinvolti.
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitiviTipi ed espressioni
Conversioni implicite di tipo
Tipo ris.Tipo degli operandi
long Nessun operando e un float o un double(aritmetica intera); ma almeno uno e un long
int Nessun operando e un float o un double(aritmetica intera); nessun operando e un long
double Almeno un operando e un double.
float Almeno un operando e un float; nessun operandoe un double.
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitiviTipi ed espressioni
Precedenze tra operatori
Tipo di operatore OperatorePostfissi [] . (parametri) expr++ expr--
Unari ++expr --expr +expr -expr !
Creazione e conversione new (tipo)expr
Moltiplicativi * / %
Additivi + -
Scorrimento << >> >>>
Relazionali < > <= >= instanceof
Uguaglianza == !=
AND &
... ...
Condizionale ?:
Assegnamenti = += -= *= /= %=
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Indice
1 Tipi numericiTipi interiTipi in virgola mobile
2 Conversioni e promozioniTipi ed espressioni
3 Array di tipi primitiviCalcolo delle permutazioniAlgebra delle matrici
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Problema
PermutazioniScrivere un programma Java che stampi n > 0 permutazionicasuali di un insieme di numeri assegnato
Che cosa si intende per permutazione?1 2 3 4 5 6 7 8 9 10
3 6 10 9 1 7 2 4 8 5
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Progettazione
Metodo top down ...
Definizione dei sottoproblemi
acquisire dall’utente il numero di permutazioni richiesteeffettuare una copia dell’array da elaborare (cosı damantenere inalterato l’originale)determinare le permutazioni casuali dell’insieme richiestestampare le permutazioni
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Progettazione
Metodo top down ...
Definizione dei sottoproblemiacquisire dall’utente il numero di permutazioni richieste
effettuare una copia dell’array da elaborare (cosı damantenere inalterato l’originale)determinare le permutazioni casuali dell’insieme richiestestampare le permutazioni
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Progettazione
Metodo top down ...
Definizione dei sottoproblemiacquisire dall’utente il numero di permutazioni richiesteeffettuare una copia dell’array da elaborare (cosı damantenere inalterato l’originale)
determinare le permutazioni casuali dell’insieme richiestestampare le permutazioni
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Progettazione
Metodo top down ...
Definizione dei sottoproblemiacquisire dall’utente il numero di permutazioni richiesteeffettuare una copia dell’array da elaborare (cosı damantenere inalterato l’originale)determinare le permutazioni casuali dell’insieme richieste
stampare le permutazioni
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Progettazione
Metodo top down ...
Definizione dei sottoproblemiacquisire dall’utente il numero di permutazioni richiesteeffettuare una copia dell’array da elaborare (cosı damantenere inalterato l’originale)determinare le permutazioni casuali dell’insieme richiestestampare le permutazioni
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Copia di un array - 1
Dato l’array definito (creazione + inizializzazione) diseguito: int[] insieme = 1,2,3,4,5,6,7,8,9,10;
E’ corretto effettuare la copia nel seguente modo?int[] copiaDiInsieme = insieme;
Cosa accade in realta?int[]
10 2 3 4 5 6
insieme
copiaDiInsieme
Errore semantico! I due riferimenti puntano allo stessooggetto
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Copia di un array - 1
Dato l’array definito (creazione + inizializzazione) diseguito: int[] insieme = 1,2,3,4,5,6,7,8,9,10;
E’ corretto effettuare la copia nel seguente modo?int[] copiaDiInsieme = insieme;
Cosa accade in realta?int[]
10 2 3 4 5 6
insieme
copiaDiInsieme
Errore semantico! I due riferimenti puntano allo stessooggetto
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Copia di un array - 1
Dato l’array definito (creazione + inizializzazione) diseguito: int[] insieme = 1,2,3,4,5,6,7,8,9,10;
E’ corretto effettuare la copia nel seguente modo?int[] copiaDiInsieme = insieme;
Cosa accade in realta?
int[]
10 2 3 4 5 6
insieme
copiaDiInsieme
Errore semantico! I due riferimenti puntano allo stessooggetto
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Copia di un array - 1
Dato l’array definito (creazione + inizializzazione) diseguito: int[] insieme = 1,2,3,4,5,6,7,8,9,10;
E’ corretto effettuare la copia nel seguente modo?int[] copiaDiInsieme = insieme;
Cosa accade in realta?int[]
10 2 3 4 5 6
insieme
copiaDiInsieme
Errore semantico! I due riferimenti puntano allo stessooggetto
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Copia di un array - 2
int copiaDiInsieme[] = new int[insieme.length];for (int i=0; i < insieme.length; i++)
copiaDiInsieme[i] = insieme[i];
int[]
10 2 3 4 5 6
int[]
10 2 3 4 5 6
4 2 5 6 8 9 10
copiaDiInsieme
insieme
4 2
. . .
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Un corollario dell’inizializzazione
ExampleIstruzione di inizializzazione:
int i = 10;
int[] treDispari = {2*i+1,2*(i+1)+1,2*(i+2)+1};
Poiche Java inizializza esplicitamente gli array a runtime, alloraanche le espressioni possono essere usate al posto dellecostanti. Il compilatore si limita a verificare la congruenza tra iltipo delle singole espressioni con il tipo base dell’array
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Determinare una permutazione
Individuazione dei sottoproblemi
Prendere in esame la copia dell’array originale(modificabile a piacere secondo gli scopi)Generare una sequenza di numeri intero a casonell’intervallo [0, N − 1]: vedi il metodo randInt dellaclasse java.util.Random
Indicizzare con tale insieme l’array, copiare i numeri ivicontenuti nel nuovo array o stamparli, “marcardo” ognivolta l’elemento letto
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Determinare una permutazione
Individuazione dei sottoproblemiPrendere in esame la copia dell’array originale(modificabile a piacere secondo gli scopi)
Generare una sequenza di numeri intero a casonell’intervallo [0, N − 1]: vedi il metodo randInt dellaclasse java.util.Random
Indicizzare con tale insieme l’array, copiare i numeri ivicontenuti nel nuovo array o stamparli, “marcardo” ognivolta l’elemento letto
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Determinare una permutazione
Individuazione dei sottoproblemiPrendere in esame la copia dell’array originale(modificabile a piacere secondo gli scopi)Generare una sequenza di numeri intero a casonell’intervallo [0, N − 1]: vedi il metodo randInt dellaclasse java.util.Random
Indicizzare con tale insieme l’array, copiare i numeri ivicontenuti nel nuovo array o stamparli, “marcardo” ognivolta l’elemento letto
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Determinare una permutazione
Individuazione dei sottoproblemiPrendere in esame la copia dell’array originale(modificabile a piacere secondo gli scopi)Generare una sequenza di numeri intero a casonell’intervallo [0, N − 1]: vedi il metodo randInt dellaclasse java.util.Random
Indicizzare con tale insieme l’array, copiare i numeri ivicontenuti nel nuovo array o stamparli, “marcardo” ognivolta l’elemento letto
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Soluzione
Vedi il programma Permutazioni.java ...
N.B. Il ciclo while potrebbe essere molto inefficiente ...modificare il programma sostituendo con un ciclo for.
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Indice
1 Tipi numericiTipi interiTipi in virgola mobile
2 Conversioni e promozioniTipi ed espressioni
3 Array di tipi primitiviCalcolo delle permutazioniAlgebra delle matrici
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Array multidimensionali
Un array multidimensionale e un array i cui elementi sonoa loro volta arrayIl caso piu semplice e quello in cui gli elementi sono arraymonodimensionali. In questo caso si ottengono dellestrutture chiamate matrici (array di dimensione 2).
Esempio: matrice3x4 (3 righe e 4colonne)
0
4 7 −4
3
riga (seconda)
colonna (terza)
22−517
12 9
1 2 3
0
1
2
−2
60
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Array: dichiarazione e accesso0
4 7 −4
3
riga (seconda)
colonna (terza)
22−517
12 9
1 2 3
0
1
2
−2
60
Dichiarazione:int[][] matrice = new int[3][4];
Accesso all’elemento memorizzato nella seconda riga &terza colonna:int i = matrice[1][2];
Dimensioni: il numero di righe e dato da matrice.length,il numero di colonne e dato da matrice[0].length
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Array: dichiarazione (2)
Nella dichiarazione, una o piu dimensioni possono nonessere specificate: in questo caso gli elementicorrispondenti alle dimensioni non specificate sonoriferimenti vuoti (null)Esempio:int[][] a = new int[3][];dichiara una array di 3 elementi che sono riferimenti adarray monodimensionali di lunghezza non specificata.Sara quindi necessario inizializzare ogni elemento usandol’operatore new. Cioe:
a[0] = new int[1];a[1] = new int[7];a[2] = new int[22];
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Array: situazione in memoria
Un array multidimensionale viene memorizzato come unarray di array
(4)
17
−5
22
3
0
4 7 −4
322−517
12 9
1 2 3
0
1
2
−2
60
(4)(3)
(4)
4
7
−2
−4
12
0
6
9
matrice
length
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Array: inizializzazione
Analogamente agli array monodimensionali, anche gliarray multidimensionali possono essere inizializzati in fasedi dichiarazione
class Motto{public static void main (String args []){
char motto [][] = {{ ’E’,’s’,’t’,’o’,’t’,’e’},{ ’p’,’a’,’r’,’a’,’t’,’e’, ’.’,’.’,’.’}
};out.println (new String(motto[0]));out.println (new String(motto[1]));
}}
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Esercizio: somma di matrici
ProblemaScrivere un programma Java che, date due matrice di numeri,restituisca la matrice somma
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Esempio: somma elementi matrice
class SommaMatrice{// Somma gli elementi della matrice A
public static void main (String [] args){int[][] A = {
{1, 2, 3, 4, 5},{4, 8, 3, 2, 7},{10, 7, 3, 6, 8},{9, 2, 8, 3, 1}};
int somma=0;for (int i=0; i< A.length; i++)
for (int j=0; j< A[i].length; j++)somma += A[i][j];
out.println (somma);}
}
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Esercizio: prodotto di matrici
Il prodotto di matrici e illustrato come segue:date una matrice 3x4 e una 4x2 ...
x =
3 x 44 x 2
3 x 2
ProblemaScrivere un programma Java che, date due matrice di numeri,ne effettui il prodotto e lo stampi a video
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Le matrici
Matrice B (6x3)4 6 -3
Matrice A (4x6) 5 -1 -53 1 2 5 -6 12 0 2 7-1 1 0 -4 1 0 -8 24 20-2 5 -4 4 5 19 -4 6 119 -9 -2 33 16 0 11 -5 0
Matrice prodotto (4x3)-23 141 10033 -103 -82-15 71 33-273 851 664
G. Grossi Lezione 4
Tipi numericiConversioni e promozioni
Array di tipi primitivi
Array monodimensionaliArray multidimensionali
Soluzione
Vedi il programma ProdottoMatrici.java ...
G. Grossi Lezione 4