Documente Academic
Documente Profesional
Documente Cultură
eu
11 martie 2009
2
Cuprins
3
4 CUPRINS
3.9 Exerciţii . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
3.10 Bibliografie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
1.1 Resurse
1. Pentru un tutorial HTML online consultaţi: HTML
2. Pentru un tutorial XHTML online consultaţi: XHTML
3. Pentru entităţi HTML: Entităţi HTML
4. Pentru culori: Culori
1.2 Exerciţii
Exerciţiul 1 Realizaţi un document HTML simplu cu următoarea structură:
<html>
<head>
<t i t l e>Primul t e s t HTML</ t i t l e>
</head>
<body>
Textul c a r e va a p a r e ı̂ n b r o w s e r .
</body>
</html>
7
8 CAPITOLUL 1. INTRODUCERE ÎN (X)HTML
</head>
<body>
<h1>T i t l u H1</h1>
<p c l a s s=” c o n t e n t ”> Un p a r a g r a f c a r e va f o l o s i un o
f o a i e de s t i l (CSS) p e n t r u a c o n t r o l a f o r m a t a r e a
documentului .</p>
<img src=” h t t p : / / o r a r . u p i t . r o / S i g l a U p i t . GIF” a l t=”
U n i v e r s i t a t e a d i n P i t e s t i ” />
</body>
</html>
• categorii: date de contact, data şi locul naşterii, studii, experienţă, referinţe,
aptitudini, hobby-uri, alte informaţii
• folosiţi formatări la nivel logic (h1, h2, etc) pentru a organiza ierarhic
documentul
Exerciţiul 8 Împărţiti documentul HTML creat anterior ı̂n mai multe docu-
mente HTML. Cuprinsul se găseşte pe prima index.html, iar fiecare categorie
pe câte o pagină.
Exerciţiul 13 Realizaţi o listă de definiţii ı̂n care termenii sunt oraşe din
străinătate ı̂n care aţi fost, iar definiţiile sunt câteva impresii despre fiecare
oraş.
• componentă de tip buton radio pentru selecţie an de studiu (I, II, III sau
IV)
– Activitate interactivă
– Activitate de studiu individual
– Activitate de lucru ı̂n colaborare cu alţi studenţi
– lansare activitate
– afişare stare student ı̂n raport cu activitatea selectată
– anulare informaţii introduse ı̂n formă (cancel)
1.3. BIBLIOGRAFIE 11
• Cadrul 1.
– Titlul aplicaţiei
– Butoane corespunzătoare opţiunilor aplicaţiei
• Cadrul 2.
1.3 Bibliografie
• W3C HTML Tutorial
• W3C XHTML Tutorial
12 CAPITOLUL 1. INTRODUCERE ÎN (X)HTML
Capitolul 2
2.1 Resurse
• Pentru un tutorial CSS online consultaţi: CSS
2.2 Tutorial
CSS este un acronim pentru Cascading Style Sheets (foi de stiluri). O foaie
de stiluri conţine reguli de formatare ale elementelor unui document HTML.
Limbajul HTML este folosit pentru descrierea conţinutului ı̂n timp ce CSS este
utilizat pentru realizarea prezentării. Cascading ı̂nseamnă că stilurile se aplică
ı̂n ”cascadă”, proprietăţiile moştenite din alte declaraţii sunt suprascrise de
ultimele proprietăţi ı̂ncărcate de browser. O regulă de stil conţine:
Exemplu
H1 , H2 , H3 { f o n t −f a m i l y : H e l v e t i c a , Tahoma , A r i a l }
H1 { f o n t −s i z e : x−l a r g e ; c o l o r : r e d }
H2 { f o n t −s i z e : 12 pt }
13
14 CAPITOLUL 2. CSS - CASCADING STYLE SHEETS (I)
• In-line
Rezultatul aplicării acestui stil este colorarea paragrafului specificat ı̂n roşu.
Utilizarea stilurilor inline nu este recomandată, deoarece ele ı̂ncarcă documen-
tul HTML, fiind recomandat ca acestea să conţină cât mai puţine detalii de
prezentare.
Acest stil va aplica tuturor paragrafelor din pagină culoarea roşie şi tuturor
link-urilor culoarea albastră. Stilurile embedded pot fi utilizate atunci când
numărul de reguli este relativ mic.
p {
c o l o r : red ;
}
a {
c o l o r : blue ;
}
Acest fişier va fi salvat cu extensia .css şi pentru a putea fi utilizat, trebuie
specificat ı̂n tag-ul header al documentului HTML. Tag-ul corespunzator este:
<l i n k r e l=“ s t y l e s h e e t ” type=” t e x t / c s s ” href=” a d r e s a
document c s s ”>
Foile de stil externe pot fi specificate şi utilizând tag-ul style cu atributul
@import. În tag-ul head al documentului HTML se introduc marcaje style
astfel:
<s t y l e type=” t e x t / c s s ”>
@import u r l ( a d r e s a document c s s ) ;
</ s t y l e>
Contextuali – doi sau mai mulţi selectori care stabilesc contextul ı̂n care se
aplică stilul
• selector1 selector2 – stilul se aplică dacă selector1 este conţinut ı̂n selector2
(selectorii pot fi oricare din selectorii descrişi anterior)
em (de exemplu font-size: 2em) este folosită pentru calcularea dimensiunii unui
font. ”2em” ı̂nseamnă că dimensiunea fontului va fi de 2 ori mai mare decât
dimensiunea fontului elementului părinte.
Alte unităţi de măsură includ pc (picas), cm, mm şi in. Când o valoare este zero,
nu mai trebuie specificată şi o unitate de măsură. Este indicat să se utilizeze
unităţile em şi % pentru dimensiunea fonturilor ı̂n locul unităţilor px şi pt care
pot duce la probleme de vizualizare a paginilor.
2.6. CULORI 17
2.6 Culori
CSS pune la dispoziţie 16.777.216 culori. Culorile pot fi specificate sub forma
de nume, cod rgb (red/green/blue) sau cod hexa. Pentru culoarea roşu sunt
acceptate următoarele forme:
red
rgb ( 2 5 5 , 0 , 0 )
rgb (100% ,0% ,0%)
#f f 0 0 0 0
#f 0 0
Există 17 nume predefinite de culori: aqua, black, blue, fuchsia, gray, green,
lime, maroon, navy, olive, orange, purple, red, silver, teal, white, şi yellow.
Transparent este de asemenea o valoare validă. Cele 3 elemente din codul RGB
iau valori ı̂ntre 0 şi 255. Un număr ı̂n hexazecimal poate fi reprezentat cu 3 sau
6 elemente. Forma cu 3 elemente este o variantă compresată a celei cu 6 (de
exemplu, #f00 devine #ff0000, #c96 devine #cc9966). Formatul hexa permite
un control mai fin al culorilor. Culorile pot fi specificate folosind proprietăţile
color şi background-color.
body {
f o n t −s i z e : 0 . 8 em ;
c o l o r : navy ;
}
h1 {
c o l o r : #f f c ;
background−c o l o r : #009;
}
2.7 Text
Dimensiunea şi formatarea textului dintr-o pagină web pot fi modificate folosind
următoarele proprietăţi:
font-family fontul utilizat. Poate fi: arial, helvetica, sans-serif sau alt font
instalat. Nu este recomandat să se utilizeze fonturi puţin răspindite. De
obicei se specifică o listă de fonturi “sigure”. Dacă un font nu este instalat,
atunci browser-ul trece la următorul font din listă.
font-size dimensiunea fontului
font-weight formatează textul. În practică poate lua valorile bold sau normal
deşi sunt posibile şi alte valori: bolder, lighter, 100, 200, 300, 400, 500,
600, 700, 800 şi 900.
font-style specifică dacă textul primeşte modificatorul italic sau nu. Poate
primi valorile italic sau normal.
text-decoration specifică dacă textul este formatat cu modificatorul underline
sau nu. Valorile posibile sunt:
18 CAPITOLUL 2. CSS - CASCADING STYLE SHEETS (I)
text-decoration: overline
text-decoration: line-through
text-decoration: underline
text-decoration: none
text-transform: capitalize
text-transform: uppercase
text-transform: lowercase
text-transform: none
body {
f o n t −f a m i l y : a r i a l , h e l v e t i c a , sans− s e r i f ;
f o n t −s i z e : 0 . 8 em ;
}
h1 {
f o n t −s i z e : 2em ;
}
h2 {
f o n t −s i z e : 1 . 5 em ;
}
a {
t e x t −d e c o r a t i o n : none ;
}
strong {
f o n t −s t y l e : i t a l i c ;
t e x t −t r a n s f o r m : u p p e r c a s e ;
}
p {
l e t t e r −s p a c i n g : 0 . 5 em ;
word−s p a c i n g : 2em ;
l i n e −h e i g h t : 1 . 5 ;
t e x t −a l i g n : c e n t e r ;
}
• zona de completare are acelaşi fundal ca şi elementul (setat prin proprie-
tatea background).
h2 {
f o n t −s i z e : 1 . 5 em ;
background−c o l o r : #c c c ;
margin : 1em ;
padding : 3em ;
}
implicit: 0
implicit: 0
• nu poate fi negativă
Dacă sunt prezente patru valori, atunci ele se aplică pentru top, right, bottom şi
left, ı̂n această ordine. Dacă este dată o singură valoare, aceasta este atribuită
tuturor zonelor de umplere. Dacă sunt două sau trei valori, valorile lipsă se iau
din cele ale părţilor opuse.
2.9. EXEMPLU 21
2.8.4 Borduri
Pentru a realiza o bordura in jurul unui element se foloseste proprietatea border-
style. Valorile posibile sunt: solid, dotted, dashed, double, groove, ridge, inset
şi outset.
Grosimea bordurii este specificată cu proprietatea border-width. Valorile
posibile sunt: thin — medium — thick — ¡mărime¿.
Pentru specificarea bordurii separat pe fiecare latură avem: border-top-
width, border-right-width, border-bottom-width, border-left-width
h2 {
border −s t y l e : dashed ;
border −width : 3px ;
border −l e f t −width : 10 px ;
border −r i g h t −width : 10 px ;
border −c o l o r : r e d ;
}
2.9 Exemplu
Fie următorul document XHTML
<!DOCTYPE html PUBLIC ”−//W3C//DTD XHTML 1 . 0 S t r i c t //EN”
” h t t p : / /www. w3 . o r g /TR/ xhtml1 /DTD/ xhtml1−s t r i c t . dtd”>
<html>
<head>
< t i t l e >L a b o r a t o r de Programare Web</ t i t l e >
<!−− Un c o m e n t a r i u −−>
</head>
<body>
<h1>Exemplu de p a g i n a Web</h1>
<h2>D e s c r i e r e </h2>
<p>O p a g i n ă s i m p l ă XHTML. <s t r o n g > O p a g i n ă s i m p l ă XHTML
.</ s t r o n g > O p a g i n ă s i m p l ă XHTML. O p a g i n ă s i m p l ă
XHTML. O p a g i n ă s i m p l ă XHTML. O p a g i n ă s i m p l ă XHTML. O
p a g i n ă s i m p l ă XHTML. O p a g i n ă s i m p l ă XHTML. O p a g i n ă
s i m p l ă XHTML. O p a g i n ă s i m p l ă XHTML. O p a g i n ă s i m p l ă
XHTML. O p a g i n ă s i m p l ă XHTML. O p a g i n ă s i m p l ă XHTML.</
p>
<h2>Curriculum </h2>
<ul>
<l i >
Programare Web
<o l >
< l i >XHTML</ l i >
< l i >CSS</ l i >
22 CAPITOLUL 2. CSS - CASCADING STYLE SHEETS (I)
<h2>Unde p o a t e f i g a s i t t u t o r i a l u l de HTML</h2>
<p><a h r e f =”h t t p : / /www. w 3 s c h o o l s . com/ html / d e f a u l t . asp”>
<img s r c =”h t t p : / / o r a r . u p i t . r o / S i g l a U p i t . GIF”
width =”157” h e i g h t =”70” a l t =”UPIT l o g o ” /></a></p>
<h3>Un t a b e l </h3>
<t a b l e b o r d e r =”1”>
<t r >
<td>Row 1 , c e l l 1</td>
<td>Row 1 , c e l l 2</td>
<td>Row 1 , c e l l 3</td>
</t r >
<t r >
<td>Row 2 , c e l l 1</td>
<td>Row 2 , c e l l 2</td>
<td>Row 2 , c e l l 3</td>
</t r >
<t r >
<td>Row 3 , c e l l 1</td>
<td>Row 3 , c e l l 2</td>
<td>Row 3 , c e l l 3</td>
</t r >
<t r >
<td>Row 4 , c e l l 1</td>
<td>Row 4 , c e l l 2</td>
<td>Row 4 , c e l l 3</td>
</t r >
</ t a b l e >
<h3>Formular </h3>
<p><s t r o n g >O b s e r v a t i i :</ s t r o n g > Un f o r m u l a r c a r e nu f a c e
n i m i c !</p>
<p>C o m e n t a r i i : </p>
<p><t e x t a r e a rows =”10” c o l s =”20” name=” c o m e n t a r i i ”>
C o m e n t a r i i l e dvs </t e x t a r e a ></p>
<p>Sex :</p>
2.9. EXEMPLU 23
</body>
</html>
Realizati legatura dintre fisierul prezentat mai sus si urmatorul document
CSS.
body {
f o n t −f a m i l y : a r i a l , h e l v e t i c a , sans− s e r i f ;
f o n t −s i z e : 80%;
color : black ;
background−c o l o r : #f f c ;
margin : 1em ;
padding : 0 ;
}
/∗ Un c o m e n t a r i u ∗/
p {
l i n e −h e i g h t : 1 . 5 em ;
}
h1 {
c o l o r : #f f c ;
background−c o l o r : #900;
f o n t −s i z e : 2em ;
margin : 0 ;
margin−bottom : 0 . 5 em ;
padding : 0 . 2 5em ;
f o n t −s t y l e : i t a l i c ;
t e x t −a l i g n : c e n t e r ;
l e t t e r −s p a c i n g : 0 . 5 em ;
border −bottom−s t y l e : s o l i d ;
border −bottom−width : 0 . 5 em ;
border −bottom−c o l o r : #c00 ;
}
h2 {
c o l o r : white ;
background−c o l o r : #090;
f o n t −s i z e : 1 . 5 em ;
margin : 0 ;
padding : 0 . 1 em ;
padding− l e f t : 1em ;
}
h3 {
c o l o r : #999;
f o n t −s i z e : 1 . 2 5em ;
24 CAPITOLUL 2. CSS - CASCADING STYLE SHEETS (I)
}
img {
border −s t y l e : dashed ;
border −width : 2px ;
border −c o l o r : #c c c ;
}
a {
t e x t −d e c o r a t i o n : none ;
}
strong {
f o n t −s t y l e : i t a l i c ;
t e x t −t r a n s f o r m : u p p e r c a s e ;
}
li {
c o l o r : #900;
f o n t −s t y l e : i t a l i c ;
}
table {
background−c o l o r : #c c c ;
}
2.10 Exercitii
Realizaţi foile de stil şi documentele HTML care să prezinte următoarele vederi
ı̂n browser.
2.11 Bibliografie
• CSS Tutorial
3.1 Resurse
• Pentru un tutorial CSS online consultaţi: CSS
31
32 CAPITOLUL 3. DESCRIERE: CSS - CASCADING STYLE SHEETS (II)
Un exemplu de utilizare:
#top {
background−c o l o r : #c c c ;
padding : 1em
}
. intro {
c o l o r : red ;
f o n t −w e i g h t : b o l d ;
}
Legătura dintre elementele HTML şi CSS se face prin atributele id şi class.
<div id=” top ”>
<h1>Curs de programare web</h1>
<p c l a s s=” i n t r o ”>CSS e s t e un acronim p e n t r u Cascading
S t y l e S h e e t s</p>
<p c l a s s=” i n t r o ”>R e s p e c t a t i i n t o t d e a u n a s t a n d a r d e l e
Web</p>
</ div>
c o l o r : red ;
}
. altaClasa {
c o l o r : red ;
}
Dacă fişierul CSS este bine structurat nu este nevoie de foarte multe reguli
de tip class sau ID, deoarece se pot specifica proprietăţi pentru selectorii din
cadrul altor selectori. De exemplu:
#top {
background−c o l o r : #c c c ;
padding : 1em
}
#top h1 {
c o l o r : #f f 0 ;
}
#top p {
c o l o r : red ;
f o n t −w e i g h t : b o l d ;
}
Regula de mai sus aplicată codului HTML ce urmează, produce acelaşi re-
zultat ca şi ı̂n cazul utilizării claselor şi identificatorilor.
<div id=” top ”>
<h1>Curs de programare web</h1>
<p>CSS e s t e un acronim p e n t r u Cascading S t y l e S h e e t s<
/p>
<p>R e s p e c t a t i i n t o t d e a u n a s t a n d a r d e l e Web</p>
</ div>
Contextuali – doi sau mai mulţi selectori care stabilesc contextul ı̂n care
se aplică stilul
• selector#id – stilul se aplică dacă selector are identificatorul id
• selector.clasa – stilul se aplică dacă selector are clasa clasa
• selector1 selector2 – stilul se aplică dacă selector1 este conţinut ı̂n selector2
(selectorii pot fi oricare din selectorii descrişi anterior)
Pseudo-clasele marcajului a:
a : l i n k { c o l o r : red }
hover este pentru momentul ı̂n care cursorul mouse-ului este poziţionat peste
link. Pseudo-elementele marcajelor blocuri (p, h1, div, etc):
p : f i r s t −l i n e { f o n t −w e i g h t : b o l d }
p : f i r s t −l e t t e r { f o n t −s i z e : 300%; f l o a t : l e f t }
a : link {
c o l o r : blue ;
}
a: visited {
color : purple ;
}
a : active {
c o l o r : red ;
}
a : hover {
t e x t −d e c o r a t i o n : none ;
c o l o r : blue ;
background−c o l o r : y e l l o w ;
}
• lower-alpha,
• upper-alpha,
• none.
list-style-position - specifică poziţia marcajului ı̂n raport cu conţinutul ele-
mentului de listă. Poate lua valorile inside sau outside. list-style - specifică
simultan toate proprietăţile care se referă la modul de afişare a listelor:
liststyle- image, list-style-position, list-style-type.
• valoare: h list −style−typei | hlist-style-positioni | hurli
Se recomandă precizarea stilurilor pentru itemi la nivel de listă (ı̂n marcajele ol
şi ul)
ul {
l i s t −s t y l e : s q u a r e i n s i d e u r l ( l o g o . png )
}
</ ul>
</ div>
<div id=” c o n t e n t ”>
<h1>Un exemplu de p o z i t i o n a r e .</h1>
<p>Un exemplu de p o z i t i o n a r e . Un exemplu de
pozitionare .
Un exemplu de p o z i t i o n a r e . Un exemplu de p o z i t i o n a r e .
Un exemplu de p o z i t i o n a r e .</p>
<p>Alt exemplu de p o z i t i o n a r e .</p>
</ div>
Aceste definiţii vor poziţiona absolut bara de navigare ı̂n colţul stânga sus.
Deoarece dimensiunea este 10em, se introduce o margine cu aceeaşi valoare
pentru conţinut.
Dacă dorim să extindem designul paginii astfel ı̂ncat să includă a treia co-
loană, modificăm regulile CSS astfel:
#n a v i g a t i o n {
position : absolute ;
top : 0 ;
l e f t : 0;
width : 10em ;
}
#n a v i g a t i o n 2 {
position : absolute ;
top : 0 ;
right : 0;
width : 10em ;
}
#c o n t e n t {
margin−top : 0 ;
margin−bottom : 0 ;
margin− l e f t : 10em ;
margin−r i g h t : 10em ;
}
#f o o t e r {
c l e a r : both ;
}
3.9 Exerciţii
Realizaţi foile de stil şi documentele HTML care să prezinte următoarele vederi
ı̂n browser.
3.9. EXERCIŢII 41
Exerciţiul 32 Folosiţi proprietatea float. Testaţi pentru valorile left, right şi
none. Adaugaţi o margine de 20 px la stânga, 15px jos, 0px sus şi la dreapta.
Adaugaţi şi o bordură de culoare roşie cu dimensiunea de 2px.
48 CAPITOLUL 3. DESCRIERE: CSS - CASCADING STYLE SHEETS (II)
3.10 Bibliografie
• CSS Tutorial
4.1 Resurse
Descriere : Realizaţi un layout pentru un site web folosind CSS şi XHTML.
• http://jigsaw.w3.org/css-validator/
• http://validator.w3.org/
55
56CAPITOLUL 4. DESCRIERE: CSS – CASCADING STYLE SHEETS (III)
4.3 Bibliografie
• CSS online consultaţi: CSS
Descriere: Limbajul
Javascript (I)
5.1 Resurse
• Pentru un tutorial Javascript online consultaţi: Javascript
Codul JavaScript poate fi stocat ı̂ntr-un fişier extern (ı̂n general cu extensia
.js) şi folosit ı̂n cadrul paginii prin construcţia
<s c r i p t l a n g u a g e=” J a v a S c r i p t ” src=” f i l e . j s ” />
5.3 Identificatori
• Un identificat (nume) este un nume asociat unei variabile, funcţii, tip de
dată, etc.
57
58 CAPITOLUL 5. DESCRIERE: LIMBAJUL JAVASCRIPT (I)
• Un identificator
• boolean, break, byte, case, char, continue, do, double, else, false, float, for,
if, long, new, null, private, protected, short, static, this, throw, var, void,
while etc.
5.4 Variabile
• variabila este un identificator asociat unei zone de memorie.
• variabilă nu are asociat un tip, adică este posibil ca variabila să aibă o
valoare numerică şi să i se atribuie o valoare de tip şir de caractere.
• prin variabila locală se ı̂nţelege o variabilă declarată ı̂n interiorul unui bloc
– blocul este delimitat printr-o pereche de acolade, şi poate să apară
ı̂n interiorul instrucţiunii for, ı̂n interiorul unei funcţii etc.
– domeniul de vizibilitate al variabilei este blocul ı̂n care a fost decla-
rată
– domeniul de existenţă al variabilei este perioada execuţiei blocului ı̂n
care a fost declarată
<s c r i p t >
do {
var i = window . prompt ( ” Dati un numar” , ” ” ) ;
// i e s t e l o c a l a
} while ( Math . random ( ) <0.8) ;
</ s c r i p t >
5.5. OPERATORI 59
<s c r i p t >
var i ; // i e s t e g l o b a l a
do {
i = window . prompt ( ” Dati un numar” , ” ” ) ; // i
este locala
} while ( Math . random ( ) <0.8) ;
</ s c r i p t >
5.5 Operatori
Operatori aritmetici : + (adunare); - (scădere); * (^
ınmulţire); / (^
ımpărţire);
% (calculul restului)
• ^
ınmulţire, ^
ımpărţire (*, /, %)
• SI pe biţi (&)
• SAU pe biţi ( | )
• conjuncţie (&&)
• disjuncţie (|| )
• condiţional (?:)
• atribuire (=, +=, -=, |=, &=, ^=, *=, /=, >>=, <<=, &&=, ||=,
%=)
5.7 Instrucţiuni
• instrucţiunea vidă: ;
– e.g. ;
– e.g. a=5;
– Citirea datelor
• variabila=window.prompt(“Mesaj:”,”Valoare implicită”);
– Scrierea datelor
• document.write(“Mesaj”);
5.9 Instrucţiunea if
• Folosită pentru luarea unei decizii ı̂n legătură cu modul ulterior de execuţie
al programului.
if ( expresie )
instructiune1 ;
else
instructiune2 ;
• Pot exista instrucţiuni if-else imbricate şi ı̂n acest caz unui else i se asociază
primul if dinaintea lui care nu are else (şi nu este inclus ı̂ntr-un bloc).
i f ( n%2 == 0 )
par = true ;
else
par = f a l s e ;
62 CAPITOLUL 5. DESCRIERE: LIMBAJUL JAVASCRIPT (I)
• Toate cele trei expresii sunt opţionale (o expresie continuare vidă are va-
loarea true), dar separatorul ”;” este obligatoriu.
var n=14 , f =1;
f o r ( var i =1; i<=n ; i ++)
f ∗= i ;
var s =0;
f o r ( var i =1; i <=5; i ++) {
i f ( i ==3) break ; // cand i = 3 , b u c l a s e
intrerupe
s += i ;
}
// a i c i s = 1 + 2 = 3
5.15 Funcţii
• funcţie este un grup de declaraţii şi instrucţiuni, grupate sub un nume
comun.
f u n c t i o n n u m e f u n c t i e ( par1 , par2 , . . . , parN ) //
antetul functiei
{
d e c l a r a t i i ; // c o r p u l f u n c t i e i
instructiuni ;
}
• Funcţiile se pot declara oriunde ı̂n interiorul unui bloc ¡script¿, dar nu ı̂n
interiorul altei funcţii sau structuri de control.
• Numele unei funcţii trebuie să fie unic ı̂ntr-un program.
• Declaraţiile şi instrucţiunile funcţiei sunt grupate ı̂ntre acolade.
• Variabilele declarate ı̂n interiorul unei funcţii sunt variabile locale (funcţiei
respective).
• Parametrii din antetul funcţiei formează lista parametrilor formali ai funcţiei.
• Parantezele din antetul funcţiei sunt obligatorii după numele funcţiei, chiar
dacă lista parametrilor formali este vidă.
• funcţie se apelează prin numele ei urmat de valorile lor pentru parametrii
funcţiei
5.16. TIPURI DE DATE DE BAZĂ 65
f u n c t i o n modul ( x )
{
i f ( x<0)
return −x ;
return x ;
}
– numere reale: 10.3 (adică 10.3), 10.3e1 (adică 103), 10.3e-1 (adică
1.03)
x = 10.3
• Boolean
– literalii true şi false (cu litere mici) au semnificaţia de adevărat şi
fals.
x = true
– orice număr diferit de 0 şi orice şir de caractere nevid este interpretat
ca valoarea logică true.
x = 2 ; // a d i c ă x == t r u e e s t e a d e v ă r a t ă
x = “” ; // a d i c ă x == t r u e e s t e f a l s ă
• Undefined, Null
• când este ı̂ntâlnit un caracter care nu poate face parte dintr-un număr,
restul caracterelor sunt ignorate
• când este ı̂ntâlnit un caracter care nu poate face parte dintr-un număr,
restul caracterelor sunt ignorate
document . w r i t e ( “ S a l u t ” . f o n t s i z e ( 5 ) . f o n t c o l o r ( “ b l u e ” ) .
bold ( ) ) ;
Math.power(x,y) – returnează xy
5.20 Exemple
1. Scrieţi un script care testează paritatea unui număr introdus de la tasta-
tură.
<html>
<head><t i t l e >J a v a S c r i p t </ t i t l e ></head>
<body>
< s c r i p t l a n g u a g e=” J a v a S c r i p t ”>
var i ;
i = window . prompt ( ” I n t r o d u c e t i un numar
intreg : ”) ;
i f ( i % 2 == 0 )
document . w r i t e ( ”Numarul ” + i + ”
e s t e par . ” ) ;
else
document . w r i t e ( ”Numarul ” + i + ” nu
e s t e par . ” ) ;
</ s c r i p t >
</body>
</html>
n f a c t ∗= i ;
++i ;
} while ( i <= n ) ;
document . w r i t e ( n+” ! = ” + n f a c t ) ;
</ s c r i p t >
</body>
</html>
6. Scrieţi un script care afişează numerele naturale mai mici decât 1000 care
sunt egale cu suma factorialelor cifrelor lor (145=1!+4!+5!=1+24+120).
<html>
<head><t i t l e >J a v a S c r i p t </ t i t l e ></head>
<body>
< s c r i p t l a n g u a g e=” J a v a S c r i p t ”>
function f a c t o r i a l (n) {
fact = 1;
while ( n > 1 )
f a c t ∗= n−−;
return f a c t ;
}
f o r ( var i =0; i <1000; ++i ) {
numar = i ; suma = 0 ;
while ( numar > 0 ) {
c i f r a = numar % 1 0 ;
numar = Math . f l o o r ( numar / 1 0 ) ;
suma += f a c t o r i a l ( c i f r a ) ;
}
i f ( suma == i )
document . w r i t e ( i + ”<br/>” ) ;
}
</ s c r i p t >
</body>
</html>
5.21 Exerciţii
1. Scrieţi un script care citeşte coeficienţii a, b, c ai ecuaţiei de gradul II şi
afişează rezultatul (se vor trata şi cazurile ecuaţie imposibilă, ecuaţie cu
număr infinit de soluţii, ecuaţie cu soluţii complexă)
Scrieţi un script care apelează această funcţie pentru data şi ora curentă
şi afişează rezultatul funcţiei.
5. Scrieţi o funcţie ce primeşte un parametru de tip Date şi scrieţi ı̂n docu-
ment marcajele necesare pentru afişarea unui calendar cu luna din para-
metru.
• scrieţi un script care apelează funcţia pentru data curentă.
• puteţi să folosiţi tabele pentru alinierea textului ca ı̂n exemplul de
mai jos. Poate să arate şi altfel:
5.22 Bibliografie
• Javascript tutorial: Javascript
Capitolul 6
Descriere: Limbajul
Javascript (II)
6.1 Resurse
• Pentru un tutorial Javascript online consultaţi: Javascript
73
74 CAPITOLUL 6. DESCRIERE: LIMBAJUL JAVASCRIPT (II)
Internal - proprietăţile declarate Internal nu posedă nume şi pot fi accesate ı̂n
mod direct. numele lor sunt ı̂ncadrate ı̂ntre [[ şi ]]: e.g. [[Class]]
• NumeObiect.NumeProprietate
• NumeObiect[”NumeProprietate”]
• NumeObiect.NumeMetoda(parametri)
window • obiectul aflat la nivelul cel mai ı̂nalt ı̂n ierarhia obiectelor dispo-
nibile
• proprietăţile lui se aplică ı̂ntregii ferestre ı̂n care se afişează docu-
mentul
• pentru paginile având cadre, fiecărui cadru ı̂i corespunde un obiect
window
<html>
<head>
< s c r i p t type=” t e x t / j a v a s c r i p t ”>
func tion getValue ( ) {
var x=document . getElementById ( ” myHeader ” )
a l e r t ( x . innerHTML )
}
</ s c r i p t >
</head>
<body>
78 CAPITOLUL 6. DESCRIERE: LIMBAJUL JAVASCRIPT (II)
<html>
<head>
</head>
<body>
<h1>Fundal v a r i a b i l </h1>
<s c r i p t >
<!−−
i f ( window . c o n f i r m ( ’ Este lumina p u t e r n i c a i n
camera ? ’ ) ) {
document . bgColor =’ blue ’ ;
document . f g C o l o r =’ y e l l o w ’ ;
}
//−−>
</ s c r i p t >
</body>
</html>
6.3. JAVASCRIPT HTML DOM 79
• window.location
• navigator
– furnizează informaţii despre navigator şi mediul său de rulare, prin in-
termediul proprietăţilor appCodeName, appName, appVersion, lan-
guage, platform, userAgent.
Exemplu
<html>
<head></head>
<body><h1>L e g a t u r i cu j a v a s c r i p t </h1>
<a h r e f =” j a v a s c r i p t : h i s t o r y . back ( ) ”>I n a p o i </a>
<a h r e f =” j a v a s c r i p t : h i s t o r y . f o r w a r d ( ) ”> I n a i n t e </a
>
</body>
</html>
80 CAPITOLUL 6. DESCRIERE: LIMBAJUL JAVASCRIPT (II)
<html>
<head>
</head>
<body>
<s c r i p t >
document . w r i t e ( ” l o c a t i o n . h r e f = ” + location .
h r e f + ”<br >”) ;
document . w r i t e ( ” l o c a t i o n . p r o t o c o l = ” +
l o c a t i o n . p r o t o c o l + ”<br >”) ;
document . w r i t e ( ” l o c a t i o n . h o s t = ” + location .
h o s t + ”<br >”) ;
document . w r i t e ( ” l o c a t i o n . hostName = ” +
l o c a t i o n . hostName + ”<br >”) ;
document . w r i t e ( ” l o c a t i o n . p o r t = ” + location .
p o r t + ”<br >”) ;
document . w r i t e ( ” l o c a t i o n . pathname = ” +
l o c a t i o n . pathname + ”<br >”) ;
document . w r i t e ( ” l o c a t i o n . hash = ” + location .
hash + ”<br >”) ;
document . w r i t e ( ” l o c a t i o n . s e a r c h = ” +
l o c a t i o n . s e a r c h + ”<br >”) ;
</ s c r i p t >
</body>
</html>
<html>
<head>
</head>
<body>
<s c r i p t >
6.4. EVENIMENTE 81
document . w r i t e (”<p>Numele n a v i g a t o r u l u i : ” +
n a v i g a t o r . appName + ” ” +
n a v i g a t o r . appVersion ) ;
document . w r i t e (”<p>P l a t f o r m a : ” + n a v i g a t o r .
platform ) ;
document . w r i t e (”<p>Agent−u t i l i z a t o r : ” +
n a v i g a t o r . userAgent ) ;
</ s c r i p t >
</body>
</html>
6.4 Evenimente
Unele marcaje oferă atribute pentru ataşarea de proceduri pentru evenimente
folosind sintaxa:
<marcaj onEveniment = ” cod J a v a S c r i p t ”>
Următoarea funcţie JavaScript este destinată programării unui cookie, şi utili-
zează obiectul document.cookie:
6.5. JAVASCRIPT COOKIES 83
f u n c t i o n s e t C o o k i e ( c name , v alue , e x p i r e d a y s ) {
var e x d a t e=new Date ( )
e x d a t e . s e t D a t e ( e x d a t e . getDate ( )+e x p i r e d a y s )
document . c o o k i e=c name+ ”=” +e s c a p e ( v a l u e )+
( ( e x p i r e d a y s==n u l l ) ? ”” : ” ; e x p i r e s=”+e x d a t e .
toGMTString ( ) )
}
6.7 Exerciţii
1. Scrieţi o funcţie javascript pentru afişarea unui ceas ı̂ntr-o pagină web.
6.8. BIBLIOGRAFIE 85
2. Creaţi un formular html care să conţină câmpurile nume şi prenume, data
naşterii, sex, stare civilă, ocupaţie, email, hobby-uri şi un buton ”Trimite
informaţii”. Câmpurile nume, prenume, data naşterii şi sex sunt obligato-
riu de completat, celelalte sunt opţionale. Asiguraţi-vă că informaţiile din
câmpurile obligatorii sunt plauzibile. În cazul ı̂n care utilizatorul nu a com-
pletat toate informaţiile obligatorii, afişaţi un mesaj ı̂n care să atenţionaţi
utilizatorul şi setaţi focusul pe primul câmp rămas invalid.
3. Creaţi un formular cu două câmpuri pentru introducerea greutăţii (ı̂n kilo-
grame) şi ı̂nălţimii (ı̂n metri), şi un buton care la apăsare afişează indicele
de masă corporală (IMC=G/h2) şi un comentariu (dacă IMC¡18,5 – sub-
ponderabilitate, 18.5¡IMC¡=22 – slab, 20¡IMC¡=24.9 – normal, 25¡IMC¡=30
– supraponderabilitate, IMC¿=30 – obezitate).
4. Creaţi o pagină ı̂n care să realizaţi un slide show cu imagini cu lăţime fixă
şi butoane de navigare ı̂nainte şi ı̂napoi printre aceste imagini.
5. Creaţi un formular ı̂n care sunt afişate trei text-box-uri ı̂n care să introduceţi
temperatura ı̂n grade Celsius, ı̂n grade Fahrenheit şi ı̂n grade Kelvin. Când
se modifică valoarea din unul dintre comboboxuri, celelalte se actualizează
corespunzător.
6.8 Bibliografie
• Javascript tutorial: Javascript
86 CAPITOLUL 6. DESCRIERE: LIMBAJUL JAVASCRIPT (II)
Capitolul 7
Descriere: Limbajul
Javascript (III)
7.1 Resurse
• Pentru un tutorial Javascript online consultaţi: Javascript
Pentru a refolosi codul Javascript, acesta va fi salvat ı̂ntr-un fişier cu extensia .js.
Scriptul trebuie inclus ı̂n documentul XHTML. Aspectul meniului este controlat
prin intermediul unui fişier CSS.
<head>
< s c r i p t s r c =”l i s t m e n u . j s ” type=” t e x t / j a v a s c r i p t ”></
script >
<l i n k r e l =” s t y l e s h e e t ” type=” t e x t / c s s ” h r e f =”l i s t m e n u
. c s s ” />
</head>
87
88 CAPITOLUL 7. DESCRIERE: LIMBAJUL JAVASCRIPT (III)
<ul>
< l i c l a s s =”t r e e n o d e ”>
<a h r e f =””>Top L e v e l Item</a>
<ul>
< l i ><a h r e f =””> L i s t Item</a></ l i >
< l i ><a h r e f =””> L i s t Item</a></ l i >
< l i ><a h r e f =””> L i s t Item</a></ l i >
< l i ><a h r e f =””> L i s t Item</a></ l i >
</ul>
</ l i >
</ul>
Dacă dorim ca un nod să fie deschis, trebuie să modificăm class=”treenode”
ı̂n class=”treenodeopen”. Codul JavaScript şi regulile CSS sunt prezentate ı̂n
continuare.
. treemenu
{
margin : 0px 20 px ;
padding : 10 px ;
l i s t −s t y l e : none ;
background−c o l o r : #EEE ;
b o r d e r : 1px s o l i d #000;
width : 200 px ;
}
. treemenu UL
{
l i s t −s t y l e : none ;
margin : 0px 10 px ;
padding : 0px 10 px ;
}
. treemenu LI
{
display : inline ;
}
. treemenu A
{
display : block ;
padding− l e f t : 12 px ;
t e x t −d e c o r a t i o n : none ;
}
. treemenu . t r e e o p e n
{
background−image : u r l ( ’ open . g i f ’ ) ;
background−r e p e a t : no−r e p e a t ;
background−p o s i t i o n : l e f t ;
}
7.2. MENIU EXPANDABIL ÎN JAVASCRIPT 89
. treemenu . t r e e c l o s e d
{
background−image : u r l ( ’ c l o s e d . g i f ’ ) ;
background−r e p e a t : no−r e p e a t ;
background−p o s i t i o n : l e f t ;
}
}
return f a l s e ;
}
submenu [ j ] . className = ( m c l a s s .
indexOf ( ” open ” ) > −1) ? ” t r e e o p e n
”:” treeclosed ”;
}
i f ( submenu [ j ] . tagName == ”UL” )
submenu [ j ] . s t y l e . d i s p l a y = ( m c l a s s .
indexOf ( ” open ” ) > −1) ? ” b l o c k ” :
” none ” ;
}
}
}
}
window . o n l o a d = i n i t M e n u s ;
7.3 Slideshow
Următorul script va ı̂ncărca o serie de imagini realizând apoi o prezentare suc-
cesivă a acestora. Scriptul va fi salvat ı̂ntr-un fişier cu numele loading.js
f u n c t i o n changeOpac ( o p a c i t y , i d ) {
var o b j = document . getElementById ( i d ) ;
// IE /Win
o b j . s t y l e . f i l t e r = ” a l p h a ( o p a c i t y :”+ o p a c i t y +”) ” ;
// Older M o z i l l a and F i r e f o x
o b j . s t y l e . MozOpacity =o p a c i t y / 1 0 1 ;
// S a f a r i 1 . 2 , newer F i r e f o x and M o z i l l a , CSS3
obj . s t y l e . opacity = opacity /101;
// S a f a r i <1.2 , Konqueror
o b j . s t y l e . KHTMLOpacity = o p a c i t y / 1 0 0 ;
}
// i n t e r s c h i m b a i m a g i n i l e
f u n c t i o n blendimage ( d i v i d , imageid , i m a g e f i l e , m i l l i s e c )
{
var s p e e d = Math . round ( m i l l i s e c / 1 0 0 ) ;
var t i m e r = 0 ;
// f a c e i m a g i n e a t r a n s p a r e n t a
changeOpac ( 1 , i m a g e i d ) ;
// schimba i m a g i n e a
document . getElementById ( i m a g e i d ) . s r c = i m a g e f i l e ;
// f a d e i n
f o r ( i = 0 ; i <= 1 0 0 ; i ++) {
window . setTimeout ( ” changeOpac ( ” + i + ” , ’ ” +
imageid + ” ’) ” ,( timer ∗ speed ) ) ;
t i m e r ++;
}
}
7.3. SLIDESHOW 91
</head>
<body>
<d i v c l a s s =”hidden”>
<img s r c =”photo1 . j p g ” />
<img s r c =”photo2 . j p g ” />
<img s r c =”photo3 . j p g ” />
</div>
<d i v i d=”b l e n d d i v”>
<img s r c =”blank . j p g ” i d=”blendimage ” />
</div>
</body>
7. Handler-ul are acces la HTML DOM şi poate să actualize pagina fără să
ı̂ntrerupă utilizatorul din lucru.
Descrierea metodelor:
Descrierea proprietăţilor:
• 0 = uninitialized
• 1 = open
• 2 = sent
• 3 = receiving
• 4 = loaded
status Returns the HTTP status code as a number (e.g. 404 for ”Not Found”
and 200 for ”OK”).
7.5 Exerciţii
1. Pornind de la exemplul disponibil la adresa http://www.google.com/apis/maps/documentation/in
realizaţi o pagină web care să includă harta oraşului Piteşti de la Google
Maps.
2. Creaţi o pagină ı̂n care să realizaţi un slide show cu imagini cu lăţime fixă
şi butoane de navigare ı̂nainte şi ı̂napoi printre aceste imagini.
7.6. BIBLIOGRAFIE 95
3. Creaţi un formular ı̂n care sunt afişate trei textbox-uri ı̂n care să introduceţi
temperatura ı̂n grade Celsius, ı̂n grade Fahrenheit şi ı̂n grade Kelvin. Când
se modifica valoarea din unul dintre comboboxuri, celelalte se actualizează
corespunzător.
4. Să se programeze o pagină HTML ı̂n care clientul poate converti orice
sumă ı̂n lei ı̂n suma echivalentă ı̂n dolari USA şi ı̂n EURO. Se va prevedea
posibilitatea modificării cursului valutar.
7.6 Bibliografie
• Javascript tutorial: Javascript
8.1 Resurse
1. Pentru un tutorial XML online consultati: XML
8.2 Introducere
XML este un meta-limbaj pentru marcarea structurală a documentelor şi este
fundamental ı̂n manipularea datelor semistructurate specifice Internet-ului. Da-
tele semistructurate se mai numesc şi date autodescriptive, ele putând fi descom-
puse şi analizate fără referire la o schemă externă deoarece conţin şi informaţiile
de descriere a datelor.
Metoda principală de descriere a acestor tipuri de date este limbajul XML.
Acesta permite fie definirea de etichete proprii ce corespund atributelor, fie se
poate utiliza o definiţie existentă de tip de document (DTD) care precizează
atributele, şi o gramatică de utilizare a acestora.
Elementele constructive ale limbajului sunt etichete ierarhizate. Fiecare ele-
ment are o secvenţă de perechi atribut-valoare şi o secvenţă de subelemente.
Aceste subelemente pot fi, la rândul lor, marcate sau pot fi simple segmente de
date de tip text.
Un document XML este considerat valid dacă satisface o gramatică, definită
fie prin DTD sau XMLSchema. XML realizează o marcare a datelor conform
semnificaţiei acestora. Un marcaj identifică conţinutul datelor, specificând tipul
de date şi nu modul lor de prezentare.
Principalul rol al limbajului XML este de a structura, salva şi a transmite
informaţii. Următorul exemplu este un mesaj de la Alice la Bob codificat XML
<mesaj>
<to>A l i c e </to>
<from>Bob</from>
<heading>Question </heading>
97
98CAPITOLUL 8. DESCRIERE: XML (EXTENDED MARKUP LANGUAGE)
8.2.1 Marcaje
Din punct de vedere sintactic, un document XML este format dintr-o colecţie
de elemente. În general, un element este un text cuprins ı̂ntre două marcaje
balansate. Sintaxa generală a unui marcaj este:
8.2.2 Elemente
Un element XML este un container format din marcaj de start, din conţinut
propriu-zis, care poate fi format din caractere şi/sau din subelemente XML şi din
marcaj de final. Un element XML poate la rândul lui să conţină sub-elemente
XML. Următorul exemplu conţine ı̂n HTML, respectiv XML, descrierea unei
lucrări pentru o conferinţă studenţească:
• Versiunea HTML
• Versiunea XML
<l u c r a r e >
<t i t l u >AJAX Keyword Suggest </ t i t l u >
<autor >Joe Limonada</autor >
<univ>U n i v e r s i t a t e a d i n P i t e s t i </univ>
<f a c u l t a t e a >Matematica s i I n f o r m a t i c a </ f a c u l t a t e a
>
<s e c t i u n e a >Programare i n I n t e r n e t </ s e c t i u n e a >
<r e f e r e n d >a c c e p t a t a </ r e f e r e n d >
<r e f e r e n d >a c c e p t a t a cu m o d i f i c a r i </ r e f e r e n d >
</ l u c r a r e >
În varianta XML se observă o mai bună structurare şi reguli mai stricte de
apariţie a marcajelor, precum şi lipsa marcajelor de formatare a textului.
8.2. INTRODUCERE 99
8.2.3 Atribute
Elementele sunt descrise prin atributele ataşate acestora. Atributele sunt pe-
rechi (nume, valoare) unice. Pentru ca un document XML să fie acceptat din
punct de vedere sintactic, el trebuie să fie bine format (well-formed). Un do-
cument este bine format dacă marcajele sunt balansate şi dacă atributele sunt
unice şi au valorile reprezentate ca şiruri de caractere ı̂ncadrate de ghilimele.
Următorul exemplu ilustrează utilizarea atributelor (limba şi tip) pentru
descrierea elementului marcat cu tag-ul ¡nume¿. De asemenea, prima linie re-
prezintă o declaraţie xml care nu este obligatorie, dar care se recomandă a fi
utilizată.
<?xml v e r s i o n=”1 . 0 ” ?>
<l u c r a r e >
<nume limba=”romana” t i p=” s h o r t p a p e r ” >AJAX Keyword
Suggest </nume>
<autor >Joe Limonada</autor >
</ l u c r a r e >
Prin marcarea cu tag-uri a unui document, acesta este divizat ı̂n părţi se-
mantice. Un exemplu ar fi ı̂mpărţirea unui text ı̂n capitole şi secţiuni. Existenţa
distincţiei dintre diferite părţi ale unui document permite clasificarea sau grupa-
rea acestora, urmată de tratarea lor diferenţiată. În XML o astfel de clasificare
ı̂ncepe prin impunerea restricţiei ca un document valid să fie compus dintr-un
singur element, numit rădăcină, dar acel element poate conţine alte elemente,
astfel ı̂ncât se poate crea o structură ierarhică a documentului.
Deci, un document XML conţine un set de informaţii organizat ı̂ntr-o struc-
tură arborescentă.
Aceasta are un element rădăcină şi orice alt element are un unic părinte.
Structura arborescentă corespunzătoare documentului precedent este reprezen-
tată ı̂n figura următoare: