Basi di Java Strutture base di Java Basi
Basi di Java Strutture base di Java
Basi di java ▪ Variabili ▪ Operatori ▪ Condizioni e Cicli ▪ Array
Variabili
Cosa è una variabile ? ▪ Una variabile è una casella di memoria identificata da un nome ▪ Il suo scopo è di contenere un valore di un certo tipo. Serve per memorizzare dati durante l’esecuzione di un programma. ▪ Il nome di una variabile (come il nome di una classe o di un metodo) è un identificatore. Può essere costituito da lettere, numeri e underscore (esempi: num 1, i, risultato, costo_tot, . . . ) Non deve coincidere con una parola chiave del linguaggio (esempi “sbagliati”: class, static, int, …) È bene che sia significativo per il programma (meglio base, altezza e area di X 1, X 2 e X 3)
Variabili in Java In Java ogni variabile deve essere dichiarata prima del suo uso Nella dichiarazione di una variabile se ne specifica il nome e il tipo (o meglio, il tipo dei valori che pu`o contenere) ATTENZIONE! Ogni variabile deve essere dichiarata UNA SOLA VOLTA (la prima volta che compare nel programma)
Tipi primitivi Tipi Interi int numero. Intero; // 4 bytes – 2, 147, 483, 648 to 2, 147, 483, 647 (just over 2 billion) short numero. Intero. Piccolo; // 2 bytes – 32, 768 to 32, 767 long numero. Intero. Grande; // 8 bytes – 9, 223, 372, 036, 854, 775, 808 to 9, 223, 372, 036, 854, 775, 807 byte numero. Intero. Piccolo; // 1 byte – 128 to 127 Tipi a virgola mobile float virgola. Mobile. Singola. Precisione; // 4 bytes approximately // ± 3. 40282347 E+38 F (6– 7 significant decimal digits) double virgola. Mobile. Doppia. Precisione; // 8 bytes approximately // ± 1. 79769313486231570 E+308 (15 significant digits) char singolo. Carattere; // 'u' boolean mi. Piace. Questo. Post; // true o false
package ict. primoprogetto; public class Area. Triangolo { public static void main(String[] args) { int base, altezza; int area; base = 5; altezza = 10; area = base * altezza / 2; System. out. println(area); } } Assegnamento Si può memorizzare un valore in una variabile tramite l’operazione di assegnamento Il valore da assegnare a una variabile può essere un letterale o il risultato della valutazione di un’espressione Dall’ esempio si può notare che le variabili possono essere usate anche all’interno di espressioni. I valori di base e altezza vengono letti e usati nell’espressione Il risultato dell’espressione viene scritto nella variabile area
Come vediamo la variabile può essere inizializzata contestualmente alla sua dichiarazione. Inizializzazione Dichiarazione+assegamento Si pu`o combinare dichiarazione e assegnamento (dichiarazione con inizializzazione).
Costanti Nella dichiarazione delle variabili che NON DEVONO mai cambiare valore si può utilizzare il modificatore final Costanti Il compilatore si occuperà di controllare che il valore delle costanti non venga mai modificato (riassegnato) dopo essere stato inizializzato. Aggiungere il modificatore final non cambia funzionamento programma. . . ma serve a prevenire errori di programmazione
Operatori
Cosa è un operatore ? In informatica e programmazione, un operatore è un simbolo che specifica quale legge applicare a uno o più operandi, per generare un risultato. ▪ gli operatori unari lavorano su un singolo operando. Esempi di operatori unari sono quelli di incremento e decremento (vedi sezione seguente); ▪ gli operatori binari lavorano su due operandi: ne sono esempi gli operatori aritmetici e quelli di assegnamento; ▪ gli operatori ternari lavorano su tre operandi; uno dei rari esempi è l'operatore condizionale, usato in programmazione.
Principali Operatori Java
Operazioni Aritmetiche L’operazione di divisione / si comporta diversamente a seconda che sia applicato a letterali interi o frazionari ▪ 25/2 = 12 (divisione intera) ▪ 25%2 = 1 (resto della divisione intera) ▪ 25. 0/2. 0 = 12. 5 (divisione reale) 25. 0%2. 0 = 1. 0 (resto della divisione intera) Una operazione tra un letterale intero e un frazionario viene eseguita come tra due frazionari 25/2. 0 = 12. 5 ATTENZIONE AGLI ERRORI 1. 5 + (25/2) = 13. 5 (attenzione all’ordine di esecuzione delle operazioni) ERRORE 1. 5+(25. 0/2. 0) = 14. 0
Operatori relazionali JAVA package ict. primoprogetto; public class Bisestile { public static void main(String[] args) { int anno = 1900; boolean èBisestile; // divisible per 4 ma non per 100 èBisestile = (anno % 4 == 0) && (anno % 100 != 0); //O è divisibile per 400 èBisestile = èBisestile || (anno % 400 == 0); System. out. println("E' bisestile ? "+èBisestile); } }
Condizioni e Cicli
Sequenza Esecuzione in sequenza delle operazioni sulle variabili inizializzate
Alternativa • Inizializzazione: assegnazione dei valori iniziali alle variabili caratteristiche del ciclo (viene eseguita una sola volta); • Corpo: esecuzione delle istruzioni fondamentali del ciclo che devono essere eseguite in modo ripetitivo; • Modifica: modifica dei valori delle variabili che controllano l'esecuzione del ciclo (eseguito ad ogni iterazione); • Controllo: determina, in base al valore delle variabili che controllano l'esecuzione del ciclo se il ciclo deve essere ripetuto o meno
Iterazione o Ripetizione Esprime la ripetizione di una sequenza di istruzioni. Nel caso piu` generale (ripetizione enumerativa),
Iterazione • Inizializzazione: assegnazione dei valori iniziali alle variabili caratteristiche del ciclo (viene eseguita una sola volta); • Corpo: esecuzione delle istruzioni fondamentali del ciclo che devono essere eseguite in modo ripetitivo; • Modifica: modifica dei valori delle variabili che controllano l'esecuzione del ciclo (eseguito ad ogni iterazione); • Controllo: determina, in base al valore delle variabili che controllano l'esecuzione del ciclo se il ciclo deve essere ripetuto o meno.
Istruzioni condizionali Un’istruzione condizionale if-else ha questa forma: if (. . . condizione. . . ). . . comando. . . else. . . comando. . . dove: La condizione è detta anche guardia dell’if If…. . else…. ▪ La guardia può essere vera (true) o falsa (false) In un programma spesso c’e’ bisogno di scegliere tra operazioni diverse ▪ I due comandi alternativi sono detti anche rami Il ramo else è opzionale (vedremo) Per questo esiste l’istruzione condizionale if-else
Condizioni in Java public class Lancia { public static void main(String[] args) { if (Math. random() < 0. 5) System. out. println(“Testa"); else. Math. random() < 0. 5) System. out. println(“Croce"); }
Cicli ▪ Nota per i programmatori C++ ▪ I costrutti di controllo del flusso offerti da Java sono praticamente uguali a quelli del C++: per voi dovrebbe quindi essere molto naturale usarli. Solo con Java 5 è stato introdotto un nuovo costrutto per ciclare, il foreach, molto elegante e potente. ( lo vedremo dopo aver introdotto gli array).
class While. Demo { public static void main(String[] args){ int count = 1; while (count < 11) { System. out. println("Count is: " + count); count++; } } } While Il codice di cui sopra stampa il valore di count: il loop while viene eseguito 10 volte, dopodichè la condizione diventa false e il flusso continua in modo lineare.
class Do. While. Demo { public static void main(String[] args){ int count = 1; do { System. out. println("Count is: " + count); count++; } while (count <= 11); } } Do-While L’unica differenza tra il while e il do-while è che il secondo valuta l’espressione alla fine del loop, anziché all’inizio: questo implica che gli statement inclusi nel blocco do sono eseguiti almeno una volta.
// vengono stampati i numeri da 1 a 10 for (int i = 1; i <= 10; i++) System. out. println(i); // conto alla rovescia da 10 a 1 for (int i = 10; i > 0; i--) System. out. println("Conto alla rovescia. . . " + i); System. out. println("Decollo!"); For: for (initialization; termination; increment or decrement) { statement(s) } L’espressione di inizializzazione è eseguita una volta sola, quando il loop inizia. Quando l’espressione di terminazione vale false il loop termina. L’espressione di incremento è invocata ad ogni iterazione del loop e può incrementare o decrementare un valore.
Array
Array Un array è una struttura dati che memorizza una collezione di valori dello stesso tipo. Ogni elemento singolo viene acceduto tramite un indice intero. Vediamo come dichiarare e usare un array con un esempio di codice:
Supponiamo di voler scrivere un programma che chiede all’utente di inserire 10 numeri, e poi li stampa nell’ordine in cui sono stati inseriti Dovremmo usare 10 variabili di tipo intero per collezionare i valori inseriti. SCOMODO, IMPRATICABILE QUANDO LE VARIABILI SONO MIGLIAIA I linguaggi di programmazione ci forniscono il costrutto degli ARRAY Array Un array `e: una sequenza di variabili di tipo omogeneo (tutti dello stesso tipo) distinguibili l’uno dall’altro (indirizzabili) in base alla loro posizione all’intero della sequenza (indici interi)
int [] elementi = new int [5]; Dichiarazione di un array // crea un array di 5 elementi inizializzati a 10 , 5, 21 , -12 e 74 int [] numeri = { 10 , 5 , 21 , -12 , 74 }; Tipo dell’array Simbolo [ ] Utilizziamo l’operatore new e chiamiamo il COSTRUTTORE dell’array passandogli la dimensione tra [ ]
Uso degli array double[] x = { 0. 3, 0. 6, 0. 1 }; double[] y = { 0. 5, 0. 1, 0. 4 }; int N = x. length; double sum = 0. 0; for (int i = 0; i < N; i++) { sum = sum + x[i]*y[i]; }
Attenzione I singoli elementi di un array possono essere acceduti in lettura (in un’espressione) o in scrittura (in un assegnamento) indicandone la posizione (indice) tra parentesi quadrate Ricordarsi che il primo elemento ha indice 0!!! ATTENZIONE: se l’array ha dimensione n l’indice tra le parentesi deve essere compreso tra 0 e n-1 ▪ in caso contrario si incontrerà un errore in fase di esecuzione
- Slides: 32