JavaScript Introduzione Introduzione

Transcript

JavaScript Introduzione Introduzione
JavaScript
Introduzione
1
Pasqualetti Veronica
Introduzione
2
 JavaScript è un linguaggio di scripting, ossia un linguaggio dalle
funzionalità ridotte rispetto a un vero e proprio linguaggio di
programmazione.
 JavaScript può essere utilizzato per controllare quasi tutte le
componenti del browser e per rispondere a varie azioni dell'utente,
quali l'immissione nei moduli e la navigazione nella pagina.
 È particolarmente
ti l
t utile
til perché
hé ttutti
tti i compiti
iti di elaborazione
l b
i
sono
scritti nello script (incorporato nel documento HTML), e quindi
l'intero processo definito dallo script è eseguito sul lato del
client senza la necessità di fare riferimento a un server
client,
server.
 In altri termini, invece di fare eseguire al server dei compiti e fornire
i risultati al browser, quest’ultimo può gestire localmente alcuni
compiti,
i i dando
d d cosìì all’utente
ll’
tempii di risposta
i
più
iù b
brevii e riducendo
id
d
il traffico di rete.
Introduzione
3
 Si può utilizzare JavaScript anche per controllare direttamente
oggetti quali la barra di stato del browser, i frame e perfino la
finestra di visualizzazione.
 Infine JavaScript offre l'interattività tra plug-in e applet Java. Si
può scrivere uno script di JavaScript, ad es., per verificare che dei
dati numerici siano stati inserti in un modulo che richiede un
numero di telefono.
t l f
 Senza alcuna trasmissione in rete, uno script di questo tipo può
p
il testo immesso e avvertire l'utente con una finestra
interpretare
di messaggio appropriata.
 Quando un documento HTML con uno script di JavaScript è
caricato in un browser che supporta questo linguaggio,
linguaggio le funzioni
dello script vengono calcolate, memorizzate, ed eseguite quando si
verificano determinati eventi (a es. quando l'utente sposta il
ouse sopra
sop a u
un oggetto o immette
ette u
un testo in u
una
a case
casella).
a).
mouse
Storia
4
 Il primo
i
b
browser a supportare
t
JJavascript
i t è stato
t t
Netscape Navigator 2.0. Naturalmente anche le
versioni successive lo supportano
supportano.
 Anche Microsoft Internet Explorer (a partire dalla
versione
i
3
3.0)
0) supporta
t JJavascript.
i t
 Oggi tutti i browser supportano Javascript
Dynamic
y
HTML ((DHTML))
5
 Una
U pagina
i “di
“dinamica”
i ” (DHTML) è una pagina
i
HTML contenente codice JavaScript associato a
determinati eventi che implementa specifiche
funzionalità
 Non
N bi
bisogna confondere
f d
una pagina
i DHTML con
una pagina generata dinamicamente dal server (asp,
php,
h jsp,
js etc)
t )
Sintassi
6
 Un
U programma JavaScript
J
S i t è composto
t d
da una
sequenza di istruzioni terminate dal punto e virgola
(;)
 Un insieme di istruzioni delimitate da parentesi
graffe
ff ({ e }) costituiscono
tit i
un bl
blocco
ECMAScript
p
7
E
E’ un linguaggio di script client
client-side
side
 Nato nel 1995 da Netscape con il nome di Mocha e
successivamente di LiveScript
 Standardizzato da ECMA International (European
Computer Manufacturers Association - associazione
fondata nel 1961e dedicata alla standardizzazione nel
settore informatico e dei sistemi di comunicazione)
nel 1997
 La sintassi lo rende simile a Java,
Java ma sono molto
diversi
7
JavaScript
p e HTML
8
Per inserire codice JavaScript in un documento HTML
esistono tre modi:

elemento <script> contenente il codice JavaScript
<script type=“text/javascript”>
<![CDATA[ ... unescaped script content ... ]]>
</script>

inclusione di script esterni
<script src=
src="script
script_esterno.js
esterno js"></script>
></script>

direttamente nel codice HTML in risposta ad eventi
<input type=“button” onclick=“alert(‘Ciao!’)” …>
<a href=“javascript:nome_funzione()”>Clicca qui!</a>
8
JavaScript:
p Esempio
p
9
<html>
<head>
<script type="text/javascript">
function raddoppia(n)
{
res = 2 * n;
alert("Il doppio di " + n + " è " + res);
}
</script>
/ i
</head>
<body onload="raddoppia(7)">
…
</body>
/b d
</html>
9
JavaScript
p vs Java
10
JavaScript
p non va confuso con Java,, dato che tra i due
linguaggi esistono importanti differenze:
JavaScript
Java
è un linguaggio interpretato
è un linguaggio compilato
viene eseguito sul client
viene eseguito sul server
non consente di scrivere
programmi autonomi
consente di scrivere
programmi autonomi
Introduzione
11
 JavaScript si compone di elementi di programmazione quali:
•
•
•
•
oggetti,
proprietà,
metodi,
gestori di eventi.
 La sintassi di JavaScript ha due elementi fondamentali:
• espressione
p
((o istruzione):
) combinazione di operatori,
p
,
variabili, letterali e parole chiave di cui si può calcolare il
valore.
• funzione:
f
i
gruppo di enunciati
i ti provvisto
i t di un nome, che
h sii può
ò
usare più volte semplicemente chiamandone il nome.
Sintassi
12
 Un
U id
identificatore
tifi t
è una sequenza di simboli
i b li che
h
identifica un elemento all’interno del programma
 Un identificatore
id ifi
può
ò essere composto d
da llettere e
numeri, non deve contenere elementi di
punteggiatura
t
i t
o spazii e d
deve cominciare
i i
con una
lettera
Sintassi
13
Q
Questi
ti sono id
identificatori
tifi t i validi
lidi
 Nome
 Codice_Fiscale
C di
Fi l
 a0
Q
Questi
ti sono id
identificatori
tifi t i non validi
lidi
 0a
 x.y
 Partita IVA
Sintassi
14
 Il li
linguaggio
i è case-sensitive,
iti ovvero di
distingue
ti
lle
lettere maiuscole dalle minuscole
 I commentii sono d
delimitati
li i i d
da /* e */
 Il simbolo // indica che il testo seguente sulla
medesima riga è un commento
Variabili
15
 Una
U variabile
i bil è un’area
’
di memoria
i contenente
t
t
informazioni che possono “variare” nel corso
dell’esecuzione
dell
esecuzione del programma
 Una variabile è caratterizzata da un nome
id tifi ti e d
identificativo
dall ti
tipo d
dell’informazione
ll’i f
i
contenuta
t
t
Definizione variabili
16
 Prima
P i
di essere adoperata
d
t una variabile
i bil d
dovrebbe
bb
essere definita
var eta; //non è obbligatorio
 La definizione stabilisce il nome della variabile,
mentre
t il ti
tipo di
dipende
d d
dall’assegnazione
ll’
i
eta = 35; //intero
nome = “M
“Mario
i R
Rossi”;
ssi” //stringa
//st i
Definizione variabili
17
 Il tipo
ti di una variabile
i bil di
dipende
d d
dall’ultima
ll’ lti
assegnazione, quindi una variabile può cambiare tipo
nel corso del suo ciclo di vita
x = 10; //intero
…
x = “a”; //stringa
 JavaScript
J
S i t è un li
linguaggio
i “d
“debolmente
b l
t tipato”
ti t ”
Tipi
p dato p
predefiniti
18
 Number
N b
 Boolean
 Null
 String
g
 Date
 Array
Tipo
p Number
19
 Una
U variabile
i bil di tipo
ti Number
N b assume valori
l i numerici
i i
interi o decimali
var x = 10; //valore intero
var y = -5.3; //valore decimale
 Sono
S
definite
d fi it le
l operazioni
i i aritmetiche
it ti h ffondamentali
d
t li
ed una serie di funzioni matematiche di base
Tipo
p Boolean
20
 Una
U variabile
i bil di tipo
ti Boolean
B l
assume i soli
li valori
l i
della logica booleana vero e falso
var pagato = true; //valore logico vero
var consegnato = false; //valore logico falso
 Sono
S
definite
d fi it lle operazioni
i i logiche
l i h ffondamentali
d
t li
(AND, OR e NOT)
Tipo
p Null
21
 Si tratta
t tt di un ti
tipo che
h può
ò assumere un unico
i valore
l
var a = null;
 Serve
S
ad
d iindicare
di
che
h il contenuto d
della
ll variabile
i bil è
non significativo
var sesso = “f”
“f”;
var militesente = null;
Tipo
p String
g
22
 Una
U variabile
i bil di tipo
ti String
St i contiene
ti
una sequenza
arbitraria di caratteri
 Un valore
l
di tipo
i Stringa
S i
è delimitato
d li i
d
da apici
i i (‘’) o
doppi-apici (“”)





var nome = “Mario Rossi”;
var empty = “”; //Stringa vuota
var empty2
t = new String();
St i () //St
//Stringa
i
vuota
t
var str = ‘Anche questa è una stringa’;
var str2 = new String(
String(“Un’altra
Un altra stringa
stringa”);
);
Tipo
p Date
23
 Una
U variabile
i bil di ti
tipo D
Date
t rappresenta
t un iistante
t t
temporale (data ed ora)



var adesso
d
= new Date();
D t ()
var natale2000 = new Date(2000,11,25);
var capodanno2001 = new Date(
Date(“Gen
Gen 1 2001
2001”);
);
 E’ definito l’operatore di sottrazione (-) tra due date
che restituisce la differenza con segno espressa in
millisecondi
Tipo
p Arrayy
24
 Un
U array è un vettore
tt
monodimensionale
di
i
l di elementi
l
ti
di tipo arbitrario



var v = new Array();
A
() //V
//Vettore
tt
vuoto
t
var w = new Array(“Qui”, “Quo”, “Qua”);
var u = new Array(
Array(“Lun”
Lun , “Mar”
Mar , “Mer”
Mer , “Gio”
Gio , “Ven”
Ven , “Sab”
Sab ,
“Dom”);
 Non è necessario specificare la dimensione
Assegnazione
g
25
 L’assegnazione
L’
i
è l’
l’operazione
i
fondamentale
f d
t l neii
linguaggi di programmazione imperativa

id = expr
 Prima viene “valutata” l’espressione expr, quindi il
risultato
i lt t viene
i
“
“assegnato”
t ” alla
ll variabile
i bil id
Assegnazione
g
26
 Si consideri
id i il seguente
t fframmento
t di codice
di
 var x = 10;
 var y = 7;
 var z = 3*(x-y);
 Al ttermine
i d
dell’esecuzione
ll’
i
lla variabile
i bil z assume il
valore 9
Espressioni
p
27
U
Un’espressione
’
i
è composta
t d
da
 Identificatori di variabili


Costanti



x nome,
x,
nome eta , importo,
importo …
10 3.14,
10,
3 14 “<HTML>”
<HTML> , …
Operatori
Parentesi (( e )) p
per alterare le regole
g
di p
precedenza tra
operatori
Operatori
p
aritmetici
28
O
Operano tra
t valori
l i ((costanti
t ti o variabili)
i bili) numerici
i i
 Somma (1+1)
 Sottrazione
S tt i
((3-5))
 Moltiplicazione (3*4)
 Divisione (6/4)
 Modulo (6%5)
 Cambiamento di segno (
(-3)
3)
Operatori di pre/post
incremento/decremento
29
 Derivano
D i
dal
d l li
linguaggio
i C ((e sono presenti
ti in
i C
C++ e
Java)
 Alterano
Al
e restituiscono
i i
il valore
l
di una variabile
i bil
 Consentono di scrivere codice compatto ed efficiente
Operatori di pre/post
incremento/decremento
30
 var x = 10;
 var y = x++; //y=10 e x=11
 var z = ++x; //z=12 e x=12
 var w = x--;; //w=12
//
e x=11
 var v = --x; //v=10 e x=10
Operatori
p
su stringhe
g
31
 L’unica
L’ i operazione
i
possibile
ibil tra
t stringhe
t i h in
i
un’espressione è la concatenazione:


nomeCompleto
C
l t = titolo
tit l + “ ” + nome + “ ” + cognome
indirizzo = recapito + “, ” + numCivico + “ ” + CAP + “ - ” +
citta + “ ((” + prov + “)”
)
Operatori
p
su stringhe
g
32
 Esiste
E i t una fforma più
iù compatta
tt per esprimere
i
l’accodamento
 L’istruzione
’i
i
seguente


str = str + newStr;
è equivalente a
str += newStr;
Operatori
p
su vettori
33
 L’operatore
L’
t
d
definito
fi it suii vettori
tt i è l’
l’accesso ad
d un
determinato elemento dato l’indice



v[3]
[ ] = 10;
a[i] = b[i] * c[i];
p = v[1];
 Il primo elemento di un vettore ha sempre l’indice 0
(come in C/C++ e Java)
Operatori
p
sui vettori
34
 Se
S sii assegna un valore
l
ad
d un elemento
l
t non presente
t
questo viene creato


var v = new Array();
A
()
v[0] = 1;
 Se
S sii accede
d all valore
l
di un elemento
l
t non presente
t sii
ottiene un valore indefinito


var v = new Array();
A
()
var a = v[0];
Operatori
p
relazionali
35
 Confrontano
C f
t
d
due valori
l i e restituiscono
tit i
l’
l’esito
it come
valore booleano






Uguaglianza
U
li
((==))
Disuguaglianza (!=)
Minore (<)
Maggiore (>)
Minore o uguale (<=)
Maggiore o uguale (>=)
Operatori
p
logici
g
36
O
Operano tra
t valori
l i (costanti
( t ti o variabili)
i bili) b
booleani
l
i
 AND (&&)
 OR (||)
 NOT (!)
 Solitamente
S lit
t gli
li operandi
di sono l’
l’esito
it di un confronto
f
t
Condizioni
37
 L’utilizzo
L’ tili
di operatori
t i relazionali
l i
li e logici
l i i consente
t di
formulare delle condizioni che possono essere
utilizzate per controllare l’esecuzione
l esecuzione del programma
(metodoPagamento==“contrassegno”)
(metodoPagamento==
contrassegno )
&&(!residenteInItalia)
Controllo dell’esecuzione
38
 L’esecuzione
L’
i
di un programma è generalmente
l
t
sequenziale
 Tuttavia
i iin d
determinate
i
““condizioni”
di i i” può
ò essere
necessario eseguire solo alcune istruzioni, ma non
altre,
lt oppure ripetere
i t
più
iù volte
lt un’operazione
’
i
IF
39
 L’istruzione
L’i t i
i t viene
instr
i
eseguita
it solo
l se la
l
condizione cond risulta vera
if(cond)
instr
 L’istruzione instr può essere sostituita da un
gruppo di istruzioni tra parentesi graffe
({ e })
IF - ELSE
40
 Una
U costruzione
t i
alternativa
lt
ti prevede
d lla presenza di
una seconda istruzione da eseguire nel caso la
condizione risulti falsa
if(cond)
instr_then
else
instr_else
IF – ELSE esempio
p
41
if (scelta==“NO”)
( lt
“NO”) {
// Se la scelta è NO
…
}
else {
// Altrimenti
…
}
SWITCH
42
 Lo switch
s itch è un
n particolare
pa ticola e caso di if particolarmente
pa ticola mente
ramificato, in cui viene presa in esame un'unica variabile
che può assumere differenti valori.
switch(<variabile
i h(
i bil d
da valutare>)
l
){
case <valore 1>:
//istruzioni
b k //si
break;
// i ferma
f
quii
case <valore 2>:
//istruzioni
b k //
break;
//sii ferma
f
quii
...
case <valore n>:
//i t i i
//istruzioni
break; //si ferma qui
default:
//istruzioni
}
FOR
43
 Viene
Vi
prima
i
eseguita
it l’istruzione
l’i t i
i it quindi
init,
i di
l’istruzione instr viene ripetuta finché la
condizione cond risulta vera,
vera dopo ogni
ripetizione viene eseguita l’istruzione next
for(init; cond; next)
instr
FOR esempi
p
44
 Inizializzare
I i i li
a 0 gli
li n elementi
l
ti del
d l vettore
tt
a
for (var i=0;
i 0; i<n; i++)
a[i]=0;
 Copiare gli n elementi del vettore a nel vettore b
for (var i=0; i<n; i++)
b[i] [i]
b[i]=a[i];
WHILE
45
 L’istruzione
L’i t i
i t viene
instr
i
eseguita
it finché
fi hé la
l
condizione cond risulta essere verificata
while(cond)
instr
 Un’istruzione for può essere espressa come
init;
while(cond) {instr; next;}
DO … WHILE
46
 Il do...while
d
hil ha
h un ffunzionamento
i
t del
d l ttutto
tt analogo
l
al while, solo che l'istruzione viene eseguita prima
che la condizione venga valutata: in questo modo si
ha la certezza che l'istruzione venga eseguita almeno
una volta.
volta
do {
//istruzioni
} while (<condizione>);
Funzioni
47
 Una
U ffunzione
i
è un elemento
l
t di un programma che
h
calcola un valore che dipende “funzionalmente” da
altri


y=f(x)
y log10(x)
y=log10(x)
 L’utilizzo delle funzioni nella programmazione
strutturata aumenta la modularità e favorisce il
riutilizzo
Definizione funzioni
48
 In
I JavaScript
J
S i t è possibile
ibil d
definire
fi i una o più
iù ffunzioni
i i
all’interno di un programma
function name(arg0 , arg1 , …, argn-1) {
istruzioni…
istruzioni
}
 La funzione definita è identificata da name e
dipende dagli argomenti arg0,
arg0 arg1
arg1, …, argn-1
argn 1
Funzioni esempio
p
49
 Somma
S
di due
d numerii
function somma(a,
somma(a b) {
return a+b;
}
 La
L funzione
f
i
viene
i
“invocata”
“i
t ” all’interno
ll’i t
di
un’espressione
var s = somma(1, 2);
Invocazione di funzioni
50
 Quando
Q
d una ffunzione
i
viene
i
iinvocata
t gli
li argomenti
ti
sono inizializzati con i valori specificati
 Quindi
Q i di sii procede
d con l’
l’esecuzione
i
d
delle
ll iistruzioni
i i
costituenti la funzione
 L’istruzione return restituisce il valore calcolato al
chiamante
Invocazione di funzioni
51
 La
L chiamata
hi
t
x = somma(1, 2)
inizializza gli argomenti a e b
rispettivamente ai valori 1 e 2
 L’istruzione
L’i t i
return a+b;
valuta
l t l’
l’espressione
s ssi
e restituisce
stit is il risultato
is lt t
(3) che viene assegnato alla variabile x
Variabili locali e globali
g
52
 All’interno
All’i t
di una ffunzione
i
è possibile
ibil d
definire
fi i d
delle
ll
variabili “confinate” all’interno della funzione stessa
 Tali
li variabili,
i bili dette
d
“l
“locali”,
li” sono create all’atto
ll’
dell’invocazione della funzione e sono distrutte al
t
termine
i d
dell’esecuzione
ll’
i
 Il loro valore non è accessibile dall’esterno della
f
funzione
i
 Ogni argomento di una funzione è una variabile
locale definita implicitamente
Variabili locali e globali
g
53
 Le
L variabili
i bili definite
d fi it all’esterno
ll’ t
di una ffunzione
i
sono
denominate, invece, “globali”
 A diff
differenza delle
d ll variabili
i bili llocali,
li lle variabili
i bili globali
l b li
sono accessibili da qualsiasi punto del programma,
anche
h dall’interno
d ll’i t
di una ffunzione,
i
sempre che
h iin
quest’ultima non sia stata definita una variabile
l l con llo st
locale
stesso
ss nome
Variabili locali e globali
g
54
 Si consideri
id i il seguente
t fframmento
t di codice
di
function f(…) {
…
var x = 1;
…
}
var x = -1;
…
f( );
f(…);
 La variabile globale x continua a valere -1
Procedure
55
 Una
U ffunzione
i
che
h non restituisce
tit i
valori
l i viene
i
d
detta
tt
procedura
 Una procedura
d
agisce
i
iin genere su variabili
i bili globali
l b li
(side-effect)
Funzioni predefinite
p
56
 In
I JavaScript
J
S i t sono presenti
ti alcune
l
ffunzioni
i i
predefinite, ad esempio:
iisNaN(v)
N N( ) verifica
ifi se v non è un numero
 parseFloat(str) converte str in un numero decimale
 parseInt(str)
( ) converte str iin un numero iintero

Oggetti
gg
57
 JavaScript
J
S i t è un li
linguaggio
i orientato
i t t agli
li oggetti,
tti
tuttavia non possiede il costrutto di classe
 Molti
l i tipi
i i di d
dato ffondamentali
d
li sono, iin effetti,
ff i d
degli
li
oggetti
Proprietà
p
e metodi
58
 Una
U proprietà
i tà di un oggetto
tt è assimilabile
i il bil ad
d una
variabile
cliente nome = “Carlo
cliente.nome
Carlo Bianchi
Bianchi”;;
x = ordine.aliquotaIVA;
 Un
U metodo,
t d iinvece, è simile
i il ad
d una ffunzione
i
tot = ordine.calcolaTotale();
Proprietà
p
e metodi
59
 Esistono
E i t
d
due sintassi
i t i alternative
lt
ti per accedere
d
alle
ll
proprietà degli oggetti
oggetto proprieta
oggetto.proprieta
oggetto[“proprieta”]
 La
L seconda
d è utile
til quando
d il nome d
della
ll proprietà
i tà
viene determinato durante l’esecuzione del
programma
Oggetti
gg
di tipo
p String
g
60
P
Proprietà
i tà
 length lunghezza della stringa
M
Metodi
di
 charAt(pos) carattere alla posizione pos
 subString(start,
bS i (
end)
d) sottostringa
i
dalla
d ll posizione
i i
start alla
ll
posizione end
 toUpperCase()/toLowerCase() converte la stringa in
maiuscolo/minuscolo
 indexOf(str,, p
pos) p
posizione della p
prima occorrenza della
string str cercata a partire dalla posizione pos
Oggetti
gg
di tipo
p Arrayy
61
P
Proprietà
i tà
 length lunghezza del vettore
M
Metodi
di
 sort() ordina gli elementi del vettore
 reverse()
() inverte
i
l’
l’ordine
di d
degli
li elementi
l
id
dell vettore
Oggetti
gg
di tipo
p Date
62
M
Metodi
t di
 getXXX() restituisce il valore della caratteristica XXX della
data
 setXXX(val) imposta il valore della caratteristica XXX della
data
 toString() restituisce la data come stringa formattata
Oggetti
gg
di tipo
p Date
63
Oggetto
gg
Math
64
P
Proprietà
i tà
 E costante di Eulero
 PI pii greco
 Metodi
 abs(val)
b ( l) modulo
d l
 ceil(val)/floor(val) troncamento
 exp(val)
e p( al) esponenziale
i l
 log(val) logaritmo
 pow(base,
pow(base exp) elevamento a potenza
 sqrt(val) radice quadrata