Oggi è 29/03/2024, 9:17

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





 Pagina 1 di 1 [ 3 messaggi ] 

  Apri un nuovo argomento Rispondi all’argomento

  Stampa pagina

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

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

Karma
0


Non connesso

int A = 7;
int B = 5;
int risultato = 0;
while(A > 0)
{
risultato += B;
A --;
}
System.out.println("A x B = " + risultato);

Questo è lo script per le moltiplicazioni tramite addizioni successive proposto come esercizio nel post precedente, se ci avete provato e vi è venuto lo stesso siete sulla buona strada. Per esercitarvi vi consiglio il programma "Eclipse" che, a differenza del piu usato TextPad, vi segnala in tempo reale se ci sono errori e vi suggerisce come correggerli.


I Contatori
I contatori sono molto utilizzati nei primi passi dello script, semplificano la vita in molte occasioni anche se occupano una cella di memoria in piu dello stack. I contatori non sono altro che delle variabili di tipo int e, come suggerisce il nome, tengono il conto di qualcosa. Lo script sopra riportato, puo essere riproposto con un contatore in questo modo:
int A = 7;
int B = 5;
int risultato = 0;
int contatore = 0;
while(contatore < A)
{
risultato += B;
contatore ++;
}
Questo contatore ci permette alla fine di stampare sullo schermo anche il valore di A e B (prima invece A decrementava) aggiungendo alla fine System.out.println(A + " x " + B +" = " + risultato); rendendo cosi ancora piu gradevole il nostro programma.


Il Ciclo for[b]
Il while non è molto amato poichè potremmo andare incontro a dei problemi durante l'esecuzione del programma se ad esempio ci dimenticassimo di aumentare di 1 il contatore, continuando coi all'infinito un ciclo che non terminerebbe mai. Dalla versione 1.2 del 1998 di Java se ricordo bene, è stato introdotta l'operazione for che ha le stesse funzionalità del while. Lo stesso codice lo si potrebbe scrivere, utilizzando il ciclo for, in questo modo:
int A = 7;
int B = 5;
int risultato = 0;
for(int contatore = 0; contatore < A; contatore ++)
{
risultato += B;
}
System.out.println(A + " x " + B +" = " + risultato);

analizziamo le istruzioni all'interno delle parentesi del for:
int contatore = 0; crea ed inizializza una variabile di tipo intero chiamandola "contatore" ed assegnandole il valore 0
contatore < A; è come dire while(contatore < A)
contatore ++; è l'ultima operazione che viene eseguita dal for, cioè subito dopo risultato += B; è come se ci fosse contatore++;


[b]Record Di Attivazione

Ma qual'è il grande vantaggio del for?
Come avevo gia accennato prima, il contatore occupa una cella nuova di memoria nello stack, e chi programma cerca sempre di evitare operazioni o variabili superflue. Come voi notate, la variabile contatore viene creata dal for, quando si crea una variabile, essa viene riconosciuta solo ed esclusivamente fino a quando il numero delle parentesi graffe chiuse che si incontrano non eguaglia il numero delle parentesi graffe aperte, quando il ciclo del for finisce, la cella di memoria del contatore nello stack viene distrutta, e quindi se provassi a utilizzarla dopo, il compilatore non la troverebbe e mi darà un errore. Il processo di distruzione di una cella di memoria nello stack prende il nome di "Record Di Attivazione".


La class
Iniziamo adesso a mettere a frutto le conoscenze fin'ora acquisite per creare piccoli programmi.
Per creare dei programmi avete bisogno di un compilatore (come gia detto prima vi consiglio Eclipse) che "compila" lo script in tempo reale. Per eseguire un programma avete bisogno di compilare il vostro script (Pawo ad esempio è un compilatore). Se durante la compilazione non avete segnalazioni di errore allora potrete eseguire il programma. NB: Il compilatore nota solamente errori dal punto di vista lessico-grammaticale, ad esempio non vi avverte se avete dimenticato di aumentare il contatore durante il ciclo di un while, ma ve ne accorgerete durante l'esecuzione del programma stesso, in quanto, come detto in precedenza, non terminerà mai.
Per inserire i vostri script in un programma avete bisogno di una class, che non è altro che il nome del programma per come sarà individuato. Ad esempio se io voglio chiamare il mio programma "Pluto" dovrò aggiungere in testa dello script
public class Pluto
{
//qui inserite i vostri script
}

il doppio slash(//) indica il commento di una riga, che non sarà piu presa in considerazione dal compilatore, serve per annotarvi le cose da fare magari o quello che volete voi, se invece desiderate commentare piu righe di file potrete, al posto di iniziare ogni riga con il doppio slash, mettere /* all'inizio e */ per terminare la commentazione


Il main
Il main è dove l'esecutore del programma guarda per iniziare a eseguire le istruzioni date dallo script. Il main dovrà essere all'interno della class. Ad esempio se voglio che un programma "Somma" mi faccia la somma di due numeri A = 4 e B = 5 l'intero codice del programma sarà:
public class Somma
{
public static void main (String []args)
{
int A = 4;
int B = 5;
int risultato = A+B;
System.out.println("risultato = " + risultato);
}
}

Non prestate attenzione adesso al significato di public e public static void e di (String []args), il concetto sarà ripreso nei prossimi topic.


input, output e Scanner
Ma se voglio fare la somma di due numeri decidendoli io dalla tastiera durante l'esecuzione del programma senza andare a cambiare ogni volta lo script?
Per questo esiste l'oggetto Scanner, per capire come funziona diamo prima una definizione di cosa significano input e output:
-input sono le informazioni trasmesse dall'esecutore del programma tramite la tastiera, cioè quello che il programma va a prendere grazie a chi esegue il programma
-output sono le informazioni che il programma restituisce all'esecutore; Un esempio chiaro è la stampa sullo schermo del risultato di un'operazione.
L'oggetto Scanner permette di ricevere informazioni in ingresso attraverso la tastiera. Ancor prima della class dovrete indicare al compilatore di andare ad implementare tutte le operazioni che l'oggetto Scanner puo fare. Dovrete aggiungere "import Java.Scanner;".
In pawno questi import sono simili agli include, che vanno a prendere tutte le funzioni definite nei file degli include.
Il programma, utilizzando lo Scanner, diventerà cosi:
import Java.Scanner;
public class Somma
{
Scanner sc = new Scanner(System.in);
public static void main(String []args)
{
System.out.println("Digita il valore del primo numero);
int A = sc.nextInt();
System.out.println("Digita il valore del secondo numero);
int B = sc.nextInt();
int risultato = A+B;
System.out.println("Risultato = " + risultato);
}
}

Come vedete, ancor prima del main ho dichiataro un oggetto di tipo Scanner con il nome sc che scansione il prossimo input del sistema. Ad A sono andato ad associare invece il prossimo valore intero di sc, cioè proprio quello che io scrivo dalla tastiera, cosi come anche a B. NB: Il programma si ferma momentaneamente fino a quando non si da l'input dalla tastiera.
Naturalmente se al posto di un numero ci metto parole il programma restituisce un errore e termina dato che la variabile A è di tipo int, cosi anche se metto un valore che supera i limiti descritti nel topic precedente delle variabili di tipo int, il programma darà un errore e terminerà.


Math
Cosa succede quando abbiamo necessità di eseguire calcoli piu complessi come il calcolo di una radice quadrata oppure un calcolo trigonometrico? Anche in questo caso, Java ci mette a disposizione un altro importante oggetto che è l'oggetto Math, per implementarlo nel nostro script, dove prima abbiamo inserito import Java.Scanner; adesso inseriremo import Java.Math; Se invece volete direttamente implementare tutti gli oggetti predefiniti di Java scriveremo import Java.util.*;
Ecco le principali funzioni offerte dall'oggetto Math:
abs(x) Restituisce il Valore Assoluto di X.
acos(x) Restituisce l' Arcocoseno di X.
asin(x) Restituisce L' Arcoseno di X.
atan(x) Restituisce l'Arcotangente di X.
atan2(x,y) Restituisce l'angolo compreso tra l'asse X e un punto specificato da x e y.
ceil(x) Restituisce x arrotondato all'intero superiore.
sqrt(x) Restituisce la Radice quadrata di X.
sin(x) Restituisce il Seno di X.
cos(x) Restituisce il Coseno di X.
exp(x) Restituisce l'esponente di x.
floor(x) Restituisce x arrotondato all'Intero Inferiore.
log(x) Restituisce il Logaritmo naturale di x.
max(a,b) Restituisce il maggiore tra i due valori a e b.
min(a,b) Restituisce il Minore tra i due valori a e b.
pow(x,y) Restituisce x elevato alla potenza di y.
random() Restituisce un numero casuale compreso tra 0 e 1 (Esclusi).
round(x) Restituisce l'Intero più vicino a X.
tan(x) Restituisce la tangente di X.
Ad esempio se io voglio fare un programma che mi calcoli la potenza di due numeri che indico io dalla tastiera sarà:
import Java.util.*;
public class Potenza
{
Scanner sc = new Scanner(System.in);
public static void main(String []args)
{
System.out.println("Inserisci la base");
int A = sc.nextInt();
System.out.println("Inserisci l'esponente");
int B = sc.nextInt();
int risultato = Math.pow(A,B);
System.out.println("Risultato: " + risultato);
}
}



Conclusione
Cercate di esercitarvi con la creazione di piccoli programmi, altri 5 o 6 topic e si inizierà a parlare di pawno, ma almeno cosi capite dove sbagliate e potrete solamente migliorare.
Nel prossimo post parlerò dei metodi. Se volete provare se siete abbastanza pronti per il prossimo topic, provate a rispondere a questa discussione spiegando cosa fa questo programma, e quale sarà il numero dell'output nel caso in cui il numero inserito dalla tastiera sia 6
import java.Scanner;
public class Programma
{
Scanner sc = new Scanner(System.in);
public static void main(String []args)
{
int numero = sc.nextInt();
int risultato = 0;
int contatore = 1;
int parziale = 0;
for(int i = 0; i < numero; i++)
{
parziale = risultato + contatore;
contatore = risultato;
risultato = parziale;
}
System.out.println(risultato + " ");
}
}

Postate pure il codice come risposta a questa discussione e sarò felice di correggervi o darvi dei consigli.
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  
 

 Oggetto del messaggio: Re: [GUIDA]Lezioni di java - Lezione 2
MessaggioInviato: 31/10/2010, 21:37 
Avatar utente
Utente

Iscritto il: 29/10/2010
Messaggi: 149
Favourite GTA: San Andreas
Xfire: pcnumbertwo

Karma
0


Non connesso
se vuoi puoi anche metterlo tutto insieme

_________________
My clan on Sa:Mp: TDk click :)
Immagine


Top
 E-mail  
 
 Oggetto del messaggio: Re: [GUIDA]Lezioni di java - Lezione 2
MessaggioInviato: 31/10/2010, 21:41 
Avatar utente
Utente

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

Karma
0


Non connesso
nah, preferisco passo per passo xD sono 6 guide, quindi non tantissime ;)

_________________
Immagine


Top
 E-mail  
 
Visualizza ultimi messaggi:  Ordina per  
 Pagina 1 di 1 [ 3 messaggi ] 

  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 39 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