Sintassi di Java
Java è molto simile a C++, quindi per il programmatore C++ la seguente lezione sarà in buona parte già nota. Fare attenzione però perché esistono piccole ma importanti differenze.
Tipi di dato e identificatori.
I nomi di variabile sono chiamati identificatori. Un identificatore valido deve cominciare con una maiuscola, minuscola o carattere _, seguito da maiuscole, minuscole, numeri o ancora _. Gli identificatori sono case sensitive. Non sono consentiti identificatori con nomi riservati con parole chiave del linguaggio (es. if, for, ecc.).
E’ una buona prassi usare come prima lettera una minuscola per nomi di variabile e di funzioni, ed usare nomi “parlanti” per le variabili, onde ricordare a cosa servono. L’uso di identificatori molto brevi, come x, y, i, ecc. può essere comunque utile in variabili ad uso circoscritto e con visibilità locale.
I tipi di dato base fondamentali del C++ sono: int, float (virgola mobile), double (virgola mobile doppia parola), long (intero doppia parola), boolean, char. Ne sono presenti anche altri.
Si ricorda che la parola è nel computer la dimensione (in bit o byte) del tipo di dato. Siccome l’architettura è unica (la JVM) la parola è sempre a 32 bit.
In Java ogni variabile va dichiara indicando prima il tipo.
Un tipo speciale e molto importante è String, che identifica una stringa.
String saluto = "Ciao";
System.out.println(saluto);
La stringa può contenenere testo di lunghezza qualsiasi e si comporta come un tipo base, quindi è assegnabile direttamente da un literal o da un’altra variabile.
E’ possibile concatenare stringhe:
salutaMario = saluto + " Mario";
System.out.println(saluto);
Nella prossima lezione vedremo perchè è speciale.
Sintassi
La sintassi di Java prevede le seguenti regole:
– ogni istruzione deve terminare con un ;
int i = 0;
Sono consentiti spazi nelle dichiarazioni di variabile, sono invece obbligatori nelle definizioni di tipo e nell’uso di parole chiave riservate.
– una istruzione può essere sostituita da un blocco:
{
int i=0;
int j=i+2;
}
Regole di visibilità delle variabili:
- le variabili dichiarate in un blocco non sono visibili anche all’esterno del blocco.
- le variabili dichiarate in un blocco di funzione sono visibili nella funzione ma non all’esterno.
- una variabile dichiarata in un blocco con lo stesso nome di una variabile dichiarata esternamente, la va a sostituire (come simbolo) all’interno del blocco.
Espressioni
Una espressione è una struttura codificata di dati e operatori che viene valutata a runtime.
Essa può essere oggetto di assegnazione o parametro di funzione. L’espressione viene sempre valutata prima del suo utilizzo (ovvero stampa o assegnazione).
Espressioni principali di Java:
– literal: valori numerici o stringhe assoluti. es 1, False, “Ciao”.
– espressioni aritmetiche. Es. “5+4”, “90/2”. Possono essere applicati operatori matematici (+,-,/,*,%, ecc.).
– espressioni stringa: Es. “ciao” + ” Mario”. Possono essere applicati operatori come + (concatenazione).
– espressioni logiche booleane. Es. 5 > 3. Possono essere solo True o False. Possono essere applicati operatori booleani (<, <=, >, >=, !=, ==, !== e !==).
– operatori unari. Es. c++ (incrementa di 1 il valore di c)
– null : indica il valore vuoto.
In Java la conversione di tipo implicita è sempre possibile quando si passa da un tipo di dato che contiene più valori (es. da int a float) ma non il contrario, dove bisogna esplicitare il tipo di dato nella conversione.
int c = 3;
float f = c; // -> diventa 3.0
int k = (int)f; // viene presa solo la parte intera di f
Espressioni logiche
Queste espressioni servono per confrontare due o più valori.
Operatore | Significato |
---|---|
== | Uguaglianza |
!= | Diversità |
> | Maggiore |
< | Minore |
>= | Maggiore uguale |
<= | Minore uguale |
Si applicano a valori numerici Hanno come risultato un bool quindi possono avere valore TRUE o FALSE e vengono chiamati anche CONDIZIONI.
Esempio:
a == b
a < 3
k == 4
c <= 6
Operatori booleani
Operatore | Significato |
---|---|
! | Not logico |
&& | And logico |
|| | Or Logico |
Permettono di verificare più condizioni insieme (quindi connettono variabili di tipo bool).
Il risultato è di tipo bool quindi TRUE o FALSE.
Espressioni:
le espressioni sono una qualsiasi combinazione di operatori di confronto e booleani. Esse producono un bool quindi TRUE o FALSE
Esempio:
a == b || c == b : vera se a è uguale a b OPPURE c è uguale a b
z < 4 && z > 1 : vera se z è compreso tra 1 e 4 esclusi
(a == 6 || a == 8) && ( b < c) : vera se a è 6 oppure 8 E INOLTRE se b è inferiore a c.
Occorre fare attenzione alle regole di precedenza:
- Prima vengono le parentesi
- Poi vengono gli operatori di confronto
- Infine gli operatori booleani
- Tra i booleani l’ordine è NOT (!), AND (&&), OR (||)
Stampa a schermo
Per eseguire l’output si usa la funzione System.out.println (o print se non si vuole andare a capo).
System.out.println("Ciao");
System.out.print("Ciao") // in questo caso non va a capo;
Costrutti del linguaggio
Il flusso del programma è gestito tramite costrutti che valutano condizioni ed eseguono cicli.
Nota: le parentesi quadre indicano codice opzionale.
Costrutto | Esempio |
if (condizione) istruzione [else istruzione] | if (x==3) { System.out.println("x è uguale a 3") ;} else {
}; |
for ([inizializzazione]; [condizione]; [iterazione]) istruzione | for (int i=0; i<10; i++) {
} |
while (condizione) istruzione | int i=0; while (i<10) {
}; |
do istruzione while (condizione) | int i=0; do {
} while (i<10); |
switch (espressione): { case valore: istruzione; break; [case valore: istruzione; break; …] [case default: istruzione]} | switch (x): { case 1: { case 3: { |
assegnazione = condizione ? espressione1 (se vero) : espressione2 (se falso) | int a = b > c ? b : c |
Esempi di codice
If
int x = 5;
if (x > 10) {
System.out.println("x è maggiore di 10");
} else if (x > 0) {
System.out.println("x è positivo ma ≤ 10");
} else {
System.out.println("x è zero o negativo");
}
For
for (int i = 0; i < 5; i++) {
System.out.println("Conteggio: " + i);
}
While
int j = 0;
while (j < 3) {
System.out.println("j = " + j);
j++;
}
Do-While
int k = 0;
do {
System.out.println("k = " + k);
k++;
} while (k < 2);
Switch
int giorno = 3;
switch (giorno) {
case 1:
System.out.println("Lunedì");
break;
case 2:
System.out.println("Martedì");
break;
case 3:
System.out.println("Mercoledì");
break;
default:
System.out.println("Altro giorno");
}