Corso sul linguaggio Java Modulo JAVA1 1.1 Programmazione base 1 Prerequisiti Saper scrivere algoritmi elementari Tecniche elementari di sviluppo di una applicazione Modalità a riga di comando Utilizzo di un IDE 2 1
Introduzione In questa lezione si vedranno alcuni concetti fondamentali per la programmazione in Java per poter scrivere e provare i primi programmi. A questo scopo ci occorre sapere: Come è strutturata un applicazione Java? Come funziona un applicazione Java? Vediamo una prima serie di risposte a queste domande. 3 Informazioni generali Per poter programmare occorre conoscere l algoritmo risolutivo del problema la struttura del programma gli elementi del programma N.B. Nel seguito, quando si mostra la sintassi del linguaggio Java, i caratteri in grassetto indicano parole chiave del linguaggio, mentre i caratteri in corsivo indicano elementi che dovranno essere specificati dal programmatore 4 2
Cos è Java Una delle caratteristiche che rende Java un linguaggio di programmazione unico è che le applicazioni con esso prodotte possono funzionare indifferentemente su piattaforme (hardware e software) diverse. L'obiettivo dei progettisti di Java era, infatti, quello di creare una "lingua" universale, utilizzabile da ogni computer che fosse dotato a sua volta di un traduttore da Java al suo linguaggio specifico.. 5 Cos è Java In sintesi, Java è un linguaggio di programmazione di estrema potenza sviluppato dalla Sun Microsystems e rilasciato nel 1995 che presenta le seguenti caratteristiche (saranno viste in seguito): orientato agli oggetti indipendente dalla piattaforma (interpiattaforma) che consente la riusabilità realizzato per le reti di calcolatori supportato dai principali browser Web 6 3
Linguaggi multipiattaforma Alcuni linguaggi come il C++ si dicono multipiattaforma, perché, i programmi scritti con esso e funzionanti su certi processori (piattaforma hardware) o in certi sistemi operativi (piattaforma software), possono essere riconvertiti, con opportune modifiche, su piattaforme diverse (operazione di porting) 7 Linguaggi interpiattaforma Java rientra nei linguaggi interpiattaforma poiché un programma scritto in una piattaforma può essere eseguito su una piattaforma diversa senza doverlo sottoporre a modifiche. I programmi scritti in Java sono quindi riusabili perché scritti in un linguaggio comune detto bytecode. 8 4
Programmare in Java In Java possiamo realizzare due tipi di programmi: applicazioni: programmi a sé stanti che possono essere in modalità console, tipicha delle finestre DOS (in questo anno) in modalità grafica, con interfacce a finestre (nel prossimo anno) applet: programmi immersi in una pagina Web, che vengono eseguiti direttamente dal browser Web (si vedranno in seguito) 9 La macchina virtuale Per l esecuzione di una applicazione Java abbiamo visto che sono necessari due passi: compilazione: il programma sorgente viene tradotto in bytecode (simile al codice macchina, ma indipendente dal processore). Questo codice non è eseguibile da una macchina reale, ma necessita di un ulteriore passaggio; interpretazione: il bytecode viene eseguito da una interprete Java, chiamato macchina virtuale Java o JVM (Java Virtual Machine) che altro non è che un programma in grado di comprendere il bytecode. Contiene infatti delle librerie specifiche per il processore Pentium, oppure, per chi invece ha un Macintosh, specifiche per il processore G3 e così via. Quindi, per eseguire codice Java (scritto su una macchina qualunque) sul nostro calcolatore deve essere installata la JVM 10 5
La macchina virtuale Dallo schema si comprende che la portabilità è ottenuta proprio grazie alla traduzione in bytecode. La JVM su ciascuna piattaforma provvederà all effettiva interpretazione ed esecuzione del programma 11 Compilazione ed esecuzione Quando impostiamo il comando C:\>javac nomefile.java il compilatore Java genera il bytecode del programma (nomefile.class) che, successivamente, con il comando C:\>java nomefile viene interpretato dalla JVM e produce l esecuzione dell applicazione 12 6
Struttura di un applicazione Java class nomeclasse { public static void main (String args[ ] ) { blocco istruzioni } //fine main } // fine classe Le parole in corsivo indicano un elemento generico che sarà specificato successivamente nella fase di codifica del programma nomeclasse è il nome che il programmatore assegna all applicazione e deve coincidere con il nome del file in cui viene salvata. Di solito nomeclasse si scrive con l iniziale maiuscola (es. CalcoloPrezzo, StampaIndirizzi, Rubrica) blocco istruzioni contiene la parte operativa dell applicazione 13 Blocco istruzioni class nomeclasse { public static void main (String args[ ] ) { blocco istruzioni } //fine main } // fine classe La sequenza di istruzioni o blocco istruzioni costituisce il programma un istruzione è una frase scritta nel linguaggio di programmazione che indica alla macchina un singolo compito da svolgere. Questo compito sarà eseguito quando tutta la sequenza di istruzioni sarà conosciuta dalla macchina. eseguire un programma significa svolgere tutte le sue istruzioni in sequenza, partendo dalla prima. 14 7
Commenti /* PROGRAMMA: Scopo del programma AUTORE: Mario Rossi DATA: 15/02/2004 COMPILATORE: Java2 SDK 1.4.2 FILE: nomeclasse.java */ class nomeclasse { public static void main (String args[ ] ) { blocco istruzioni } //fine main } // fine classe un commento viene ignorato durante l esecuzione del programma se il commento occupa più di una riga, inizio e fine commento si indicano rispettivamente con /* e */ se il commento occupa una sola riga, si indica con // I commenti sono frasi scritte dal programmatore per sua utilità Si noti il nome del file identico al nome della classe 15 Output /* Primo programma */ public class Scrittore { public static void main (String[] args) { System.out.print ("Questo e' il corso"); System.out.println (" di Java"); } } Istruzioni di output L istruzione di stampa emette a video la stringa indicata print stampa la stringa indicata e resta sulla stessa riga println stampa la stringa indicata e va a capo ATTIVITA : compilare ed eseguire il programma Scrittore 16 8
Sequenze di escape Si possono ottenere in stampa effetti speciali inserendo nella stringa da stampare le sequenze di escape indicate nella tabella seguente Sequenze di escape \n \t \b \a \r Effetto A capo Tabulazione orizzontale Una battuta indietro Emette il beep Ritorno a capo sulla stessa riga ATTIVITA : sostituire le due istruzioni di stampa con System.out.print ( Questo\te \til\tcorso\tdi\tjava\n ); 17 Argomenti di main() class Semplice { public static void main(string args[ ]) { System.out.println ("Ciao, mi chiamo: "+ args[0] + "\n ed ho " + args[1] + " figli\n"); } } Il simbolo + serve a concatenare stringhe da stampare nella stessa istruzione l utilizzo di args[0], args[1] avviene quando, ad esempio, in esecuzione, si lancia il comando C:\>java Semplice Mario 2 args[0] e args[1] prendono il nome di parametri della linea di comando e servono a trasmettere dati in input al programma Java, quando si è in modalità a linea di comando 18 9
Identificatori I dati su cui un programma opera sono contenuti in: variabili costanti Le variabili e le costanti sono individuate da un nome, detto identificatore, scelto dal programmatore Il dato contenuto in una variabile PUO essere modificato al contrario di quello contenuto in una costante 19 Variabili La dichiarazione di una variabile segue la sintassi: tipo ident; dove tipo indica il tipo della variabile (intero, reale, stringa, ecc..che vedremo in seguito) ident è l identificatore che il programmatore ha assegnato alla variabile Esempi: float altezza; // dichiara altezza di tipo reale int somma; // dichiara la variabile somma di tipo intero int var1, var2; // dichiara due variabili di tipo intero char c; // dichiara una variabile di tipo carattere String nome; // dichiara una variabile di tipo stringa 20 10
Variabili Osservazioni: il linguaggio Java è case-sensitive ossia distingue i caratteri maiuscoli da quelli minuscoli. Quindi le variabili Asse, asse, ASSE, sono considerate diverse. per i nomi delle variabili si possono utilizzare: lettere maiuscole (A..Z) lettere minuscole (a..z) sottolineatura ( _ ) cifre (0..9) E buona abitudine: dare alle variabili nomi significativi scrivere le variabili in caratteri minuscoli. In caso di nomi composti usare l iniziale maiuscola per la seconda parola (es. calcolointeresse, valorearea, ecc) 21 Costanti La dichiarazione di una costante segue la sintassi: final tipo ident = valore; dove tipo indica il tipo della variabile (int, char, float, ecc..) ident è il nome che il programmatore ha assegnato alla costante valore indica il valore costante da assegnare E consuetudine, utilizzare i caratteri maiuscoli e nel caso di nomi composti, usare come separatore il carattere di sottolineatura _ Esempi: final double RAGGIO_ESTERNO = 1.25; final char S = a ; String TITOLO = Lezione 1 ; 22 11
Assegnazione L operatore di assegnazione consente di inserire una espressione in una variabile che sia stata precedentemente dichiarata ident = espressione; ident è il nome della variabile espressione può essere una costante, una variabile o una qualunque espressione da assegnare a variabile Esempi: int X=1; // dichiarazione ed assegnazione di un intero String Nome= Rossi ; // dichiarazione e assegnazione di una stringa int S=x+y; // dichiarazione ed assegnazione di una // espressione intera 23 Esempio class Semplice { public static void main(string args[ ]) Dichiarazione di { int nfigli=2; variabili String nome = "Mario"; System.out.print ("Ciao, mi chiamo Le istruzioni troppo + nome + "\n ed ho + nfigli + " figli\n"); lunghe possono essere interrotte in } corrispondenza degli } spazi 24 12
Esempio class SommaValori { public static void main(string args[ ]) { int val1=3, val2=5, somma; somma = val1 + val2; System.out.println (val1 + " + " + val2 + " = " + somma); }/* fine main */ }/* fine classe */ In questo esempio si dichiarano 3 variabili intere: val1, val2 e somma. val1 e val2 vengono anche inizializzate. Si esegue la somma di val1 e val2 nella variabile somma. Si stampa l espresisone ottenuta. 25 Errori di sintassi Durante la compilazione, il compilatore rileva eventuali errori commessi dal programmatore nella scrittura delle istruzioni (errori sintattici). Esso segnala gli errori e il numero di riga in cui si sono verificati. Il programmatore dovrà procedere alla loro correzione. in caso di assenza di errori sintattici, effettua la traduzione da programma sorgente Java a programma bytecode 26 13
Errori di sintassi Alcuni possibili errori di programmazione uso errato di punteggiatura (ad esempio, omettere i punti e virgola parentesi (ad esempio, dimenticare di chiudere una parentesi graffa lettere maiuscole e minuscole (ad esempio, scrivere Class anziché class, oppure Main anziché main errori di digitazione (ad esempio, scrivere viod anziché void) dimenticare parole spazi erronei (ad esempio nel nome del file o della classe) invertire l ordine delle parole o delle istruzioni 27 Lo sviluppo del software 1. Editing del programma sorgente 2. Compilazione 3. Interpretazione Editor Compilatore Interprete JVM Disk Disk Disk Il programma è creato mediante l editor e salvato su disco Il compilatore crea il programma bytecode e lo salva su disco L interprete JVM legge ed esegue il bytecode RAM 4. Esecuzione CPU 5. Collaudo... 28 14
Argomenti Che cos'è Java Linguaggi multipiattaforma Linguaggi interpiattaforma Programmare in Java La macchina virtuale Compilazione ed esecuzione Struttura di un applicazione Java Blocco istruzioni Commenti Output Sequenze di escape Argomenti di main() Identificatori Variabili Costanti Assegnazione Esempio Errori di sintassi Lo sviluppo del software 29 Altri testi di riferimento M. Bigatti, Il linguaggio Java - ed. HOEPLI P.Gallo, F. Salerno, JAVA la programmazione ad oggetti ed. Minerva Italica L. Cabibbo - Fondamenti di informatica-oggetti e Java - ed. McGraw Hill A.Lorenzi, A.Rizzi Il linguaggio Java ed. ATLAS 30 15