Primi programmi in Java Lezione II. 2 Il processo di sviluppo Passo 1: scrivere il programma...

25
Primi programmi in Java Primi programmi in Java Lezione II Lezione II

Transcript of Primi programmi in Java Lezione II. 2 Il processo di sviluppo Passo 1: scrivere il programma...

Page 1: Primi programmi in Java Lezione II. 2 Il processo di sviluppo Passo 1: scrivere il programma –Software: un qualsiasi text editor Passo 2: compilare il.

Primi programmi in JavaPrimi programmi in JavaPrimi programmi in JavaPrimi programmi in Java

Lezione IILezione II

Page 2: Primi programmi in Java Lezione II. 2 Il processo di sviluppo Passo 1: scrivere il programma –Software: un qualsiasi text editor Passo 2: compilare il.

2

Il processo di sviluppo

• Passo 1: scrivere il programma– Software: un qualsiasi text editor

• Passo 2: compilare il programma– Software (Compilatore): Java Development Kit (JDK)– Comando: javac HelloWorld.java

– -> crea il file HelloWorld.class contenente il bytecode della classe

• Passo 3: eseguire il programma– Software (Esecutore): JDK o Java Runtime

environment– Comando: java HelloWorld

– -> esegue il bytecode della classe HelloWorld sulla JVM

Page 3: Primi programmi in Java Lezione II. 2 Il processo di sviluppo Passo 1: scrivere il programma –Software: un qualsiasi text editor Passo 2: compilare il.

3

Un package importante

Per gestire l’input da tastiera e l’output a video utilizzeremo rispettivamente le classi (fornite nelle Librerie JAVA!!):

– Scanner (per l’input)– System.out (per l’output)

ATTENZIONE! Non useremo MAI le classi

ConsoleInputManager eConsoleOutputManager

fanno parte del package prog.io usato SOLO nel corso di teoria per semplificare la

spiegazione.

Page 4: Primi programmi in Java Lezione II. 2 Il processo di sviluppo Passo 1: scrivere il programma –Software: un qualsiasi text editor Passo 2: compilare il.

4

Attenzione!

RIPETIAMO: 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).

Page 5: Primi programmi in Java Lezione II. 2 Il processo di sviluppo Passo 1: scrivere il programma –Software: un qualsiasi text editor Passo 2: compilare il.

5

HelloWorld

/* Impariamo a usare le classi di Output */

class HelloWorld{

public static void main(String args[]) {

System.out.println(‘‘Hello, world!’’);

}

}

Page 6: Primi programmi in Java Lezione II. 2 Il processo di sviluppo Passo 1: scrivere il programma –Software: un qualsiasi text editor Passo 2: compilare il.

6

Salviamo, Compiliamo…• Passo 1: SALVIAMO il tutto in un file dal nome

HelloWorld.java

In generale una classe dal nome NomeClasse (convenzione: lettera iniziale della classe maiuscola!) dovrà essere salvata in un file a se stante con lo stesso nome della classe e estensione “.java”, ovvero un file dal nome:

NomeClasse.java• Passo 2: COMPILIAMO… (con comando da tastiera al

prompt)>>javac HelloWorld.java

Il comando da tastiera ha sintassi:javac + PathClasse.java

javac è il comando mentre PathClasse.java è il path (assoluto o relativo alla “posizione” da cui lanciate il comando) contenente il codice della classe

Page 7: Primi programmi in Java Lezione II. 2 Il processo di sviluppo Passo 1: scrivere il programma –Software: un qualsiasi text editor Passo 2: compilare il.

Se tutto va bene avremo nella stessa directory un file che contiene il bytecode della classe; tale file viene creato dal compilatore se non trova errori in compilazione.

E’ un file con lo stesso nome della classe e estensione “.class”, ovvero un file dal nome:

NomeClasse.java

Esempi di comandi di compilazione:

• Se sono nella stessa directory:

>>javac HelloWorld.java

• Se lancio il comando da una directory padre, la cui directory figlia (“SecondaLezione”) contiene il file HelloWorld.java

>>javac SecondaLezione\HelloWorld.java

• Se voglio usare il path assoluto (indipendentemente da dove io mi trovi )

>>javac c:\...\SecondaLezione\HelloWorld.java

Page 8: Primi programmi in Java Lezione II. 2 Il processo di sviluppo Passo 1: scrivere il programma –Software: un qualsiasi text editor Passo 2: compilare il.

8

Eseguiamo!

• Passo 3: ESEGUIAMO la classe HelloWorld (con comando da tastiera al prompt)

>>java HelloWorld

Il comando da tastiera ha sintassi:java + PathClasse

java è il comando mentre PathClasse è il path (assoluto o relativo alla “posizione” da cui lanciate il comando) contenente il codice della classe

Otterremo il seguente output:>>java HelloWorld (comando d’esecuzione)

Hello, world! (output della classe)>> (prompt/shell in attesa di nuovi comandi...)

Page 9: Primi programmi in Java Lezione II. 2 Il processo di sviluppo Passo 1: scrivere il programma –Software: un qualsiasi text editor Passo 2: compilare il.

9

/* Impariamo a usare le classi di I/O */

import java.util.Scanner;

class HelloWorldEsteso{

}

}

HelloWorldEsteso.java

public static void main(String args[]){ Scanner in = new Scanner(System.in); System.out.println(‘‘Which day is today?’’); String tod=in.nextLine(); System.out.println(‘‘Hello, world!’’); System.out.print(‘‘Today is...’’); System.out.println(tod);

Page 10: Primi programmi in Java Lezione II. 2 Il processo di sviluppo Passo 1: scrivere il programma –Software: un qualsiasi text editor Passo 2: compilare il.

10

Salviamo, Compiliamo ed Eseguiamo!

Ora Salviamo il tutto in un file dal nome HelloWorldEsteso.java

COMPILIAMO… (con comando da tastiera al prompt)>>javac HelloWorldEsteso.java

ESEGUIAMO… (con comando da tastiera al prompt)>>java HelloWorldEsteso

Otterremo il seguente output:

>>java HelloWorldEsteso (eseguiamo..)Which day is today? (output del programma)Monday (input dell’utente)Today is...Monday (output del programma)>> (prompt in attesa di nuovi comandi)

Page 11: Primi programmi in Java Lezione II. 2 Il processo di sviluppo Passo 1: scrivere il programma –Software: un qualsiasi text editor Passo 2: compilare il.

11

AreaRettangolo.java

/* AreaRettangolo calcola l’area di un rettangolo */

public class AreaRettangolo { public static void main(String args[]) {

int base=3; int altezza=4; System.out.print("L’area e’ "); System.out.println(base*altezza); }

}

Page 12: Primi programmi in Java Lezione II. 2 Il processo di sviluppo Passo 1: scrivere il programma –Software: un qualsiasi text editor Passo 2: compilare il.

12

Salviamo, Compiliamo ed Eseguiamo!

>>javac AreaRettangolo.java

>>java AreaRettangolo

L’area e’ 12

>>

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.

Page 13: Primi programmi in Java Lezione II. 2 Il processo di sviluppo Passo 1: scrivere il programma –Software: un qualsiasi text editor Passo 2: compilare il.

13

AreaRettangoloInterattivo.java

import java.util.Scanner; //NON DIMENTICARLO!!

public class AreaRettangoloInterattivo {

public static void main(String args[]) {

Scanner sc = new Scanner(System.in);

int base=sc.nextInt();

int altezza=sc.nextInt();

System.out.print("L’area e’ ");

System.out.println(base*altezza);

}

}

Page 14: Primi programmi in Java Lezione II. 2 Il processo di sviluppo Passo 1: scrivere il programma –Software: un qualsiasi text editor Passo 2: compilare il.

14

Eseguiamolo!

>>javac AreaRettangoloInterattivo.java

>> java AreaRettangoloInterattivo

5

6

L'area e' 30

>>

Page 15: Primi programmi in Java Lezione II. 2 Il processo di sviluppo Passo 1: scrivere il programma –Software: un qualsiasi text editor Passo 2: compilare il.

15

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 VOI a implementare il programma SENZA guardare la soluzione alla slide seguente.

Page 16: Primi programmi in Java Lezione II. 2 Il processo di sviluppo Passo 1: scrivere il programma –Software: un qualsiasi text editor Passo 2: compilare il.

16

AreaRettangoloAbbellito.javaimport java.util.Scanner;

public class AreaRettangoloAbbellito {

public static void main(String args[]) {

Scanner tastiera = new Scanner(System.in);

System.out.println("Inserisci la base");

int base=tastiera.nextInt();

System.out.println("Inserisci l’altezza");

int altezza=tastiera.readInt();//UPSI! errorino…

System.out.print("L’area e’ ");

System.out.println(base*altezza);}

}

Page 17: Primi programmi in Java Lezione II. 2 Il processo di sviluppo Passo 1: scrivere il programma –Software: un qualsiasi text editor Passo 2: compilare il.

17

Eseguiamolo!

>>javac AreaRettangoloAbbellito.java>>java AreaRettangoloAbbellitoInserisci la base4Inserisci l'altezza7L'area e' 28

>>

Page 18: Primi programmi in Java Lezione II. 2 Il processo di sviluppo Passo 1: scrivere il programma –Software: un qualsiasi text editor Passo 2: compilare il.

18

Celsius vs. Fahrenheit

Fahrenheit

Celsius

-40

-40

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.

Page 19: Primi programmi in Java Lezione II. 2 Il processo di sviluppo Passo 1: scrivere il programma –Software: un qualsiasi text editor Passo 2: compilare il.

19

Con

vert

iTem

pera

ture

.java

(nota

te l’in

den

tazi

on

e!!

!!)

import java.util.Scanner();

public class ConvertiTemperature {

public static void main(String args[]) {

}

}

Scanner in = new Scanner();int celsius,fahrenheit; // Stesso tipo! Le

dichiaro insieme!

System.out.print(“Inserisci”); /*Giochiamo con l’output */

System.out.print(“ la ”);System.out.print(“ temperatura in grad”);System.out.println(“i centigradi”);celsius = in.nextInt(); //lettura input utentefahrenheit = celsius *9/5 +32; /*conversione del valore inserito in fahrenheit*/

System.out.print(“La corrispondente temperatura in scala fahrenheit e’ di ”);System.out.print(fahrenheit);System.out.println(“ gradi.”); /*Calcolatelo su calcolatrice e poi eseguite…la conversione e’ esatta?? Perche’*/

Page 20: Primi programmi in Java Lezione II. 2 Il processo di sviluppo Passo 1: scrivere il programma –Software: un qualsiasi text editor Passo 2: compilare il.

20

Eseguiamolo!

>> javac ConvertiTemperature.java>>java ConvertiTemperatureInserisci la temperatura in gradi centigradi0La corrispondente temperatura in scala farenheit e' di 32 gradi.>> java ConvertiTemperatureInserisci la temperatura in gradi centigradi37La corrispondente temperatura in scala farenheit e' di 98 gradi.>>

Page 21: Primi programmi in Java Lezione II. 2 Il processo di sviluppo Passo 1: scrivere il programma –Software: un qualsiasi text editor Passo 2: compilare il.

Esercizio 0-CONSIGLIO: FATELO!Realizzare un programma SwappInt che chieda l’iserimento di due valori interi, li salvi in due variabili x e y e:• Stampi il valore assegnato a x e y• Scambi i valori, ovvero inserisca in x il valore di y

e viceversa• Stampi il nuovo valore di x e y

L’output dovra’ essere del tipo:>>java SwappIntInserisci il valore di x (output programma)7 (input utente)Inserisci il valore di y (output programma)3 (input utente)Valori inseriti: x=7 e y=3 (output programma)Swap dei valori di x e y… (output programma)Valori dopo lo swap: x=3 e y=7 (output programma)

Page 22: Primi programmi in Java Lezione II. 2 Il processo di sviluppo Passo 1: scrivere il programma –Software: un qualsiasi text editor Passo 2: compilare il.

22

Esercizio 1• Realizzare un programma

AltezzaRettangoloInterattivo che legga l'area e la base di un rettangolo, e ne calcoli e 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.

Numeri reali• Scrivete un programma che richiede all’utente di

immettere il raggio di un cerchio, e calcola e stampa la sua area

• Per risolvere questo problema è necessario avere capito come trattare i numeri con la virgola. Se vi trovate in difficoltà, chiedete aiuto ai docenti!

Page 23: Primi programmi in Java Lezione II. 2 Il processo di sviluppo Passo 1: scrivere il programma –Software: un qualsiasi text editor Passo 2: compilare il.

23

Esercizio 2a• 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.

Esercizio 2b

Page 24: Primi programmi in Java Lezione II. 2 Il processo di sviluppo Passo 1: scrivere il programma –Software: un qualsiasi text editor Passo 2: compilare il.

24

• Scrivere un programma CentraNomi che stampi a video il vostro nome e cognome centrandoli in un rettangolo di dimensioni opportune, costruito utilizzando i simboli - e |. Ad esempio

|-----------| | unNome | | unCognome | |-----------|• Attenzione! Questo programma non deve

accettare alcun input da tastiera: i vostri nomi devono essere scritti direttamente nel sorgente JAVA.

Esercizio 3

Page 25: Primi programmi in Java Lezione II. 2 Il processo di sviluppo Passo 1: scrivere il programma –Software: un qualsiasi text editor Passo 2: compilare il.

Esercizio 4

• Scrivere un programma che: – chieda l’inserimento delle età dei vostri genitori

(utilizzerà le classi Scanner e System.out per i comandi di I\O).

– calcoli e stampi la somma e la media delle età.– calcoli e stampi la somma (e la media) delle età

che i genitori avevano n anni fa (dove il valore della variabile n è chiesto all’utente).