Primi programmi in Java. Lezione IV



Похожие документы
Fondamenti di programmazione in Java. Lezione III

Programmare in Java. Olga Scotti

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

Appunti di Informatica 1

Scrivere un programma in Java

Struttura di un programma Java

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

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Eclipse. Avviare un progetto e compilare un semplice programma

2 - Introduzione al linguaggio Java

Java: Compilatore e Interprete

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

Getting Started. Walter Cazzola. Dipartimento di Informatica e Comunicazione Università degli Studi di Milano

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

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

Fondamenti di Informatica T1 Guida all uso di JDK e Eclipse

Le command line di Java

Strumenti per la programmazione

Introduzione alla programmazione Java. Dott. Ing. M. Banci, PhD

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Programmazione ad oggetti

Esercitazione 4 JDBC

Tutorial per l installazione del J2SE 6 e configurazione del sistema operativo

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Panoramica: che cosa è necessario

Introduzione alla programmazione in C

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

Codifica: dal diagramma a blocchi al linguaggio C++

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Traduzione ed esecuzione di programmi. Dispensa 08

Ambienti di Sviluppo

Programmazione. Programmare ad oggetti. Programmi e calcolatori. Focalizzazione del corso. Alcuni linguaggi famosi. Programmi e linguaggi

La prima applicazione Java. Creazione di oggetti - 1. La prima applicazione Java: schema di esecuzione. Gianpaolo Cugola - Sistemi Informativi in Rete

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it

Il linguaggio Java. Concetti base. I packages

Sistema operativo: Gestione della memoria

Introduzione alla programmazione in Java

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Introduzione all uso di Eclipse

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Concetto di Funzione e Procedura METODI in Java

Le variabili. Olga Scotti

Prova di Laboratorio di Programmazione

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

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

LINGUAGGI DI PROGRAMMAZIONE

Java? Sì, grazie. Scopo del corso

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

Programmazione in Java Parte I: Fondamenti

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso Eclipse. Prerequisiti. 1 Introduzione

Sviluppata da: Lo Russo - Porcelli Pag. 1 di 6 6FRSR utilizzare il DBMS Postgresql per imparare il linguaggio SQL.

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Compilatore risorse display grafico LCD serie IEC-line

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

Tale attività non è descritta in questa dispensa

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

Programmazione Orientata agli Oggetti in Linguaggio Java

Il web server Apache Lezione n. 3. Introduzione

Approccio stratificato

Object Oriented Programming

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Guida all utilizzo del compilatore lcc-win32 per creare una applicazione console

Introduzione a Dev-C++

Sistemi operativi. Esempi di sistemi operativi

Manuale Utente Albo Pretorio GA

costruttori e distruttori

NOZIONI BASE PER ESERCITAZIONI

Installazione del Software. per lo Sviluppo di Applicazioni Java

WG-TRANSLATE Manuale Utente WG TRANSLATE. Pagina 1 di 15

Istruzioni per l installazione del software per gli esami ICoNExam (Aggiornate al 15/01/2014)

Programmazione in Java e gestione della grafica (I modulo) Lezione 1: Presentazione corso

Funzioni in C. Violetta Lonati

Introduzione ad Eclipse

Manuale Utente Amministrazione Trasparente GA

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Introduzione al Linguaggio C

Sistemi Operativi MECCANISMI E POLITICHE DI PROTEZIONE. D. Talia - UNICAL. Sistemi Operativi 13.1

MECCANISMI E POLITICHE DI PROTEZIONE 13.1

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

MANUALE UTENTE Fiscali Free

FOXWave Gestione gare ARDF IZ1FAL Secco Marco Sezione ARI BIELLA

Il linguaggio di programmazione JAVA

Programmazione II. Lezione 4. Daniele Sgandurra 30/09/2011.

Licenza per sito Manuale dell amministratore

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

Registratori di Cassa

Mon Ami 3000 Centri di costo Contabilità analitica per centri di costo/ricavo e sub-attività

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

Tecniche di progettazione e sviluppo di applicazioni mobile

Introduzione alla teoria dei database relazionali. Come progettare un database

Gestione della memoria centrale

Corso Base. Liceo Norberto Rosa Bussoleno Prof. Angelo GIORGIO

MODULO PER LA GESTIONE DEI RESI

Транскрипт:

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

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

Compilazione ed Esecuzione Text Editor HelloWorld.java Compilazione javac HelloWorld.java Java Bytecode Edit Step Esecuzione L utente edita il programma Java Codice Sorgente Errori? HelloWorld.class java HelloWorld Messaggi gi di Errore Start Output Hello World! III.4

Virtual machine controllo sintattico compilatore sorgente Class HelloWorld { public static void main { System.out.println( ( Hello ); errori? si fine no controllo semantico no altre istruzioni? si prossima istruzione errori? si bytecode 0110010101101010011 0101011001010110101 0100101010110101010 101011001010110 no 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 e delle classi sono case-sensitive. III.6

Compilare i Programmi Java La fase di compilazione traduce il sorgente del programma Java in bytecode. Il bytecode è indipendente dalla piattaforma Comando JDK: javac HelloWorld.java Quando la compilazione termina con successo crea i file contenenti, ognuno, il i bytecode di i una delle classi definite nel codice compilato, ad es. HelloWorld.class III.7

Eseguire un Programma Java Il file contente il bytecode della classe deve essere caricato in memoria ed interpretato dalla Java Virtual Machine (JVM) Comando JDK: java HelloWorld Nota per poter essere eseguita una classe deve definire un metodo di nome main(). III.8

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

Quindi Sono nomi validi per i programmi Programma, MioProgramma, UnProgrammaBellissimo NON sono nomi validi per i programmi 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

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

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 III.16

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 // rappresenta un commento e viene ignorato (fino al termine della riga) III.17

Commenti La presenza di commenti nel codice non ne modifica il comportamento ma ne aumenta notevolmente la leggibilità È quindi utile inserire commenti per chiarire i punti fondamentali di un programma III.18

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

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

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

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.24

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.25

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.26

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.27

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.28

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.29

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.30

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.31

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 nome.estensione data/ora di creazione III.32

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.33

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.34

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.35

Eseguiamolo! [~/HelloWorld]malchiod%javac HelloWorldModificato.java [~/HelloWorld]malchiod% java HelloWorldModificato Hello, world! [~/HelloWorld]malchiod% III.36

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.37

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.38

Eseguiamolo! [~/AreaRettangolo]malchiod%javac AreaRettangolo.java [~/AreaRettangolo]malchiod% java AreaRettangolo L area e 12 [~/AreaRettangolo]malchiod% III.39

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.40

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.41

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.42

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.43

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.44

Eseguiamolo! [~/AreaRettangolo]malchiod%javac AreaRettangoloInterattivo.java [~/AreaRettangolo]malchiod% java AreaRettangoloInterattivo 5 6 L'area e' 30 [~/AreaRettangolo]malchiod% III.45

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 È la controparte di ConsoleOutputManager.println() III.46

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) È opportuno segnalare questo fatto all utente tramite degli output esplicativi III.47

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.48

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.49

Celsius vs. Fahrenheit Fahrenheit -40 0 40 80 120-40 -20 0 20 40 Celsius fahrenheit =celsius * 9/5 + 32 III.50

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.51

ConvertiTemperature.java video.print( La corrispondente temperatura in scala fahrenheit e di "); video.print(fahrenheit); video.println( gradi. ); III.52

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.53

Esercizi Riscrivete HelloWorld modificando il messaggio che viene stampato aggiungendo altri messaggi sostituendo println con print e vedendo come viene modificata l esecuzione del programma (attenti agli spazi!) III.54

Esercizi Cosa succede se durante l esecuzione di AreaRettangoloInterattivo l utente immette dei valori che non sono numerici? E se immette dei valori non interi? Scrivete un programma che accetta in input l area e la base di un rettangolo e ne calcola l altezza III.55

Esercizi Che succede se nel programma precedente immettiamo 0 come valore per la base? Provate a inserire deliberatamente degli errori in alcuni dei programmi che abbiamo scritto, e verificate come cambia il comportamento del compilatore III.56