• Non ci sono risultati.

Introduzione a Java

N/A
N/A
Protected

Academic year: 2021

Condividi "Introduzione a Java"

Copied!
9
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.”

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

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

Perchè no

 basato sul C

 prestazioni

 complesso

 macchinoso

 due modelli computazionali

 procedurale

 orientato agli oggetti

(2)

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

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

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

BeanShell

 estensione di java

 esecuzione istruzioni java in modalità interattiva

 attivazione

 interfaccia a linee

java bsh.Interpreter

 interfaccia grafica

java bsh.Console

(3)

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 ( )

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

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

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

(4)

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;

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

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);

Cicli

 while

while ( espr ) istr

 do

do istr while ( espr ) semantica

istr

while ( espr ) istr

(5)

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;}

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

Comandi BeanShell

 show();

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

 print( espr );

stampa il valore dell’espressione espr

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;

}

print(mcd);

(6)

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;}

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

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

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 ;

(7)

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);

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

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, · · ·

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);

(8)

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

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

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

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

(9)

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)

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

Riferimenti

Documenti correlati

• trasporto e affiancamento al trasporto delle persone anziane e adulti in condizione di disagio per destinazioni da loro scelte (visite specialistiche,

E meno male che io sono la persona più modesta del mondo.?. Fino all'anno scorso avevo un solo difetto:

 Disponibilità a spostamenti e soggiorni fuori sede per i periodi di formazione generale e specifica (regionale e locale) a Torino e Mornese (Al), anche se in coincidenza

In alternativa è prevista la possibilità da parte del lavoratore di poter scegliere, in sostituzione parziale o totale del premio di produttività, prestazioni in

- Il Periodico SPAZIO CIVILE si impegna, altresì, ad iscrivere gli stessi volontari in un’apposita banca dati da trasmettere e/o rendere consultabile ad enti pubblici

Si ritiene di importanza centrale la realizzazione del progetto sul territorio molisano - ancora segnato da percentuali molto basse di raccolta differenziata e di attività

-competenze di base nel riconoscimento del proprio ruolo e del ruolo degli altri all'interno dell'ente di riferimento -competenze nelle norme di comportamento che consentono

 Quando un tipo è dichiarato con typedef su strutture aggregate anonime (struct e union senza tag), le variabili di quel nuovo tipo sono considerate dello stesso tipo.