Oggi è 29/03/2024, 4:14

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 1
MessaggioInviato: 31/10/2010, 21:30 
Avatar utente
Utente

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

Karma
0


Non connesso
Introduzione
Scrivo questa guida per tutti quelli che vorrebbero iniziare a scriptare e non sanno da dove farlo, ed anche per ripetermi le cose piu banali che ho molto trascurato nello studio, ma che i prof chiedono lo stesso, in vista di alcuni esami universitari..
Come mai vengo a fare lezioni di Java su un forum riguardante Pawno? Quali sono le differenze e le analogie?
Il linguaggio di Pawno è C++.
Le similitudini tra Java e C++ sono molte, Java la si puo definire come un sottoinsieme di C++ oppure il contrario non so XD quando farò C++ all'università vi saprò dire di piu
Prima di cominciare, sappiate che Java, cosi come anche C++, è un linguaggio "Case-Sensitive", cioè fa differenza tra maiuscole e minuscole, se una Variabile la chiamate con il nome "pippo", non sarà la stessa di "Pippo".
Per iniziare a capire il linguaggio Java, dovete sapere che è composto da comandi, istruzioni e nient'altro... Ad esempio, se abbiamo due numeri A e B e dobbiamo vedere qual'è il maggiore, indicheremo, attraverso lo script, di eseguire queste istruzioni:

-Leggi A
-Leggi B
-Se A < B allora stampami sullo schermo: "A è minore di B"
-Se A = B allora stampami sullo schermo: "A e B sono uguali"
-Se A > B allora stampami sullo schermo: "B è minore di A"

Alla fine di questa lezione saprete gia fare script come questo.


Variabili
Java è basato principalmente sulle variabili. Ogni variabile è di un tipo specifico.
Queste sono tutte, o quasi, le variabili, cioè i tipi di incognite che java utilizza.
Per i numeri sono:
-Il byte
-short, codificato a 2 Byte
-int, codificato a 4 Byte
-long, codificato ad 8 Byte.
Ma cos'è sta codifica?
Praticamente la RAM (Random Access Memory), non vede i numeri come li vediamo noi, ma come una serie di 0 oppure 1, che, disposti in un certo ordine rappresentano un numero.
Il byte è composto da 8 bit, cioè i numeri messi in fila sono in totale 8.
Ad esempio il numero 00000010 rappresenta il numero 2.
Il numero 00001010 rappresenta il numero 10.
Oppure il numero 00011000 rappresenta il numero 24 se ho fatto bene i conti..
Di solito la prima cifra indica il segno
Come vedete, piu sono i byte, piu è possibile rappresentare numeri grandi.
Infatti:
byte rappresenta i numeri da -128 a 127
short rappresenta i numeri da -32'768 a 32'767
int rappresenta i numeri da -2'147'483'648 a 2'147'483'647
long rappresenta i numeri da -9'223'372'036'854'775'808 a 9'223'372'036'854'775'807
Di solito viene quasi sempre usato int.
E per rappresentare numeri con la virgola??
Esiste il double che rappresenta i numeri con la prima cifra decimale e il Float, che rappresenta i numeri fino alla sesta cifra decimale, non mi chiedete la codifica perchè non me la ricordo XD poi piu tardi vado a cercarla
Inoltre esistono anche tipi di variabili per rappresentare lettere dell'alfabeto e verità, analizziamole:
-char
Il char è il carattere, è codificato a 2 byte con l'Unicode.
Sostanzialmente quello che abbiamo visto prima, con la differenza che oltre ai numeri 1 e 0, possono starci anche lettere dell'alfabeto, minuscole o maiuscole.
-String
String è un tipo di variabile molto utilizzato in JavaScript piu che in Java, è un oggetto in sè, cioè è l'unione di char e byte, in poche parole rappresenta sia numeri che lettere. Importante: Non si possono fare operazioni aritmetiche con le stringhe! Esse sono oggetti, vedetele un po' come delle foto
-boolean
La variabile di tipo booleano è la piu facile da capire, codificata ad un bit, puo variare da "true" che significa vero, a "false" che significa falso.


Operazioni Di Base
Con le variabili numeriche noi possiamo fare tutte le operazioni aritmetiche a nostra conoscenza: l'addizione(+), la sottrazione(-), la moltiplicazoine(*), la divisione(/). I caratteri tra parentesi rappresentano il tasto che bisogna mettere per eseguire quella determinata operazione. Ad esempio se io voglio sapere un numero C che è la somma di due numeri A e B, le istruzioni che devo dare al computer sono:
-Leggi A
-Leggi B
-Fai la somma ed il risultato assegnalo a C.
Diciamo che A è 4 e B è 3.
Nello script questo si traduce con:
int A = 4;
int B = 3;
int C = A+B;

Analizziamo per bene riga per riga per capire che significa:
Riga 1 (int A = 4;):
int, come detto prima, rappresenta il tipo di variabile.
A è il nome dato a questa variabile int. Se io avessi scritto solamente "int A;", la variabile sarebbe stata creata ma non inizializzata, dopo vi farò vedere nella memoria del computer cos'accade e cosa cambia.
= 4; significa che la variabile assume il valore 4; il punto e virgola invece rappresenta il BREAK, cioè un freno, una sosta, o piu precisamente rappresenta la fine di questa operazione, se non mettessi il ; avrei dei problemi.
Riga 2(int B = 3;):
Il discorso è lo stesso identico della riga precedente.
Riga 3(int C = A+B;):
noi qui creiamo una variabile int chiamandola C inizializzandola con il valore A+B.
Dato che A e B sono entrambi variabili int, questa operazione e possibile, se invece non lo fossero, si potrebbero avere dei problemi..
Ma se io alla fine di questo codice scrivessi:
int D;
C = D;

Quali diventano i valori di C e D?
D non è stata inizializzata, cioè non è stato assegnato alcun valore a questa variabile di tipo int, quindi assume il valore di Default, cioè 0; Per i boolean il valore di Default è false e per i char è 'null'.
e Cosa significa C = D;
Chi assume il valore di chi?
Semplicemente C assume il valore di D. Questo tipo di operazione si chiama "Aliasing" ed è sempre la variabile di sinistra che assume il valore della variabile di destra. Quindi C in questo caso diventa 0.


La memoria: Stack - Heap
Pigliamo in esame questo codice:
int A = 4;
int B = 4;
int C = A+B;
int D = C;
A = 0;
C = 4;

Cosa accade nella memoria del computer?
La memoria è divisa in due tipi:
-Lo Stack che la si puo immaginare come una colonna di piatti in fila ed ordinati, ognuno di un suo diverso colore a seconda del tipo di variabile utilizzata
-L'Heap invece sono delle celle disposte senza un ordine preciso.
Esaminiamo riga per riga il nostro codice e vediamo cosa succede:
int A = 4;
Stack --------------------- Heap
int |A| ------------------------> 4
Nello stack viene creata una cella che "guarda il valore 4 in una cella dell'heap
int B = 4;
Stack --------------------- Heap
int |A| ------------------------> 4
int |B| ------------------------> 4
Nell'heap viene create una seconda cella, sempre con il valore 4, al quale fa riferimento la variabile B
int C = A+B;
Stack --------------------- Heap
int |A| ------------------------> 4 <----|
int |B| ------------------------> 4 <----|___
int |C| ----------------------------------|4+4|
Nell'heap viene creata una nuova cella che va a prendere i valori nell'heap di A e B e ne fa la somma.. quindi la cella di C nello stack guarda una cella nell'heap con il velore 8
int D = C;
Stack --------------------- Heap
int |A| ------------------------> 4
int |B| ------------------------> 4
int |C| ----------------------------------|8| <------|
int |D| ---------------------------------------------|
Con l'aliasing, nello stack D guarderà la stessa cella di C nell'heap. Importante: NON guarda la stessa cella di C nello stack
A= 0;
Stack --------------------- Heap
int |A| ---------------------------------> 0
int |B| ------------------------> 4
int |C| ----------------------------------|8| <------|
int |D| ---------------------------------------------|
Nell'heap sarà distrutt la cella alla quale faceva riferimento A, e sarà creata una nuova cella con il valore 0
C= 4;
Stack --------------------- Heap
int |A| ---------------------------------> 0
int |B| ------------------------> 4
int |C| --------------------------->|4| . |8|<-------|
int |D| ---------------------------------------------|
Nell'heap sarà creata una nuova cella con il valore 4 alla quale farà riferimento C, la cella precedente NON verrà distrutta perchè è ancora associata ad un'altra variabile (mi scuso per il punto tra 4 e 8, ma non mi vedeva gli spazi).


Operatori Booleani
Gli operatori booleani sono quelli che rappresentano una condizione che deve verificarsi affinchè accada qualcosa.
I principali condizionatori usati sono
-if che rappresenta una condizione, che se è verificata, compie delle istruzioni
-else che viene usato alla chiusura delle operazioni dell'if, e rappresenta il contrario
-while che rappresenta un ciclo di if, cioè fino a quando la condizione del while è verificata compie sempre le istruzioni
Esistono anche altre istruzioni come il for, che è quasi lo stesso del while, ma ve ne parlerò nei prossimi topic.
Gli operatori booleani invece sono:
== che significa uguale;
< che significa minore;
<= che significa minore o uguale;
> che significa maggiore;
>= che significa maggiore o uguale;
!= che significa diverso;
|| che significa oppure;
&& che significa e contemporaneamente;
Vediamo qualche esempio:
Se io ho due numeri A e B e voglio sapere la differenza C, potrei fare come ho fatto prima, per complicarmi la vita, e farvi vedere come si usa il while utilizzeremo il codice sotto riportato, in piu voglio che, se la differenza è 0, cioè se i numeri sono uguali, mi stampi sullo schermo "I numeri sono uguali". Diciamo che A e B sono rispettivamente 7 e 4 Il codice è questo:
int A = 7;
int B = 4;
int C = 0;
while(A > B)
{
A --;
C ++;
}
if(C == 0)
{
System.out.println("I due numeri sono uguali");
}
else
{
System.out.println("La differenza è " + C);
}

Perchè quelle parentesi graffe e perchè quei -- e ++?
le parentesi graffe indicano le operazioni da fare nel caso in cui ciò che è espresso tra parentesi del while o dell'if fosse vero
A --; è lo stesso che dire A = A-1;
come anche C ++; significa C = C+1;
Il System.out.println è il codice che permette di stampare sullo schermo qualcosa, ad esempio se C è uguale a 0 avremo stampato sullo schermo che i due numeri sono uguali, altrimenti avremo stampato che la differenza è (piu il valore di C), in questo caso: La differenza è 3.
Proviamo adesso a realizzare uno script che mi faccia il valore assoluto di un numero. Come ben sapete, il valore assoluto di un numero si fa moltiplicando il numero stesso per -1 se è negativo, altrimenti lasciandolo cosi com'è:
int A = 7;
if(A < 0)
A *= -1;
System.out.println("A = " +A);

come avete sicuro notato non ci sono parentesi graffe questa volta, il motivo è che tutti gli operatori(for, while, if, else), se non sono presenti le parentesi graffe, eseguono solo la prima operazione che si incontra. E' la stessa cosa che scrivere
int A = 7;
if(A < 0)
{
A *= -1;
}
System.out.println("A = " +A);

A *= -1; cosa significa?
è la stessa cosa che scrivere A = A * -1;
cosi come A /= B; significa A = A/B;
oppure A += B; significa A = A+B;
e anche A -= B; significa A = A-B;

Conclusione
Spero che queste guide, giorno dopo giorno, possano aiutare anche i meno esperti nel capire il linguaggio Java, nel prossimo topic parlerò del ciclo for, record di attivazione, contatori, l'oggetto Math, l'input, l'output e l'oggetto Scanner e si impareranno le basi per realizzare un piccolo programma.
Se volete esercitarvi, con le nozioni apprese in questo post, provate a fare uno script che prenda due numeri A e B e ne faccia il prodotto senza utilizzare l'operazione *(prodotto), detto anche moltiplicazione per addizioni successive, sarà simile a quello fatto nel penultimo esempio.
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 1
MessaggioInviato: 31/10/2010, 21:32 
Avatar utente
Utente

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

Karma
0


Non connesso
bella

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


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

Iscritto il: 28/10/2010
Messaggi: 189
Località: Palermo (PA)
Favourite GTA: San Andreas
Xfire: tlkstanley

Karma
1


Non connesso
very good man

_________________


Top
  
 
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 25 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: