Primi programmi in Java. Scopo della lezione

Documenti analoghi
Java: Primo Approccio

Primi programmi in Java. Lezione IV

Fondamenti di programmazione in Java. Lezione III

Shell. Laboratorio di Programmazione. Una shell indica all utente la propria disponibilità ad accettare comandi visualizzando un messaggio (prompt)

Le basi del linguaggio Java

OO puro. Primi concetti di Java. Tipi primitivi. Ogni cosa è un oggetto. Java è object-oriented puro Non come il C+ + (OO ibrido) Lorenzo Bettini

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Capitolo 1. Introduzione. Cay S. Horstmann Concetti di informatica e fondamenti di Java

Corso sul linguaggio Java

Istallazione di Java - Uso delle librerie

Introduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Scrivere un programma in Java

Linguaggio C: introduzione

Modulo 2: Strutture fondamentali della programmazione Java

Programmare in Java. Olga Scotti

Introduzione a Java. Riferimenti

INTRODUZIONE ALLA PROGRAMMAZIONE

2 - Introduzione al linguaggio Java

Unità B1 Programmazione base

Struttura di un programma Java

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse

Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso

Programmazione ad oggetti

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Esercitazione n 1. Obiettivi

Capitolo 2. Protocolli e contratti. c 2005 Pearson Education Italia Capitolo 2-1 / 82

Laboratorio di Informatica 4 Novembre 2005

Unità F1. Obiettivi. Il linguaggio C. Il linguaggio C++ Linguaggio C. Pseudolinguaggio. Primi programmi

Il concetto di Package

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Concetti introduttivi

Classi di Java introducono Oggetti e Tipi per il programma

Esercitazioni di Informatica (CIV)

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Concetti base. Java - package 2

Info Architettura, JVM Installazione JDK (Windows, Linux) Hello world!

Corso sul linguaggio Java

Lab 1: Marzo 2013

Parte prima: le basi della programmazione Java

Introduzione Programmazione Java

Prof. Pagani corrado JAVA

Appunti di Informatica 1

Classpath e Esercizi su RMI

Debug di un programma

Le basi del linguaggio Java

La prima applicazione Java con NetBeans IDE. Dott. Ing. M. Banci, PhD

Definizione di metodi in Java

Java Lezione 4. Dott. Ing. M. Banci, PhD

Lettura da tastiera e scrittura su monitor

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

Introduzione al C. Introduzione. Linguaggio ad alto livello. Struttura di un programma C

Facciamo lampeggiare un led

Esonero di Informatica I. Ingegneria Medica

Laboratorio di Programmazione Laurea in Bioinformatica

Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

C O P Y R I G H T ( C ) W W W. F O N D A M E N T I. I N F O

Primi passi col linguaggio C

Un primo programma Java. Introduzione alla programmazione in Java. Programmi e mondo reale. Programmare ad oggetti. I programmi come modelli

Lab 0: 23 Marzo Marco D. Santambrogio Gianluca Durelli - Ver. aggiornata al 19 Marzo 2015

Programmazione. Andrea Passerini Informatica. Programmazione

Roadmap. Questioni di stile. 0. Primi passi con Java 1. Buone abitudini

Introduzione alla programmazione in Java

Le command line di Java

Laboratorio di Matematica e Informatica 1

Linguaggio C Struttura dei programmi

Laboratorio 1. 2) All interno della directory c:\temp\cognome\codici creare il file sorgente hello.c contenente il seguente codice:

FONDAMENTI DI ARCHITETTURE E PROGRAMMAZIONE (EDIZIONE 2) Configurazione Compilazione ed esecuzione Installazione del package prog

Input/Output di numeri

Laboratorio di Algoritmi e Strutture Dati

Indice. Introduzione a tool per lo sviluppo e l'esecuzione di programmi in linguaggio Java. Compilazione ed esecuzione di un programma

Fortran in pillole : prima parte

Introduzione a. Funzioni di Ingresso e Uscita. Compilazione

Lezione 16. Il Software di base

Programmazione. Cognome... Nome... Matricola... Prova scritta del 22 settembre Negli esercizi proposti si utilizzano le seguenti classi:

Java: Compilazione e Traduzione. Fondamenti di Informatica L-B Esercitazione n 3 Introduzione a JAVA. C: Editing, compilazione, esecuzione

Indice. Prefazione. 3 Oggetti e Java 53

Lezione 9 programmazione in Java Classi come contenitori

PROGETTO LAUREE SCIENTIFICHE

Decomposizione per scelta

la traduzione dei programmi ed introduzione a Java

Lab 1 Info B. Marco D. Santambrogio Riccardo Cattaneo Ver. aggiornata al 20 O0obre 2014

Selezione ed Iterazione. Lezione 5

Installazione Java Standard Edition (SDK)

Informatica! Appunti dal laboratorio 1!

Riassunto. I mattoni di base di un programma Java. Oggi. Un programma complicato. Oggi. Perché è complicato? Stefano Mizzaro 1.

Esempio. Le istruzioni corrispondono a quelle di sopra, ma sono scritte in modo simbolico. E indipendente dalla machina

Il compilatore Dev-C++

Esercizi Java. class somma2 { static int somma(int a,int b) {return a+b; }

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

IL PRIMO PROGRAMMA IN C

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Java? Sì, grazie. Scopo del corso

Programmazione Orientata agli Oggetti in Linguaggio Java

HOMEWORKS. in modo che il programma stampi N ripetizioni della stringa HelloWorld (su righe diverse), con N inserito dall utente.

Transcript:

Primi programmi in Java Lezione IV Scopo della lezione Realizzare dei semplici programmi scritti in Java. Esercitarsi nelle operazioni necessarie per passare dalla scrittura di codice Java all esecuzione del programma correlato. Utilizzare le classi di I/O. Familiarizzare con il concetto di variabile. III.2 1

Il processo di sviluppo Passo 1: scrivere il programma Software: un qualsiasi text editor Passo 2: compilare il programma Software: Java Development Kit (JDK) Comando: javac HelloWorld.java Passo 3: eseguire il programma Software: JDK o Java Runtime environment Comando: java HelloWorld III.3 Virtual machine inizio editing compilazione sorgente editor.java compilatore si errori? no 1 2 esecuzione bytecode 1 2.class VM si errori? no fine debug III.4 2

Virtual machine sorgente Class HelloWorld { public static void main { System.out.println( Hello ); controllo sintattico compilatore errori? si fine no controllo semantico bytecode no 01100101011010100 11010101100101011 01010100101010110 10101010101100101 0110 altre istruzioni? prossima istruzione si errori? si esegui istruzione codifica istruzione Java VM III.5 Scrivere un programma java Software: un text editor. Il codice sorgente deve avere come nome il nome della classe implementata e come estensione java. Nota: i nomi dei file sono case-sensitive. III.6 3

Compilare un programma java La fase di compilazione traduce il sorgente java in bytecode (indipendente dalla piattaforma). La compilazione avviene eseguendo il comando javac NomeClasse.java. Se termina con successo, la compilazione genera una serie di file.class contenenti il bytecode delle varie classi definite nel codice sorgente. III.7 Eseguire un programma java Il file contenente il bytecode della classe deve essere caricato in memoria ed interpretato da una java virtual machine (JVM). L esecuzione avviene lanciando il comando java NomeClasse. Nota: per poter essere eseguita in questo modo, una classe deve implementare un metodo main(). III.8 4

Prima di cominciare Nello scrivere i nostri programmi ci atterremo alle seguenti regole Faremo riferimento a una directory principale Tutti i file relativi a un programma risiederanno in una sottodirectory con lo stesso nome di quest ultimo (derogando in caso di modifiche di lieve entità) Il nome di un programma sarà scritto in caratteri minuscoli, a eccezione delle iniziali delle parole III.9 Inoltre Ci sforzeremo di dare ai nostri programmi dei nomi significativi III.10 5

Quindi Sono nomi validi per i programmi Programma, MioProgramma, UnProgrammaBellissimo NON sono nomi validi per i programmi programma, ProGraMMa, PROGRAMMA, Programma1, Programma2, Programma3, III.11 HelloWorld.java /* Questo è il nostro primo programma scritto in java */ class HelloWorld { public static void main(string args[]) { System.out.println("Hello, world!"); // Analizziamolo! III.12 6

Compiliamolo! [~]malchiod% cd HelloWorld [~/HelloWorld]malchiod% ls HelloWorld.java [~/HelloWorld]malchiod% javac HelloWorld.java [~/HelloWorld]malchiod% III.13 Cosa è successo? [~/HelloWorld]malchiod% ls HelloWorld.class HelloWorld.java [~/HelloWorld]malchiod% ls III.14 7

Eseguiamolo! [~/HelloWorld]malchiod% java HelloWorld Hello, world! [~/HelloWorld]malchiod% L unica (apparente) azione eseguita dal programma è quella di stampare il messaggio Hello, world! a video, andando a capo III.15 Analizziamo il programma /* Questo è il nostro primo programma scritto in java */ class HelloWorld { public static void main(string args[]) { System.out.println("Hello, world!"); // Analizziamolo! Il testo racchiuso tra /* e */ rappresenta un commento e viene ignorato: provate a modificarlo e verificate che, ricompilando il programma, l esecuzione non cambia III.16 8

Analizziamo il programma /* Questo è il nostro primo programma scritto in java */ class HelloWorld { public static void main(string args[]) { System.out.println("Hello, world!"); // Analizziamolo! Ciò che segue // viene ignorato fino al termine della riga: provate a ricompilare il programma dopo avere modificato il commento, anche aggiungendo testo alla linea successiva III.17 Commenti La presenza di commenti nel codice non ne modifica il comportamento ma ne aumenta notevolmente la leggibilità E quindi utile inserire commenti per chiarire i punti fondamentali di un programma III.18 9

Commenti Potremmo modificare il programma in /* Questo è il nostro primo programma scritto in java */ class HelloWorld { public static void main(string args[]) { System.out.println("Hello, world!"); // Output del programma // Analizziamolo! e l esecuzione non varierebbe III.19 Analizziamo il programma Commenti a parte, il programma è delimitato dalla parola chiave class seguita dal nome del programma e da una coppia di parentesi graffe class HelloWorld { public static void main(string args[]) { System.out.println("Hello, world!"); III.20 10

Analizziamo il programma In generale le parentesi graffe delimitano blocchi di codice Diversi blocchi di codice seguono una diversa indentazione class HelloWorld { public static void main(string args[]) { System.out.println("Hello, world!"); III.21 Il blocco main() public static void main(string args[]) { System.out.println("Hello, world!"); Rappresenta il blocco di istruzioni che viene eseguito quando si esegue il programma Per ora non ci interesseremo delle parole chiave che precedono e seguono main III.22 11

Output System.out.println("Hello, world!"); Quando viene eseguita l istruzione System.out.println, il messaggio specificato entro i doppi apici viene stampato sullo schermo, seguito da un carattere di a capo Il comando System.out.print ha lo stesso comportamento, ma non va a capo III.23 Aggiungiamo degli errori Provate a modificare ogni parola che compare nel sorgente del programma, e verificate in quali casi è ancora possibile compilare il programma In questi casi, verificate quando è anche possibile eseguire il programma e controllate cosa è variato nell esecuzione III.24 12

HelloWorldPrint.java /* Questo è il nostro secondo programma scritto in java */ class HelloWorldPrint { public static void main(string args[]) { System.out.print("Hello, world!"); [~/HelloWorld]malchiod%javac HelloWorldPrint.java [~/HelloWorld]malchiod%java HelloWorldPrint Hello, world![~/helloworld]malchiod% III.25 Librerie Java mette a disposizione una serie di insiemi di comandi e di oggetti deputati a risolvere particolari compiti Oggetti con funzionalità simili o collegate sono raggruppati in un insieme che viene chiamato package Alcuni package possono far parte di altri package III.26 13

Package Per poter utilizzare un package è generalmente necessario importarlo nel programma import java.util.* include nel programma tutti i comandi del package import java.util.date include nel programma solamente l oggetto Date Alcuni package, come java.lang, non necessitano di essere importati III.27 HelloDate.java /* HelloDate stampa la data corrente */ import java.util.date; public class HelloDate { public static void main(string args[]) { System.out.print("Sono le "); System.out.println(new Date()); III.28 14

Eseguiamolo! [~/HelloDate]malchiod%javac HelloDate.java [~/HelloDate]malchiod% java HelloDate La data corrente e' Mon Oct 13 14:50:16 CEST 2003 [~/HelloDate]malchiod% giorno mese ora fuso orario anno III.29 Come funziona? new Date() istanzia un nuovo oggetto della classe Date e ritorna un riferimento ad esso. System.out.println è programmato per riconoscere i riferimenti a oggetti della classe Date passatigli come argomento e a trattarli in modo opportuno (cioé stampando la data corrente). III.30 15

HelloDateLungo.java /* HelloDateLungo stampa la data corrente */ import java.util.*; public class HelloDateLungo { public static void main(string args[]) { System.out.print("Sono le "); System.out.println(new Date()); III.31 Eseguiamolo! [~/HelloDate]malchiod% javac HelloDateLungo.java [~/HelloDate]malchiod% java HelloDateLungo La data corrente e' Mon Oct 13 14:50:19 CEST 2003 [~/HelloDate]malchiod% III.32 16

Dove sta la differenza? [~/HelloDate]malchiod% ls -lsa total 32 0 drwxr-xr-x 204 Oct 13 14:50. 0 drwxr-xr-x 204 Oct 13 14:47.. 8 -rw-r--r-- 516 Oct 13 14:50 HelloDate.class 8 -rw-r--r-- 185 Oct 13 14:49 HelloDate.java 8 -rw-r--r-- 526 Oct 13 14:50 HelloDateLungo.class 8 -rw-r--r-- 187 Oct 13 14:50 HelloDateLungo.java permessi dimensione data/ora nome.estensione di creazione III.33 Modifichiamo il sorgente Eliminate la linea in cui viene importato il package e provate a ricompilare il programma. Cosa succede? Sulla base di quanto visto in precedenza, determinate una modifica che impedirebbe la compilazione, una che impedirebbe l esecuzione e una che varierebbe l esecuzione e implementatele III.34 17

Un package importante Per gestire l input da tastiera e l output a video utilizzeremo rispettivamente le classi ConsoleInputManager ConsoleOutputManager che fanno parte del package prog.io incluso nel libro di testo. III.35 Attenzione! I contenuti del package prog.io non fanno parte della distribuzione di Java. Per potervi accedere è necessario: copiare i contenuti del package sul proprio computer (dal CD venduto assieme al libro) in una zona opportuna; modificare alcuni settaggi del sistema (tipicamente la variabile di ambiente CLASSPATH). III.36 18

HelloWorldModificato.java /* Impariamo a usare le classi di I/O */ import prog.io.consoleoutputmanager; class HelloWorldModificato { public static void main(string args[]) { ConsoleOutputManager video = new ConsoleOutputManager(); video.println("hello, world!"); III.37 Eseguiamolo! [~/HelloWorld]malchiod%javac HelloWorldModificato.java [~/HelloWorld]malchiod% java HelloWorldModificato Hello, world! [~/HelloWorld]malchiod% III.38 19

Differenze Non vi è alcuna differenza, nell output prodotto, rispetto a HelloWorld. Vi è invece differenza nel modo in cui questo output è stato prodotto: in un caso utilizzando il metodo println della classe System.out, nell altro utilizzando il medesimo metodo ma nella classe ConsoleOutputManager. III.39 AreaRettangolo.java /* AreaRettangolo calcola l area di un rettangolo */ public class AreaRettangolo { public static void main(string args[]) { ConsoleOutputManager video = new ConsoleOutputManager(); int base=3; int altezza=4; video.print("l area e "); video.println(base*altezza); III.40 20

Eseguiamolo! [~/AreaRettangolo]malchiod%javac AreaRettangolo.java [~/AreaRettangolo]malchiod% java AreaRettangolo L area e 12 [~/AreaRettangolo]malchiod% III.41 Alcuni dettagli L argomento del metodo println() contiene Uno spazio come ultimo carattere, per evitare che nell output il numero 12 venga scritto attaccato alla frase che lo precede. Il verbo è viene scritto e, per evitare che il carattere di e accentata possa venire male interpretato nel caso il sistema su cui si eseguirà il programma sia diverso da quello su cui è stato sviluppato. III.42 21

Altri dettagli Nell argomento del metodo print() è specificata una moltiplicazione. Questa verrà valutata prima del metodo print(), in modo che il risultato dell operazione di moltiplicazione diventi l argomento di print(). III.43 Dati e variabili In questo caso il programma deve fare riferimento a dei dati numerici che deve pertanto memorizzare Per potersi riferire a questi dati il programma alloca due aree di memoria a cui assegna nomi univoci (base, altezza) Chiamiamo tale aree variabili, e chiamiamo dati i valori in esso contenuti III.44 22

Modifichiamo il sorgente Modificate i dati inseriti nelle variabili base e altezza, e verificate come cambia l esecuzione del programma Che cosa succede se tentate di inserire in queste variabili dei numeri non interi? Chiedete ai docenti come trattare questo tipo di dati. Quale altro tipo di informazione potete pensare di associare a una variabile? III.45 Interattività Un programma come AreaRettangolo sarebbe più utile se, invece di assegnare valori fissati a base e altezza, permettesse all utente di specificarli a ogni esecuzione. Per fare questo è necessario introdurre dei comandi che permettano di ricevere questo input dalla tastiera. III.46 23

AreaRettangoloInterattivo.java import prog.io.consoleoutputmanager; import prog.io.consoleinputmanager; public class AreaRettangoloInterattivo { public static void main(string args[]) { ConsoleOutputManager video new ConsoleOutputManager(); ConsoleInputManager tastiera = new ConsoleInputManager(); int base=tastiera.readint(); int altezza=tastiera.readint(); video.print("l area e "); video.println(base*altezza); III.47 Eseguiamolo! [~/AreaRettangolo]malchiod%javac AreaRettangoloInterattivo.java [~/AreaRettangolo]malchiod% java AreaRettangoloInterattivo 5 6 L'area e' 30 [~/AreaRettangolo]malchiod% III.48 24

tastiera.readint()? Possiamo pensare a ConsoleInputManager.readInt() come a un comando che attende che l utente immetta un valore numerico fornisce al programma tale valore E la controparte di ConsoleOutputManager.println() III.49 Abbellimenti In questo caso l esecuzione del programma parte senza dare alcuna indicazione del fatto che il programma attende un azione dell utente (l immissione di base e altezza) E opportuno segnalare questo fatto all utente tramite degli output esplicativi Provate a implementare il programma SENZA guardare la soluzione alla slide seguente. III.50 25

AreaRettangoloAbbellito.java public class AreaRettangoloAbbellito { public static void main(string args[]) { ConsoleOutputManager video new ConsoleOutputManager(); ConsoleInputManager tastiera = new ConsoleInputManager(); video.println("inserisci la base"); int base=tastiera.readint(); video.println("inserisci l altezza"); int altezza=tastiera.readint(); video.print("l area e "); video.println(base*altezza); III.51 Eseguiamolo! [~/AreaRettangolo]malchiod%javac AreaRettangoloAbbellito.java [~/AreaRettangolo]malchiod% java AreaRettangoloAbbellito Inserisci la base 4 Inserisci l'altezza 7 L'area e' 28 [~/AreaRettangolo]malchiod% III.52 26

Testiamo l usabilità Come è possibile fare in modo che l esecuzione del programma venga alterata? III.53 Sfida! Scrivete un programma che richiede all utente di immettere il raggio di un cerchio, e calcola e stampa la sua area Attenzione! Per risolvere questo problema è necessario avere capito come trattare i numeri con la virgola. Se vi trovate in difficoltà, chiedete aiuto ai docenti! III.54 27

Celsius vs. Fahrenheit Fahrenheit -40-40 Celsius 0 40 80 120-20 0 20 40 fahrenheit =celsius * 9/5 + 32 Provate a implementare un programma che converte dalla scala celsius alla scala fahrenheit SENZA guardare la soluzione alla slide seguente III.55 ConvertiTemperature.java public class ConvertiTemperature { public static void main(string args[]) { ConsoleOutputManager video = new ConsoleOutputManager(); ConsoleInputManager tastiera = new ConsoleInputManager(); int celsius; int fahrenheit; video.println( Inserisci la temperatura in gradi centigradi"); celsius = tastiera.readint(); fahrenheit = celsius *9/5 +32; III.56 28

ConvertiTemperature.java video.print( La corrispondente temperatura in scala fahrenheit e di "); video.print(fahrenheit); video.println( gradi. ); III.57 Eseguiamolo! [~/ConvertiTemperature] malchiod% javac ConvertiTemperature.java [~/ConvertiTemperature] malchiod% java ConvertiTemperature Inserisci la temperatura in gradi centigradi 0 La corrispondente temperatura in scala farenheit e' di 32 gradi [~/ConvertiTemperature] malchiod% java ConvertiTemperature Inserisci la temperatura in gradi centigradi 37 La corrispondente temperatura in scala farenheit e' di 98 gradi [~/ConvertiTemperature] malchiod% III.58 29

Esercizi Realizzare un programma AltezzaRettangoloInterattivo che legga l'area e la base di un rettangolo e ne stampi l'altezza. Verificare come si comporta il programma quando l'area inserita non è un multiplo esatto della base; quando viene immesso 0 come valore per la base. III.59 Esercizi Scrivere un programma ConvertiDaFahrenheitACelsius che realizzi la conversione dalla scala Fahrenheit alla scala celsius Scrivere un programma ConvertiDaKilometriAMiglia che realizzi la conversione tra kilometri e miglia, tenuto conto del fatto che un miglio equivale a 1.61 kilometri. III.60 30

Esercizi Scrivere un programma CentraNomi che stampi a video i vostri nomi centrandoli in un rettangolo di dimensioni opportune, costruito utilizzando i simboli - e. Ad esempio ------------- unnome unaltronome ------------- Attenzione! Questo programma non deve accettare alcun input da tastiera: i vostri nomi devono essere scritti direttamente nel sorgente JAVA. III.61 31