• Non ci sono risultati.

Introduzione a Java

N/A
N/A
Protected

Academic year: 2021

Condividi "Introduzione a Java"

Copied!
34
0
0

Testo completo

(1)

Introduzione a Java

Paolo Bison

Fondamenti di Informatica 1 A.A. 2004/05

Universit`a di Padova

(2)

JAVA

“Java:

the elegant simplicity of C++

and

the blazing speed of Smalltalk.”

(3)

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

(4)

Perchè no

 basato sul C

 prestazioni

 complesso

 macchinoso

 due modelli computazionali

 procedurale

 orientato agli oggetti

(5)

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

(6)

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

(7)

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

(8)

BeanShell

 estensione di java

 esecuzione istruzioni java in modalità interattiva

 attivazione

 interfaccia a linee

java bsh.Interpreter

 interfaccia grafica

java bsh.Console

(9)

Istruzione nulla

 sintassi

;

 no operation (NOP)

 esempio

;

(10)

Espressioni

 costanti intere

sequenza di cifre

 operatori

 moltiplicativi

* / %

 additivi + -

 relazionali

< > < = >=

 uguaglianza

== ! =

 parentesi

( )

(11)

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

(12)

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

(13)

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

(14)

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;

(15)

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 ;

(16)

Cicli

 while

while ( espr ) istr

 do

do istr while ( espr ) semantica

istr

while ( espr ) istr

(17)

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;

(18)

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

(19)

Comandi BeanShell

 show();

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

 print( espr );

stampa il valore dell’espressione espr

(20)

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

(21)

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

(22)

Definizione

 sintassi

id ( [ lista par formali ] ) blocco

 associazione di id con blocco

 esempio:

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

(23)

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

(24)

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 ;

(25)

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

(26)

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

(27)

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

(28)

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

(29)

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

(30)

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

(31)

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

(32)

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

(33)

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

(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

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

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

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

- 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

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