Oggi è 28/03/2024, 14:42

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 4
MessaggioInviato: 31/10/2010, 21:44 
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 boolean Verifica(int A, int B, int C)
{
if(B > A && B < C) return true;
return false;
}
public static void Ordinamento (int A, int B, int C)
{
int max; int med; int min;
if(A > B && A > C)
{
max = A;
min = Math.min(B, C);
med = Math.max(B, C);
}
if(B > A && B > C)
{
max = B;
min = Math.min(A, C);
med = Math.max(A, C);
}
if(C > A && C > B)
{
max = C;
min = Math.min(A, B);
med = Math.max(A, B);
}
A = min;
B = med;
C = max;
}

Questi erano i due metodi proposti come esercizio nel topic precedente


Introduzione agli array
Un array non è altro che una serie definita di variabili ordinate.
L'array ha una lunghezza ben definita e immutabile. gli elementi degli array NON possono cambiare tipo di variabile. Se gli elementi degli array sono di tipo X, essi non possono diventare di tipo Y.
Come ho gia detto, la lunghezza di un array è ben definita ed immutabile, per questo esiste una variabile gia implementata in Java che è uguale alla dimensione dell'array, ad esempio se l'array si chiama V e la sua dimensione è uguale a 5, la dimensione la si puo avere anche scrivendo V.length
E' di tipo final, cioè immutabile una volta dichiarata, vedremo tra 2 topic cosa significa


I Vettori
I vettori sono gli array monodimensionali, sono i piu semplici da capire, sono costituiti da una sola righa di elementi (ecco perchè si chimano monodimensionali). Esempio, se l'array monodimensionale ha dimensione 3, e gli elementi sono, ordinati, 6, 7, 8, l'array sarà cosi:
|6|7|8|
Una cosa importante da sapere è che il primo elemento corrisponde alla posizione 0, e quindi l'ultimo elemento di un array si troverà alla posizione V.length-1;
Adesso vedremo come creare un vettore e come riempirlo di elementi.
Immaginiamo che gli elementi di questo vettore siano di tipo int:
public static int[] LeggiVettore()//vedi punto 1
{
System.out.println("Scrivi la lunghezza che deve avere il vettore");
int lunghezza = sc.nextInt();
int v[] = new int[lunghezza];//vedi punto 2
for(int i = 0; i < v.length; i ++)//adesso stiamo scansionando il vettore, cioè i sarebbe l'indice, o meglio la posizione che stiamo riempiendo
{
System.out.println("Scrivi il valore numero " + (i+1));
v[i] = sc.nextInt();//assegnamo all'elemento alla posizione i, il valore da noi dato attraverso la tastiera
}
return v;
}

1) Il metodo non riceve niente in quanto saremo noi a darci l'input dalla tastiera e restituisce un array monodimensionale di interi. Il tipo di array lo si puo capire dal numero di parentesi quadre. ad esempio un array multidimensionale, che spiegerò nel prossimo topic, se a due dimensioni lo si puo individure da: [][];
2)abbiamo creato un vettore di lunghezza pari a quello che scriveremo dalla tastiera, adesso dobbiamo solamente inserire gli elementi... se lo lasciassimo cosi tutti gli elementi sarebbero 0.
Questo è il metodo sempre utilizzato per creare un vettore. Adesso vediamo come ordinare gli elementi di un vettore, magari per ordine crescente, piu o meno come si voleva fare all'esercizio in partenza, però adesso sono elementi di un vettore di dimensione v.length, quindi non conoscendo il numero preciso degli elementi, che possono essere anche 1000, non si puo fare lo script di inizio topic. Andiamo a vedere quindi i principali metodi di ordinamento di un vettore, cosi capirete come ci si lavora.


Bubble Sort
In italiano lo si traduce "Ordinamento a bolle".
Praticamente vede ogni elemento di un vettore confrontandolo con il successivo, se questo è maggiore dell'altro li scambia.
Facciamo un esempio: Immaginiamo di avere un vettore di lunghezza 5, i cui elementi siano cosi disposti:
|7|5|3|4|10|
Quello che accadrà, scambio dopo scambio è:
|5|7|3|4|10|
|5|3|7|4|10|
|5|3|4|7|10|
|3|5|4|7|10|
|3|4|5|7|10|
Il metodo del Bubble Sort è questo:
public static int [] Bubble Sort(int [] v)
{
for (int g = 0; g < v.length; g ++)
{
for(int f = 1; f < v.length; f ++)
{
if(v[f]<v[f-1])
{
int c = v[f];
v[f] = v[f-1];
v[f-1] = c;
}
}
}
return v;
}

Vi invito a passare qualche minuto per analizzare bene lo script e perchè c'è la necessità di scansionare il vettore due volte, cioè perchè se mettessi un solo for non andrebbe bene


Selection Sort
Letteralmente significa "Ordinamento per selezione".
Prende il massimo elemento di un vettore e lo scambia con l'elemento dell'ultima posizione, poi prende il massimo, escluso l'ultimo e lo scambia con l'elemento al penultimo posto e cosi via. Riprendiamo in esame l'esempio di prima:
|7|5|3|4|10|
Ciò che accadrà, scambio dopo scambio, è:
|7|5|3|4|10| //porta il 10 all'ultimo posto, in realtà c'era gia :P
|4|5|3|7|10|
|4|3|5|7|10|
|3|4|5|7|10|


Conclusione
Sono degli argomenti di livello nettamente superiore a quelli affrontati fino ad ora, quindi cercate di soffermarvi ad analizzare bene questo topic odierno, per esercitarvi provate a creare il metodo del Selection Sort.
Postate pure il codice come risposta a questa discussione e sarò felice di correggervi o darvi dei consigli.
Nella prossima lezione si parlerà di array multidimensionali
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 21 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