• Non ci sono risultati.

Introduzione a Java

N/A
N/A
Protected

Academic year: 2021

Condividi "Introduzione a Java"

Copied!
17
0
0

Testo completo

(1)

Introduzione a Java

Paolo Bison

Fondamenti di Informatica 1 A.A. 2004/05

Universit`a di Padova

Introduzione a Java, Paolo Bison, A.A. 2004-05, 2004-10-21 – p.1/34

JAVA

“Java:

the elegant simplicity of C++

and

the blazing speed of Smalltalk.”

(2)

Perchè Java

 basato sul C

 robusto e sicuro

 relativamente performante

 portabile “write once, run everywhere”

 librerie base

 networking

 free

 diffusione/utilizzo

Google directory Computers > Programming > Languages

java 3362 lisp 402

C++ 906 smalltalk 357

fortran 827 C 298

Introduzione a Java, Paolo Bison, A.A. 2004-05, 2004-10-21 – p.3/34

Perchè no

 basato sul C

 prestazioni

 complesso

 macchinoso

 due modelli computazionali

 procedurale

 orientato agli oggetti

(3)

Linguaggi a confronto

 visualizzare a terminale 5+3

 Pascal

program p(output); begin write(5+3) end .

 Lisp (+ 5 3)

 Smalltalk 5 + 3

 Java

class Somma {

public static void main(String[] args){

System.out.print(5+3);

} }

Introduzione a Java, Paolo Bison, A.A. 2004-05, 2004-10-21 – p.5/34

Qualità di un linguaggio

 semplicità

pochi concetti base

“keep it as simple as possible, but not the simplest”

Einstein

 eleganza

concetti applicati in maniera uniforme

poche varianti o eccezioni

(4)

Struttura programma Java

 sequenza di simboli appartenenti al linguaggio

 caratteristiche

 formato libero strutturato a linee

 commento

parte di un programma che può essere tolta senza che si modifichi il comportamento del programma stesso

• /* · · · */

• // fino a fine linea

 espressioni ed istruzioni

Introduzione a Java, Paolo Bison, A.A. 2004-05, 2004-10-21 – p.7/34

BeanShell

 estensione di java

 esecuzione istruzioni java in modalità interattiva

 attivazione

 interfaccia a linee

java bsh.Interpreter

 interfaccia grafica

java bsh.Console

(5)

Istruzione nulla

 sintassi

;

 no operation (NOP)

 esempio

;

Introduzione a Java, Paolo Bison, A.A. 2004-05, 2004-10-21 – p.9/34

Espressioni

 costanti intere

sequenza di cifre

 operatori

 moltiplicativi

* / %

 additivi + -

 relazionali

< > < = >=

 uguaglianza

== !=

 parentesi

(6)

Variabile

 identificatore

sequenza di caratteri alfanumerici iniziante con un simbolo alfabetico

 _ e $ sono considerati simboli alfabetici

 diversi dalle keywords

 ogni carattere è significativo

 nessum limite di lunghezza

 esempi

x0 $Y_1 hal_2001

somma Somma SoMma

Introduzione a Java, Paolo Bison, A.A. 2004-05, 2004-10-21 – p.11/34

Espressioni come istruzioni

 una espressione a diventa un’istruzione se è seguita da punto e virgola ( ; )

 esempi BeanShell:

2*a+(b-8); 5+7;

a

qualunque in BeanShell, alcune in Java

(7)

Assegnazione

 sintassi

id = espr ;

 esempio

ris=x0*x1-100;

cnt=cnt+1;

 = è un operatore (minima priorità) ⇒ espressione di assegnazione

(a=7)+8 a=b=c=0

Introduzione a Java, Paolo Bison, A.A. 2004-05, 2004-10-21 – p.13/34

Selezione

 sintassi

if ( espr ) istr [ else istr ]

 clausola else opzionale

 esempi

if (x+y<0) tot=x-y;

else tot=x+y;

if (x<0)

x=-x;

(8)

Associazione if-else

 if annidati if (x>0)

if (y>0) q=x*y;

else q=-(x*y);

 ogni else viene associato ad una clausola if partendo dalla più interna

 uso NOP if (x>0)

if (y>0) q=x*y;

else ;

else q=-(x*y);

Introduzione a Java, Paolo Bison, A.A. 2004-05, 2004-10-21 – p.15/34

Cicli

 while

while ( espr ) istr

 do

do istr while ( espr ) semantica

istr

while ( espr ) istr

(9)

Blocco

 sequenza di istruzioni tra { }

 permette di raggruppare più istruzioni in un’unica istruzione

if (a != b) {

k=a+b;

s=a*b;

}

6≡

if (a != b) k=a+b;

s=a*b;

if (x>0){

if (y>0) q=x*y;

}

else q=-(x*y);

Introduzione a Java, Paolo Bison, A.A. 2004-05, 2004-10-21 – p.17/34

Esempio BeanShell - I

 moltiplicazione

ris=0;i=0;while(i<=n){ris=ris+m;i=i+1;}

 5 × 3 m=5;

n=3;

ris=0;i=0;while(i<=n){ris=ris+m;i=i+1;}

(10)

Comandi BeanShell

 show();

abilita/disabilita la stampa del valore ottenuto valutando un’espressione

 print( espr );

stampa il valore dell’espressione espr

Introduzione a Java, Paolo Bison, A.A. 2004-05, 2004-10-21 – p.19/34

Esempio BeanShell - II

 algoritmo MCD 1 if (m<n){

t=m; m=n; n=t;

} i=2;

mcd=1;

while (i<=n){

if (m-m/i*i==0) if(n-n/i*i==0)

if (i>mcd) mcd=i;

i=i+1;

(11)

Metodo

 associazione tra un identificatore ed un insieme di istruzioni

 identificatore utilizzato per attivare le istruzioni associate

 modi di utilizzo

 riuso del medesimo codice in parti differenti del programma

 strutturazione di un programma in sottoprogrammi

 due fasi:

1. definizione del metodo 2. attivazione del metodo

Introduzione a Java, Paolo Bison, A.A. 2004-05, 2004-10-21 – p.21/34

Definizione

 sintassi

id ( [ lista par formali ] ) blocco

 associazione di id con blocco

 esempio:

azzera(){x=y=z=0;}

(12)

Attivazione

 sintassi

id ( [ lista par attuali ] )

 si esegue il blocco di istruzioni associato a id

 due modalità:

 come istruzione (procedura) azzera();

 come operando (funzione) x0*X_Y()+z

Introduzione a Java, Paolo Bison, A.A. 2004-05, 2004-10-21 – p.23/34

Valore di ritorno

 istruzione return

return espr ;

 il valore di espr è il valore di ritorno del metodo

 esempio

 definizione

resto(){ return m-m/n*n;}

 attivazione r=resto();

 variante

return ;

(13)

Applicazione a dati differenti

 per cambiare dati, modificare variabili esterne al metodo

m=7;n=5; r=resto();

m=25;n=7; r=resto();

 istruzioni assegnazione + attivazione

Introduzione a Java, Paolo Bison, A.A. 2004-05, 2004-10-21 – p.25/34

Parametri

 modalità per passare dati ad un metodo ad ogni attivazione

 due liste

 parametri formali

lista di identificatori nella definizione resto(m,n){ return m-m/n*n;}

 parametri attuali

lista di espressioni nell’attivazione r=resto(17,5);

m=resto(x+b,3*k);

(14)

Modalità di passaggio

resto(m,n){ return m-m/n*n;} // definizione m=resto(x+b,3*k); // attivazione

 fasi

1. valutazione dei parametri attuali x+b → 27

3*k → 13

2. assegnazione dei valori così ottenuti ai parametri formali

m ← 27 n ← 13

 associazione posizionale

primo con il primo, secondo con il secondo, · · ·

 # parametri attuali = # parametri formali

Introduzione a Java, Paolo Bison, A.A. 2004-05, 2004-10-21 – p.27/34

Validità degli identificatori

 associazione tra un identificatore ed un elemento del linguaggio(variabile, metodo, parametro)

 uso degli stessi identificatori per indicare elementi di tipo diverso

k(k){if (k<0) return -k; else return k;}

k+k(k);

(15)

Ambito di validità

 zona del programma in cui è valida un’associazione tra un identificatore ed un elemento del linguaggio

 se uno stesso identificatore è associato a piú elementi dello stesso tipo (es. variabili), in ogni punto del

programma esiste una sola associazione valida

 regole di campo “scope rules”

dato un identificatore in un determinato punto del programma definiscono quale associazione utilizzare

 dinamiche

l’associazione dipende dall’evoluzione temporale del programma

 statiche

l’associazione dipende da come è scritto il programma

Introduzione a Java, Paolo Bison, A.A. 2004-05, 2004-10-21 – p.29/34

Globale vs. locale

 globale

associazione valida per tutta la durata del programma

 locale

associazione valida solamente per una parte limitata del programma

 effetti collaterali (side-effects)

modifica di elementi non-locali

(16)

Esecuzione

 metodi

1 - k(){ print(n); n=20; } 2 - k(n) { print(n); n=20; }

 esecuzione 1 - n=10;

k(); print(n);

2 - n=10;

k(n);

print(n);

 stampa

1 - 10 20 2 - 10 10

Introduzione a Java, Paolo Bison, A.A. 2004-05, 2004-10-21 – p.31/34

Funzione scalino

 realizzare la funzione scalino sca (n) =

( 1 n ≥ 0 0 n < 0

 scalino traslato

scaT (n, t) =

( 1 n ≥ t

0 n < t

(17)

Elevamento a potenza

 calcolare m n con m intero e n intero ≥ 0 m n = m × m × · · · × m

| {z }

n

 metodo pot(m,n)

 estensione degli operatori

 valutare

k (6−b

6

) + k ∗ n k

Introduzione a Java, Paolo Bison, A.A. 2004-05, 2004-10-21 – p.33/34

Potenza di un binomio

 calcolare la potenza del binomio (m ± n) k con m, n interi e k intero 0 ≤ k ≤ 3 con le regole del calcolo letterale:

(m ± n) 0 = 1

(m ± n) 1 = m ± n

(m ± n) 2 = m 2 ± 2mn + n 2

(m ± n) 3 = m 3 ± 3m 2 n + 3mn 2 ± n 3

 metodo bin(m,n,segno)

Riferimenti

Documenti correlati

 se uno stesso identificatore è associato a piú elementi dello stesso tipo (es. variabili), in ogni punto del. programma esiste una sola

In questo caso sarà necessario specificare un protocollo con il quale il server Web possa attivare il processo richiesto, possa passare eventuali parametri necessari a quel processo

Corpo d’Armata Rosario Castellano, Comandante del Comando Militare della Capitale Maggior Generale Nicola Sebastiani, Ispettore Generale della Sanità Militare presso la Stato

Le forze gravitazionali nascono come interazioni fra masse , fra agglomerati di materia e sono le maggiori responsabili delle interazioni fra corpi macroscopici ( in particolare

Per usare un oggetto di tipo OutputWindow, il metodo OutputWindow main main deve prima crearne uno. La classe OutputWindow OutputWindow definisce le caratteristiche dei

Il metodo readString readString () () di un oggetto di tipo InputWindow InputWindow apre un pannello con un messaggio (“ Insert Insert a string a string”) che chiede di inserire

− una variabile d’istanza di un oggetto viene allocata (nello heap) quando l’oggetto viene creato heap. − una variabile d’istanza viene deallocata quando l’oggetto

Nessun thread pu` o accedere a metodi statici sincronizzati di ogni istanza di una stessa classe. Meno restrittiva della precedente in quanto metodi sincronizzati non statici