Fondamenti di Informatica 10110 10110 01100 Fondamenti di Informatica - Programma 01100 01011 01011 Un programma è una formulazione testuale di un algoritmo in un particolare linguaggio di programmazione. INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO PROGRAMMA = DATI + CONTROLLO Il “potere espressivo” di un linguaggio è caratterizzato da: IL LINGUAGGIO JAVA quali tipi di dati consente di rappresentare direttamente o tramite definizione dell’utente (numeri, caratteri, valori logici, stringhe, strutture, ecc.); quali istruzioni di controllo mette a disposizione (quali operazioni e in quale ordine di esecuzione). 1 10110 Il linguaggio di programmazione Java 01100 01011 2 Introduzione alla programmazione in Java 10110 01100 01011 Java è un linguaggio di programmazione orientato agli oggetti sviluppato dalla Sun Microsystems, e rilasciato nel 1995 indipendente dalla piattaforma Java è un linguaggio di programmazione orientato agli oggetti Programmi Java API di Java Programmazione in Java 3 10110 Perché JAVA librarie di oggetti e classi predefinite, organizzata in package sintassi e semantica uso di oggetti e classi predefiniti – i package definizione di nuove classi 4 Oggetti software 10110 01100 01011 applicazioni, applet e servlet macchina virtuale Java (JVM) classi applicazioni e il metodo main una o più classi 01100 01011 Caratteristiche principali di Java Java è un linguaggio object oriented basato su: classi, oggetti, metodi. Un oggetto software è una entità software dotata di comportamento e stato • Un linguaggio orientato agli oggetti: i dati sono rappresentati come oggetti e le operazioni come metodi che operano su essi. riferimento comportamento • Pensato per lo sviluppo di applicazioni in rete. Semplice Robusto Architecture neutral (Indipendente dalla piattaforma) Sicuro. stato 5 operazioni messaggi interfaccia di un oggetto proprietà 6 1 Classi 10110 10110 01100 01011 Concetto di Classe in Java 01100 01011 Una classe è il progetto di un oggetto software per progetto si intende una descrizione dettagliata, comprensibile da chi dovrà costruire gli oggetti l’implementazione di un oggetto software consiste nella definizione di una classe Una classe in Java definisce un insieme di oggetti con le stesse caratteristiche. Ad esempio: Classe Le classi per gli oggetti software sono scritte dai programmatori in un linguaggio di programmazione orientato agli oggetti la classe libro : insieme degli oggetti libro. la classe matrice: l’insieme degli oggetti matrice. la classe moneta : l’insieme degli oggetti moneta. Il concetto di classe è una estensione del concetto di tipo dei linguaggi imperativi. 7 Oggetti Java 10110 8 10110 01100 Struttura di un programma Java 01100 01011 01011 Esempio: oggetto SEMAFORO Funzioni (Metodi) - Accendi - Spegni - Diventa rosso -… Dati: - Colori - Peso - Tecnologia - ... Un programma Java consiste in un insieme di definizioni di classi. In genere ogni classe è definita in un file separato (compilabile separatamente dagli altri file). Tuttavia tutto il programma può risiedere in un unico file. Almeno una delle classi che appartengono all’applicazione deve esportare un metodo main. Il programma viene eseguito chiamando l’interprete/compilatore con un parametro che specifica la classe che contiene il metodo main. 9 10110 Primo esempio di programma Java 10 10110 01100 Primo esempio di programma Java 01100 01011 01011 Semplicissimo programma che stampa la stringa Ciao. PrimoProgramma public class PrimoProgramma public class PrimoProgramma { public static void main(String args[]) { System.out.println("Ciao"); } } Il primo rigo del programma definisce una classe di nome La parola chiave public indica che la classe può essere utilizzata dalle altre classi. La parola chiave class indica la definizione del nome (PrimoProgramma) e del contenuto della classe. Il nome della classe deve corrispondere al nome del file che la contiene. In questo caso: PrimoProgramma.java PrimoProgramma è il nome della classe (attenti alle maiuscole; Java e’ case-sensitive!) 11 12 2 10110 Il metodo main 10110 01100 Il metodo main 01100 01011 La semplice classe PrimoProgramma definisce un metodo essenziale per poter eseguire il programma : il metodo main. 01011 Un metodo definisce le operazioni da eseguire come una sequenza di istruzioni che eseguono uno specifico compito o calcolano un particolare risultato. Senza metodi non avremmo operazioni ! Il metodo main deve essere utilizzabile da tutti e quindi deve essere dichiarato public. La parola chiave static indica che il metodo non accede e non modifica i metodi della classe. Le parole chiave void e args[] le analizzeremo più avanti. Le parentesi {} indicano l’inizio e la fine di una classe, di un metodo o di un blocco di operazioni. Le operazioni terminano con il ; 13 10110 Operazioni e invocazione di un metodo 14 10110 01100 Invocazione di un metodo 01100 01011 01011 Il metodo main contiene una singola operazione System.out.println("Ciao"); oggetto.metodo(parametri); per visualizzare sullo schermo la parola Ciao. System indica una classe predefinita per operare sulle risorse del sistema che contiene oggetti e metodi. L’esecuzione di un metodo si richiede nel modo seguente: out è un oggetto che indica lo standard output (lo schermo). println è un metodo della classe System per scrivere sullo standard output e andare a capo (print non va a capo). che significa esegui le operazioni definite dal metodo sull’oggetto usando i parametri indicati. I parametri possono essere assenti, ma le parentesi vanno inserite comunque. Se ci sono più parametri si separano con una virgola. Nel programma si vuole stampare una stringa e quindi la si indica tra apici: “Ciao”, per differenziarla da un identificatore o una parola chiave. 15 10110 Compilazione ed esecuzione 16 10110 01100 Dati e variabili 01100 01011 Per eseguire questo programma che sta nel file PrimoProgramma.java usando il compilatore JDK: COMPILAZIONE: 01011 Nel programma che abbiamo discusso non sono state usate locazioni di memoria per conservare dei dati. Quando questo è necessario occorre definire delle variabili. C:> javac PrimoProgramma.java ESECUZIONE: C:> java PrimoProgramma Attenti agli errori di sintassi e di semantica !! 17 Una variabile è un’astrazione della cella di memoria. Formalmente, una variabile è un simbolo associato a un indirizzo fisico che denota un valore. 18 3 10110 Dati e variabili 10110 01100 Dichiarazione di una variabile 01100 01011 Una variabile è un contenitore che può conservare un valore. Essa viene realizzata tramite una o più celle di memoria (variabile semplice o strutturata). Ad esempio nel caso: x Æ 4. 01011 1328 La dichiarazione di una variabile introduce una nuova variabile, identificata da un simbolo (nome), e da un tipo che definisce le caratteristiche e le operazioni che si possono effettuare sulla variabile. ESEMPI l’indirizzo di x è 1328 e il suo valore è attualmente 4. Attenzione: il valore può cambiare nel corso dell’esecuzione, l’indirizzo è fissato (e non cambia durante l’esecuzione). Il programmatore non ha bisogno di conoscere dove la variabile sia memorizzata (il suo indirizzo). int a, b, sum; double num, cifra; char ch; ATTENZIONE: definendo la variabile, si dichiara il suo tipo e contemporaneamente si alloca il relativo spazio in memoria. 19 10110 Inizializzazione di una variabile 20 10110 01100 Operazione di assegnamento (=) 01100 01011 Opzionalmente, nella dichiarazione è possibile specificare un valore iniziale per una nuova variabile : 01011 L’assegnamento è una istruzione che calcola il valore di una espressione e memorizza il valore (lo assegna) in una variabile variabile = espressione ESEMPIO int a, b = 8, sum = 0; float pi = 3.14; ESEMPI: La variabile verrà creata con il suo valore iniziale (che ovviamente potrà variare). i i x z = = = = 1; j + 1 ; x - y ; (2*x)-5; 21 10110 Operazione di assegnamento (=) 22 10110 01100 Costanti 01100 01011 Il nuovo valore della variabile è quello denotato dall’espressione posta a destra dell’assegnamento. Quindi, se ad esempio il valore di k era 2: 01011 k = 10; j = k + 1; cambia in 10 il valore di k cambia in 11 il valore di j Questo nuovo valore può essere usato in altre espressioni. Una costante rappresenta un dato che non può cambiare di valore nel corso dell’esecuzione di un programma. La dichiarazione di una costante associa ad un identificatore (nome) un valore noto a priori. In Java le costanti i dichiarano con la parola chiave final final double pi = 3.14159; final int massimo = 10000; Il valore della costante non potrà più essere modificato nel programma, ma verrà utilizzato nelle espressioni. Ad esempio se j è una variabile intera: j = massimo - 1; 23 24 4 Uso di variabili - Area di un Rettangolo 10110 Scrittore sullo schermo 10110 01100 01100 01011 Programma Java che calcola l’area di un rettangolo. 01011 public class AreaRettangolo { public static void main(String args[]) { int base, altezza, area; base = 8; altezza = 5; area = base * altezza; System.out.println("Area = " + area); } } Si vuole scrivere una applicazione Java che visualizza sullo schermo le seguenti frasi ciao a tutti questo testo introduce i fondamenti dell'informatica 25 System.out 10110 L’applicazione ScrittoreSulloSchermo 10110 01100 01011 26 01100 L’applicazione ha bisogno di visualizzare delle frasi sullo schermo 01011 System.out println(String frase) /* Applicazione che visualizza una frase sullo schermo. */ class ScrittoreSulloSchermo { public static void main(String[] args) { System.out.println("ciao a tutti"); System.out.println("questo testo introduce"); System.out.println("i fondamenti dell'informatica"); } } System.out è un oggetto definito dalle API di Java che modella lo schermo del calcolatore 27 Esercizio 10110 Calcolo di una radice quadrata 10110 01100 01100 01011 28 01011 Commentare la definizione della seguente classe /* Applicazione che visualizza sullo schermo la poesia Mattino di Giuseppe Ungaretti. */ class Mattino { public static void main(String[] args) { System.out.println("M'illumino"); System.out.println("d'immenso"); } } Si vuole scrivere una applicazione Java che calcola e visualizza la radice quadrata di 144 l’esecuzione di questo programma dovrà visualizzare sullo schermo Math double sqrt(double n) System.out println(double x) Math, come System.out, è un oggetto delle API di Java 29 30 5 10110 L’applicazione RadiceQuadrata 01100 01011 /* Applicazione che calcola e visualizza sullo schermo la radice quadrata di 144. */ class RadiceQuadrata { public static void main(String[] args) { double radice; radice = Math.sqrt(144); System.out.println(radice); } } 31 6