Zoom Icon

Java Lezione 2

From UIC Archive

Java Lezione 2

Contents


Java Lezione 2
Author: Ken1986
Email:
Website:
Date: 06/10/2008 (dd/mm/yyyy)
Level: Working brain required
Language: Italian Flag Italian.gif
Comments:



Variabili booleane

Una variabile booleana in Java esprime una condizione che può essere vera o falsa (true or false). Ad esempio se vogliamo dichiarare una variabile booleana verifica, il codice da scrivere è il seguente:

boolean verifica;

Come detto prima, i possibili valori che la variabile verifica può assumere sono: true o false. Una condizione può essere espressa tramite gli operatori di confronto che sono:

  • < (minore);
  • > (maggiore);
  • <= (minore uguale);
  • >= (maggiore uguale);
  • == (uguale)
  •  != (diverso)

Ad esempio:

boolean positivo = x => 0;
boolean ricco = reddito > 100000;
boolean povero = reddito == 0;


Operatori booleani

In java useremo i seguenti operatori per combinare le condizioni della verifica.


&& (AND)
|| (OR)
!  (NOT)

Una condizione booleana può essere composta da and, or e not di variabili e/o condizioni booleane.

benestante = !ricco && !povero;


Tavole della verità

NOT

|--------------|
|  A   | Not A |
|--------------|
|  0   |   1   |
|      |       |
|  1   |   0   |
|      |       |
|--------------|

AND

|------------------------|
|  A   |   B   | A and B |
|------------------------|
|  0   |   0   |    0    |
|      |       |         | 
|  0   |   1   |    0    |
|      |       |         |
|  1   |   0   |    0    |
|      |       |         |
|  1   |   1   |    1    |
|------------------------|

OR

|------------------------|
|  A   |   B   | A or B  |
|------------------------|
|  0   |   0   |    0    |
|      |       |         | 
|  0   |   1   |    1    |
|      |       |         |
|  1   |   0   |    1    |
|      |       |         |
|  1   |   1   |    1    |
|------------------------|


If-Else

L'istruzione if-else serve per valutare il valore di un'espressione logica ed eseguire le opportune operazioni. L'enunciato if è composto da due parti, la verifica e il corpo o istruzione.

if (condizione) {
        istruzione 
}
else if(condizione) {
        istruzione 
}
else {
        istruzione 
}

Formalmente significherebbe: se la condizione è vera esegui questo codice, altrimenti esegui questo. Il ramo else può mancare quando vi è solo una condizione da verificare, ed in questo caso si parla di istruzione if.
Possiamo evitare di inserire le parentesi {}, quando vi è una sola istruzione da eseguire. Esempio:

public class esempio{
        public static void main (String [] args){
                int numero = Console.readInt ("Inserisci un numero intero: ");
                if (numero >= 0)
                        System.out.println("Il numero e' positivo");
                else
                        System.out.println("Il numero e' negativo");
        }
}


If-Else annidati

Ovviamente un'istruzione if può contenere altre istruzioni if. Bisogna stare attenti all'uso delle parentesi quando vi sono if annidati. Se non si usano parentesi, un eventuale ramo else fa riferimento all'if più interno:
Esempio:

if (x > 0) {
        if (x > 100)
                System.out.println("Il numero e' maggiore di 100");
        }
else
        System.out.println("Il numero e' zero oppure e' negativo");


Switch

Una serie di if/else/else ecc. per confrontare un singolo valore intero rispetto a diversi valori alternativi di costanti, si può implementare mediante un enunciato switch.
Esempio:

public class esempio1{
        public static void main (String [] args){
                int numero = Console.readInt ("Inserisci un numero intero: ");
                String convertito="";
                switch (numero){
                        case 1:
                                convertito = "uno"; break;
                        case 2:
                                convertito = "due"; break;
                        case 3:
                                convertito = "tre"; break;
                        //...
                        default:
                                convertito = ""; break;
                }
                System.out.println(convertito);
        }
}

Si tratta di una forma abbreviata del seguente codice:

public class esempio2{
        public static void main (String [] args){
                int numero = Console.readInt ("Inserisci un numero intero: ");
                String convertito="";
                if (numero == 1) convertito = "uno";
                else if (numero == 2) convertito = "due";
                else if (numero == 3) convertito = "tre";
                //...
                else convertito = "";
                System.out.println(convertito);
        }
}

L'enunciato switch si può impiegare in circostanze limitate. Gli elementi della verifica devono essere costanti, oltre a essere dei numeri interi; non si può usare switch per diramazioni con numeri in virgola mobile o con valori di stringhe, e tutte le diramazioni confrontano lo stesso valore, in questo caso numero.


While

La sintassi dell'istruzione while è:

while (condizione)
        eunciato

La condizione deve essere di tipo boolean.
Per capire come funziona il while (ed in generale i cicli), non c'è niente di meglio che fare un esempio:

//Questo piccolo esempio non fa altro che visualizzare i numeri naturali n, il cui quadrato è minore o uguale a k
class es1{
        public static void main (String args[]){
                int k = Console.readInt("Inserisci un numero intero: ");
                int n = 0;
                while(n*n <= k){
                        System.out.print(n + " ");
                        n = n +1;
                }
        System.out.println();
        }
}


For

La sintassi dell'istruzione for è:

for(inizializzazione; espressione; aggiornamento)
        enunciato

La semantica dell'istruzione for è la seguente: esegue ripetutamente e in sequenza i seguenti passi:

  1. valuta la condizione del for
  2. se la condizione è vera esegue il corpo del for ed esegue l'aggiornamento del for
  3. se la condizione è false si ha la terminazione del ciclo.

Per capire anche questa istruzione, ricorreremo ad un esempio:

//calcola il fattoriale di k
class es2{
        public static void main (String args[]){
                int k = Console.readInt("Inserisci un numero intero: ");
                int fattoriale = 1;
                for (int i=1; i<= k; i++){
                        fattoriale *= i;
                }
                System.out.println("Il fattoriale di k e':" + fattoriale);
        }
}

Non è necessario che l'incremento (i++) o il decremento (i--) procedano di un'unità alla volta...


Do-While

La sintassi dell'istruzione do-while è:

do {
   enunciato
}
while (condizione);

Il ciclo do-while viene eseguito finchè la condizione è vera, siccome la condizione viene verificata dopo l'esecuzione dell'enunciato, il ciclo viene eseguito almeno una volta. La semantica dell'istruzione do-while è la seguente:esegue ripetutamente e in sequenza i seguenti passi:

  1. esegue il corpo del do-while
  2. valuta la condizione del do-while
  3. se la condizione è vera, continua ad eseguire questa sequenza di passi
  4. se la condizione è falsa si ha la terminazione del ciclo.

Anche per questo tipo di istruzione faremo un esempio per capire meglio:

//provatelo e capirete da soli
class es3prova{
        public static void main (String args[]){
        double positivo;
                do{
                        positivo = Console.readDouble("Inserisci un numero >0");
                }while (positivo>0); // Se viene inserito un numero negativo verrà ripetuto finchè non ne verrà  inserito uno  positivo
        }
}


Note Finali

Alla prox lezione, ciauzzzzz.......by Ken1986


Disclaimer

I documenti qui pubblicati sono da considerarsi pubblici e liberamente distribuibili, a patto che se ne citi la fonte di provenienza. Tutti i documenti presenti su queste pagine sono stati scritti esclusivamente a scopo di ricerca, nessuna di queste analisi è stata fatta per fini commerciali, o dietro alcun tipo di compenso. I documenti pubblicati presentano delle analisi puramente teoriche della struttura di un programma, in nessun caso il software è stato realmente disassemblato o modificato; ogni corrispondenza presente tra i documenti pubblicati e le istruzioni del software oggetto dell'analisi, è da ritenersi puramente casuale. Tutti i documenti vengono inviati in forma anonima ed automaticamente pubblicati, i diritti di tali opere appartengono esclusivamente al firmatario del documento (se presente), in nessun caso il gestore di questo sito, o del server su cui risiede, può essere ritenuto responsabile dei contenuti qui presenti, oltretutto il gestore del sito non è in grado di risalire all'identità del mittente dei documenti. Tutti i documenti ed i file di questo sito non presentano alcun tipo di garanzia, pertanto ne è sconsigliata a tutti la lettura o l'esecuzione, lo staff non si assume alcuna responsabilità per quanto riguarda l'uso improprio di tali documenti e/o file, è doveroso aggiungere che ogni riferimento a fatti cose o persone è da considerarsi PURAMENTE casuale. Tutti coloro che potrebbero ritenersi moralmente offesi dai contenuti di queste pagine, sono tenuti ad uscire immediatamente da questo sito.

Vogliamo inoltre ricordare che il Reverse Engineering è uno strumento tecnologico di grande potenza ed importanza, senza di esso non sarebbe possibile creare antivirus, scoprire funzioni malevole e non dichiarate all'interno di un programma di pubblico utilizzo. Non sarebbe possibile scoprire, in assenza di un sistema sicuro per il controllo dell'integrità, se il "tal" programma è realmente quello che l'utente ha scelto di installare ed eseguire, né sarebbe possibile continuare lo sviluppo di quei programmi (o l'utilizzo di quelle periferiche) ritenuti obsoleti e non più supportati dalle fonti ufficiali.