Oggi è 28/03/2024, 11:15

Tutti gli orari sono UTC + 1 ora [ ora legale ]





 Pagina 1 di 1 [ 1 messaggio ] 

  Apri un nuovo argomento Rispondi all’argomento

  Stampa pagina

Autore Messaggio
 Oggetto del messaggio: [GUIDA]Lezioni di java - Lezione 5
MessaggioInviato: 31/10/2010, 21:47 
Avatar utente
Utente

Iscritto il: 29/10/2010
Messaggi: 43
Località: Cosenza - ITA
Favourite GTA: San Andreas
Xfire: giuseppemazzei

Karma
0


Non connesso
public static void SelectionSort(int v[])
{
for(int i = v.length-1; i > 0; i--)
{
int max = i;
for(int j = 0; j < i; j++)
{
if(v[j] > v[max]) max = j;
}
int parziale = v[i];
v[i] = v[max];
v[max] = parziale;
}
}

Questo è il codice del selection sort, posto come esercizio nel topic precedente. Se vi è venuto identico siete messi veramente bene e pronti per gli argomenti odierni


Matrici
Sappiamo che i vettori sono array monodimensionali, ma cos'accade quando ogni elemento di un vettore è un array? Abbiamo di fronte quindi una specie di tabella i righe per j colonne, identica alle matrici che si studiano in algebra, e per questo vengono chiamate cosi, ma come dice il mio prof: <i>Le matrici non esistono! sono solo cazzate che vi sparano nella testa i professori di fondamenti. Questi sono array bidimensionali!</i>
Quindi come faccio per scansionarmi la matrice?
Devo scansionare ogni elemento, riga per colonna. Diciamo che la matrice ha dimensione 4x4 e il primo numero rappresenta il numero della riga, il secondo della colonna. La forma della matrice è quindi questa:
|0-0|0-1|0-2|0-3|
|1-0|1-1|1-2|1-3|
|2-0|2-1|2-2|2-3|
|3-0|3-1|3-2|3-3|
Quindi, per scansionare ogni elemento del vettore dobbiamo prendere una variabile che varia per la lunghezza, e un'altra variabile che varia per l'altezza: quindi si fa con due for cosi se l'array si chiama M:
for(int i = 0; i < M.length; i++)
{
for(int j = 0; j<m[0].length; j++)
{
//qui fate quello che volete
}
}

Perchè M[0].length?
Perchè noi andiamo a prendere la lunghezza dell'elemento che sta alla posizione numero 0, come ho detto prima questo è un array e quindi avrà una certa dimensione. Si puo quindi dedurre che le variabili non sono altro che array monodimensionali di lunghezza 1, nfatti sono una sola cella.
Per creare invece una matrice?
int M[][] = new int[n°righe][n°colonne];
immaginiamo di dover creare un metodo che prenda gli elementi che si trovano sulla diagonale principale (quindi quando i == j) e di creare un vettore che contenga questi elementi:
public static int [] Metodo(int M[][])
{
int v[] = new int[M.length];//perchè si vede subito che la lunghezza del vettore è uguale alla lunghezza di una riga della matrice
for(int i = 0; i < M.length; i++)
{
for(int j = 0; j < M[0].length; j++)
{
if(i==j) v[i] = M[i][j];
}
}
return v;
}

Adesso faremo un esercizio di un esame di fondamenti di informatica:
Creare un metodo "verificaVander" che riceve in ingresso una matrice e restituisce true se la matrice è di Vander, altrimenti false.
Una matrice è di Vander se ogni elemento è uguale all'elemento sulla riga j = 1 della sua colonna elevato a j. Esempio: La matrice sotto riportata è una matrice di Vander.
|1|1|1|
|1|3|2|
|1|9|4|
public static boolean verificaVander(int M[][])
{
for(int i = 0; i <m.length; i++)
{
for(int j = 0; j < M[0].length; j++)
{
if(M[i][j] != Math.pow(M[1][j], i)) return false;
}
}
return true;
}



Array Multidimensionali
Le matrici come abbiamo detto sono array bidimensionali, cioè ogni elemento di un array è un array a sè, ma quindi significa che io potrei creare array che ogni elemento è una matrice, quindi tridimensionali, e cosi via... Non c'è un limite per la dimensione di un array.


Conclusione
Spero di essere stato abbastanza chiaro oggi con quest'argomento che va solo capito, non è difficile!
Se volete provare, create un metodo che riceva in ingresso un array v e restituisca una matrice quadrata(il numero delle righe sarà uguale a quello delle colonne) tale che la matrice sarà di Vander e la riga j = 1 saranno proprio gli elementi del vettore.
Nel prossimo topic parlerò di cosa fa la programmazione orientata agli oggetti, package, import, final e poi si passerà ad applicare le conoscenze acquisite su pawno!
Commenti, dubbi, proposte e altro in questo post, cosi che tutti potranno apprendere le basi da questo forum.
Se volete ulteriori spiegazioni chiedete pure,
Tanti saluti,
Giuseppe Mazzei

_________________
Immagine


Top
 E-mail  
 

Visualizza ultimi messaggi:  Ordina per  
 Pagina 1 di 1 [ 1 messaggio ] 

  Apri un nuovo argomento Rispondi all’argomento

Tutti gli orari sono UTC + 1 ora [ ora legale ]



Chi c’è in linea

Visitano il forum: Nessuno e 30 ospiti


Non puoi aprire nuovi argomenti
Non puoi rispondere negli argomenti
Non puoi modificare i tuoi messaggi
Non puoi cancellare i tuoi messaggi
Non puoi inviare allegati

Cerca per:
Vai a:  
cron