Corso di Java per la 3 E Sia - 7a Lezione 13 febbraio 2016 ore 11,00

Corso di Java per la 3 E Sia - 
7a Lezione 13 febbraio 2016 ore 11,00

Matrici
Matrici: introduzione


Le matrici sono insiemi di variabili, in cui ogni variabile è identificata all'interno della matrice da indici interi. Si tratta di una estensione dei vettori: mentre un vettore v è un gruppo di variabili v[0], v[1], v[2],..., una matrice è sempre composta da più variabili, ma questa volta le variabili sono v[0][0], v[0][1], v[0][2], ... v[1][0], v[1][1].... In altre parole, mentre nei vettori un solo valore intero identifica una variabile, nelle matrici le variabili sono identificate da due valori interi. Quindi, data una matrice m e due numeri interi i e j, questi identificano la variabile m[i][j] nella matrice.



Il modo più comodo di visualizzare una matrice m è quello di disporre le variabili che la compongono in una griglia, come segue:
m[0][0]m[0][1]m[0][2]...
m[1][0]m[1][1]m[1][2]...
m[2][0]m[2][1]m[2][2]...
...
Tutte le variabili in cui il primo intero vale 0 si trovano nella prima riga, mentre tutte quelle in cui vale 1 si trovano nella seconda riga, ecc. Per questa ragione, il primo valore viene detto indice di riga. Dato che tutti gli elementi delle colonne hanno lo stesso valore del secondo intero, questo viene detto indice di colonna. Quindi, l'elemento della matrice m che ha indice di riga 8 e indice di colonna 4 è la variabile m[8][4].
Per poter utilizzare una matrice è necessario dire di quanti elementi è fatta. In particolare, si deve dire di quante righe e quante colonne è composta. Inoltre, va specificato il tipo delle variabili che la compongono (come per i vettori, tutte le variabili devono essere dello stesso tipo). Nel caso delle matrici intere, la dichiarazione è quella che segue:
  int nomematrice[][] = new int[numero_righe][numero_colonne];
Per esempio, per dichiarare una matrice a che ha 5 righe e 8 colonne, la dichiarazione diventa:
  int a[][]=new int[5][8];
Si ricordi che gli indici dei vettori e delle matrici partono dal valore 0. Quindi, un vettore v di 5 elementi contiene le variabili da v[0] a v[4]. La stessa regola vale per le matrici, per cui nella dichiarazione di sopra il primo elemento della matrice a è a[0][0], mentre l'elemento che ha indici di riga e colonna più grandi è a[4][7]. In altre parole, una matrice con 5 righe e 8 colonne contiene delle variabili organizzate in righe, e ogni riga è identificata da un numero da 0 a 4, mentre le colonne vanno da 0 a 7. Detto in altri termini ancora, il massimo valore dell'indice di riga è il numero di righe meno uno, e lo stesso vale per le colonne.
Il seguente programma Matrici.java effettua queste funzioni: prima dichiara una matrice di dimensioni 10 e 10, poi mette 0 in tutte le sue variabili, e poi assegna -3 all'elemento che ha indice di riga 3 e indice di colonna 5, e infine mette 12 nell'elemento che ha indice di riga 9 e indice di colonna 9. Dopo queste operazioni, la matrice viene stampata. Per stampare la matrice, si stampa una riga per volta. Usiamo quindi una variabile intera i che deve andare da 0 a 9: per ogni valore si stampa la riga i-esima della matrice. Per fare questo, usiamo un altro ciclo interno che, per ogni valore dell'indice di riga i, fa una scansione di tutti gli elementi della riga. Per evitare di andare a capo dopo ogni valore stampato usiamo la funzione System.out.print, che stampa senza andare a capo. Alla fine della stampa di ogni riga è però necessario andare a capo, per cui usiamo la istruzione System.out.println.

/*
  Un programma che usa una matrice.
*/

class Matrici {
  public static void main(String[] args) {
    int a[][]=new int[10][10];
    int i, j;

    for(i=0; i<=9; i=i+1) {
      for(j=0; j<=9; j=j+1) {
        a[i][j]=0;
      }
    }

    a[3][5]=-3;
    a[9][9]=12;

    for(i=0; i<=9; i=i+1) {
      for(j=0; j<=9; j=j+1) {
        System.out.print(a[i][j]+" ");
      }
      System.out.println("");
    }
  }
}


Grafico di una funzione usando una matrice


MatriceFunzione.java
/*
  Grafico di una funzione, usando una matrice.
*/

class MatriceFunzione {
  public static void main(String[] args) {
    int f,x;
    int mat[][]=new int[100][40];
    int i,j;

 /* inizialmente, tutti gli elementi stanno a 0 */
    for(i=0; i<=99; i=i+1) {
      for(j=0; j<=39; j=j+1) {
         mat[i][j]=0;
      }
    }

 /* valori della funzione */
    for(x=0; x<=39; x=x+1) {
      f=(x*x+3*x+2)/10;

      if( (f>=0) && (f<=99) ) {
        mat[99-f][x]=1;
      }
    }

 /* stampa la matrice */
    for(i=0; i<=99; i=i+1) {
      for(j=0; j<=39; j=j+1) {
         if( mat[i][j]==0 ) {
           System.out.print(" ");
         }
         else {
           System.out.print("*");
         }
      }
      System.out.println("");
    }
  }
}

prodotto fra matrici dominio di definizione di una funzione determinante di una matrice

fonte: http://www.dis.uniroma1.it/~liberato/java/Matrici.html

Commenti

Post popolari in questo blog

Simulazioni di reti (con Cisco Packet Tracer)

Esercizi sulla rappresentazione della virgola mobile IEEE 754 (Floating Point)