[Java] 1. Variabili e "if-else"

  • Cita
  • Avatar utente
    Livello 26 - Daisy
    Messaggi:4616
    Codice amico Nintendo Switch:SW-7594-0014-1043
    Sesso:Femmina
    4616
    Cos'è una variabile?
    Una variabile è una locazione di memoria, in cui noi possiamo salvare un oggetto di tipo primitivo o più complesso.
    In Java i tipi primitivi sono i numeri, i caratteri alfabetici e i booleani (true e false).
    I numeri sono suddivisi in quattro categorie: gli int, i long, i float e i double. I primi due tipi sono numeri interi, mentre gli ultimi due sono numeri a virgola mobile (cioè possono rappresentare i numeri con valori decimali diversi da zero). Tra il primo e il secondo tipo vi è una differenza di grandezza: gli int sono i numeri rappresentabili con 32 bit, mentre i long quelli con 64 bit. Lo stesso discorso vale per i float (più piccoli) e i double. I più usati sono gli int e i double.
    I caratteri alfabetici sono rappresentati con il char, e ogni variabile può contenere un solo carattere.
    I booleani sono rappresentati con le variabili di tipo boolean, che può assumere il valore di “vero” -true- o “falso” -false-. Sono utili soprattutto nel construtto dell'if-else, che vedremo tra poco.
    Anche se in realtà non è un tipo primitivo, le variabili di tipo stringa -String- si comportano come quelle già citate, per cui le tratteremo come tali.

    Come funzionano le variabili?
    Quando creiamo una variabile, salviamo il contenuto dentro la memoria, e possiamo utilizzare quel dato più volte, per più operazioni.
    La creazione di una variabile comprende due fasi: la dichiarazione, in cui scegliamo il tipo di variabile e il suo nome,

    Codice: Seleziona tutto

    int n;
    e l'assegnazione, dove immettiamo il dato a cui “punta” la variabile.

    Codice: Seleziona tutto

    n = 394;
    Possiamo semplificare il processo, dichiarando e assegnando la variabile allo stesso tempo.

    Codice: Seleziona tutto

    double m = 3.14;
    La prima parola è sempre il tipo di dato, la seconda è il nome della variabile, poi c'è =, e a destra il dato contenuto. A conclusione dell'operazione, va sempre ; .
    Quando assegniamo un valore di tipo char, va messa una virgoletta singola ' prima e dopo del carattere, mentre per le stringhe usiamo le virgolette doppie . Quindi 'a' è di tipo char, “a” è di tipo String; 16 è un numero, '1' è un carattere e ”16” è una stringa.

    Codice: Seleziona tutto

    boolean b = false; char l = 'x'; String f = "Flip delfino curioso";
    Possiamo assegnare ad un variabile la stessa locazione di memoria, e quindi lo stesso contenuto, di un'altra variabile, purchè siano dello stesso tipo: anziché assegnare alla variabile un certo dato, si scrive il nome della variabile già creata.

    Codice: Seleziona tutto

    String s = "Sal pippen"; String p = s;
    Ora stampiamole, concatenandole: dentro alle parentesi tonde del metodo println, anziché mettere il messaggio da visualizzare, mettiamo il nome della prima variabile, poi il simbolo +, e poi il nome dell'altra variabile.

    Codice: Seleziona tutto

    System.out.println(p + s);
    Immagine
    Se invece vogliamo modificare il valore di variabile già assegnata, possiamo farlo, in questo modo:

    Codice: Seleziona tutto

    s = "Storm pollo";
    In questo modo, però, non siamo andati a modificare il contenuto della vecchia cella di memoria, bensì la variabile punta ad una cella di memoria. In questo modo, se ci fosse un'altra variabile che puntava alla stessa locazione di quella che stiamo prendendo in considerazione, non subirà variazioni.

    Codice: Seleziona tutto

    System.out.println(p + " " + s);
    Immagine
    Rispetto all'altra stampa, il codice è lievemente diverso, perchè tra le due variabili ho inserito una piccola stringa, contenente uno spazio.
    Ovviamente non possono esserci due variabili con lo stesso nome.
    Alle variabili possono essere assegnati anche i risultati di un metodo:

    Codice: Seleziona tutto

    double num = Math.random(); System.out.println(num);
    Il metodo Math.random() è un metodo che genera un numero decimale casuale tra 0 e 1, e questo risultato può essere salvato in una variabile; bisogna però far attenzione, perchè il tipo di risultato e quello della variabile devono essere uguali (in questo caso, il double).

    Ci sono limitazioni per nominare le variabili?
    Sì. Le variabili non possono avere come nome parole chiavi di Java (es. public, main, private, synchronized, char, void...), non possono avere un numero come iniziale, e ovviamente non vi possono due variabili diverse con lo stesso nome. Inoltre è buona norma usare solo lettere minuscole.

    Cos'è l'if-else?
    Il costrutto “if-else” è presente nella maggior parte dei linguaggi di programmazione, e struttura il programma affinchè esso esegua un certo comando se avviene una certa condizione.

    Codice: Seleziona tutto

    if(num != 0.20){ System.out.println(f); }else{ System.out.println(s); }
    if: parola chiave che indica l'inizio di una parte di codice condizionato.
    (num != 0.20): condizione per cui il programma esegue il codice racchiuso nell'istruzione if; in questo caso, la variabile num deve essere differente da 0,20.
    {: il ritorno della parentesi graffa! Indica l'inizio del blocco di codice che viene eseguito se la condizione è verificata; la parentesi chiusa indica la fine del blocco di codice.
    System.out.println(f);: la parte di codice condizionata, in questo caso la stampa a schermo della stringa f.
    else: altrimenti. Indica che il blocco di codice racchiuso viene eseguito se non è verificata la condizione dell'istruzione if.

    Codice: Seleziona tutto

    if(num < 0.20){ System.out.println(p); }else if(num == 0.20){ System.out.println(f); }else{ System.out.println(s); }
    Questa è una versione lievemente differente da quella precedente, e viene utilizzata se ci possono essere più di una condizione.
    if(num < 0.20){System.out.println(p);}: se la variabile num assume un valore minore di 0,20, allora viene stampata la stringa p.
    else if(num == 0.20){System.out.println(f);}: l'else if si comporta esattamente come un if, e deve essere messo se ci sono più di due condizioni da verificare. Viene stampata la stringa f se num è uguale a 0,20. In Java l'uguaglianza numerica si scrive con due uguali, per non confonderla con il “=” dell'assegnazione.
    else{System.out.println(s);}: se non sono verificate nessuna delle due condizioni precedenti (in questo caso, se num è maggiore di 0,20), allora viene stampata la stringa s.
    Ecco qua una rapida lista dei comparatori e altre istruzioni usate come condizioni per gli if.

    Codice: Seleziona tutto

    A == b //a è uguale a b a != b //a è diverso da b (il punto esclamativo è il simbolo della negazione) a < b //a è minore di b a <= b //a è minore o uguale a b a >= b //a è maggiore o uguale a b a > b //a è maggiore di b A && B //deve verificarsi sia la condizione A che la condizione B A || B //deve verificarsi la condizione A o la condizione B
    Inoltre, come condizione dell'if possiamo usare il valore di una variabile booleana.
    if(): L'istruzione all'interno del blocco viene eseguita se la variabile è true.
    if(!): L'istruzione all'interno del blocco viene eseguita se la variabile false.

    Codice: Seleziona tutto

    if(!b){ System.out.println(n); }
    Come vedete, possiamo omettere l'istruzione else: in questo caso, se la condizione dell'if non è avvenuta, viene saltato tutto il blocco di codice all'interno e prosegue.

    Cosa sono i commenti?
    Poco prima, nell'elencare i comparatori, accanto ad essi ho scritto dei commenti, cioè delle breve spiegazioni. Sono molto utilizzati, soprattutto nei programmi open source, per rendere più chiaro il codice e migliorare la visibilità delle funzioni; esso non serve alla programmazione, anzi, il compilatore non lo prende nemmeno in considerazione.
    Esistono due tipi di commento: il commento su una riga e quello su più righe.

    Codice: Seleziona tutto

    /*Commento su più righe*/

    Codice: Seleziona tutto

    //Commento su una riga
    Il commento su più righe è molto utile anche nella fase di debug, perchè permette di nascondere parti di programma che non vogliamo far eseguire in quel momento.

    Risultato finale
    Ecco qua tutto il codice scritto in questa lezione:

    Codice: Seleziona tutto

    public class SalMerenda { public static void main(String args[]){ int n; n = 394; double m = 3.14; boolean b = false; char l = 'x'; String f = "Flip delfino curioso"; String s = "Sal pippen"; String p = s; System.out.println(p + s); s = "Storm pollo"; System.out.println(p + " " + s); double num = Math.random(); System.out.println(num); if(num != 0.20){ System.out.println(f); }else{ System.out.println(s); } if(num < 0.20){ System.out.println(p); }else if(num == 0.20){ System.out.println(f); }else{ System.out.println(s); } if(!b){ System.out.println(n); } } }
    Ed ecco il risultato:
    Immagine

    Immagine
    Esercizio
    Scrivere un programma che stampa due stringhe differenti, a seconda se il valore della variabile “numero” sia compreso o meno tra 0,3 e 0,7. Usare Math.random().
    Immagine
    That is not dead which can eternal lie, and with strange aeons, even death may die.
  • Cita
  • Avatar utente
    Livello 22 - Waluigi
    Messaggi:2704
    Sesso:Maschio
    Località:Napoli
    Sito web:https://www.facebook.com/alessandroballabio05
    2704
    non ho capito bene,che dobbiamo fare con esercizio e che programma dovremmo usare ora per questo
    nn ho capito bene
    ImmagineImmagine

    <<Premi Forum
    SPOILER | Mostra
    Immagine
    Immagine
    Immagine
    Immagine
  • Cita
  • Avatar utente
    Livello 20 - Eerie
    Messaggi:1984
    Sesso:Maschio
    1984
    Yoshigold97 ha scritto:non ho capito bene,che dobbiamo fare con esercizio e che programma dovremmo usare ora per questo
    nn ho capito bene
    Un esercizio che stampi a video una delle due stringhe differenti e preimpostate, in base al valore di una variabile estratta a random con la funzione Math.random(), per farlo io consiglio Notepad++, non sarà veloce il debug visto che bisogna compilare ogni volta, ma per programmi del genere è perfetto.
  • Cita
  • Avatar utente
    Livello 22 - Waluigi
    Messaggi:2704
    Sesso:Maschio
    Località:Napoli
    Sito web:https://www.facebook.com/alessandroballabio05
    2704
    voglio imparare ma non ci riesco
    perchè sono cosi stupido.
    sono proprio un nabbo che non capisce nemmeno un if
    non imparerò mai e nn realizzerò i miei sogni -WALL -WALL T_T T_T
    ImmagineImmagine

    <<Premi Forum
    SPOILER | Mostra
    Immagine
    Immagine
    Immagine
    Immagine
  • Cita

  • Messaggi:
    0,3 e 0,7 sono inclusi o no? DERPTEA
  • Cita
  • Avatar utente
    Livello 26 - Daisy
    Messaggi:4616
    Codice amico Nintendo Switch:SW-7594-0014-1043
    Sesso:Femmina
    4616
    Come preferisci :3
    Immagine
    That is not dead which can eternal lie, and with strange aeons, even death may die.
  • Cita

  • Messaggi:
    Immagine

    Ho incluso 0,3 e 0,7 nell'intervallo sìsì

    Ecco il .java:

    http://puu.sh/vs0I
  • Cita
  • Avatar utente
    Livello 22 - Waluigi
    Messaggi:2704
    Sesso:Maschio
    Località:Napoli
    Sito web:https://www.facebook.com/alessandroballabio05
    2704
    io ci ho rinunciato
    ImmagineImmagine

    <<Premi Forum
    SPOILER | Mostra
    Immagine
    Immagine
    Immagine
    Immagine
    Un messaggio dallo staff
    Il forum è archiviato, adesso usiamo Discord per parlare quotidianamente.
    Se cerchi altro, trovi tutte le news sulla serie di Super Mario su Mariocastle.it, l'enciclopedia su Mariowiki.it e i nostri profili social qui. Grazie per aver postato nel forum nel corso degli anni, non ce ne dimenticheremo mai!
    Un messaggio dal cuore

     

    POST SIMILI
    [Java] Introduzione
    TOPIC15 maggio 2012, 21:13
    [Java] 2. Cicli e array
    TOPIC25 giugno 2012, 10:30
    cron