Programmazione in Java e gestione della grafica (I modulo) Lezione 2: Prime nozioni di Java
Programmi Un programma è un insieme di istruzioni che il computer deve seguire Usiamo programmi in continuazione nella nostra giornata (whatsapp, email, word processors, video games, bancomat, etc.). Seguire le istruzioni si dice running or esecuzione del programma.
Eseguire un Programma A volte è più semplice pensare programma e computer come un unico elemento
Computer e programmazione Ogni computer ha un proprio linguaggio macchina ogni istruzione coincide con un istruzione di macchina e pertanto è un linguaggio binario o anche linguaggio di basso livello
Computer e programmazione Esistono linguaggi di programmazione che consentono di scrivere i programmi in termini di istruzioni vicine alla logica delle tecniche di risoluzione di problemi le istruzioni sono espresse mediante simboli e pertanto tali linguaggi sono anche detti linguaggi simbolici o linguaggi ad alto livello sono linguaggi simbolici anche i linguaggi assemblativi, in cui ad ogni istruzione del linguaggio corrispondono una o più(poche) istruzioni di macchina
Esecuzione dei programmi Il Computer, in particolare il suo hardware, esegue solo programmi in linguaggio macchina Se un programma è in linguaggio macchina può essere quindi direttamente eseguibile tutte le applicazioni sono immediatamente eseguibili proprio per questo motivo
Esecuzione dei programmi Se un programma è in linguaggio simbolico non può essere eseguito immediatamente c è bisogno di un processo di traduzione che viene realizzato tramite opportune applicazioni già disponibili, e che sono quindi evidentemente in linguaggio macchina
Compilazione e interpretazione Esistono due approcci alla traduzione ed esecuzione dei programmi Compilazione un programma scritto in un linguaggio di programmazione di alto livello viene trasformato in un programma in linguaggio macchina e poi eseguito interpretazione ciascuna istruzione del programma scritto in un linguaggio di programmazione di alto livello viene trasformata in istruzioni del linguaggio macchina ed eseguita
Compilazione e interpretazione I traduttori del primo tipo sono chiamati effettivamente compilatori, quelli del secondo tipo sono chiamati interpreti Una analogia con la traduzione tra linguaggi diversi la compilazione è analoga alla traduzione di un libro l interpretazione è analoga alla traduzione simultanea
Compilazione Il computer con un programma compilatore, ricevendo un programma sorgente in linguaggio simbolico esegue la traduzione producendo in uscita il corrispondente programma eseguibile in linguaggio macchina Programma sorgente Compilatore Programma eseguibile
Interpretazione Il calcolatore con un programma interprete, ricevendo un programma sorgente in linguaggio simbolico e i relativi dati in ingresso lo interpreta e lo esegue, istruzione dopo istruzione, producendo direttamente i dati in uscita Dati in ingresso (input) Programma sorgente Interprete Dati in uscita (output)
Confronto tra compilazione e interpretazione I linguaggi compilati prevedono la distribuzione di un file eseguibile (in linguaggio macchina) specifico per ogni piattaforma il file sorgente, che consentirebbe di modificare il programma, rimane di esclusiva pertinenza del programmatore
Confronto tra compilazione e interpretazione I linguaggi interpretati prevedono la distribuzione diretta del file sorgente (che è il medesimo per tutte le piattaforme) su ogni piattaforma deve essere disponibile il programma interprete
Il linguaggio Java Java adotta una strategia mista il file sorgente contenente un programma Java viene prima compilato, generando un file in ByteCode il file in ByteCode è un file in linguaggio macchina per una macchina non esistente, detta macchina virtuale o Java Virtual Machine
Il linguaggio Java per essere eseguito il ByteCode viene interpretato su ogni piattaforma esistono programmi interpreti, che realizzano una Java VirtualMachine, per ogni piattaforma in questo modo il file sorgente non viene distribuito, mentre il file ByteCode distribuito è il medesimo per tutte le piattaforme
Compilazione di programmi Java Il calcolatore con un programma compilatore Java, ricevendo un programma sorgente in linguaggio lo traduce producendo in uscita il corrispondente programma in un linguaggio intermedio ByteCode Programma sorgente in Java Compilatore Java Programma ByteCode
Interpretazione di programmi in ByteCode Il calcolatore con un programma interprete Java VirtualMachine(JVM), ricevendo un programma in ByteCode e i relativi dati in ingresso lo interpreta e lo esegue, istruzione dopo istruzione, producendo direttamente i dati in uscita Dati in ingresso (input) Programma ByteCode Java Virtual Machine Dati in uscita (output)
Compilatori Un compilatore è un programma che traduce un programma da un linguaggio di alto livello ad uno di basso livello che può essere eseguito dal computer. Compilare un programma significa eseguire il programma compilatore dando in input la versione in linguaggio di altolivello detto programma sorgente. I compilatori danno in output programmi in linguaggio macchina o in assembler detti programmi oggetto.
Java Byte-Code Il compilatore Java non traduce il programma java in assembly o linguaggio macchina per un particolare computer. Invece, traduce il programma Java in byte-code. Byte-code è il linguaggio macchina per un ipotetico computer chiamato Java Virtual Machine (JVM).
Compilo, Interpreto, Eseguo Uso il compilatore per tradurre il programma Java in byte-code (commando javac). Uso la Java virtual machine del mio computer per tradurre ogni istruzione in byte-code in linguaggio macchina e eseguo direttamente tali istruzioni (comando java).
Portabilità Dopo aver compilato un programma java in byte-code, tale byte-code può essere utilizzato su qualsiasi computer in cui è istallato un interprete per byte-code senza la necessità di dover ricompilare. Il Byte-code può essere anche inviato via internet e usato dappertutto. Questo rende Java adatto alle applicazioni su Internet.
Compilare ed Eseguire un programma
Un primo assaggio! Vediamo come usare l editor per scrivere un programma Java. Analizziamo riga per riga due semplici programmi Java. Proviamo a compilare e a correggere gli errori di un programma Java.
Compilare un Programma o una Classe Un programma Java consiste di una o più classi che devono essere compilate prima di eseguire il programma. Non occorre compilare le classi che sono fornite da Java (System,Scanner,.). Un package è una libreria di classi già definite import java.util.scanner;
Compilare ed Eseguire Ogni classe deve stare in un file distinto. Il nome del file deve essere lo stesso del nome della classe con suffisso.java Quando compilo un programma Java viene creato un file in linguaggio byte-code che ha lo stesso nome ma il suffisso viene cambiato da.java a.class.
Compilare ed Eseguire Un programma Java può essere composto da numerose classi. La classe da eseguire deve contenere da qualche parte nel file le parole public static void main(string[] args)
Programma "HelloWorld" Primo programma (per tradizione!) http://helloworldcollection.de/
// primo programma per testare il compilatore public class HelloWorld { public static void main( String args[] ) { System.out.println( "Hello World" ); } }
import java.util.scanner; public class PrimoProgramma { public static void main(string[] args) { System.out.println("Ciao!"); System.out.println("Eseguo la somma di due numeri."); System.out.println("Digita entrambi i numeri sulla stessa riga:"); int n1, n2; Scanner tastiera = new Scanner(System.in); n1 = tastiera.nextint(); n2 = tastiera.nextint(); } } System.out.println("Ecco la somma dei due numeri:"); System.out.println(n1 + n2);
Esercizi lab.
Esercizio 1 Compilare/Correggere il file QuantiErrori.java
Esercizio 2 A partire dal file HelloWorld.java creare un programma che disegna sullo schermo Un "quadrato" di Q di lato 6 come il seguente: QQQQQQ QQQQQQ QQQQQQ QQQQQQ QQQQQQ QQQQQQ
Esercizio 3 A partire dal file HelloWorld.java creare un programma che disegna sullo schermo Un triangolo di T di altezza 10 come il seguente T TT TTT TTTT Un triangolo di R di altezza 10 come il seguente R RR RRR RRRR
Esercizio 4 Modificare il file PrimoProgramma.java e creare un programma che: Richiede all'utente 5 numeri Calcola la media aritmetica