Fondamenti di informatica T-A Esercitazione 2 : Linguaggio Java, basi e controllo del flusso AA 2012/2013 Tutor : Domenico Di Carlo <[email protected]> 2 Hello World • Si consiglia caldamente di utilizzare dispositivi rimovibile per salvare il proprio lavoro (Pennine USB o simili) • Creiamo un file vuoto e chiamiamolo Esercitazione2.java • Apriamo il file e scriviamoci dentro il seguente codice : public class Esercitazione2 { public static void main(String args[]) { System.out.println(“Ciao Mondo!”); } } • Ricordiamo che la classe che andiamo a creare deve essere chiamata allo stesso modo del file nel quale è contenuta !! Fondamenti di informatica A-K - Domenico Di Carlo 3 Compilazione Hello World • Ora che abbiamo il nostro primo file sorgente Esercitazione2.java, proviamo a compilarlo ! • Per compilare, apriamo il prompt dei comandi come abbiamo visto nella scorsa esercitazione, raggiungiamo il direttorio nel quale è contenuto il file Esercitazione2.java ed utilizziamo il seguente comando : javac Esercitazione2.java • Una volta eseguito questo comando, il compilatore java avrà creato il file Esempio2.class contenente il bytecode della classe Esempio2.java • Per lanciarlo, eseguiamo il seguente comando : java Esercitazione2 • Nel prompt, dovrebbe apparire la stringa : "Ciao mondo!" Fondamenti di informatica A-K - Domenico Di Carlo 4 Variabili ed espressioni • Il linguaggio consente di definire variabili: int a = 10; • Di valutare espressioni: 2*a + 1 • Di effettuare assegnamenti: int b = 2*a +1 • Stampare a video: System.out.println(“testo”) System.out.println(“testo” + variabile) L’operatore “+” permette anche di concatenare stringhe. Fondamenti di informatica A-K - Domenico Di Carlo 5 Tipo primitivi in Java • Java conosce di base alcuni tipi di dato. Questi tipi primitivi sono utilizzabili direttamente, senza nessuna definizione. • Sono ovviamente necessari per definire variabili, espressioni, assegnamenti etc. • Di seguito c'è uno schema riassuntivo Fondamenti di informatica A-K - Domenico Di Carlo 6 Provate voi ! • Ora che siete diventati degli esperti con Java, provate voi ! • Modificate il file precedente in modo da contenere non più la stampa a video di «Ciao Mondo» bensì faccia la somma tra due numeri. • Definite quindi tre variabili di tipo intero. ▫ Le prime due saranno gli addendi ▫ La terza sarà il risultato della somma delle prime due • Stampate a video il risultato ottenuto • Nella prossima slide c'è la soluzione, prova a non sbirciare. Ne va del vostro esame !! Fondamenti di informatica A-K - Domenico Di Carlo 7 Avete provato ? • Ecco la soluzione del semplice esercizio precedente : public class Somma { public static void main(String args[]) { int a = 3; int b = 4; int risultato = a + b; System.out.println("La somma vale: " + risultato); } } Fondamenti di informatica A-K - Domenico Di Carlo 8 Controllo del flusso • Il codice che noi scriviamo in Java non deve essere così limitato e monolitico. • Vengono in nostro aiuti tutti quei costrutti, tutte quelle strutture sintattiche proprie del linguaggio che permettono di realizzare alcuni passaggi base della programmazione: vi sono costrutti per i cicli, per le condizioni, ecc... • Questo permette di modellare il flusso di esecuzione a nostro piacere. Vediamo subito un esempio. Fondamenti di informatica A-K - Domenico Di Carlo 9 Esercizio • Scrivere un semplicissimo programma Java che prenda in input tre numeri interi e li stampi in ordine decrescente. • La logica da seguire è : ▫ Leggo i 3 numeri ▫ Confronto il primo con il secondo tramite un if e determino il maggiore dei due. Nell’else determino ovviamente l’altro caso. ▫ Confronto il terzo numero con il maggiore precedentemente trovato e con il minore precedente. Se il terzo è maggiore del maggiore precedentemente trovato vuol dire che il primo diventa secondo e che il secondo diventa terzo Se il terzo è minore del minore precedentemente trovato vuol dire che il primo ed il secondo rimangono invariati ed il più piccolo tra i tre è proprio il terzo L’unico altro caso possibile è che il terzo sia l’intermedio tra i tre e quindi il secondo deve diventare terzo ed il terzo deve diventare secondo. • Lo so che sembra complicato detto così ma in realtà è una sciocchezza vera e propria, vediamo il codice relativo ! Fondamenti di informatica A-K - Domenico Di Carlo 10 Ordinamento decrescente 1/2 import java.util.Scanner; public class Prova { public static void main(String args[]){ System.out.println("Inserisci 3 numeri"); Scanner tastiera = new Scanner(System.in); int a = tastiera.nextInt(); int b = tastiera.nextInt(); int c = tastiera.nextInt(); int primo, secondo, terzo; if ( a > b ) { primo = secondo } else { primo = secondo } a; = b; b; = a; Fondamenti di informatica A-K - Domenico Di Carlo 11 Ordinamento decrescente 2/2 if ( c > primo ) { terzo = secondo; secondo = primo; primo = c; } else { if ( c < secondo ) terzo = c; else { terzo = secondo; secondo = c; } } System.out.println("I numeri immessi ordinati in ordine decrescente sono : " + primo +", " + secondo + ", " + terzo); } } Fondamenti di informatica A-K - Domenico Di Carlo 12 Ultimo esercizio • Dal tabaccaio un utonto arriva e compra cose a caso per l’ammontare di una certa cifra che chiameremo totale. • L’utonto paga il totale con una banconota a scelta • Il tabaccaio cerca di dare il resto all’utonto utilizzando tagli di banconote più grandi possibile. Quindi, se per esempio l’utonto deve: ▫ pagare 13 euro ed ha una banconote da 50 euro ▫ non deve ricevere 3 pezzi da 10, 1 da 5 e 2 da 1 euro. ▫ Bensì 1 da 20, 1 da 10, 1 da 5 e 1 da 2. • Supponiamo per semplicità che i centesimi non esistano (quindi si usano int e non float) e che la banconota massima che l’utonto ha a disposizione sia un pezzo da 50 euro. Fondamenti di informatica A-K - Domenico Di Carlo 13 Provate voi ! • La soluzione sarà pubblicata nei prossimi giorni sul sito del corso. Intanto voi arrovellatevi il cervello. • Tips & tricks : ▫ Acquisire il totale e la banconota dell’utonto con Scanner ▫ Calcolare il resto da dare come totale – banconota ▫ If ( c’èancorarestodadare ) [dosomething] ▫ Else [dosomethingelse ] Fondamenti di informatica A-K - Domenico Di Carlo