Costrutti di base

SPIEGAZIONE In breve DEI COSTRUTTI DECISIONALI E ITERATIVI

I Costrutti

I costrutti sono sono istruzioni che modificano il flusso di esecuzione del codice. Con la programmazione imperativa il flusso, l’esecuzione del codice avviene a cascata. Grazie ai costrutti invece siamo in grado di deviare questo flusso.

I Costrutti di selezione o decisionali (if e switch)

costrutto-condizioni
Il costrutto IF serve a creare una scelta, una condizione
 
int x = 20;
int y = 18;
if (x > y) {
  System.out.println("x is greater than y");
}

Si usa else per attivare un secondo blocco di codice se la prima condizione è falsa.

int time = 20;
if (time < 18) {
  System.out.println("Good day.");
} else {
  System.out.println("Good evening.");
}
// Outputs "Good evening."

Quando il controllo avviene su una sola variabile, un singolo caso, è meglio usare lo switch (costrutto interruttore) come un interruttore infatti controlla se la variabile è accesa o spenta o non funzionante. Ricordarsi di mettere break alla fine di ogni case. E si utilizza default alla fine dove si nel caso in cui tutte le casistiche precedenti siano false.

int day = 4;
switch (day) {
  case 1:
    System.out.println("Monday");
    break;
  case 2:
    System.out.println("Tuesday");
    break;
  case 3:
    System.out.println("Wednesday");
    break;
  case 4:
    System.out.println("Thursday");
    break;
  case 5:
    System.out.println("Friday");
    break;
  case 6:
    System.out.println("Saturday");
    break;
  case 7:
    System.out.println("Sunday");
    break;
}
// Outputs "Thursday" (day 4)

I Costrutti iterativi o di ripetizione (cicli for e while)

costrutto-ripetizioni
I costrutti possono creare cicli

I cicli servono a ripetere un’azione tot volte.

Utilizziamo i costrutti di cicli definiti quando sappiamo esattamente il numero di ripetizioni che dobbiamo fare e cicli indefiniti quando non lo conosciamo.

Un ciclo definito è il for

for (statement 1; statement 2; statement 3) {
  // code block to be executed
}

The example below will print the numbers 0 to 4:
for (int i = 0; i < 5; i++) {
  System.out.println(i);
}

fonte esempi: https://www.w3schools.com/java

Un ciclo indefinito è il while e il do while

 

Il ciclo while scorre in ciclo un blocco di codice finché una condizione specificata è vera:

while (condition) {
  // code block to be executed
}

In the example below, the code in the loop will run, over and over again, as long as a variable (i) is less than 5:

int i = 0;
while (i < 5) {
  System.out.println(i);
  i++;
}

È semplice vedere con un esempio che il ciclo for ed while sono intercambiabili:

int i=0;
while(i < 10) {
	// ...
	i++;
}

e

for(int i=0; i<10; i++) {
	// ...
}

 

I tipi di dato o datatype

Spiegazione in breve:
Esistono 3 tipologie di tipi di dato:

  1. i Numeri (tipi primitivi)
  2. le Stringhe (tipi di riferimento)
  3. i Booleani (tipi primitivi)
int pippo = 5; //rappresenta un numero intero
double topolino = 5.5; //rappresenta un numero con la virgola
char test = 'c'; // un carattere
boolean a = true or false; // un bit di informazione che può essere vero falso acceso o spento

La stringa:

è un testo. Può essere dichiarato o inizializzato in questo modo:

String nome = new String ("il mio testo");

Spiegazione nello specifico:

I tipi di dato possiamo suddividerli in 2 categorie:

1.Tipi primitivi // Definiti dal linguaggio Java e sono 8
2.Tipi riferimento // Personalizzabili

Gli 8 Tipi primitivi:

byte intero con segno a 8 bit
short intero con segno a 16 bit
int intero con segno a 32 bit
long intero con segno a 64 bit
float virgola mobile a 32bit
double virgola mobile a 64bit
char carattere singolo Unicode 16 bit
boolean true o false

Perché per rappresentare i numeri interi esistono cosi tanti tipi di dato? Perché Java utilizza una diversa quantità di memoria per poter rappresentare le diverse variabili in base al tipo.

Se utilizzo una variabile di tipo byte allora sarà allocata in soli 8 bit  di conseguenza permetterà di rappresentare numero intero che può essere appunto compreso solo in un determinato range.

Maggiore è il numero di bit messo a disposizione per rappresentare il valore di una variabile, maggiore sarà intervallo di numeri che puoi rappresentare usando quella variabili.

Se invece all’interno del programma avrai a che fare con variabili di numeri grandi utilizzerai short o long per numeri enormi. Tendenzialmente si usa int.

Utilizzo dei tipi di dato:

utilizziamo operatori sui tipi primitivi

utilizziamo metodi sui tipi di riferimento es. nomestringa.toUpperCase()

Casting

Il Casting in Java è la conversione di un tipo di dato in un altro differente.  es converto un tipo di dato int in long.

si effettua cosi:

int i = 0;
short a = 150;
i= (int) a;

 

ma può essere fatta anche implicitamente quindi senza parentesi e prende il nome di coercion, però attenzione perché può generare errori di compilazione o troncamento.

infatti se cerchiamo di inserire una variabile destinata a numeri più grandi come long (64bit) dentro int (32bit) avremo un errore.
esempio:

int i = 100;

long b = i;