Documente Academic
Documente Profesional
Documente Cultură
Tehnologii Web
CURS PENTRU ÎNVĂȚĂMÂNT LA DISTANȚĂ
AUT O RI :
Conf. Dr. Livia Sângeorzan
Lector Dr. Nicoleta Enache-David
Prep. Corina Nӑnӑu
ANUL I I I , S E M . 1
2017
1
Cuprins
Introducere ................................................................................................................................. 6
Modulul I. Introducere în tehnologiile Web............................................................................... 8
U1. Consideraţii generale privind Internet şi World Wide Web............................................ 9
M1.U1.1. Introducere ............................................................................................................. 9
M1.U1.2. Obiectivele unităţii de învăţare .............................................................................. 9
M1.U1.3. Evoluţia Web-ului................................................................................................ 10
M1.U1.4 Browsere WEB ..................................................................................................... 11
M1.U1.5 Primii paşi către construcţia unui site ................................................................... 11
M1.U1.6. Rezumat ............................................................................................................... 13
M1.U1.7. Test de evaluare a cunoştinţelor........................................................................... 13
U2. Principii de bază în web design ..................................................................................... 14
M1.U2.1. Introducere ........................................................................................................... 14
M1.U2.2. Obiectivele unităţii de învăţare ............................................................................ 14
M1.U2.3. Alinierea............................................................................................................... 15
M1.U2.4. Proximitatea ......................................................................................................... 17
M1.U2.5. Repetiţia ............................................................................................................... 19
M1.U2.6. Contrastul............................................................................................................. 20
M1.U2.7. Rezumat ............................................................................................................... 23
M1.U2.8. Test de evaluare a cunoştinţelor........................................................................... 23
Modulul II HTML (Hyper Text Markup Language)................................................................ 24
Introducere ........................................................................................................................... 24
Competenţe........................................................................................................................... 25
U1. Crearea unui document HTML ..................................................................................... 26
M2.U1.1. Introducere ........................................................................................................... 26
M2.U1.2. Obiectivele unităţii de învăţare ............................................................................ 26
M2.U1.3. Structura de bază a unui document HTML.......................................................... 26
M2.U1.4. Tag-uri HTML ..................................................................................................... 27
M2.U1.5. Tag-uri din cadrul documentului HTML ............................................................. 28
M2.U1.6. Culori, fonturi, margini ........................................................................................ 29
M2.U1.7. Tag-ul Body ......................................................................................................... 29
M2.U1.8. Tag-ul Basefont (textul de bază).......................................................................... 32
M2.U1.9. Rezumat ............................................................................................................... 34
M2.U1.10. Test de evaluare a cunoştinţelor......................................................................... 34
U2. Stilurile blocurilor de text.............................................................................................. 35
M2.U2.1. Introducere ........................................................................................................... 35
M2.U2.2. Obiectivele unităţii de învăţare ............................................................................ 35
M2.U2.3. Stiluri fizice.......................................................................................................... 35
M2.U2.4. Stiluri logice......................................................................................................... 40
M2.U2.5. Tag-ul font (configurarea font-urilor).................................................................. 42
M2.U2.6. Blocuri de texte.................................................................................................... 45
M2.U2.7. Linii orizontale..................................................................................................... 50
M2.U2.8. Rezumat ............................................................................................................... 51
M2.U2.9. Test de evaluare a cunoştinţelor........................................................................... 52
U3. Tabele ............................................................................................................................ 53
M2.U3.1. Introducere ........................................................................................................... 53
M2.U3.2. Obiectivele unităţii de învăţare ............................................................................ 53
M2.U3.3. Tag-ul <table> ..................................................................................................... 53
M2.U3.4. Alinierea tabelului în pagina web ........................................................................ 55
2
M2.U3.5. Precizarea culorilor de fond pentru un tabel ........................................................ 56
M2.U3.6. Dimensionări........................................................................................................ 58
M2.U3.7. Rezumat ............................................................................................................... 61
M2.U3.8. Test de evaluare a cunoştinţelor........................................................................... 61
U4. Imagini şi ancore ........................................................................................................... 62
M2.U4.1. Introducere ........................................................................................................... 62
M2.U4.2. Obiectivele unităţii de învăţare ............................................................................ 62
M2.U4.3. Tagul <img> ........................................................................................................ 62
M2.U4.4. Legaturi (link-uri) ................................................................................................ 66
M2.U4.5. Hărţi de imagini ................................................................................................... 71
M2.U4.6. Rezumat ............................................................................................................... 73
M2.U4.7. Test de evaluare a cunoştinţelor........................................................................... 73
U5. Formulare ...................................................................................................................... 74
M2.U5.1. Introducere ........................................................................................................... 74
M2.U5.2. Obiectivele unităţii de învăţare ............................................................................ 74
M2.U5.3. Tagul <form>....................................................................................................... 74
M2.U5.4. Tag-ul <input> ..................................................................................................... 75
M2.U5.5. Liste de selecţie <select> <option >…. </select>......................................... 76
M2.U5.6. Câmpuri de editare multiple ................................................................................ 77
M2.U5.7. Rezumat ............................................................................................................... 80
M2.U5.8. Test de evaluare a cunoştinţelor........................................................................... 80
M2.U5.9. Temă de control ................................................................................................... 80
Modulul III Reguli CSS (Cascading Style Sheets) .................................................................. 81
Introducere ........................................................................................................................... 81
Competenţe........................................................................................................................... 81
U1. Reguli CSS la nivel teoretic .......................................................................................... 82
M3.U1.1. Introducere ........................................................................................................... 82
M3.U1.2. Obiectivele unităţii de învăţare ............................................................................ 82
M3.U1.3. Integrarea regulilor CSS într-un fişier HTML..................................................... 82
M3.U1.4. Pseudo-clase şi pseudo-elemente......................................................................... 84
M3.U1.5. Precedenţa regulilor ............................................................................................. 85
M3.U1.6. Atribute CSS ........................................................................................................ 86
M3.U1.7. Rezumat ............................................................................................................... 90
M3.U1.8. Test de evaluare a cunoştinţelor........................................................................... 90
U2. Exemplificarea regulilor CSS........................................................................................ 91
M3.U2.1. Introducere ........................................................................................................... 91
M3.U2.2. Obiectivele unităţii de învăţare ............................................................................ 91
M3.U2.3. Exemplificarea utilizării foilor de stil.................................................................. 92
M3.U2.4. Test de evaluare a cunoştinţelor......................................................................... 110
Temă de control.................................................................................................................. 110
Modulul IV JavaScript ........................................................................................................... 111
Introducere ......................................................................................................................... 111
Carateristici ale limbajului JavaScript: .............................................................................. 111
Competenţe......................................................................................................................... 112
U1. Introducere în JavaScript............................................................................................. 113
M4.U1.1. Introducere ......................................................................................................... 113
M4.U1.2. Obiectivele unităţii de învăţare .......................................................................... 113
M4.U1.3. Avantajele utilizării limbajului JavaScript ........................................................ 113
M4.U1.4. Înglobarea instrucţiunilor JavaScript în HTML................................................. 115
M4.U1.5. Executarea scripturilor....................................................................................... 115
3
M4.U1.6. Rezumat ............................................................................................................. 116
M4.U1.7. Test de evaluare a cunoştinţelor......................................................................... 116
U2. Limbajul JavaScript..................................................................................................... 117
M4.U2.1. Introducere ......................................................................................................... 117
M4.U2.2. Obiectivele unităţii de învăţare .......................................................................... 117
M4.U2.3. Tipuri de date, variabile şi operatori .................................................................. 117
M4.U2.4. Instrucţiuni şi funcţii predefinite........................................................................ 118
M4.U2.5. Evenimente ........................................................................................................ 120
M4.U2.6. Obiecte ............................................................................................................... 120
M4.U2.7. Legatura între limbajul JavaScript şi elementele dintr-un formular .................. 120
M4.U2.8. Manipularea tag-urilor/nodurilor/elementelor ................................................... 122
M4.U2.9. Handlere de evenimente..................................................................................... 124
M4.U2.10. Rezumat ........................................................................................................... 126
M4.U2.11. Test de evaluare a cunoştinţelor....................................................................... 126
U3. Obiecte JavaScript ....................................................................................................... 127
M4.U3.1. Introducere ......................................................................................................... 127
M4.U3.2. Obiectivele unităţii de învăţare .......................................................................... 127
M4.U3.3. Obiectul window................................................................................................ 127
M4.U3.4. Obiectul location................................................................................................ 130
M4.U3.5. Obiectul document............................................................................................. 131
M4.U3.6. Obiectul forms ................................................................................................... 132
M4.U3.7. Obiectul image................................................................................................... 133
M4.U3.8. Obiectul date ...................................................................................................... 134
M4.U3.9. Obiectul navigator.............................................................................................. 134
M4.U3.10. Obiectul layers (all) ......................................................................................... 135
M4.U3.11. Obiectul Math .................................................................................................. 139
M4.U3.12. Obiectul Array ................................................................................................. 140
M4.U3.13. Obiectul String................................................................................................. 141
M4.U3.14. Rezumat ........................................................................................................... 143
M4.U3.15. Test de evaluare a cunoştinţelor....................................................................... 144
U4. Aplicaţii complexe în JavaScript................................................................................. 145
M4.U4.1. Introducere ......................................................................................................... 145
M4.U4.2. Obiectivele unităţii de învăţare .......................................................................... 145
M4.U4.3. Învăţarea JavaScript prin exemple..................................................................... 146
M4.U4.4. Test de evaluare a cunoştinţelor......................................................................... 159
Temă de control.................................................................................................................. 159
Modulul V Alte tehnologii pentru realizarea paginilor web .................................................. 160
Introducere ......................................................................................................................... 160
Competenţe......................................................................................................................... 160
U1. Limbajul PHP .............................................................................................................. 161
M5.U1.1. Introducere ......................................................................................................... 161
M5.U1.2. Obiectivele unităţii de învăţare .......................................................................... 161
M5.U1.3. Primii paşi în PHP.............................................................................................. 161
M5.U1.4. Noţiuni indroductive de sintaxă........................................................................ 163
M5.U1.5. Aplicaţii complexe utilizând limbajele PHP, HTML şi JavaScript ................... 166
M5.U1.6. Rezumat ............................................................................................................. 170
M5.U1.7. Test de evaluare a cunoştinţelor......................................................................... 171
U2. Flex3............................................................................................................................ 172
M5.U2.1. Introducere ......................................................................................................... 172
M5.U2.2. Obiectivele unităţii de învăţare .......................................................................... 172
4
M5.U2.3. Elemente de bază ale lui Adobe Flex3............................................................... 173
M5.U2.4. Limbajul MXML ............................................................................................... 176
M5.U2.5. ActionScript3 ..................................................................................................... 178
M5.U2.5. Rezumat ............................................................................................................. 182
M5.U2.6. Test de evaluare a cunoştinţelor......................................................................... 182
U3. Lumea virtuală pe Internet .......................................................................................... 183
M5.U3.1. Introducere ......................................................................................................... 183
M5.U3.2. Obiectivele unităţii de învăţare .......................................................................... 184
M5.U3.3. Produse soft pentru realizarea graficii 3D ......................................................... 184
M5.U3.4. Introducere în limbajul VRML .......................................................................... 187
M5.U3.5. Noduri în VRML V2.0....................................................................................... 189
M5.U3.6. Evenimente în VRML........................................................................................ 199
M5.U3.7. Noduri speciale .................................................................................................. 206
M5.U3.8. Interpolare în VRML ......................................................................................... 207
M5.U3.9. Rezumat ............................................................................................................. 209
M5.U3.10. Test de evaluare a cunoştinţelor....................................................................... 210
Modulul VI. Prelucrarea imaginilor cu Gimp 2.6 .................................................................. 211
Introducere ......................................................................................................................... 211
Competenţe......................................................................................................................... 211
U1. Concepte de bază în GIMP 2.6.................................................................................... 212
M6.U1.1. Introducere ......................................................................................................... 212
M6.U1.2. Obiectivele unităţii de învăţare .......................................................................... 212
M6.U1.3. Ferestre de lucru în GIMP 2.6 ........................................................................... 212
M6.U1.4. Lucrul cu imagini: salvare, dimensionare, comprimare, decupare, rotire ......... 213
M6.U1.5. Rezumat ............................................................................................................. 215
M6.U1.6. Test de evaluare a cunoştinţelor......................................................................... 216
U2. Lucrul cu logo-uri, butoane, bannere .......................................................................... 217
M6.U2.1. Introducere ......................................................................................................... 217
M6.U2.2. Obiectivele unităţii de învăţare .......................................................................... 217
M6.U2.3. Crearea unui logo............................................................................................... 217
M6.U2.4.Crearea unui banner ............................................................................................ 218
M6.U2.5.Realizarea unui GIF animat ................................................................................ 218
M6.U2.6. Rezumat ............................................................................................................. 222
M6.U2.7. Test de evaluare a cunoştinţelor......................................................................... 222
U3. Crearea animaţiilor complexe ..................................................................................... 223
M6.U3.1. Introducere ......................................................................................................... 223
M6.U3.2. Obiectivele unităţii de învăţare .......................................................................... 223
M6.U3.3. Lucrul cu filtre în GIMP .................................................................................... 223
M6.U3.4. Animaţii complexe............................................................................................. 226
M6.U3.5. Rezumat ............................................................................................................. 227
M6.U3.6. Test de evaluare a cunoştinţelor......................................................................... 227
Bibliografie......................................................................................................................... 228
5
Introducere
Tehnologii Web şi Webdesign reprezintă şi vor reprezenta cel mai dinamic şi fascinant
domeniu al informaticii actuale şi de viitor. Obiectivele disciplinei sunt prezentarea unor
aspecte importante ale Web-ului, atât din punct de vedere teoretic dar, şi în special aplicativ.
Se urmăreşte ca în final, studentul, având la îndemână o serie de limbaje şi instrumente
informatice, să poată crea pagini WEB atractive şi competitive.
Obiectivele cursului
Obiectivele cursului desemneazӑ diferite tipuri de achiziţii particulare la
care urmeazӑ sӑ ajungӑ studentul şi anume:
- capacitatea de a utiliza tehnologii moderne în proiectarea, implementarea şi
modificarea unui site;
- proiectarea, implementarea, modificarea şi crearea unui design atractiv
pentru situri web;
- utilizarea prelucrarilor grafice, video, multimedia şi alte mijloace de
comunicare interactive in realizarea soluţiilor software in Internet.
Competenţe conferite
După parcurgerea materialului, studentul va fi capabil să:
• înţeleagă utilitatea tehnologiilor web în realizarea site-urilor
• înţeleagă principiile de design
• realizeze proprul site care să includă diverse elemente HTML
• stilizeze modul de afişare al informaţiilor pe pagină folosind CSS
• realizeze pagini web interactive (pe parte de client) folosind JavaScript
• realizeze pagini web interactive (pe parte de server) folosind PHP
• utilizeze limbajul Flex3 pentru uşurinţa în realizarea unei aplicaţii web
• înţeleagă modul de manifestare a lumii virtuale în Internet
• realizeze propriile aplicaţii de grafică 3D (statică sau animată) pe care
să le includă mai apoi în site-uri
6
studenţii vor avea nevoie de următoarele resurse materiale şi logistice:
- computer
- conexiune la Internet
- cel puţin un browser instalat pe computer (Internet Explorer, Chrome,
Mozilla Firefox, Opera, etc)
- un soft pentru a putea realiza aplicaţii PHP (WinLAMP, XAMPP, etc)
- un soft pentru a putea realiza aplicaţii în Flex3 (Flex SDK)
- un plug-in pentru browser pentru a putea vizualiza aplicaţiile VRML
(Cortona 3D Viewer, Cosmo Player, FreeWRL, OpenVRML, etc)
- un software pentru prelucrare de imagini (GIMP 2.6)
Structura cursului
Cursul este structurat pe în 6 capitole.
Cele 6 capitole prezintӑ: Principii de bazӑ in WebDesign; limbajul
HTML; reguli CSS; limbajul JavaScript; limbajul PHP; limbajul Flex;
limbajul VRML; prelucrarea imaginii cu Gimp 2.6.
Cerinţe preliminare
Algoritmicӑ;
- Programae Java;
- POO.
Evaluarea
La sfârşitul semestrului, fiecare student va primi o notă, care va cuprinde:
• un test grilă, ce va conţine întrebări teoretice din materia prezentată în cadrul
acestui material. Testul şi rezolvarea de exerciţii şi probleme propuse la curs
vor deţine o pondere de 50% în nota finală;
• însuşirea lucrărilor de laborator şi realizarea de aplicaţii asemănătoare celor
făcute în cadrul orelor de laborator care vor deţine o pondere de 20% în nota
finală;
• prezentarea unui proiect care va cuprinde tehnologiile învӑţate şi care va
deţine o pondere de 30% în nota finală.
7
Modulul I. Introducere în tehnologiile Web
Introducere
Principala atracţie a Internetului o reprezintă World Wide Web-ul. Acesta a
constituit partea cu dezvoltarea cea mai rapidă şi cea mai populară a Internetului
(cu excepţia, probabil, a fluxului voluminos de e-mail de pe tot globul). Din punct
de vedere tehnic Web-ul, nu este decât o parte a Internetului sau mai corect spus, o
componentă, care permite navigarea prin Internet.
Web-ul reprezintă o interfaţă, o fereastră spre Internet sau o metodă de a
ajunge în locurile dorite.
Noţiunile de “interfaţă” şi “navigare”sunt importante în realizarea unui
design atragator, dar necesită şi puţină gândire şi planificare. Conceptele utilizate
sunt lucruri foarte simple, care vor schimba rapid şi cu uşurinţă banalele pagini
Web, în pagini cu aspect profesionist.
Cele patru principii de bază, care permit ca o pagină Web să arate clară,
ordonată şi profesionistă sunt: alinierea, proximitatea, repetarea şi contrastul.
Aceştia sunt factorii de bază ai oricărei lucrări tipărite pe ecran sau
altundeva.
Competenţe
La sfârşitul acestui modul studenţii vor fi capabili:
• să înţeleagă importanţa web design-ului în realizarea unui site
• să definească noţiunea de browser web şi să o exemplifice
• să utilizeze un browser web
• să înţeleagă principiile de bază ale web designului: alinierea, proximitatea,
repetarea, contrastul
• să atragă atenţia prin design asupra informaţiilor importante atunci când
realizează o pagină web
8
U1. Consideraţii generale privind Internet şi World Wide Web
M1.U1.1. Introducere
9
M1.U1.3. Evoluţia Web-ului
WWW este un sistem distribuit. Informaţiile sunt plasate în mii de site-uri. Când
utilizatorul doreşte o informaţie, apelează site-ul care a publicat-o. Fiecare site şi fiecare
pagină de informaţii au o adresă unică numită URL (Uniform Resource Locator URL =
identificator uniform al resursei). Aceată informaţie publicată într-un site poate fi oricând
actualizată de autorul site-ului.WWW devine din ce în ce mai mult un sistem interactiv.
10
Evoluţia tehnologiilor Web îl transformă într-un mediu de comunicare. De exemplu,
includerea formularelor în paginile Web permite colectarea de informaţii de la utilizator.
Un host poate găzdui mai multe tipuri de servere (FTP, Gopher, Web). Fiecare tip de
server are propriul tip de comunicaţie cu Internet-ul. Protocolul de comunicaţie al server-elor
web se numeşte HTTP (Hyper Text Transformer Protocol).
Un server web administrează mai multe site-uri web. Un site conţine una sau mai multe
pagini între care există legături. Pagina home este intrarea în site.
Piaţa are o ofertă bogată de browsere disponibile pentru diverse platforme. Există
browsere operaţionale pe sisteme cu interfaţă grafică (Macintosh, Windows), dar şi pe
sisteme cu interfaţă exclusiv textuală. Poziţia dominantă pe piaţă este ocupată de Microsoft
Internet Explorer (IE) şi Netscape Navigator (NN). IE este operaţional sub Windows
(începând cu 3.1), sub UNIX şi pentru calculatoare Apple. Netscape Navigator este
componentă a unui set de instrumente Internet, numit Netscape Communicator al firmei
Netscape Communications Corporation. Componenta numită Netscape Composer permite
editarea paginilor Web. Netscape Navigator este operaţional sub Windows, sub anumite
versiuni UNIX şi pentru Apple.
Dacă se doreşte realizarea unei pagini www, trebuie să apelăm la o firmă specializată,
numită provider. Provider-ul dispune de mai multe calculatoare foarte performante, numite
server-e şi pune la dispoziţie:
• spaţiu pe hard-ul server-ului de cel putin 10 MB;
• o adresă de Internet, de exemplu : www.adresa_student.ro.
11
În spaţiul rezervat se pot pune mai multe fişiere care conţin instrucţiuni HTML dar şi
orice alte fişiere.
Definiţie ([1]):
Prin site se înţelege ansamblul:
• spaţiu hard;
• fişierele pe care le conţine;
• adresa
Prin pagină se înţelege conţinutul afisat al unui fisier HTML.
Definiţie ([1]):
Ansamblul regulilor care trebuiesc respectate pentru schimbul informaţiilor de un
anumit tip se numeşte protocol.
Dacă dorim să transferăm fişiere către server sau invers, de la server către propriul
calculator se utilizează protocolul FTP (File Transfer Protocol).
Pentru a realize o pagină atractivă este bine să se utilizeze un design adecvat. În acest
scop se pot utiliza limbajele:
• JavaScript,
• PHP
• Java (Applet)
• Flash
• etc.
Exemple
Exemple de browsere web: Internet Explorer (IE), Mozilla Firefox, Opera,
Safari, Chrome, etc...
12
Să ne reamintim...
• Browser-ul este o aplicaţie cu trei funcţii principale: accesul la informaţii,
formatare şi afişarea informaţiilor. Utilizatorul furnizează browser-ului adresa
paginii doritE, browser-ul solicită conectarea la server-ul web, server-ul
transmite browser-ului fişierul cerut, iar la final browser-ul formatează pagina
şi o afişează pe monitorul utilizatorului.
• Prin site se înţelege ansamblul format din spaţiu hard, fişierele pe care le
conţine şi adresa
• Prin pagină se înţelege conţinutul afisat al unui fisier HTML.
M1.U1.6. Rezumat
Definiti un protocol?
Ce limbaje folosim pentru a obţine un design atrӑgӑtor?
Ce este o paginӑ web?
Ce este un site ?
Ce este MySQL ??
13
U2. Principii de bază în web design
M1.U2.1. Introducere
Oricine poate să înveţe tehnicile creării unei pagini Web. Şi oricine poate să
creeze o pagină Web urâtă. Totuşi, singurul motiv pentru care atâtea persoane
realizează pagini web slabe este faptul că nu cunosc principiile de bază ale
designului. Noţiunile de “interfaţă” şi “navigare” sunt importante în realizarea unui
design atragator, dar necesită şi un pic de gândire şi planificare. Conceptele
utilizate sunt lucruri foarte simple, care vor schimba rapid şi cu uşurinţă banalele
pagini Web, în pagini cu aspect mult mai profesionist.
Cele patru principii de bază, care permit ca o pagină Web să arate clară,
ordonată şi profesionistă sunt: alinierea, proximitatea, repetarea şi contrastul.
14
M1.U2.3. Alinierea
Aliniind o parte din text la stanga, o parte la dreapta şi o parte centrat, se crează senzaţia
de dezordine şi se transmite impresia de amatorism.
Dacă se aliniaza textul şi imaginile, este bine să îndepărtăm textul de marginea stângă.
Este obositor şi distrage atenţia să dam cu ochii de marginea stângă a paginii browserului de
fiecare dată când trecem la rândul următor. Când decalăm text (operaţie de “indentare”), se
poate face şi din partea dreaptă, impiedicând formarea rândurilor de text lungi şi dificil de
citit.
15
Text pe butoane corect realizat (vezi figura de mai sus)
Literele stau pe o linie invizibilă numită “linie de bază”. Manşeta de legături este mai
ordonată şi mai organizată dacă aliniem tot textul pe aceeaşi linie de bază. În majoritatea
software-lor create pentru Web există un buton pentru alinierea după linia de bază, de obicei
în specificaţiile pentru tabele.
16
Alinierea nu înseamnă că totul este aliniat dupa aceeaşi latură. Înseamnă pur şi simplu
că totul are aceeaşi aliniere – fie lipit la stânga, fie lipit la dreapta, fie centrat.
Când o margine bună se repetă, ea câştigă în forţă.
Exemplu
M1.U2.4. Proximitatea
Proximitatea se referă la relaţiile dintre elemente, când acestea sunt foarte aproape. Pe
o pagină, componentele aflate în legatură cu altele trebuie sa fie grupate. Dacă anumite
componente se află în apropierea altora, ele devin o singură unitate din punct de vedere
vizual, astfel informaţiile pot fi organizate mai bine şi permite astfel să dispară orice confuzie.
Se pare că există o frică faţă de spatiul liber. Pagina pare neorganizată dacă elementele
de machetare sunt împrăştiate peste tot, fiind posibil ca informaţia să devină mai greu
accesibilă.
Principiul proximităţii spune că trebuie să se grupeze componentele aflate în legătură, să
fie mutate mai aproape unele de altele, a.i. să fie percepute ca un grup unitar, nu ca o grămadă
de elemente fără legătură. Componentele şi grupurile de informaţii care nu au legatură unele
cu altele nu trebuie să se afle în proximitate (vecinătate).
17
Exemplu
Dacă complicăm problema, adică mai îngroşăm alte elemente, vom vedea că ne vom
plimba privirea între cuvintele îngroşate (Fig.2).
18
O problemă a cărţii de vizită anterioare este faptul că nici una dintre componente nu
pare a fi în legatură cu alta. Dar dacă fac o rearanjare a componentelor de pe cartea de vizită,
aceasta arată cu totul altfel, componentele care au o legatura între ele fiind grupate. Aceste
componente sunt mai aproape unele de altele (vezi figura de mai jos, Fig.3).
Proximitate nu înseamnă că totul este apropiat, ci că elementele care sunt legate din
punct de vedere al semnificaţiei lor, între care există un fel de relaţie privitoare la ceea ce
comunică, trebuie să fie conectate şi vizual.
Informatia dintr-o pagină trebuie mai întâi grupată din punct de vedere al semnificaţiei,
apoi aşezată din punct de vedere fizic pe pagină. Informaţia secundară trebuie să fie mai
distanţată, astfel încât să se vadă că este vorba despre o completare a informaţiei principale.
M1.U2.5. Repetiţia
Principiul repetiţiei spune că anumite părţi ale machetării trebuie repetat în întreaga
lucrare. Se poate repeta de exemplu un font îngroşat, o linie groasă, un anumit tip de marcaj,
un element de design, etc. Poate fi orice element care poate fi recunoscut de vizitator.
Reluăm cartea de vizită şi organizăm informaţia altfel (vezi figura de mai jos, Fig.4).
19
Observăm că după ce am privit informaţia de pe această carte de vizită, ochii rămân
agăţaţi de nume, deorece este îngroşat şi subliniat.
Dar totusi avem senzaţia de neterminare. Următoarea figură, Fig.5, prezintă aceiaşi
carte de vizită dar în care am îngroşat şi ultima informaţie, astfel ochiul se uită la nume şi la
numărul de telefon.
M1.U2.6. Contrastul
Contrastul este cea mai eficientă cale de a adăuga valoare vizuală paginii noastre.
20
Principiul contrastului spune că dacă două componente nu sunt exact la fel, atunci
trebuie să fie complet diferite.
Regula de „aur” în utilizarea contrastului spune că pentru a fi eficient, contrastul trebuie
să fie puternic.
Atenţie! Nu putem pune în contrast maro închis cu negru sau un font de 14 puncte
cu unul de 16 puncte.
Exemplu
Conditii de aplicare
Integralist
Depunere dosar care sa cuprinda : CV, Scrisoare de intentie, situatia
scolara
Participare la testul de limba straina
Universitati partenere:
University Oldenburg
University Dortmund
University of Applied Sciences Fulda,
University of Applied Sciences Wiesbaden,
Contrastul în formularul modificat este evident.
Am folosit un font mai puternic şi am îngroşat titlurile.
21
Fontul folosit l-am repetat şi în titlul paginii.
Titlul l-am transformat din majuscule în litere mici şi astfel am avut posibilitatea să
folosesc o dimensiune mai mare a fontului, pe care l-am îngroşat.
Totodată am scris titlul cu alb pe fond negru (banda neagră). Astfel am mărit contrastul.
Contrastul nu numai că face pagina mai atractivă, ci şi clarifică scopul şi organizarea
documentului.
Universitati partenere:
University Oldenburg
University Dortmund
University of Applied Sciences Fulda
University of Applied Sciences Wiesbaden,
University of Applied Sciences Mittweida
Să ne reamintim...
• Alinierea într-o pagină web înseamnă că elementele de pe acea pagină sunt
aliniate unele în raport cu celalalte
• Proximitatea se referă la relaţiile dintre elemente, când acestea sunt foarte
aproape - pe o pagină, componentele aflate în legatură cu altele trebuie sa fie
22
grupate.
• Principiul repetiţiei spune că anumite părţi ale machetării trebuie repetat în
întreaga lucrare.
• Contrastul este cea mai eficientă cale de a adăuga valoare vizuală paginii
noastre - regula de „aur” în utilizarea contrastului spune că pentru a fi
eficient, contrastul trebuie să fie puternic.
M1.U2.7. Rezumat
Pentru a realiza un site web frumos structurat şi atractiv este absolut necesar
să se respecte principiile de bază ale realizării designului unei pagini web. Aceste
principii sunt: alinierea, proximitatea, repetarea şi contrastul.
Prin aliniere înţelegem faptul că elementele de pe o pagină web vor trebui
aliniate unele în raport cu celelalte. Prin proximitate se înţelege faptul că elementele
care au un context comun şi sunt situate unele în apropierea celorlalte se vor grupa şi
vor constitui un totunitar. Repetiţia sugerează faptul că anumite proprietăţi ale
elementelor de pe pagină trebuiesc repetate pentru a produce simetrie şi senzaţia de
ordine. Contrastul este cel care ajută la scoaterea în evidenţă a anumitor informaţii
pe baza atribuirii unor proprietăţi "diametral opuse" faţă de alte elemente mai puţin
importante. Se poate crea contrast de culoare, de formă, de font, etc.
23
Modulul II HTML (Hyper Text Markup Language)
Introducere
Eticheta object este de asemenea extinsă, astfel să includă practic orice fişier
extern care se doreşte introdus într-o pagină Web. Sunt introduse etichetele ins şi
del, acronym, colgroup, fieldset, button.
Standardul oficial HTML este dat de World Wide Web Consortium (W3C)
care este afiliat la Internet Engineering Task Force (IETF). W3C a enunţat câteva
versiuni ale specificaţiei HTML, printre care şi HTML 2.0, HTML 3.0, HTML 3.2,
HTML 4.0, HTML 4.01 şi, cel mai recent, HTML 5.0. Fiecare din aceste standarde
este mai mult sau mai puţin suportat de către toate sau o parte din browsere.
La ora actuală HTML 4.0 si HTML 4.01 sunt larg utilizate şi au fost deja
publicate specificaţiile HTML 5.0. Obiectivul HTML5 este acela de a îmbogăţi
suportul pentru aplicaţiile multimedia prin aducerea laolalta a capabilităţilor oferite
de HTML4, cu XHTML şi JavaScript.
24
Să includa foi de calcul tabelar, clipuri video, sunete şi alte aplicaţii
direct în documente.
Elementul esenţial diferit adus de versiunea 4.0 şi mai ales 4.01 faţă de
versiunea 3.2 este posibilitatea separării structurii unui document de prezentarea
lui prin introducerea “stilurilor de documente” (style sheet).
Competenţe
La sfârşitul acestui modul studenţii vor fi capabili:
• să înţeleagă şi să utilizeze tag-urile HTML
• să definească şi să utilizeze tag-uri pentru introducerea textului
• să formateze un text folosind tag-uri şi atribute ale acestora
• să utilizeze tabele pe pagina web
• să formateze un tabel
• să introducă în pagina web imagini şi link-uri
• să creeze formulare
25
U1. Crearea unui document HTML
M2.U1.1. Introducere
Un marcaj poate avea unul sau mai multe atribute care se specifică prin perechi de
forma: nume="valoare".
Se recomandă ca valorile atributelor să fie plasate între ghilimele (" ").
Marcajele dintre aceste paranteze unghiulare transmit comenzi către browser pentru a
afişa pagina într-un anumit mod.
26
2. Corpul documentului care este delimitat de marcajele
<body> CORPUL TEXTULUI </body>.
Un marcaj poate fi scris atât cu litere mici, cât şi cu litere mari. Deci limbajul HTML nu
este CASE – sensitive.
<html>
<head>
Informaţia
</head>
<body>
Corpul fişierului
</body>
</html>
Un fişier HTML este creat cu orice editor de texte cu menţiunea că fişierul trebuie salvat
cu extensia html sau htm.
Terminologia HTML:
α) atribut: furnizează instrucţiuni adiţionale despre o etichetă. Informaţiile
variază de la etichetă la etichetă şi pot include subiecte cum ar fi locaţia
fişierelor, mărimea, numele lor sau stiloul lor;
β) browser: este un motor de parcurgere special care evaluează etichetele şi
conţinutul unui fişier HTML, pe care îl afişează în concordanţă cu posibilităţile
şi regulile platformei şi capacităţile sale;
χ) element: o componentă distinctivă a structurii unui document, cum ar fi titlul,
un paragraf sau o listă. Când ne referim la forma sa aplicată în cadrul unui
document, un element se mai numeşte etichetă (tag);
δ) etichetă: un cod care identifică un element pentru ca browserul sau alt program
de parcurgere să ştie în ce mod să afişeze conţinutul. Etichetele sunt încadrate
de caractere de delimitare (paranteze ascuţite) Ele sunt întotdeauna cuprinse
între paranteze unghiulare (<>) iar utilizarea literelor mici sau mari în scriere
nu are importanţă.
27
Documentele HTML sunt fişiere text (ASCII). În text sunt inserate o serie de coduri aşa
numitele tag-uri sau marcaje care stau la baza modurilor de afişare a documentului. Un
document HTML este compus din tag-uri şi text curat. Documentele au componente
asemănătoare cum ar fi titluri, tabele, liste, paragrafe, etc.
Tag-urile HTML sunt folosite tocmai pentru a marca elementele comune, care pot
conţine text, grafică sau alte elemente. Tag-urile sunt de forma – pereche început-sfârşit
<tag>.............................</tag>
conţinut arbitrar
tagul de
tagul de sfârşit care are
început
caracterul slash (/ )
Scrierea perechilor de legături:
CORECT INCORECT
CORECT
<tag1> <tag1>
<tag2> <tag2>
</tag2> </tag1>
</tag1> </tag2>
Fiecare document HTML, încă de la creare are două părţi principale: un antet şi un corp.
Chiar dacă nu sunt special delimitate, HTML presupune existenţa lor. HTML oferă de
asemenea şansa de a adăuga şi alte componente funcţionale paginii, sub forma foilor de stil,
scripturilor şi seturilor de cadre.
Deşi fac parte din definirea unui document HTML, două etichete există în afara
structurii documentului: doctype şi html. Prima identifică versiunea de HTML folosită pentru
pagina respectivă şi regulile pe care acestea le respectă. A doua etichetă identifică un limbaj
global şi direcţia textului pentru documentul respectiv, în plus marchează începutul şi sfârşitul
conţinutului HTML.
28
Documentul HTML se indică prin tag-ul HTML
<HTML>.........................</HTML>
Vom prezenta numai o parte din tag-urile HTML, care sunt importante în realizarea
unui design atragator.
Tagul body are o listă de atribute incluse după denumirea tagului şi delimitate prin
spaţiu. Proprietăţile principale ale acestui tag sunt cele care definesc fundalul paginii, fie că
este vorba de o culoare sau de o imagine.
Sintaxa:
<body bgcolor = culoare>
Semantica:
culoare se stabileşte după modelul precizat în sect1.
29
Exemplu
Culoarea textului
Definirea culorii textului pentru o pagină Web se face prin intermediul atributului text
al etichetei <body>
Sintaxa:
<body text = culoare>
Semantica:
culoare se precizează la fel ca la exemplul precedent.
Exemplu
30
Atribute multiple
O etichetă poate să aibă mai multe atribute.
Sintaxa:
<eticheta atribut1 = valoare1 atribut2 = valoare2 atribut3 = valoare3>
Exemplu
31
Marginile paginii Web
32
Font (style)
Sintaxa:
<basefont size = număr color = culoare style = font>
Semantica:
număr poate lua una dintre valorile din mulţimea {1, 2, 3, 4, 5, 6, 7 }
(valoarea 1 fiind pentru fontul cel mai mic şi valoarea 7 – pentru fontul cel mai
mare)
culoare se precizează prin nume sau prin RGB
font poate fi un font generic din multimea {„serif”, “sans serif”, ”cursive”,
”monospace”, ”fantasy”, ”Times New Roman”, “Helvetica”, “Arial” }
Eticheta (Tag-ul) Basefont este valabilă până la sfârşitul paginii sau până apare
următoarea etichetă <basefont>.
În cazul în care eticheta <basefont> lipseşte, textul din pagina Web are atributele
prestabilite şi anume:
size=3,
color=”black”
style=”Times New Roman”
33
Să se realizeze o pagină web de culoare albastru deschis în care să se scrie
o poezie cu 2 strofe. Titlul poeziei va avea culoarea verde, prima strofă va fi scrisă
cu maro, iar cea de-a doua cu roşu. Titlul va avea dimensiunea mai mare decât restul
poeziei.
M2.U1.9. Rezumat
Codul HTML din spatele unei pagini web se scrie cu ajutorul etichetelor (Tag-
urilor). O etichetă este de forma – pereche început-sfârşit şi numele acesteia se scrie
între paranteze unghiulare. O etichetă poate avea unul sau mai multe atribute, acestea
aducând informaţii adiţionale etichetei.
Tag-ul Body este cel care specifică proprietăţile întregii pagini web. Se pot
seta astfel: culoarea de fundal a paginii, culoarea textului, marginile paginii, etc.
Tag-ul Basefont stabileşte fontul de bază al paginii şi este valabil până la
sfârşitul paginii sau până apare următoarea etichetă <Basefont>.
34
U2. Stilurile blocurilor de text
M2.U2.1. Introducere
Unul dintre elementele principale şi poate cel mai important dintr-o pagină
web îl constituie textul. Acesta este cel care poartă în sine informaţia pe care
creatorul site-ului doreşte să o transmită cititorilor. Pentru ca informaţia să ajungă
la publicul ţintă aşa cum este aşteptat, aceasta trebuie expusă într-un mod plăcut.
Modurile de reprezentare ale textului într-o pagină web sunt foarte diverse
din punctul de vedere al impactului vizual.
Se pot alege diferite stiluri pentru caracterele din textul unei pagini web,
putându-se astfel seta: dimensiunea, culoarea, marginile, grosimea, înclinarea,
tipul de subliniere, etc.
Un bloc de text apare îngroşat în pagină dacă este inclus între <b> text </b> .
Un bloc de text inclus între etichetele <i> text </i> este scris cu caractere cursive.
Aceste tag-uri sunt valabile, dar sunt mai vechi. Variantele mai noi pentru scrierea
textului îngroşat sunt realizate cu ajutorul etichetei <strong>, iar pentru scrierea textului
înclinat se foloseşte eticheta <em>.
35
Exemplu
Text scris normal vs text scris îngroşat.
36
Exemplu
Text scris normal vs text scris înclinat.
Un text inclus între etichetele <big> text </big> este scris cu caractere mai mari cu o
unitate decât dimensiunea curentă.
37
Un text inclus între etichetele <small> text </small> este scris cu caractere mai mici cu
o unitate decât dimensiunea curentă.
Exemplu
38
Caractere:„indice superior” şi „ indice inferior”
39
Caractere: subliniate şi secţionate
Eticheta de tip bloc <u> text </u> inserează un bloc de caractere subliniate.
Etichetele <strike> şi </strike> sau <s> şi </s> inserează un bloc de caractere secţionate
la mijloc cu o linie orizontală.
Stilurile logice sunt bazate pe cele fizice. Modul lor de acţiune depinde în mare măsură
de de browserul utilizat.
Următoarele două etichete pun în evidenţă prin stilul cursiv fragmente de text:
<cite> text </cite> (“cite” = citat)
<em> text </em> (“emphasize” = a evidenţia)
Exemplu
Aceste două etichete de mai jos sunt echivalente cu eticheta <i> …</i>.
40
Blocuri de caractere monospaţiate
41
M2.U2.5. Tag-ul font (configurarea font-urilor)
Pentru a scrie un text cu o anumita culoare se încadrează acest text între delimitatorii
<font> text</font> în felul următor:
Sintaxa:
<font color = culoare>text de culoarea specificată </font>
Semantica:
culoare va reprezenta culoarea fontului
42
Familia fontului
Exemplu
43
Mărimea fontului
O altă metodă de stabilire a mărimii unui font este prin utilizarea atributului „point-size”
al etichetei <font> şi reprezintă mărimea fontului în puncte tipografice. Acest atribut poate
lua ca si valori orice numar natural pozitiv.
44
Grosimea unui font
Valorile pe care le poate lua atributul font-weight sunt: 100, 200, 300, 400, 500, 600,
700, 800 şi 900 (100 – fontul cel mai subţire, 900 – fontul cel mai gros)
45
b) Indentarea unui bloc de text
Un bloc de text indentat este un bloc de text la care marginea din stânga a textului este
deplasată la o anumită distanţă de marginea paginii.
Codul HTML al acestei pagini îl veţi putea vedea în imaginea de mai jos.
46
Blocuri <div>
Atributul “nowrap” permite întreruperea rândurilor acolo unde este precizat acest
lucru.
Blocul preformatat
Etichetele <pre> … </pre> permit păstrarea caracteristicilor textului aşa cum a fost
introdus în fişier, deci ia în considerare caracterele “spaţiu”, “tab” şi “CR/LF” (enter la sfârşit
de linie).
Blocul <pre> ... </pre> poate fi folosit pentru a insera rânduri vide.
Caracterul spaţiu, pentru a putea fi luat în considerare trebuie precizat prin „ ”.
47
Blocuri paragraf (tag-ul <p>)
48
Blocuri de titlu
Titlurile (headers) de capitole sau paragrafe pot avea diferite dimensiuni. Ele pot fi
introduse cu tag-ul <hx> text </hx> unde x poate lua valori din multimea {1,2,3,4,5,6}
Se acceptă atributul align de către aceste etichete pentru alinierea titlului blocului de
text la stânga (modul prestabilit), în centru şi la dreapta.
Tag-ul <h1> scrie titlul cu caracterele cele mai mari şi cele mai îngroşate.
Tag-ul <h6> foloseşte caracterele cele mai mici.
Exemplu
<h3>…(bloc de text)…</h3>
49
M2.U2.7. Linii orizontale
Se pot insera linii orizontale într-o pagină web cu ajutorul etichetei <hr>.
50
Să se realizeze o pagină web în care să se folosească toate tag-urile şi atributele
aferente acestora care au fost prezentate în această unitate de învăţare.
M2.U2.8. Rezumat
<hr> - este eticheta care ajută la inserarea unei linii orizontale în pagină, linie
căreia putem să îi setăm lungimea, grosimea, culoarea, alinierea, umbra, etc.
51
M2.U2.9. Test de evaluare a cunoştinţelor
52
U3. Tabele
M2.U3.1. Introducere
Un alt tag important din HTML este tag-ul <table>. Acesta permite
adaugarea tabelelor într-o pagină web. Tabelele se folosesc pentru a
dispune informaţiile de pe pagină sub formă de structură tabelară, dar nu în
ultimul rând pentru a oferi structura întregii pagini web.
Tabelele sunt formate din rânduri, iar rândurile din celule cu
informaţii. În celula unui tabel se pot regăsi diverse elemente: text, liste,
alte tabele, etc.
53
Observaţii:
Valoarea prestabilită a grosimii chenarului tabelului este de 1 pixel.
Dacă valoarea grosimii chenarului este egală cu 0, atunci nu avem chenar.
Exemplu
54
M2.U3.4. Alinierea tabelului în pagina web
55
M2.U3.5. Precizarea culorilor de fond pentru un tabel
56
Atenţie:
Dacă avem definite mai multe atribute bgcolor, se vor lua în considerare în ordinea:
<td>, <tr>, <table>. Tag-ul <table> are prioritatea cea mai mică.
Exemplu
Adaugarea în pagina web a unui tabel care are culori diferite pentru
fundalul fiecărei celule cu text.
57
M2.U3.6. Dimensionări
Exemplu
58
Codul HTML care descrie tabelele de mai sus poate fi văzut în imaginea de pe pagina
următoare.
59
• numere întregi între 1 şi 100, urmate de semnul %, reprezintă o fracţiune din lăţimea,
respectiv înălţimea, totală a paginii.
60
M2.U3.7. Rezumat
Tabelul este un element important care se poate regăsi într-o pagină web. Acesta se
introduce pe pagină folosind tag-ul <table>. Conţinutul tabelului este repezentat de către
rândurile acestuia, care se introduc cu ajutorul tag-ului <tr>, iar conţinutul rândurilor este
reprezentat de către celulele cu date, care e introduc la rândul lor cu ajutorul tag-ului <td>.
Întreg tabelul, dar şi rândurile sau celulele pot fi colorate folosind atributul bgcolor.
Tabelul poate fi pozitionat pe pagina la stanga, la dreapta sau pe centru folosind
atributul align.
Întreg tabelul, dar şi rândurile sau celulele pot fi dimensionate folosind atributele
width şi height.
Scrieţi codul HTML pentru realizarea unui tabel cu 3 linii si 4 coloane, având chenarul de
culoare albastră.
61
U4. Imagini şi ancore
M2.U4.1. Introducere
Inserarea într-o pagină Web a unei imagine se face utilizând eticheta <img> cu atributul
“src”, iar valoarea acestui atribut este adresa URL a imaginii.
Dacă se doreşte adăugarea unui chenar în jurul imaginii se foloseşte atributul border al
etichetei <img> care poate lua valori numere întregi pozitive.
Dimensiunile unei imagini pot fi modificate prin intermediul atributelor “width” şi
“height” ale etichetei <img>.
Acestea pot avea ca şi valori :
• numere întregi pozitive ce reprezintă numărul de pixeli
62
•numere de la 1 la 100 urmate de % ce reprezintă procente din lăţimea, respectiv din
înălţimea blocului în care se află imaginea.
Precizarea dimensiunilor spaţiului ocupat de o imagine duce la creşterea vitezei de
încărcare a paginii.
Alinierea unei imagini în pagina Web
Alinierea se face prin intermediul atributului “align” al etichetei <img>, care ia valorile:
• “left” – aliniere la stânga
• “right” – aliniere la dreapta
• “top” – aliniere deasupra. Partea de sus a imaginii se aliniază cu partea de sus a
textului ce precede imaginea.
• “middle” – aliniere la mijloc
• “bottom” sau “baseline” – aliniere la bază
Exemplu
63
Alinierea textului în jurul unei imagini
Se face cu atributele “hspace” şi “vspace” ale etichetei <img> care precizează distanţa
în pixeli pe orizontală şi pe verticală, dintre imagine si elementele din pagină.
64
Imaginea pentru fondul unei pagini Web
Se poate folosi imaginea pentru a stabili fondul unei pagini Web cu ajutorul atributului
“background” al etichetei <body> care ia ca valoare adresa URL a imaginii.
65
Imagini ca legături
Imaginea trebuie să apară ca element de legatură în cadrul tagulul <a> imagine </a>
Exemplu
66
Link către un site
67
Legătură către o ancoră din acelaşi document.
Acest lucru se realizează utilizând perechea de tag-uri:
<a href=”#eticheta”> SALT </a>
<a name = “etic> AICI am facut SALT</a>
68
Ancoră aflată în alt document
69
O pagină nouă într-o fereastră nouă
70
M2.U4.5. Hărţi de imagini
71
• „circle” (pentru zone de formă circulară);
• „poly” (pentru zone de formă poligonală);
• default” (pentru porţiunile imaginii care nu se încadrează în nici una
dintre categoriile anterioare)
2) „coords” determină coordonatele zonei
3) „href” primeşte adresa URL a paginii indicate de legatura zonei respective.
72
Să se realizeze o pagină web care să conţină o imagine cu mai multe persoane.
Atunci când se va da click pe o persoană se va deschide o pagină cu imagini si date
despre persoana din imagine, pe care s-a dat click.
M2.U4.6. Rezumat
73
U5. Formulare
M2.U5.1. Introducere
74
Form-ul are 2 atribute importante: action şi method.
Sintaxa:
<form action = valoare_a method = valoare_m> ……</form>
Semantica:
valoare_a poate lua ca şi valoare:
• adresa URL a unui script aflat pe server, care primeşte datele formularului; se
face o prelucrare a datelor şi se expediază un răspuns utilizatorului dacă e cazul
• adresa de email, caz în care datele formularului sunt transmise prin poşta
electronică
valoare_m poate lua 2 valori:
• get este valoare implicită (datele din formular se adauga la adresa URL
specifcata in action);
• post (datele sunt expediate separat; se foloseşte când sunt transmise cantităţi
mari de date ).
Exemple:
action = “www…/…”
↓
Script
action = “mailto: livia.sangeorzan@yahoo.com”
Sintaxa:
<input type = name = value = >
Semantica:
type poate lua valorile următoare
• text
• radio (atributul checked selectează butonul la prima activare a paginii);
• checkbox;
• submit – trimite
• reset – şterge (resetează);
• password – parola (când scriem se vad asterixuri, dar la server
(destinatar) se vede totusi parola decodificata).
name este numele ataşat casetei sau butonului. Nu reprezintă conţinutul butonului
sau casetei.
value este conţinutul ce apare scris pe buton sau conţinutul casetei sau în cazul
butoanelor radio numele butoanelor care fac parte din aceeaşi familie;
75
M2.U5.5. Liste de selecţie <select> <option >…. </select>
O listă de selecţie permite alegerea unuia sau mai multor elemente dintr-o listă finită.
Are 2 atribute importante : name şi size.
Elementele dintr-o listă se introduc cu tag-ul <option>.
Sintaxa:
<select name = nume size = numar>
<option value = valoare_1 selected> Element_1
<option value = valoare_2 > Element_2
<option value = valoare_3> Element_3
</select>.
Semantica:
name numele listei de selecţie
size este un număr întreg pozitiv şi precizează câte elemente din listă sunt
vizibile la un moment dat
<option> este tag-ul care include elementele listei. Server-ul primeşte perechea
alcătuită din conţinutul din value şi valoarea de după tagul option
selected permite selectarea prestabilită a unui element al listei
Exemplul următor ilustrează un formular care conţine o listă de selecţie şi două butoane.
Codul HTML aferent acestui exemplu se poate vizualiza în imaginea de mai jos.
76
Lista de selecţie cu selecţii multiple
Are aceeaşi sintaxă ca şi lista de selecţie descrisă mai sus, dar în plus are atributul
multiple în tag-ul select.
Sintaxa:
<textarea listă de atribute> text </textarea>
Semantica:
Din lista de atribute enumerăm:
• cols (nr de caractere afişate într-o linie),
• rows (nr de linii afişate simultan),
• name (permite ataşarea unui nume),
• wrap care determină comportamentul câmpului de editare faţă de sfârşitul de linie.
Atributul poate lua valorile: off, hard, soft.
77
Între tag-ul de intrare şi cel de ieşire ale formularului sunt inserate, în principal,
controalele formularului. Un control este o formă de interacţiune a utilizatorului cu
formularul. Putem prezenta conform tabelului de mai jos principalele controale într-un
formular HTML prezentate mai sus:
78
Evenimentele „onfocus” şi „onblur”
O pagina poate conţine mai multe elemente prin care putem introduce date. Dacă
introducem un şir de caractere într-un câmp de editare spunem că respectivul element
primeşte focus-ul.
• Evenimentul onfocus are loc atunci când un element primeşte focus-ul;
• Evenimentul onblur are loc atunci când elementul pierde focusul.
Exemplu
Într-o casetă trebuie să se introducă un text; în cazul în care se face click,
fară a introduce ceva, apare un mesaj, prin care se cere reintroducerea unei valori. Nu
putem pleca mai departe pâna când nu am introdus ceva.
79
Să se realizeze o pagină web care să conţină scheletul unui CV european. Această
pagină va conţine elemente de tip formular şi va permite introducerea datelor de
către utilizator. Se vor folosi toate elementele de tip formular studiate la această
unitate de învăţare.
M2.U5.7. Rezumat
80
Modulul III Reguli CSS (Cascading Style Sheets)
Introducere
CSS este un acronim pentru Cascading Style Sheets (foi de stil în cascadă).
CSS este utilizat la îmbunătăţirea prezentării unei pagini Web (adică a modului în
care browser-ul o afişează). CSS permite stabilirea proprietăţilor pentru elementele
HTML utilizând o gamă uriaşă de valori. Având la dispoziţie mai mult de 100 de
proprietăţi, CSS este un instrument avansat destinat proiectanţilor Web pentru
crearea de site-uri profesionale, care nu pot fi construite folosind atribute HTML
obişnuite. În CSS există posibilitatea să se aşeze elementele în poziţiile dorite (alta
decât cea în cazul fluxului normal).
Una dintre caracteristicile fundamentale ale CSS este faptul că autorul poate
ataşa un stil, iar cititorul paginii respective poate ataşa altul, deci se obţine un set
de reguli în cascadă. În acest caz existǎ un set de reguli de prioritate care va decide
care regulǎ se va aplica.
Exista 4 tipuri de stiluri CSS: implicite, externe, interne şi inline.
Competenţe
81
U1. Reguli CSS la nivel teoretic
M3.U1.1. Introducere
<HTML>
<HEAD>
<TITLE> Exemplu </TITLE>
<STYLE TYPE=”text/css”>
H1 { color: green; }
</STYLE>
</HEAD>
82
<BODY>
<H1> Acest heading este verde datoritǎ unei reguli CSS </H1>
</BODY>
</HTML>
În exemplul anterior regula CSS este specificatǎ în interiorul fişierului HTML. Prin
aceastǎ metodǎ modificările în cazul fişierelor mari devin greoaie de aceea se recomandǎ
scrierea regulilor într-un fişier separat de unde sǎ fie importate în fişierul HTML. Pentru
exemplificare editǎm un fişier pe care îl denumim „reguli.css”. În acest fişier scriem
H1 { color: green }. Documentul HTML care importǎ acest regulile din acest fişier este de
forma urmǎtoare:
<HTML>
<HEAD>
<TITLE> Exemplu de import </TITLE>
<LINK REL=”stylesheet” HREF=”c:\reguli.css” TYPE=”text/css”>
</HEAD>
<BODY>
<H1> Acest heading este verde datoritǎ unei reguli importate </H1>
</BODY>
</HTML>
Pentru a reduce dimensiunea fişierelor selectorii se pot grupa, separarea lor făcându-se
prin virgulǎ.
H1, H2, H3, P { font-family: helvetica }
Class ca selector
O regulǎ de genul H1 { color: blue } se aplicǎ mereu când apare selectorul H1 indiferent
dacǎ vrem sau nu. Pentru a evita acest lucru se folosesc clasele.
Fie fişierul reguli.css, fişierul în care scriem regulile pe care le vom importa.
Sintaxa pentru definirea unei clase este următoarea: H1.clasa_noastrǎ { color: red }
83
Clasa definitǎ mai sus se poate aplica numai pentru H1.
Dacǎ am avea <P CLASS=”clasa_noastrǎ” nu se obţine nici un efect. Totuşi se pot
defini clase generale astfel: .clasa_doi { color: blue }. O astfel de clasa poate fi aplicatǎ
oricărui selector care suportǎ specificarea unei culori.
ID ca selector
O construcţie asemănătoare cu CLASS este ID.
Comentarii
Comentariile sunt asemănătoare cu cele din limbajul de programare C.
EM { color: lime } /* un verde sǎ te doară ochii */
Pseudo-clasa anchor
Aceastǎ pseudo-clasǎ permite formatarea link-urilor din cadrul unui pagini web.
Prin aceste reguli toate link-urile din pagina HTML vor lua culorile specificate. Pseudo-
clasa anchor nu are efect decât asupra selectorului A, de aceea regula: A:link { color: red } are
acelaşi efect ca şi :link { color: red }.De asemenea pseudo-clasele pot fi combinate cu clasele
obişnuite astfel: A.clasa_mea:link { color: red }.
Pseudo-elemente
1. first-line
Permite specificarea unui anumit stil pentru prima linie dintr-un paragraf.
<STYLE TYPE="text/css">
P:first-line { font-variant: small-caps }
</STYLE>
Presupunând ca prima linie se terminǎ dupǎ cuvântul „an” în pagina web acest text va
apare sub forma:
84
THE FIRST LINE OF AN
article in Newsweek.
2. first-letter
Asemǎnǎtor cu first-line acest pseudo-element permite specificarea unui stil pentru
prima literǎ dintr-un text.
De multe ori se întâmplǎ ca într-un punct în cadrul unui fişier HTML sǎ fie valabile mai
multe reguli CSS. Pentru a rezolva astfel de situaţii trebuie stabilite nişte reguli de prioritate.
'important'
'Important' este un cuvânt rezervat prin care i se dǎ unei reguli CSS o prioritate mai
mare decât unei reguli obişnuite.
P { font-size: 12pt ! important; font-style: italic }
Reguli:
Stiluri in-line
85
• „href” cu valoarea adresa URL a fişierului creat, care conţine regulile css.
Font
• font-family Valoarea: nume de font. Exemple: helvetica, serif, sans-serif,
cursive, monospace, fantasy, etc
• BODY { font-family: gill, helvetica, sans-serif }
• font-style Valoarea: normal | italic | oblique
• font-variant Valoarea: normal | small-caps
• font-weight Valoarea: normal | bold | bolder | lighter | 100 | 200 | 300 | 400 |
500 | 600 | 700 | 800 | 900. Valoarea: normal echivaleazǎ cu 400, iar bold cu 700.
• font-size Valoarea: <absolute-size>|<relative-size>|<length>|<percentage>
• absolute-size poate lua una din valorile: xx-small | x-small | small | medium |
large | x-large | xx-large
• relative-size poate lua una din valorile: larger sau smaller
• percentage
Exemplu
P { font-size: 120% }
H1, H2, H3 { font-style: italic }
Exemplu
P {font-size: 9px }
86
Dimensiunea fontului poate fi specificatǎ în centimetri(cm), milimetri(mm), pixeli(px),
ţoli(in), puncte(pt 1pt=1/72in), etc.
1 in=72 pt=2.54 cm=6 pc
Background şi culoare
Text
• word-spacing Valoarea: normal | <lenght> (dimensiunea dintre cuvinte)
• letter-spacing Valoarea: normal | <lenght> (dimensiunea dintre litere)
• text-decoration Poate lua una din valorile: underline, overline, line-through, blink.
• vertical-align Valoarea: baseline | sub | super | top | text-top | middle | bottom | text-
bottom | <percentage>
• text-transform Valoarea: capitalize | uppercase | lowercase | none
• text-align Valoarea: left, right, center, justify
Se ştie că un text afişat pe monitor cu culoarea galbenă se vede foarte slab atunci când
este tipărit la o imprimantă alb-negru. Această deficienţă poate fi corectată dacă se utilizează
stiluri potrivite pentru fiecare mediu. Mediul pentru care este valabil un stil este specificat
prin atributul media al elementului <style>, care poate lua urmatoarele valori posibile:
• “screen” (pentru monitoare)
• “print” (pentru imprimante)
• “projection” (pentru proiectoare video)
• “braille” (pentru terminale destinate nevăzătorilor)
87
• “speech” (pentru terminale audio)
• “all” (pentru toate tipurile de medii)
Exemplu
<html>
<head><title> Exemplu MEDIA</title>
<style type-“text/css” media=”screen”>
p {color: yellow;}
</style>
<style type=”text/css” media=”print”>
p {color: black;}
</style>
</head>
<body>
<p> Acest paragraf va avea culoarea galbena pe monitor si culoarea neagra la
imprimare.
</body>
</html>
Marginile blocului
Marginile unui bloc reprezintă distanţa minimă dintre chenarele a două blocuri vecine.
Pentru a stabli marginile unui bloc se utilizează atributele:
• margin-left
• margin-right
• margin-top
• margin-bottom
• margin.
88
Dacă sunt indicate pentru proprietatea „margin” valori separate prin spaţiu, acestea
reprezintă dimensiunile în ordinea urmatoare: sus, dreapta, jos, stânga.
Dimensiunile care lipsesc preiau valorile de la elementele opuse.
Dacă este dată o singură valoare, aceasta va fi folosită pentru toate direcţiile.
Valorile posibile ale acestor atribute sunt:
• “auto”
• marime (număr urmat de o unitate de măsură)
• procent din lăţimea paginii (număr întreg între 0 şi 100, urmat de simbolul %)
Se va seta cu ajutorul atributelor de mai jos se stabileşte distanţa dintre conţinutul unui
bloc (text, imagini, etc) şi chenarul acestuia.
Atribute:
• padding-top
• padding-right
• padding-bottom
• padding-left
• padding
Atribute:
• Border-top-width
• Border-right-width
• Border-bottom-width
• Border-left-width
• Border-width
Valori posibile:
• “thin”, “medium” sau “thick”
• Numere întregi pozitive urmate de o unitate de măsură
Stilul chenarului
89
Culoarea chenarului
Să se realizeze structura unui tabel fără a folosi tag-ul <table>, ci folosind doar tag-
uri <div> stilizate. Celulele acestui tabel vor avea culori diferite. Colorarea nu se va
face pe baza atributului bgcolor al tag-urilor HTML ci cu reguli CSS.
M3.U1.7. Rezumat
CSS este un acronim pentru Cascading Style Sheets (foi de stil în cascadă).
CSS este utilizat la îmbunătăţirea prezentării unei pagini Web (adică a modului în care
browser-ul o afişează).
Pentru a reduce dimensiunea fişierelor selectorii se pot grupa, separarea lor
făcându-se prin virgulǎ. Asemănător se pot grupa şi declaraţiile.
Sintaxa pentru definirea unei clase este următoarea:
.clasa_noastrǎ { regulă CSS }
În fişierul HTM,L când vrem sǎ aplicǎm regula respectivă unui tag, scriem astfel:
<nume_tag class=”clasa_noastrǎ”>Conţinut tag </nume_tag>.
Precedenţa regulilor CSS este următoarea:
1) Regula care conţine `! important` suprascrie o regulǎ obişnuitǎ.
2) Specificitatea unui selector: selectorii mai specifici îi suprascriu pe cei mai
generali. Specificitatea se obţine prin concatenarea a trei numere: numǎrul de
atribute ID din cadrul selectorului (a), numǎrul de atribute CLASS (b) şi
numǎrul de tag-uri din selector (c).
90
U2. Exemplificarea regulilor CSS
M3.U2.1. Introducere
Astfel, exemplele care vor fi oferite în această unitate vor servi studentului
ca un plus de claritate şi ca un model pentru aplicaţiile pe care le va avea de
realizat ca şi temă.
91
M3.U2.3. Exemplificarea utilizării foilor de stil
92
Stiluri identificate cu ajutorul id-ului
Stiluri inline
93
Stil definit ca fişier extern
94
Exemplu de culoare a fontului pentru tag-urile p, b şi h1
95
Exemplu de stil pentru culoarea fontului textului
96
Exemplu de imagine cu stil
97
98
Exemplu de stil pentru distanţa dintre rândurile de text
99
Exemplu de stil pentru grosimea fontului
100
Exemple stiluri pentru chenare
101
Alt exemplu cu chenare
102
Exemplu de creare a unui meniu de navigare cu ajutorul stilurilor
Vom observa că meniul s-a realizat doar cu ajutorul unei liste neordonate şi al stilurilor
103
Un exemplu cu imagini stilizate folosind CSS3
În <body> se poate observa ca nu este pus decât un <div> şi patru tag-uri <img>,
fiecare dintre acestea având câte o clasă.
În imaginile de mai jos va fi prezantat codul CSS aferent fiecăreia din aceste 5 clase:
shadow, shadow2, one-edge-shadow, rotation şi border-image.
Se poate observa că stilurile din CSS3 sunt prefixate de –moz–, –webkit–, –o–, –ms–.
Stilul care este prefixat de –moz– este vizibil pe Mozilla Firefox, cel prefixat de –webkit– este
pentru Chrome sau Safari, cel prefixat de –o– este pentru Opera, iar cel prefixat de –ms– este
pentru Internet Explorer. Avem nevoie de prefixări pentru fiecare browser în parte întrucât
CSS3 nu a intrat încă în standardele de codificare ale W3C.
104
105
Pentru a aşeza mai multe imagini în straturi va trebui să folosim stilul z-index care ne
indică adâncimea la care se găseşte imaginea.
Cu cât valoarea lui z-index este mai mică, cu atât imaginea va fi într-un plan mai
îndepărtat.
106
107
Un alt exemplu de CSS este prezentat pentru stilizarea butoanelor. Acestea nu sunt de
fapt decat link-uri care, pe baza stilurilor, vor arata sub forma de buton.
108
Pentru realizarea acestora s-a folosit biblioteca Bootstrap care contine CSS, JavaScript
şi diferite font-uri.
În codul sursă nu a trebuit decât apelarea unei clase de css în interiorul tag-ului <a>
<a href=”#” class=”btn-success”> Detalii</a> | <a href=”#” class=”btn-success”>
Editeaza</a> | <a href=”#” class=”btn-success”> Sterge</a>
În aplicaţia web a fost inclus si fisierul css „Bootstrap.css” care a fost descărcat în
prealabil de pe internet. Codul de mai sus este aferent butoanelor exemplificate.
109
Să se realizeze o pagină web care să conţină un meniu de restaurant. Aplicaţia va
trebui să conţină cât mai multe imagini şi informaţii, iar stilizarea acesteia se va face
doar cu ajutorul regulilor CSS. Nu se va folosi stilizarea pe baza atributelor tag-
urilor HTML.
Temă de control
110
Modulul IV JavaScript
Introducere
111
Competenţe
112
U1. Introducere în JavaScript
M4.U1.1. Introducere
Codul JavaScript este găzduit în documente HTML şi executat din interiorul lor.
JavaScript foloseşte HTML ca modalitate de a sări în cadrul de lucru al aplicaţiilor pentru
Web şi-i extinde capacităţile normale, asigurând evenimente pentru etichete HTML şi
permiţând acestui cod condus de evenimente să se execute din interiorul său.
113
JavaScript este un limbaj de scriptare. Software-rul care rulează programul JavaScript
scris este motorul de intrepretare din mediu - NetscapeNavigator, Microsoft Internet Explorer
sau unul din motoarele pe parte de server. Când este inclus într-un document HTML,
JavaScript depinde de browser pentru a fi recunoscut. Dacă browserul nu îl recunoaşte,
programul va fi ignorat sau mai rău, poate fi afişat ca text pe pagină.
JavaScript diferă mult de limbajele stricte în privinţa tipului de date, JavaScript este
mult mai flexibil. Variabilele de un anumit tip pot fi declarate, dar nu este obligatoriu ca acest
lucru să fie făcut. Se poate lucra cu o variabilă chiar dacă nu i se cunoaşte tipul specific
înainte de rulare.
Codul JavaScript scris într-o aplicaţie Web poate răspunde la evenimente generate de
utilizator sau de sistem. În sine, limbajul JavaScript este echipat pentu a trata evenimente.
Obiectele HTML, de exemplu butoanele sau câmpurile de text, sunt îmbunătăţite pentru a
accepta handlere de evenimente.
Java şi JavaScript au fost create de două companii diferite şi motivul principal pentru
similitudinea denumirilor este legat exclusive de marketing. Există o numeroase deosebiri
între Java şi JavaScript. În primul rând, dacă JavaScript este strâns legat de HTML, o
miniaplicaţie Java este conectată la un document HTML prin eticheta <applet>. Java este
folosit pentru miniaplicaţii sau pentru aplicaţii complexe, pe când JavaScript este folosit în
primul rând pentru scripturi. Sintaxa limbajului JavaScript aduce cu sintaxa limbajului Java.
114
JavaScrip are o mulţime de faţete şi poate fi folosit în multe contexte pentru a oferi
soluţii la probleme din Web. Principalele scopuri ale limbajului JavaScript sunt:
• înfrumuseţează şi animă paginile HTML statice prin efecte speciale, animaţii şi
manşete;
• validează date, fără a trece totul serverului;
• are un rol important în aplicaţii client/server pentu Web;
• permite dezvoltarea de aplicaţii pe parte de client;
• slujeşte ca şi legătură pe partea de client între obiecte HTML, miniaplicaţii Java,
controale ActiveX şi module plug-in Netscape.
• JavaScript evoluază
JavaScript este un limbaj de scriptare. Programatorii Web se îndreaptă mai ales spre
scriptarea pe parte de client. JavaScript este un limbaj nativ pentru instrumente de dezvoltare
Web.
Executarea unui script JavaScript începe în momente diferite, în functie de felul în care
este scris. Dacă scriptul afectează conţinutul de pe pagină, aşa cum se întâmplă prin folosirea
instrucţiunii document.write(), este executat pe măsura ce este întâlnit. Există de asemenea un
115
handler de eveniment, onLoad, care este executat numai după ce documentul HTML a fost
complet încărcat în browser.
Dacă scripturile JavaScript sunt stocate într-un fişier separat, ele sunt de asemenea
evaluate atunci când se încarcă pagina şi înainte să aibă loc vreo acţiune.
Toate instrucţiunile JavaScript aflate în blocul unei funcţii sunt interpretate, iar
executarea nu se petrece pană ce funcţia nu este apelată dintr-un eveniment JavaScript.
Instrucţiunile JavaScript care nu se află în blocul unei funcţii sunt executate după ce
documentul se încarcă în browser, practic pe măsură ce este redat. Rezultatul executării
acestor instrucţiuni va fi vizibil pentru utilizatori atunci când văd pentru prima dată pagina.
M4.U1.6. Rezumat
116
U2. Limbajul JavaScript
M4.U2.1. Introducere
În JavaScript există următoarele tipuri de date : tip şir; tip număr întreg; număr întreg în
baza 10, 8 sau 16.
O variabilă se poate declara particular cu "var".
O variabilă poate primi orice valoare, nu se declară tipul ei.
Operatori
117
Operatori logici pe biti: <<, >> operatori de deplasare
& - “si” pe biţi
| - “sau” pe biţi
٨- “sau exclusiv” pe biţi
~ - “negarea pe biţi”- are rolul de a inversa conţinutul biţilor
Operatorul ',' (virgulă)
Operatorul conditional : exp1 ? exp2 : exp3;
Operatorul de concatenare pentru siruri este +
Funcţii predefinite
118
De exemplu putem scrie: document.write(“<b>”+ text + “</b>”). Pe pagină nu se va
afisa textul “<b>”+ text + “</b>”, ci se va afisa "text" scris îngrosat, de unde rezultă că
browserul aînţeles că este vorba de tag-ul HTML <b>.
Exemplu
Aplicatie_1:
Aplicatie_2:
119
M4.U2.5. Evenimente
M4.U2.6. Obiecte
Folosind limbajul JavaScript, se pot defini obiecte proprii. Limbajul pune însă la
dispoziţie o ierarhie de obiecte predefinite, respectând modelul DOM (Document Object
Model care este un pachet de interfeţe conceput de W3C). Elementul de legătură între
JavaScript şi DOM este obiectul Document, ce implementează interfaţa Document din DOM.
Fiecărui nivel din ierarhia de mai sus putem spune că îi corespunde o serie de noduri.
Astfel avem nodul document, cu subnivele/subnoduri cum ar fi image.
120
Pornim de la o aplicaţie concretă, fie un formular care are structura conform imaginii de
mai jos:
121
document
________________│_______________________________
│ │ │ │
images[0] forms[0] links[0] images[1]
__________│_________
│ │ │
elements[0] elements[1] elements[2]
Într-un document HTML se pot crea mai multe formulare. Acestea se vor numi implicit
forms[0], forms[1],…etc.
Imaginile dintr-o pagină vor fi numerotate începând cu prima imagine din pagină cu
numele images[0], images[1],…etc.
Pentru a acesa primul element din formular vom scrie una din următoarele secvenţe în
JavaScript:
1. document.forms[0].elements[0]
<form name="f1">
Imagine_1 <br><img src=c:\CURS_WEB_ID_FINAL\s.jpg> <br>
Nume     :<input type ="text" name="nume"
value=""><br>
Prenume :<input type ="text" name="prenume" value=""><br>
<input type="submit" value=" OK " ><br><br><br>
Imagine_2 <br><img src=c:\CURS_WEB_ID_FINAL\s.jpg>
<br><br>
<a href="l.html"> <i>WWW.GOOGLE.COM </i></a>
</form>
Pentru a putea manipula informaţia dintr-un element (tag) HTML este necesar ca mai
întâi să se obţină o “referinţă” la acel element. În acest scop se pot folosi următoarele metode:
• document.getElementById( )- returnează un element, identificat după atributul id.W3C
recomandă ca pentru identificarea elementelor să se folosească id;
• document.getElementByName() - returnează un element, identificat după atributul
name. ;
• document.getElementsByTagName() - returnează o listă de elemente, identificate după
numele tag-ului.
122
După localizarea unui element, se poate explora structura arborescentă începând cu acel
punct, folosind proprietăţi ale obiectului precum: parentNode, firstChild, nextSibling etc.
După obţinerea unei referinţe la un element, se pot manipula diversele proprietăţi ale
acestuia. Un exemplu în acest sens sunt atributele CSS care se pot modifica prin intermediul
proprietăţii style. Există şi o excepţie: float. Acesta este un cuvânt rezervat în JavaScript, deci
nu se poate folosi element.style.float, dar se poate folosi element.style.cssFloat.
Există cel puţin două tipuri diferite de noduri, astfel avem : nodurile element şi nodurile
de text. Acestea se crează folosind metodele
• document.createElement() - pentru elemente;
• document.createTextNode() - pentru nodurile de text.
Metoda appendChild() adaugă un nod fiu nodului pentru care este invocată. Metoda
„pereche” este removeChild() care permite ştergerea unui nod fiu. Crearea unui nod se poate
face şi prin altă metodă, folosind metoda document.write(), dar datorită faptului că există
posibilitatea de a introduce orice, chiar şi cod prost structurat, această metodă poate crea
probleme serioase, în special în cazul documentelor XML. Din această cauză, funcţia nu are
nici un efect în documentele XHTML (şi introducerea ei generează mesaje de eroare). În
cazul XHTML, singura modalitate de a manipula structura documentelor via JavaScript este
DOM.
123
Funcţionalitatea acestei librării este redusă la următorele browsere Web: Gecko-
Browsers, Internet Explorer 4, 5 and 6, Opera 5, 6 şi 7+, pentru sistemul de operare
Windows.
124
Exemplu
125
tocmai a fost introdusă.
Să ne reamintim...
• Variabilele în JavaScript se declară folosind cuvântul cheie "var"
• Un eveniment este o acţiune, care apare la un moment dat şi în urma căruia
este declanşată execuţia unei anumite părţi din program.
• Pentru a calcula care sunt coordonatele X şi Y în pixeli ale cursorului, relativ la
pagina curentă, în momentul în care s-a produs un se folosesc două proprietăţi
ale luiEvent: Event.pageX şi Event.pageY.
• Librăria JavaScript Vector Graphics furnizează capabilităţi de realizare a
graficii petru JavaScript
M4.U2.10. Rezumat
126
U3. Obiecte JavaScript
M4.U3.1. Introducere
Pentru a putea folosi un obiect, trebuie ca acesta să fie mai întâi creat cu
ajutorul cuvântului cheie „new” (vezi limbajul Java). Astfel pot fi apelate ulterior
diferite proprietăţi şi metode.
Obiectul window corespunde ferestrei curente din browser şi cu ajutorul lui se pot afla /
modifica proprietăţile ferestrei.
Există şi posibilitatea de a deschide ferestre noi. Acesta este cel mai de sus obiect din
ierarhia obiectelor JavaScript, corespunde ferestrei curente din browserul web. Prin acest
obiect se pot afla prorietăţile ferestrei curente.
Există şi posibiltatea de a deschide ferestre noi. Aşa-numita "fereastră principală" a
browserului web se poate apela prin numele rezervate "window" sau "self".
127
Proprietăţi ale obiectului window:
Exemplu
Aplicaţie_1:
128
Aplicatie_2
129
un câmp de text (textfield), în care utilizatorul face propriile
remarci.
p1 e un String, care apare în dialogbox
p2 este textul acre apare prima dată în câmpul de text.
12 resizeBy(x,y) Măreşte fereastra cu x pixeli la dreapta şi cu y pixeli în jos. La
valori negative, fereastra se micşorează.
13 resizeTo(x,y) Măreşte fereastra la o marime de x pixeli în direcţie orizontală şi
cu y pixeli în direcţie verticală.
14 scrollTo(x,y) Duce (scroll) fereastra la o anumită poziţie care e dată de coord. x
şi y.
15 setIntervall(p1,p2) Rulează o instrucţiune într-un ritm dinainte dat până când e oprită
de clearIntervall()
p1: instrucţiune sau funcţie JavaScript care trebuie executată.
p2: Valoare in milisecunde, până când se execută p1.
16 setTimeout(p1,p2) Rulează o instrucţiune în funcţie de un anumit timeout.
p1: instrucţiune sau funcţie JavaScript care trebuie executată.
p2: Valoare in milisecunde, până când se execută p1.
Direct din acest obiect sunt derivate obiectele document, event, history şi location.
Obiectul location ne dă adresa HTML-ului local. Când o pagină este încărcată (de
exemplu http://www.xyz.com/page.html) atunci location.href conţine adresa. Pentru
location.href îi putem atribui noi o adresă. Butonul "button" aduce o nouă pagină în fereastra
actuală (Window)
Aplicaţie:
130
M4.U3.5. Obiectul document
Obiecte derivate din obiectul document: all, anchors, applets, areas, embeds, forms,
images, layers, links, plugins.
Aplicaţie:
131
M4.U3.6. Obiectul forms
Acest obiect pune la dispoziţie metode şi proprietăţi care permit accesul la un formular
definit în interiorul unui fişier HTML.
132
Exemplu
Acest obiect se afla în ierarhie sub obiectul document. Se referă la proprietăţile imaginii
introduse in HTML. Aceste proprietăţi pot fi modificate în interiorul unui fişier HTML.
133
Proprităţi ale obiectului image:
<script language=“JavaScript“>
function simpleDate()
{
Date1= new Date();
Date2= new Date(YYYY,MM,DD);
Date3= new Date(“MM DD YYYY HH:mm:ss”);
Date4= new Date(YYY,MM,DD,HH,mm,ss);
}
</script>
Acest obiect conţine informaţii despre browser şi se poate folosi pentru a adapta mai
bine scriptul fiecărui browser în parte.
Proprietăţi ale obiectului navigator:
134
rulează scriptul
3 appVersion Reţine nr. versiunii browserului în care read
rulează scriptul
4 language Conţine limbajul în care este instalat read
scriptul(doa Netscape)
5 platform Reţine numele sistemului de operare pe read
care este instalat scriptul (doar
Netscape)
6 userAgent Reţine informaţii de browser, aceleaşi read
pe care le transmite browserulul şi la o
apelare http
Obiectul navigator spune, prin metoda javaenabled(), dacă în browser este activat Java,
astfel încât să se ştie dacă se pot folosi appleturi. Dacă Java este acceptat, metoda returnează
true.
Acest obiect este valabil doar pentru browsere Netscape şi conţine informaţii despre
nivelul/layer-ul care este accesibil unui fişier HTML. Nivelurile/layer-ele sunt baza
poziţionării dinamice a elementelor în pagină. Obiectul layers este sub obiectul document în
ierarhia obiectelor.
Obiectul all este accesibil numai cu browsere Explorer. Acest obiect conţine
proprietăţile şi metodele realizării acestui concept:
Apelarea layers:
135
layerulului (în pixeli), raportată la documentul de
deasupra.
8 length Nr. layer-elor dintr-un fişier HTML read,
9 name Numele layerului read, write
10 pageX Poziţia pe axa X a colţului din stânga sus a layer- read, write
ului, raportată la întreg documentul.
11 pageY Poziţia pe axa Y a colţului din stânga sus a layer- read, write
ului, raportată la întreg documentul.
12 parentLayer Reţune obiectul-părinte al layerului, adică read,
documentul de deasupra
13 src Conţine numele unui document extern, introdus read, write
în layer
14 top Conţine poziţia pe axa Y a colţului din stânga sus read, write
a layerulului (în pixeli), raportată la documentul
de deasupra.
15 visibility informaţii despre visibilitatea unui layer. Valori read, write
posibile: hide, show, inherit
Apelare:
1. prin numele tagului sau identificatorului tagului şi un index care conţine poziţia sa.
De exemplu: pt tagul <title>, numele este “title”. Indexul spune al câte-la tag cu acest
136
nume este referit. Primul tag are indexul 0. Fie 3 tilturi referite prin tagul <h2>.
Accesul la tagul al doilea se face astfel:
document.all.tags("h2")[1].innerText
137
23 sourceIndex Spune despre care element din read,
interiorul unui fişier HTML este
vorba în actualul
element/document???.
24 tagName Numele unui tag read,
25 title Conţinutul atributului title al read, write
elementului HTML.
Exemplu
function checkBrowser()
{
var browserName=navigator.appName;
var browserNickname=navigator.appCodeName;
138
var browserVersion=parseFloat(navigator.appVersion);
var browserInfos=navigator.userAgent;
var isNetscape=false;
var isMicrosoft=false;
window.document.write(“Browser :”+browserName);
if(browserName==”Microsoft Internet Explorer”)
{
isMicrosoft=true;}
}
if(browserName ==“Netscape“)
{
isNetscape=true;
}
if(isMicrosoft)
{
if(navigator.app.Version.indexOf(„MSIE“)!=-1)
{
versiontmp1=navigator.appVersion.indexOf(“MSIE”)+4;
Versiontmp2=versiontmp1+5;
bowserVersion=navigator.appVersion.substring(versiontmp1,
versiontmp2);
}
}
if(isNetscape)
{
window.document.write(“<br> NETSCAPE SPEZIFIKATION= ======:”);
window.document.write(“<br> System :”+navigator.platform);
window.document.write(“<br> Language :”+navigator.language);
window.document.write(“<br> ===”);
}
139
cos(x): cosinus
tan(x): tangnta
sin(x): sinus
acos(x): arccosinus
asin(x): arcsinus
atan(x): arctangenta
floor(x): cel mai mare întreg mai mic sau egal cu x. Ex: Math.floor(-3,73), returnează -4.
( reprezentarea unui număr real sub formă de o sumă dintre parte întreagă şi partea
fracţionară x=[x]+{x}; 0<={x}<1; -2,63= -3+0,37)
random(x): nr aleator în intervalul [0,1]
round(x): cel mai apropiat întreg de x
sqrt(x): radical din x
pow(x,y): x la puterea y
log(x): logaritm natural din x
exp(x): e la puterea x
În JavaScript se pot declara numai vectori. Vectorii sunt de tip obiect. Un vector se
declară cu Array() iar elementele se acceseaza cu numeVector[indice].
vv=new Array(4);
for (i=0;i<4;i++) vv[i]=new Array(3);
140
M4.U3.13. Obiectul String
search(s) – caută caracterul de început al şirului "s" în obiect. Dacă şirul "s" nu
există se returnează -1.
charAt(index) – returnează caracterul aflat pe poziţia index în şir;
slice (i1, i2) – returnează substring-ul cuprins între i1 inclusiv şi i2 exclusiv.
substr(i1,lung) – returnează subşirul care începe cu i1 şi are lungimea lung;
toUpperCase () – returnează şirul scris cu litere mari;
toLowerCase() - returnează şirul scris cu litere mici;
replace(sir1, sir2) – returnează şirul în care s-a înlocuit prima apariţie a lui sir1 cu
sir2;
bold() – returnează şirul scris cu bold;
italics() - returnează şirul scris cu italic;
fontcolor(“nume_culoare”) – returnează şirul scris cu "nume_culoare"
fontsize(“marime”) - returnează şirul scris cu "marime"
link(“adresa_http”) – crează o ancoră către adresa_http
141
Animaţii
Prin afişarea în aceeaşi poziţie a mai multor imagini, fiecare imagine "stând" un anumit
interval de timp, duce la animaţie. Există anumite funcţii predefinite şi funcţii utilizator care
rezolvă această problemă.
Funcţia setTimeout
Sintaxa :
setTimeout(“nume_functie”, nr_milisecunde)
Semantica :
nume_functie – funcţia care urmează a se executa după nr_milisecunde;
nr_milisecunde – un număr întreg de milisecunde
Funcţia clearTimeout
Sintaxa :
clearTimeout(“variabila”)
Semantica :
"variabila" conţine o valoare returnată de funcţia setTimeout. După executarea
ei, procesul se suspendă.
142
Să se realizeze o pagină web care să afişeze un ceas digital si clasic în JavaScript
M4.U3.14. Rezumat
143
• Obiectul String permite manipularea şirurilor de caractere
144
U4. Aplicaţii complexe în JavaScript
M4.U4.1. Introducere
Astfel, exemplele care vor fi oferite în această unitate vor servi studentului ca
un plus de claritate şi ca un model pentru aplicaţiile pe care le va avea de realizat
ca şi temă.
145
M4.U4.3. Învăţarea JavaScript prin exemple
Aplicaţia_1
146
Codul sursă pentru Aplicaţia_1 de mai sus:
<html>
<head>
<script language="JavaScript">
function suma()
{
a=parseInt(document.form1.inputa.value);
b=parseInt(document.form1.inputb.value);
document.form1.s.value=a+b;
}
function diferenta()
{
a=parseInt(document.form1.inputa.value);
b=parseInt(document.form1.inputb.value);
document.form1.d.value=a-b;
}
function produs()
{
a=parseInt(document.form1.inputa.value);
b=parseInt(document.form1.inputb.value);
document.form1.p.value=a*b;
}
function cat_rest()
{
a=parseInt(document.form1.inputa.value);
b=parseInt(document.form1.inputb.value);
document.form1.c.value=Math.floor(a/b);
document.form1.r.value=a % b;
}
function calc_invers()
{
n=parseInt(document.form2.input.value);
cifra=0;inv=0;
while(n!=0)
{
cifra=n % 10;
n=(n-cifra)/10;
inv=inv*10+cifra;
}
document.form2.invers.value=inv;
}
function test()
{
n=parseInt(document.form2.input.value);
cifra=0;inv=0; n_init=n;
while(n!=0)
{
cifra=n % 10;
n=(n-cifra)/10;
147
inv=inv*10+cifra;
}
if (n_init==inv)
document.form2.palindrom.value="da"
else
document.form2.palindrom.value="nu";
}
function transf_dinbaza10()
{
n=parseInt(document.form3.input.value);
b=parseInt(document.form3.baza.value);
i=0; a="";
var sir=new Array();
do
{
cifra = n%b;
if (cifra>9)
{
switch (cifra)
{
case 10: cifra='A';break;
case 11: cifra='B';break;
case 12: cifra='C';break;
case 13: cifra='D';break;
case 14: cifra='E';break;
case 15: cifra='F';break;
}
}
sir[i] = cifra;
i++;
n=Math.floor(n/b);
}
while(n);
for (j=i-1;j>=0;j--)
a= a+sir[j];
document.form3.transf.value=a;
}
function calc_modulul()
{
a = document.form4.re.value;
b = document.form4.img.value;
z1 = new Object();
z1.real = parseInt(a);
z1.imaginar = parseInt(b);
modul=Math.sqrt(z1.real*z1.real+z1.imaginar*z1.imaginar);
document.form4.modul.value=modul;
}
function inlocuire_litera()
{
sir = document.form5.input.value;
148
sir = sir.replace(/u/g,"a");
document.form5.output.value=sir;
}
function sortare_alfabetica()
{
sir = document.form6.input.value;
var a=new Array();
var i,k=0,alfabetic="";
for(i=0;i<sir.length;i++)
{
a[k]=sir.charAt(i);
k++;
}
a.sort();
for(i=0;i<k;i++)
alfabetic=alfabetic+a[i];
document.form6.output.value=alfabetic;
}
</script>
</head>
<body>
<ul>
<li>
<i>Suma, diferenta, produsul, si catul a doua numere <b>a</b> si <b>b</b></i>
<br>
<form name="form1">
a: <input type="text" name="inputa" size="14"> <br>
b: <input type="text" name="inputb" size="14"> <br>
Suma: <input type="text" name="s" size="14"> <input type="button"
value="Aduna" onClick="suma()"> <br>
Diferenta: <input type="text" name="d" size="14"><input type="button"
value="Scade" onClick="diferenta()"> <br>
Produsul: <input type="text" name="p" size="14"><input type="button"
value="Inmulteste" onClick="produs()"> <br>
Catul : <input type="text" name="c" size="14"> <input type="button"
value="Imparte" onClick="cat_rest()"> <br>
Restul: <input type="text" name="r" size="14"> <br>
</form>
</li>
<li>
<i>Inversul unui numar si se testarea daca este palindrom</i>
<form name="form2">
Numarul: <input type="text" name="input" size="14"><br>
Inversul: <input type="text" name="invers" size="14">
<input type="button" value="Calculeaza" onClick="calc_invers()"><br>
Palindrom? <input type="text" name="palindrom" size="14">
<input type="button" value="Testeaza" onClick="test()"><br>
</form>
</li>
149
<li>
<i> Transformare din baza 10 in baza 2, 8 sau 16</b></i>
<form name="form3">
Numarul: <input type="text" name="input" size="14"><br>
Baza: <input type="text" name="baza" size="14"><input type="button"
value="Calculeaza" onClick="transf_dinbaza10()"><br>
Numarul este: <input type="text" name="transf" size="14"><br>
</form>
</li>
<li>
<i> Modulul unui numar complex</i><br>
<form name="form4">
z1: <input type="text" name="re" size="14"><input type="text"
name="img" size="14">
<input type="button" value="Calculeaza" onClick="calc_modulul()"><br>
Modulul: <input type="text" name="modul" size="14"><br>
</form>
</li>
<li>
<i> Inlocuirea literei "u" cu litera "a" intr-un sir de caractere</i><br>
<form name="form5">
Sirul: <input type="text" name="input" size="14"><input type="button"
value="Inlocuieste" onClick="inlocuire_litera()"> <br>
Dupa inlocuire: <input type="text" name="output" size="14"><br>
</form>
</li>
<li>
<i> Ordonarea alfabetica a unui cuvant </i> <br>
<form name="form6">
Sirul: <input type="text" name="input" size="14"><input type="button"
value="Sorteaza" onClick="sortare_alfabetica()"><br>
Alfabetic: <input type="text" name="output" size="14"><br>
</form>
</li>
</ul>
</body>
</html>
150
Aplicaţia_2
Realizarea unui minicalculator de buzunar cu JavaScript
<html>
<head>
<script language="JavaScript">
var str="", operator="",str2="";
function input(val)
{
if(str.length<10)
str=str+val;
document.form1.text1.value=str;
}
function add()
{
if (operator=="")
{
str2=document.form1.text1.value;
str="";
document.form1.text1.value=str;
operator="+";
}
}
function sub()
{
if (operator=="")
{
str2=document.form1.text1.value;
str="";
document.form1.text1.value=str;
operator="-";
}
}
151
function mult()
{
if (operator=="")
{
str2=document.form1.text1.value;
str="";
document.form1.text1.value=str;
operator="*";
}
}
function div()
{
if (operator=="")
{
str2=document.form1.text1.value;
str="";
document.form1.text1.value=str;
operator="/";
}
}
function resolve()
{
var rez=0;
switch (operator)
{
case "+":
rez = (str2*1) + (str*1) ;
document.form1.text1.value = rez;
break;
case "-":
rez = (str2*1) - (str*1);
document.form1.text1.value = rez;
break;
case "*":
rez = (str2*1) * (str*1);
document.form1.text1.value = rez;
break;
case "/":
rez = (str2*1) / (str*1);
document.form1.text1.value = rez;
break;
}
operator=""; str=""; str2="";
}
function clearall()
{
document.form1.text1.value="";
str=""; str2=""; operator="";
}
</script>
152
</head>
<body>
<br><br><br><br>
<center>
<table border="1" bgcolor="lightblue">
<form name="form1">
<tr>
<td>
<input type="text" name="text1" style="color:navy;font-weight: bold"
size="20">
</td>
</tr>
<tr>
<td>
</td>
</tr>
</table>
<table border="3" bgcolor="lightblue">
<tr>
<td align="center">
<input type="button" value=" 1 " style="color:navy;font-weight: bold"
onClick="input(1)">
<input type="button" value=" 2 " style="color:navy;font-weight: bold"
onClick="input(2)">
<input type="button" value=" 3 " style="color:navy;font-weight: bold"
onClick="input(3)">
<input type="button" value=" + " style="color:navy;font-weight: bold"
onClick="add()">
</td>
</tr>
<tr>
<td align="center">
<input type="button" value=" 4 " style="color:navy;font-weight: bold"
onClick="input(4)">
<input type="button" value=" 5 " style="color:navy;font-weight: bold"
onClick="input(5)">
<input type="button" value=" 6 " style="color:navy;font-weight: bold"
onClick="input(6)">
<input type="button" value=" - " style="color:navy;font-weight: bold"
onClick="sub()">
</td>
</tr>
<tr>
<td align="center">
<input type="button" value=" 7 " style="color:navy;font-weight:
bold" onClick="input(7)">
<input type="button" value=" 8 " style="color:navy;font-weight:
bold" onClick="input(8)">
153
<input type="button" value=" 9 " style="color:navy;font-weight:
bold" onClick="input(9)">
<input type="button" value=" * " style="color:navy;font-weight:
bold" onClick="mult()">
</td>
</tr>
<tr>
<td align="center">
<input type="button" value=" C " style="color:navy;font-weight:
bold" onClick="clearall()">
<input type="button" value=" 0 " style="color:navy;font-weight:
bold" onClick="input(0)">
<input type="button" value=" = " style="color:navy;font-weight:
bold" onClick="resolve()">
<input type="button" value=" / " style="color:navy;font-weight:
bold" onClick="div()">
</td>
</tr>
</form>
</table>
</body>
</html>
Aplicaţia_3
Să se introducă într-un element al unui formular o valoare şi apăsând pe tasta OK15% să
se calculeze 15% din acea valoare.
154
Aplicaţia_4
Operaţii cu numere complexe şi afişarea unor rezultate în caseta de alert. Pentru aceasta
se vor introduce două numere complexe de forma z1 = a+b*i şi z2 = b+a*i într-un formular.
<html>
<head>
<script language="JavaScript">
function complex(x,y)
{
this.real=x;
this.img=y;
this.adun=add;
this.inmultire=mult;
this.impartire=div;
}
z=new complex(0,0);
function getDataR(a)
{
z.real=parseInt(a);
alert("z.real = "+z.real);
document.f1.rez1.value=a;
return;
}
function getDataI(b)
{
155
z.img=b;
alert("z.img = "+z.img)
document.f1.rez2.value=b;
return;
}
function add(z)
{
t=new complex(0,0);
t.real=eval(this.real)+eval(z.real);
t.img=eval(this.img)+eval(z.img);
alert("t.real add= "+eval(t.real));
return t;
}
function mult(z)
{
t=new complex(0,0);
t.real=eval(this.real)*eval(z.real)-eval(this.img)*eval(z.img);
t.img=eval(this.real)*eval(z.img)+eval(this.img)*eval(z.real);
alert(" REZULTAT INTERMEDIAR t.real mul= "+eval(t.real));
return t;
}
function div(z)
{
t=new complex(0,0);
t.real=(eval(this.real)*eval(z.real)+eval(this.img)*eval(z.img))/(z.real^2-z.img^2);
t.img=(eval(this.real)*eval(z.img)-eval(this.img)*eval(z.real))/(z.real^2-z.img^2);
alert(" REZULTAT INTERMEDIAR t.real div= "+eval(t.real));
return t;
}
function calcul(a,b)
{
z3A=new complex(0,0);
z3I=new complex(0,0);
z3D=new complex(0,0);
z1=new complex(a,b);alert("data complexa z1= "+z1.real+" + "+z1.img+"i");
z2=new complex(b,a);alert("data complexa z2 ="+z2.real+" + "+z2.img+"i");
z3A=z2.adun(z1)
alert("ADUNARE ="+z3A.real+"+"+z3A.img+"i");
z3I=z2.inmultire(z1);
alert("INMULTIRE ="+z3I.real+" +"+z3I.img+"i");
z3D=z2.impartire(z1);
alert("IMPARTIRE ="+z3D.real+" + "+z3D.img+"i");
}
</script>
</head>
<body>
<form name="f1">
Real(z) :<input type ="text" name="Input1" value="0">    
Imaginar(z):<input type ="text" name="Input2" value="0"><br>
156
<input type="button" value="OK-REAL"
onClick="getDataR(document.f1.Input1.value)">
                
                 
 
<input type="button" value="OK-Imaginar"
onClick="getDataI(document.f1.Input2.value)"><br>
Afisez Real(z):<input type="text" name="rez1">   
Afisez Imaginar(z):<input type="text" name="rez2"><br><br><br><br>
<input type="button" value="OK - alert( )"
onClick="calcul(document.f1.Input1.value,document.f1.Input2.value)">
</form>
</body>
</html>
Aplicaţia_5
Să se scrie un text care îşi schimbă culoarea. Să se insereze şi o imagine, iar atunci când
mouse-ul rămâne pe imaginea de pe display, aceasta se măreşte până când mouse-ul este luat
de pe imagine.
157
Codul sursă pentru Aplicaţia_5
<html>
<head>
<style>
#Titlu
{
color:rgb(130,12,113);
font-size:40;
}
</style>
<script language="JavaScript">
var t=0,inalt=0, latime=0;
function move()
{ if(t==0)
{
latime=foto.width;
inalt=foto.height;
t=1;
}
foto.width++;
foto.height++;
}
function out()
{
t=0;
foto.width=latime;
foto.height=inalt;
}
i=255;
tt=0;
function lumina()
{
do
{
i--;
Titlu.style.color=255*256*256+i*256*i;
tt=setTimeout("lumina()",100);
if(i==0) clearTimeout(tt);
} while(i>0)
}
</script>
</head>
<body onload="lumina()">
<img id="foto" src="t1.jpg" onmouseout="out()" onmousemove="move()" width="80"
height="80">
<h1 id="Titlu"> ID - INVATAMANT LA DISTANTA </h1>
<br><br>
</body>
</html>
158
Să se realizeze un "menu-bar" în JavaScript. Bara de meniuri pe care o veţi
realiza va avea 5 meniuri, fiecare cu câte cel puţin 3 submeniuri
Temă de control
159
Modulul V Alte tehnologii pentru realizarea paginilor web
Introducere
Competenţe
Acest modul are ca obiectiv introducerea unor noi limbaje care să ajute
studentul în realizarea unor aplicaţii web mai performante.
La finalul acestui modul, studenţii vor putea să:
160
U1. Limbajul PHP
M5.U1.1. Introducere
PHP a fost conceput în anul 1994 şi a fost iniţial munca unui singur om,
Rasmus Lerdorf. În octombrie 2002, era folosit în mai mult de nouă milioane de
domenii din lumea întreagă. PHP este un produs Open Source, cu acces la codul
sursă.Îl putem folosi, modifica şi redistribui, toate acestea în mod gratuit.
Limbajul PHP se aseamană mult cu limbajul C++ sau Java. Este un limbaj de
scriptare care se utilizează pe partea de server. Când scriem un script în PHP vom
rula direct de pe server. Există însă posibilitatea de a testa pe propriul calculator,
acest lucru necesită instalări speciale. Codul PHP este interpretat de serverul web
şi generează un cod HTML care va fi văzut de uilizator (clientului - browserului -
fiindu-i transmis numai cod interpretat ca şi HTML).
Pentru a putea lucra cu PHP avem nevoie de serverul Apache. Dacă dorim să lucrăm şi
cu baze de date vom avea nevoie şi de serverul MySql.
Există programe care instalează automat aceste servere, de exemplu WinLAMP sau
XAMPP care se pot descarca de pe Internet.
În continuare este prezentat modul în care edităm fişierul de configurare al PHP-ului, şi
anume php.ini.
161
Deschidem Edit php.ini şi efectuăm modificările următoare:
Pentru a putea vedea configuraţia php, realizăm un fişier cu numele my.php, în care
punem codul:
<?php
phpinfo();
?>
162
M5.U1.4. Noţiuni indroductive de sintaxă
?>
sau
<?php
?>
163
Script-ul PHP poate fi introdus într-un fişier html sau se poate crea un fişier direct cu
extensia php.
Observaţii:
1. Orice variabilă în PHP începe cu semnul $.
2. Constantele se introduc cu funcţia define(nume_constanta, valoare_constanta);
3. Operatorul de concatenare pentru şiruri este punctul (.), spre deosebire de limbajele
de programare unde concatenarea de şiruri se face cu semnul "+";
4. Operatorii PHP sunt la fel ca şi cei din limbajul JavaScript, Java sau C++;
5. Instrucţiunile PHP sunt la fel ca şi cele din limbajul JavaScript, Java sau C++;
6. Redirecţionarea cătreo altă pagină se face cu ajutorul atributului action din tag-ul
form (vom avea <form action="pagina2.php">).
7. Modul de transmitere a datelor la server se face cu ajutorul atributului method al tag-
ului form care poate lua două valori: get sau post. (vom scrie <form action="post">
sau <form action="get">). Transmiterea făcută cu get se face prin URL şi este mai
restrictivă ca şi dimensiune. Transmiterea făcută cu post se face via HTTP şi nu are
restricţie de dimensiune a datelor transmise.
Funcţii matematice
164
• strops(sir1, sir2, [poz_start]) – verifică dacă sir1 este subşir al lui sir2. Dacă da,
afişează poziţia de început a acestuia. [poz_start] este opţional şi verifică de unde
să înceapă căutarea; implicit [poz_start] are valoarea zero;
• strstr([sir1, sir2]) – returnează sir1 începând cu poziţia în care a fost găsit sir2;
• strcmp(sir1, sir2) – compară lexicografic (alfabetic) sir1 cu sir2 şi returnează
valoarea zero dacă sir1=sir2, returnează o valoare mai mare ca zero dacă
sir1>sir2 şi returnează o valoarea mai mică decât zero dacă sir1<sir2
Vectori în PHP
Exemplu
<?php
$flori=array("garoafa","trandafir","lalea");
echo "Imi plac " . $flori[0] . ", " . $flori[1] . " si " .
$flori[2];
?>
<?php
$pret=array("garoafa"=>"2","trandafir"=>"7","lalea"=>"5");
echo "Trandafirul costa " . $pret['trandafir'] . " RON";
?>
165
Să se realizeze un formular în PHP care să conţină două câmpuri pentru
introducerea a două numere şi un buton "Calculează". După ce au fost introduse
şi validate numerele se va da click pe buton care ne va redirecţiona către o nouă
pagină pe care vom avea afişate: suma numerelor, diferenţa lor, produsul, câtul şi
minimul dintre cele două numere.
Aplicaţia_1
166
Codul sursă pentru Aplicaţia_1:
<html>
<body>
SALUT <br><br>
<?php
echo"test test test REZULTAT ";
$a=3;
$b=6;
$rezultat=$a+$b;
echo ("<br> rezultat=".$rezultat."<br>");
echo ($rezultat."<br>");
$nume="informatica";
echo ($nume);
?>
<br><b><font color="red">DEFINIREA DE CONSTANTE CU FUNCTIA
DEFINE</font></b>
<br>
<?php
define("const1", 3.675);
echo ("const1 = ".const1) ;
?>
<br><br> <font color="green"> SIR CARACTERE </font><br>
<?php
$x=5;
echo (" x = ".$x."<br>");
$y="SIRUL MEU <bR>";
echo strlen($y);
echo "<br><br> POZITIE ME =";
echo (strpos($y,"ME"));
echo "<br> COMPARARE <br>";
echo strcmp("mama","mama");
$x=$y;
echo (" <br>x = ".$x."<br>");
echo (" y = ".$y);
echo "<br><br> CARACTERE MICI =";
echo strtolower($y);
?>
<br><br><font color="green"> CONVERSII </font><br>
<?php
$y=11.7;
echo (" y = ".$y."<br>");
$x=(int) $y;
echo (" x = ".$x."<br>");
?>
<br> <font color="red"> FACTORIAL</font><br>
<?php
function fact($n)
167
{
if ($n==0)
return 1;
else
return $n*fact($n-1);
}
echo ("FACT(7)=".fact(7)."<br>");
print ("FACT3= ".fact(3));
$a=65;
$b=78;
print (" <br>a =".$a." <br> b=".$b);
?>
</body>
</html>
168
Aplicaţia_3 : Validarea câmpului Nume:
169
Să se realizeze un formular în PHP care să conţină două câmpuri pentru
introducerea numelui şi vârstei unei persoane, un buton "Adaugă" şi un buton
"Trimite". După ce se vor completa câmpurile de nume şi vârstă, utilizatorul va
da click pe butonul "Adaugă" şi va adăuga acea persoană într-un vector asociativ.
Operaţia de introducere a persoanelor şi de adăugare se poate repeta succesiv de
câteva ori astfel încât să avem cel puţin 5 prsoane adăugate în vector.
După ce au fost adăugate persoanele se va da click pe "Trimite" care va
permite afişarea persoanei cu vârsta cea mai mare.
M5.U1.6. Rezumat
PHP este un limbaj open source, a cărui sintaxă seamănă cu cea a limbajelor
de programare precum Java sau C++.
Deoarece PHP este un limbaj de scriptare bazat pe server, pentru a lucra cu
acesta avem nevoie de un server web (Apache). Dacă dorim să realizăm site-uri mai
complexe putem opta pentru stocarea datelor într-o bază de date. Pentru a lucra cu
aceasta avem nevoie şi de un server de baze de date (MySql).
Avem două posibilităţi de transmitere a datelor la server: prin GET sau prin
POST. Acestea reprezintă cele douăvalori pe care le poate lua atributul method al
tag-ului form.
170
M5.U1.7. Test de evaluare a cunoştinţelor
171
U2. Flex3
M5.U2.1. Introducere
172
M5.U2.3. Elemente de bază ale lui Adobe Flex3
Dezvoltatorii de aplicaţii Web doresc toţi acelaşi lucru : pagina web realizată de aceştia
să fie vizitată de foarte mulţi clenţi. Acest lucru presupune ca această aplicaţie să ruleze cu
orice sistem de operare şi in orice Browser. Aici intervine Adobe Flex Framework, aplicaţiile
realizate în Flex rulează în Adobe Flash Player, care poate fi un Stand-alone-Player sau ca şi
Plugin încorporat într-un browser. Flash Player-ul oferă următoarele avantaje:
- apare cu mai multe versiuni
- este realizate pentru mai multe sisteme de operare
- garantează executarea aplicaţiei identic pe orice PC
- există şi pentru telefoane mobile, Smartphones un Flash Player propriu.
Programatorii care cunosc structura tag-urilor în HTML şi XML vor înţelege modul de
realizare a unei aplicaţii Flex cu ajutorul limbajului de marcare MXML.
Componentele existente pot fi extinse atât din punct de vedere funcţional cât şi optic.
Controls
Componentele Controls se folosesc pentru realizarea de conţinut şi pentru
interacţiunea utilizatorului cu aplicaţia
Layout
Aceste componente au un rol important în rederarea aplicaţiei Flex
Navigators
Asigură navigarea între diverse conţinuturi
Charts
Aceste componente asigură reprezentarea vizuală a nor informaţii (de exemplu :
diagrame )
173
Etapele de parcurs în realizarea unei aplicaţii Flex
Exemplu
• se scrie codul sursa cu edit de sub MS DOS şi se compilează cu mxmlc (conform primei
imagini de mai jos);
• se execută aplicaţia cu estensia swf într-un browser, care are flash player (conform celei
de-a doua imagini de mai jos);
174
Formularul rezultat în urma compilării codului de mai sus este cel imediat următor:
175
M5.U2.4. Limbajul MXML
Exemplu
176
Aplicaţia_2: Realizarea unui editor de text
<mx:RichTextEditor id="rte" width="75%" height="75%" />
Exemplu
În imaginile de mai jos sunt prezentate atât codul sursă cât şi rezultatul în urma
compilării acestuia.
177
Parametrul id
Fiecare tag poate primi un identificator care este dat prin parametrul id=”nume”.
M5.U2.5. ActionScript3
Codul ActionScript3 poate fi înglobat într-un fişier mxml în patru moduri, astfel:
1. în interiorul unui tag mxml (inline).
<mx:Button label="Panel_01" click="Alert.show('Click pe buton....')"/>
2. într-un bloc script într-un tag mxml
<mx:Button label=“panel_01“>
<mx:click>
<![CDATA[
Alert.show('Butonul a fost apasat');
Valoarestart=0;
play();
]]>
</mx:clik>
3. într-un tag <script>, dacă dorim să descriem anumite acţiuni, care să fie valabile
pentru toată aplicaţia, atunci folosim aceast mod de descriere
4. într-un fişier ActionScript extern, fişierele externe au extensia .as
178
Comenzi ActionScript în tag-ul MXML
Data Binding
O altă formă inline de a îngloba instrucţiunile ActionScript3 este aşa numita Data
Binding.
Prin Data Binding pot să realizez legătura între două componente, avatajul acestui
procedeu este de a transmite valori în timp real fără o confirmare printr-un buton sau printr-o
nouă pagină.
Principiul de lucru este următorul: proprietatea unei componente este folosită ca şi sursă
şi va fi transmisă, ca şi valoare adecvată, unei a doua componente.
Exemplu
Să se transmită în timp real textul din primul panel în cel de-al doilea. În figurile
următoare se pot vedea textul sursă şi rezultatul în urma compilării acestuia.
179
Observaţie:
După cum se poate vedea, pentru a transmite aplicaţiei mesajul că este vorba despre
conţinut dinamic, care se va transmite în timpul executiei aplicaţiei, containerul se va pune în
acolade în acest caz este {Exemplu.text} .
Exemplu
180
Rezultatul codului sursă este afişat mai jos:
Codul ActionScript3 poate fi înglobat într-un fişierul mxml şi în modul inline, dar din
păcate numai o singură funcţie per rezultat sau o singură acţiune cu Data Binding. Scripturile
pot fi incluse una într-alta. Toate instrucţiunile vor fi definite/descrise într-un bloc CDATA,
care va fi integrat într-o componentă MXML.
Vom discuta pe un exemplu: dorim să ataşăm unui buton o acţiune, dorim să afişeze un
mesaj la apăsarea butonului. În interiorul tag-ului care defineste butonul trebuie să definim
un Event-Handler, care va intra în acţiune când acţionăm butonul. Descrierea codului
ActionScript3 se face în interiorul tag-ului clic
<mx:Button label="Click-Click-Click">
<mx:clic>
<![CDATA[
mx.controls.Alert.show('SALUT ActionScript3 !');
]]>
</mx:clic>
</mx>
181
Să se realizeze o aplicaţie care va conţine un Label cu textul "Nume
floare:", un TextInput şi un Buton pe care va scrie "Adauga". Sub aceste
controale se va poziţiona un ComboBox care va conţine lista florilor introduse.
Utilizatorul va trebui să introducă un nume de floare, să dea click pe butonul
"Adauga", după care va trebui să vadă că acea componentă de tip ComboBox
conţine şi floarea pe care tocmai a introdus-o.
M5.U2.5. Rezumat
Primele două linii ale fişierului în care scriem codul vor fi în mod obligatoriu
acestea:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute">
182
U3. Lumea virtuală pe Internet
M5.U3.1. Introducere
Următorul pas în lumea graficii a fost făcut de către un grup de cercetări numiţi
HITL (Human Interface Technology Laboratory, fondat in 1989). Aceştia au creat
primele resurse hardware dar şi resurse soft, cum ar fi:
- Aspen Movie Map – simula o călătore în Aspen, Colorado, folosind
secvenţe de imagini filmate în prealabil
- GROPE – aplicaţie folosită în domeniul medical şi bio-chimic.
183
fluidizarea mişcării în cadrul scenelor virtuale, fie îmbunătăţirea acestor scene cu
ajutorul efectelor de lumină.
3ds Max
Este o aplicaţie dezvoltată de Autodesk Media & Entertainment pentru platformele Win
32 şi Win 64.
Numele aplicaţia a fost iniţial de 3D Studio şi a funcţionat numai pe platforma DOS.
După achiziţionarea ei de către Autodesk şi-a schimbat denumirea (mai întâi în 3ds max, apoi
în versiunea actuală) şi s-a îmbogăţit din punctul de vedere al funcţionalităţii. Este o aplicaţie
răspândită, dispunând de unele unelte speciale, limbaj de scriptare propriu şi altele cum ar fi:
- unelte pentru modelarea unui sistem de particule şi unelte de animare ale
sistemului creat;
- unealta Surface Tool pentru crearea de peisaje complexe cu ajutorul sistemului
de particule;
- MAX Script, limbaj de script propriu;
- posibilitate de modelare prin:
- sistem de poligoane (şi primitive clasice)
- NURBS (nonuniform rational B-splins);
- Particle Flow, unealtă de dinamizare a scenei 3D create;
3ds Max este folosit în special în industria jocurilor PC (contribuind la crearea jocurilor
„Battlefield Vietnam”, „Battlefield 1942”, „Call of duty” etc.) şi în cinematografie (se pot
menţiona filemele „Black hawk down”, „Harry Potter and the prisoner of Azbakam”, „Lara
Croft: tomb raider” etc.)
Lightwave 3D
Este un program folosit pentru modelare şi animaţie 3D şi a fost creat în 1988 de către
programatorii Allen Hastings şi Stuart Ferguson, purtând numele de Videoscape. Iniţial softul
184
a fost creat exclusiv pentru placa video Amiga 2000 în cadrul proiectului Video Toaster.
Ulterior a fost îmbunătăţit, astfel încât să fie compatibil pe platforme multiple (Mac OS X,
Windows, Linux şi SGI IRIX.
Fiind achiziţionat de către compania Newtek, a fost redenumit în Lightwave.
Lightwave 3D are caracteristici care îi conferă unicitate în comparaţie cu alte softuri de
grafică 3D, şi anume:
- conţine funcţii multi-thread – acestea pot utiliza simultan până la 8 procesoare pentru
efectuarea de calcule matematice complexe;
- are limbaj de scriptare propriu: LScript;
- este alcătuit din 2 pachete soft distincte:
- modelatorul: folosit pentru creare de obiecte tridimensionale
- pachetul cu ajutorul căruia se creează animaţia, efectele de lumină/umbră, etc.
Maya
Este un soft de grafică 3D folosit cu preponderenţă în domeniul cinematografiei, dar şi
la crearea de jocuri PC şi video. Softul fost creat de către Alias System Corporation, în 2
variante şi anume:
- una cu funcţii limitate: Maya Complete;
- una completă, Maya Unlimited.
Maya, funcţionează pe platforme de Windows, Linux, IRIX şi MAC OS.
Maya dispune de unelte speciale, limbaj de scriptare propriu , ş.a. :
- MEL (Maya Embedded Language) limbaj de scriptare propriu;
- modelare prin: - poligoane şi primitive
- NURBS (la fel ca şi la 3ds Max)
- subdiviziuni (SubD modelling;
- animaţia lumii 3D prin crearea unui „clip de animaţie”, care permite centralizarea
comportamentului unui element din lumea 3D, urmând ca mişcarea să se realizeze
selectând secvenţe din „clip”;
185
Consortium. SVG a fost construit după introducerea pe piaţă în 1998 a limbajului VML
(Vector Markup Language, asemănător cu XML), de către Adobe şi Microsoft. A cunoscut o
ascensiune rapidă, cea mai recentă versiune a sa fiind SVG Tiny 1.2, lansată în 10 august
2006. SVG are versiuni construite şi pentru platforme mobile (IPOD-uri, telefoane mobile,
PDA-uri), cum ar fi SVG Tiny sau SVG Basic.
Grafica creată prin SVG poate fi in acelaşi timp animată şi interactivă, se permite
alocarea oricărui obiect SVG a evenimentelor de tip „onmouseover” şi „onclick”. De
asemenea SVG oferă posibilitatea comprimării elementelor folosite, obţinându-se de tip
„gzip”, astfel îmbunătăţindu-se performanţa rulării acestor fişiere.
186
M5.U3.4. Introducere în limbajul VRML
Tehnologia VRML ( Virtual Reality Markup Language) a fost intens folosită încă de la
lansare, în decursul anului 1997 apărând primele pagini web cu grafică 3D VRML (de
exemplu siteurile de chat 3D CyberTown). Datorită succesului cunoscut, a fost preluată de
SGI’s Cosmo Software, iar mai apoi de Platinum Technologies şi Computer Associates (CA).
Prima versiune oficială a tehnologiei VRML este 1.0, aceasta având următoarele
caracteristici:
- a fost construită exclusiv pentru creare de grafică 3D statică, neanimată.
- se foloseşte de anumite forme predefinite (numite primitive), pentru a construi
scenele 3D. Exemple de primitive: cub (box), cilindru (cylinder), sferă (sphere),
con (cone) etc. Programatorul are însă posibilitatatea de a-şi defini propriile forme
complexe, de a le salva şi de a le utiliza în crearea de scene 3D. Toate formele
vizibile şi caracteristicile lor sunt definite în entităţi numite noduri.
- permite operaţii relativ simple pentru manipularea obiectelor create, cum ar fi
transformări, scalări sau rotaţii.
- permite personalizarea lumii 3D construite prin aplicare de culori, texturi şi prin
metode de iluminare a scenei.
187
- posibilitatea de a adăuga anumite comportamente obiectelor create, fără să fie
nevoie de rescrierea întregului cod-sursă. Astfel, din statice lumile 3D au devenit
dinamice. Totodată se pot implementa tipare de comportament pentru interacţiunea
utilizatorului cu scena virtuală, acesta având şi posibilităţi de a modifica scena deja
construită.
- posibilitatea de a încorpora sunete sau fişiere video în lumea virtuală.
- posibilitatea de a folosi limbaje de script (JavaScript) sau limbaje de programare
(Java) pentru perfecţionarea lumii 3D create.
Odată creată şi integrată într-o pagină HTML, o scenă grafică VRML poate fi
vizualizată de către toţi cei care vizitează acea pagină, cu condiţia ca browserul lor să suporte
conţinut VRML. Browserele compatibile VRML sunt de două tipuri:
- browsere independente (standalone) – acestea oferă posibilitatea de a vizualiza
numai conţinut VRML;
- browsere integrate – folosite în cazul în care se încearcă vizualizarea unei pagini
cu conţinut mixt HTML-VRML. Acestea sunt folosite ca plugin la browserele
clasice HTML.
188
sacrificat de către programator, oferă însă posibilitatea ca acesta să aibă control
deplin asupra etapelor de creare a graficii.
2) cu ajutorul unui builder VRML: acesta este un pachet soft folosit pentru a construi
orice scenă 3D cu efort minim de programare. Printre principalele buildere aflate la
dispoziţia programatorului sunt demne de menţionat următoarele două:
• VRealmBuilder – pachet soft creat de către IDS Software. Este ideal
pentru începători, aceştia având posibilitatea de a comuta între grafica
creată şi codul sursă generat (sunt respectate cu stricteţe sintaxa şi regulile
de construcţie ale fişierului VRML). Structura fişierului creat nu poate fi
modificată, programatorul neavând posibilitatea de a-şi crea propria
ierarhie de noduri sau obiecte.
• Caligari’s Truespace – este cunoscut şi sub numele de Pioneer sau
Fountain. Acest pachet soft oferă, pe lângă primitivele şi formele
geometrice clasice, posibilitatea construirii de forme grafice 3D complexe,
bazate pe sisteme de poligoane şi conţine instrumente şi pentru creare de
text animat.
•
Structura şi caracteristicile unui fişier VRML V2.0
Structura generală a unui fişier VRML (fşierul are extensia .wrl) este dată de
următoarele secţiuni:
1. un fişier VRML începe întotdeauna cu următorul header:
#VRML V2.0 utf8
2. comentarii precedate de caracterul #
3. noduri
Identificatorul utf8 din header permite programatorului folosirea unui set de caractere
extins pentru construcţia scenei 3D (litere greceşti, caractere din alfabetul chinez etc.). Orice
linie care începe cu caracterul #, în afară de acest header este considerat a fi comentariu.
Fişierul VRML este salvat cu extensia „.wrl”.
Modelul de culoare folosit în VRML este RGB, astfel încât este nevoie de 3 valori
pentru specificarea unei culori: roşu (RED), verde (GREEN) şi albastru (BLUE), fiecare cu
valori cuprinse în intervalul [0, 1] (de exemplu combinaţia 0.0 0.0 0.0 semnifică culoarea
neagră şi 1.0, 1.0, 1.0 reprezintă culoarea albă). Unitatea de măsură predefinită a distanţei este
metrul, iar unghiurile sunt măsurate în radiani (şi nu în grade).
Nodul Shape
Sintaxă:
Shape{
189
appearance NULL
geometry NULL
}
Semantică:
Toate obiectele vizibile create în VRML sunt definite în interiorul nodului Shape, unde
găsim următoarele câmpuri:
- appearance – specifică un nod de tip Appearance, prin intermediul căruia stabilim
culoarea, textura şi celelalte caracteristici vizuale ale formei geometrice;
- geometry – indică forma geometrică creată. Acestea pot fi de două tipuri:
• forme primitive: Box (cub), Cone (con), Cylinder (cilindru) şi Sphere
(sferă).
• forme geometrice avansate: Elevation Grid, Extrusion,
IndexedFaceSet, IndexedLineSet şi PointSet.
Nodul Box
Sintaxă:
Box {
size 1.0 1.0 1.0
}
Semantică:
Nodul Box defineşte un paralelipiped căruia i se poate stabili lăţimea, înălţimea şi
grosimea. Centrul de greutate el formei create este prestabilit la punctul cu coordonatele
(0,0,0) din sistemul de coordonate local (practi centrul ecranului). Box are un singur câmp,
size, prin intermediul căruia se defineşte mărimea corpului geometric pe axele X, Y şi Z.
Câmpul are valoarea iniţială 1.0, 1.0, 1.0.
Nodul Sphere
Sintaxă:
Sphere {
radius 1.0
}
Semantică:
Nodul Sphere defineşte o sferă cu raza predefinită la 1.0 m. Sphere are un singur camp,
radius, iar sfera afişată va avea centrul de greutate în centrul ecranului, în punctul cu
coordonatele (0,0,0).
Nodul Cone
Sintaxă:
Cone {
bottomRadius 1.0
height 2.0
side TRUE
bottom TRUE}
190
Semantică:
Nodul Cone se foloseşte pentru definirea unui con şi are 4 câmpuri:
- bottomRadius: reprezintă raza cercului aflat la baza conului. Valoare ei trebuie să
fie mai mare de 0.0;
- height: înălţimea conului;
- side şi bottom: valori booleene, care specifică părţile vizibile ale conului desenat
(de exemplu dacă side e FALSE, se va afişa numai cercul aflat la baza conului);
Nodul Cylinder
Sintaxă:
Cylinder {
radius 1.0
height 2.0
side TRUE
bottom TRUE
top TRUE
}
Semantică:
Nodul Cylinder defineşte un cilindru, şi are 5 câmpuri:
- radius şi height – definesc proporţiile geometrice ale cilindrului. Valoarea lor
trebuie să fie mai mare de 0.0;
- side şi bottom – valori boolene, au aceeaşi funcţie ca şi în cazul nodului Cone;
- top – valoare booleană, este TRUE dacă se doreşte afişarea cercului din partea de
sus a cilindrului („capacul” lui), şi FALSE, dacă acesta e invizibil.
Nodul PointSet
Sintaxă:
PointSet {
color NULL
coord NULL
}
Semantică:
Nodul PointSet defineşte o mulţime de puncte 3D din sistemul de coordonate local şi
are 2 câmpuri:
- color – reprezintă un nod de tip Color, fiind un camp opţional, cu valoarea
predefinită la culoarea neagră;
- coord – reprezintă un nod de tip Coordinate, conţinând un set de coordonate 3D.
Numărul componentelor din câmpul color trebuie să coincidă cu numărul celor din
coord.
Nodul IndexedLineSet
Sintaxă:
IndexedLineSet {
coord NULL
191
coordIndex [ ]
color NULL
colorIndex [ ]
colorPerVertex TRUE
}
Semantică:
Nodul IndexedLineSet defineşte o mulţime de drepte din sistemul de coordinate local şi
are 5 câmpuri:
- color şi coord – cu aceleaşi funcţii ca şi la PointSet;
- coordIndex – conţine o mulţime de indecşi de coordinate cu ajutorul cărora se va
desena dreapta 3D. Indecşii se separă cu ajutorul caracterului “ “, un index cu
valoarea -1 reprezentând şfârşitul listei coordonatelor aparţinând dreptei curente.
- colorIndex – are aceeaşi funcţie ca şi coordIndex, însă se referă la culorile aplicate
dreptelor.
- colorPerVertex – camp Boolean prin intermediul căruia se defineşte modul de
aplicare al culorilor. Dacă valoarea lui este TRUE, fiecare segment de linie poate
avea culoare diferită, astfel încât desenarea dreptei poate începe cu o culoare şi se
poate termina cu alta. Dacă valoarea câmpului e FALSE, fiecare dreaptă are o
singură culoare.
Exemplu
Nodul care permite afişarea de şiruri de caractere (stringuri) în lumea VRML este Text.
Sintaxă:
Text {
string [ ]
fontStyle NULL
length [ ]
maxExtent 0.0
}
Semantică:
Nodul Text conţine următoarele câmpuri:
- string – conţine textul care va fi afişat, formatat pe un singur sau mai multe
rânduri, caz în care fiecare linie este considerată ca fiind un string de sine stătător;
192
- fontstyle – conţine un nod Fontstyle şi se referă la modul de afişare al şirului de
caractere;
- length – reprezintă lungimea fiecărui string în unităţi VRML şi anume: valoarea 0
înseamnă că şirul de caractere rămâne nemodificat, o valoare pozitivă înseamnă
comprimarea unui string considerat lung, iar o valoare negativă se interpretează ca
o expandare al unui string scurt;
- maxLength – setează o limită maximă pentru lungimea stringurilor.
Semantică:
Nodul FontStyle are câmpurile:
- family – specifică familia de fonturi şi poate lua valorile SERIF, SANS sau
TYPEWRITER;
- style – se referă la stilul de afişare al caracterelor. Valori posibile: PLAIN, BOLD,
ITALIC sau BOLDITALIC;
- horizontal – câmp cu valori booleene, permite afişarea de text pe orizontală;
- leftToRight – câmp boolean care specifică dacă textul se afişează de la stânga la
dreapta sau de la dreapta la stânga (în stil arab);
- topToBottom – stabileşte direcţia de afişare de sus în jos sau de jos în sus (în stil
chinezesc);
- justify – stabileşte modul de aliniere al textului. Câmpul poate avea valorile
FIRST, BEGIN (ambele însemnând aliniere la stânga), MIDDLE (text centrat) sau
END (aliniere la dreapta);
- language – specifică setul de caractere folosit, de exemplu „en” – engleză,
„en_US” – engleză americană etc.
- size – specifică mărimea caracterelor în unităţi VRML (şi nu în pixeli);
- spacing – folosit pentru a specifica spaţiul între rândurile textului;
Nodul Appearance
Formele geometrice – mai simple sau mai complexe – create în VRML vor arăta toate la
fel în cazul în care nu sunt personalizate. Culoarea predefinită în VRML este cea neagră, ea se
va aplica tuturor elementelor lumii virtuale în cazul în care acestea nu sunt complet definite
de către creatorul lor.
Nodul care ajută la definirea caracteristicilor vizuale al oricărui nod de tip Shape este
Appearance.
193
Nodul Appearance are sintaxa:
Appearance {
material NULL
texture NULL
textureTransform NULL
}
Semantică:
Nodul are 3 câmpuri opţionale:
- material – defineşte un nod de tipul Material, care specifică culoarea corpului
VRML şi modul în care acesta va reflecta lumina;
- texture – va conţine un nod de textură, de tipul ImageTexture, MovieTexture sau
PixelTexture;
- textureTransform – conţine un nod de tipul TextureTransform şi defineşte modul
în care se aplică textura pe forma geometrică;
Nodul Material
Sintaxă:
Material {
diffuseColor 0.8 0.8 0.8
ambientIntensity 0.2
emissiveColor 0.0 0.0 0.0
specularColor 0.0 0.0 0.0
shininess 0.2
transparency 0.0
}
Semantică:
Nodul Material are 6 câmpuri:
- diffuseColor – se foloseşte pentru definirea culorii aplicate. Câmpul este ignorat
dacă se aplică şi texturi pe corpul geometric;
- emissiveColor – defineşte gradul de strălucire al suprafeţei colorate;
- ambientIntensity – determină volumul de lumină reflectat de către corpul
geometric;
- specularColor – defineşte culoarea „petelor” lucioase de pe materialul corpului
geometric;
- shininess – moderează intensitatea cu care strălucesc „petele” lucioase de pe
suprafaţă, valori mici însemnând strălucire moderată, iar valori mari strălucire
intensă;
- transparency – este folosit pentru specificarea gradului de transparenţă al
materialului. Valoarea 0.0 semnifică o suprafaţă complet opacă, iar 1.0 o suprafaţă
total transparentă.
194
Culorile în nodul Material se reprezintă în mod caracteristic VRML, ca un triplet RGB,
cu valori reale cuprinse între 0.0 şi 1.0.
Texturi
VRML 2.0 permite texturarea formelor geometrice cu ajutorul imaginilor, filmelor sau
imaginilor pixelate. Odată aleasă, textura se va aplica tuturor feţelor formei geometrice. Se
permite redimensionarea texturii alese, dar şi repetarea ei pe orizontală, verticală sau ambele
sensuri astfel încât să acopere faţa/feţele corpului geometric. De asemenea există şi
posibilitatea de a transforma sau roti o textură cu ajutorul nodurilor TextureTransform şi
TextureCoordinate.
Nodul ImageTexture
Permite setarea unei imagini JPEG, GIF sau PNG ca textură, cu ajutorul acestui nod se
poate stabili şi modul în care se va aplica textura (dacă se va repeta pe orizontală sau verticală
şi cum se va aplica pe feţele formei geometrice).
Sintaxă:
ImageTexture {
url [ ]
repeatS TRUE
repeatT TRUE
}
Semantică:
Nodul are următoarele câmpuri opţionale:
- url – specifică locaţia imaginii, se pot da şi liste de locaţii în care browserul să
caute imaginea;
- repeatS – specifică dacă imaginea se va repeta pe verticală, câmpul poate lua
valori booelene;
- repeatT - specifică dacă imaginea se va repeta pe orizontală, câmpul poate lua
valori booelene;
Nodul TextureTransform
Acest nod permite efectuarea de operaţii simple (scalări, transformări, rotaţii sau
translaţii) asupra coordonatelor texturii folosite. TextureTransform poate apărea numai în
interiorul unui nod Appearance.
Sintaxă:
TextureTransform {
scale 1 1
rotation 0
center 0 0
translation 0 0
}
Definirea surselor de lumină
195
headlight, VRML oferind posibilitatea de a folosi şi alte tipuri de iluminări, şi anume: lumina
direcţionată (directional light), lumina punctiformă (point light) şi lumina de tip bec (spot
light).
Probleme întâmpinate în iluminarea unei scene VRML:
- reflecţia luminii – în realitate în momentul în care un obiect este iluminat acesta
reflectă lumina în funcţie de materialul din care este construit şi de culoarea sa. În
lumea virtuală VRML însă nu este cunoscut conceptual de lumină reflectată, ceea
ce înseamnă că sunt vizibile numai obiectele care sunt illuminate în mod direct.
- atenuarea luminii – VRML are această funcţie prin intermediul căruia se
modelează efectul de scădere în intensitate a luminii odată cu creşterea distanţei
dintre obiectul iluminat şi sursa de lumină (numai în cazul unei surse de lumină
punctiforme sau de tip bec).
- umbrele – VRML nu permite modelarea efectului de umbră, deoarece ar creşte
foarte mult complexitatea graficii create. Umbrele pot fi doar simulate,
manipulând culoarea aplicată elementelor lumii virtuale.
- iluminarea unei suprafeţe plane - prezintă probleme în cazul în care se doreşte
iluminarea doar al unei părţi din totalul suprafeţei, însă aceste probleme se pot
rezolva dacă suprafeţele plane se definesc cu ajutorul unor noduri IndexedFaceSet
sau ElevationGrid, asftel încât ele să fie alcătuite din mai multe sectoare, creându-
se astfel suprafeţe gen meşe.
- lumini colorate – VRML oferă posibilitatea de a color alumina, trebuie însă să se
ţină cont de anumite reguli:
• în cazul în care se definesc culori pure (roşu, verde sau albastru) obiectele
colorate astfel vor reflecta numai lumina de aceeaşi culoare;
• obiectele colorate cu culori pure iluminate cu lumină de altă culoare, vor
rămâne “în intuneric”, nu vor reflecta lumina;
Se recomandă deci folosirea culorilor mixte (amestecuri de roşu, verde şi albastru).
Nodul DirectionalLight
Sintaxă:
DirectionalLight {
on TRUE
intensity 1
ambientIntensity 0
color 0.4 1 0.0
direction 0 1 -1
}
Semantică:
Acest nod defineşte o sursă de lumină aflată la o distanţă foarte mare de lumea virtuală
creată, astfel încât razele de lumină care ajung la obiectele din acea lume sunt deja paralele pe
o anumită direcţie. Lumina definită prin intermediul acestui nod are effect numai asupra
obiectelor definite în acelaşi grup cu nodul DirectionalLight. Câmpurile acestui nod sunt:
- on – camp boolean, determină dacă lumina direcţională e sau nu activă;
- intensity – reprezintă intensitatea luminii, poate avea valori între 0.0 şi 1.0;
- ambientIntensity – specifică prin valoarea sa (între 0.0 şi 1.0) măsura în care
lumina direcţională contribuie la iluminarea generală a scenei 3D;
- color – un camp RGB prin care se determină culoarea luminii;
- direction – specifică un vector 3D care setează direcţia luminii;
196
Nodul PointLight
Sintaxă:
PointLight {
on TRUE
intensity 0.8
ambientIntensity 0.2
color 1 1 0.1
location 0 0 0
attenuation 1 0 0
radius 80
}
Semantică:
Acest nod defineşte o sursă de lumină aflată într-o locaţie exactă, din această locaţie
razele de lumină se împrăştie în toate direcţiile. Se iluminează toate corpurile care se află în
calea de lumină, nu numai cele definite în acelaşi grup de obiecte cu nodul PointLight.
Intensitatea luminii se poate totuşi limita cu atributul radius, care specifică raza sferei în
interiorul căreia obiectele sunt iluminate de către sursa de lumină definită. Alte câmpuri ale
nodului PointLight:
- on - camp boolean, determină dacă lumina punctiformă e sau nu activă;
- intensity – reprezintă intensitatea luminii, cu valori între 0.0 şi 1.0;
- ambientIntensity – specifică prin valoarea sa (între 0.0 şi 1.0) măsura în care
lumina direcţională contribuie la iluminarea generală a scenei 3D;
- color – un câmp RGB care determină culoarea luminii;
- location – specifică un vector 3D care defineşte coordonatele sursei de lumină;
- attenuation – vector 3D care specifică modul în care lumina îşi va pierde din
intensitate odată cu creşterea distanţei de la sursă;
Nodul SpotLight
Sintaxă:
SpotLight {
on TRUE
intensity 1
ambientIntensity 0.2
color 1 0.1 1
location 0 1 0
direction 0 0 0
attenuation 1 0 0
radius 80
cutOffAngle 0.78
beamWidth 0.78
}
Semantică:
Acest nod defineşte o sursă de lumină aflată într-o locaţie anume, cu direcţia luminii
bine stabilită, astfel încât razele de lumină emise dintr-o astfel de sursă să formeze un con de
lumină. Acest con este caracterizat de două din câmpurile nodului, şi anume:
197
- cutOffAngle – defineşte unghiul pe care îl formează generatorii conului, se
specifică în radiani, valoarea sa trebuie să se încadreze în intervalul 0-1,57 (0˚-
180˚);
- beamWidth – defineşte unghiul unui con mai mic, în interiorul căruia lumina are o
intensitate constantă;
Nodul Group
Sintaxă:
Group {
children []
bboxCenter 0 0 0
bboxSize -1 -1 -1
}
Semantică:
Acest nod permite ca o mulţime de noduri să fie tratate ca o singură entitate (nod)
VRML. Conţine următoarele câmpuri:
- children – conţine nodurile (elementele) incluse în grup;
- bboxCenter şi boxSize - cu semnificaţia definită în nodul Anchor;
Nodul Transform
Sintaxă:
Transform {
scale 1 1 1
198
scaleOrientation 0 0 1 0
center 0 0 0
rotation 0 0 1 0
translation 0 0 0
bboxCenter 0 0 0
bboxSize -1 -1 -1
children []
}
Semantică:
Nodul Transform permite definirea unui nou system de coordinate local pentru nodurile
ce fac parte din grup. Cu ajutorul său se pot efectua operaţii de tip rotaţie, scalare sau
translaţie, acestea afectând de asemenea toate nodurile conţinute de grup. Câmpurile nodului
Transform sunt:
- children – conţine toate nodurile ce vor face din grup;
- scale – se referă la o transformare de tipul scalare;
- scaleOrientation – specifică modul de rotaţie al axelor sistemului de coordinate
pentru ca scalarea să se poată realize;
- center – defineşte centrul operaţiei de scalare;
- rotation – defineşte o rotaţie pe una din axe, are 4 valori, primele 3 se referă la
axele de coordinate X, Y, Z, iar cel de-al 4-lea unghiul rotaţiei;
- translation – defineşte o nouă origine pentru sistemul de coordinate;
- bboxCenter şi boxSize - cu semnificaţia definită în nodul Anchor;
Principala diferenţă între VRML 1.0 şi VRML 2.0 este reprezentată de capacitatea
nodurilor să fie emiţători sau receptori de evenimente, astfel încât în VRML 2.0 se pot defini
obiecte animate care pot avea anumite reacţii la interacţiunea cu utilizatorul. Aceste reacţii se
obţin prin modificarea anumitor câmpuri din nodurile deja create, acestea purtând numele de
„câmpuri expuse” şi putând fi descompuse în 3 subcomponente (fieldName reprezentând
numele câmpului expus):
- eventIn set_fieldName
- field fieldName
- eventOut fieldName_changed
199
se modifică se va genera răspunsul la acea modificare cu ajutorul componentei eventOut.
Exemple de câmpuri expuse: diffuseColor, url, point[], scale, rotation sau translation.
Nodurile VRML pot dispune şi de alte câmpuri de tip eventIn sau eventOut, acestea însă
nu sunt vizibile în definiţia nodului, sunt considerate implicite. De asemenea pot exista noduri
care au câmpuri eventIn definite fără să aibă correspondent eventOut (cum ar fi câmpurile
coordIndex[], colorIndex[], orientation sau scale).
Modul de gestionare al evenimentelor este următorul: în momentul producerii unui
eveniment, nodul care l-a generat returnează o valoare sau o mulţime de valori de un anumit
tip (în funcţie de tipul evenimentului). Astfel, producerea de evenimente în VRML poate fi
văzută ca o transmitere de date de la utilizator către nodul care va fi modificat. În funcţie de
valorile transmise de către parametric nodul va răspunde cu o acţiune specifică, acţiune
reflectată de modificare valorilor câmpurilor expuse. Pentru a putea transmite acţiunea dorită
unui nod şi pentru a putea recepta răspunsul său, VRML se foloseşte de scripturi şi de rutarea
evenimentelor (ROUTES).
În VRML există posibilitatea de a genera evenimente şi fără modificarea valorii
câmpurilor expuse, folosind una din următoarele structuri:
- timere – generează evenimente la anumite intervale de timp predefinite;
- senzori – senzori de atingere (touch sensors): generează evenimente atunci când
cursorul mouse-ului este plasat asupra unui obiect/nod definit în acelaşi grup de
noduri ca şi senzorul;
- senzori de vizibilitate (visibility sensors): generează evenimente atunci când un
obiect sau mai multe din grupul în care e definit senzorul este vizibil pentru
utilizator;
- senzori de mişcare (dragging sensors): generează evenimente atunci când
utilizatorul dă click peste un obiect (din acelaşi grup ca şi senzorul) şi îl „trage” pe
ecran, schimbându-i poziţia;
- senzori de apropiere (proximity sensors): evenimentul se declanşează în momentul
în care pointerul mouse-ului se află la o anumită distanţă de obiectul care va
suporta consecinţele evenimentului;
În VRML un nod poate genera (trimite) sau recepţiona evenimente, legătura între un
eveniment generat de un nod şi nodul care receptează evenimentul fiind realizat de entitatea
ROUTE.
200
Senzori în VRML
Nodul TimeSensor
Sintaxă:
TimeSensor {
cycleInterval 1.0
enabled TRUE
loop FALSE
startTime 0
stopTime 0
}
Semantică:
Acest nod funcţionează ca un cronometru care declanşează unul sau mai multe
evenimente la anumite intervale de timp (creându-se astfel efecte de animaţie). Nodul are
următoarele câmpuri:
- enabled – specifică statutul senzorului (dacă are valoarea TRUE senzorul e activ,
la valoarea FALSE senzorul este inactiv);
- startTime – specifică momentul în care senzorul începe generarea evenimentelor.
Valoarea câmpului este în secunde şi reprezintă numărul de secunde trecute de la
data 01.01.1970, ora 00:00;
- stopTime – specifică momentul în care senzorul va înceta generarea de
evenimente. Valoarea câmpului este în secunde şi reprezintă numărul de secunde
trecute de la data 01.01.1970, ora 00:00;
- cycleInterval – specifică intervalul de timp în carese vor genera evenimentele,
având valoarea măsurată în secunde;
- loop – specifică dacă în momentul în care expiră numărul de secunde definite în
câmpul cycleInterval, TimeSensor va fi sau nu restartat;
Nodul TouchSensor
Sintaxă:
TouchSensor {
enabled TRUE }
201
Semantică:
Este un nod care asigură interactivitatea lumii VRML cu utilizatorul. De obicei nodul
este definit în cadrul unui grup de noduri, având efect asupra tuturor nodurilor definite în
cadrul grupului. Acest senzor este activat în momentul în care pointerul mouse-ului este
poziţionat asupra unui obiect din cadrul grupului şi utilizatorul efectuează un click asupra
acelui obiect.
Nodul TouchSensor are un singur câmp, şi anume enabled, care specifică statutul
senzorului.
Evenimente generate de TouchSensor:
- isOver – este un eveniment generat cu valoarea TRUE atunci când câmpul enabled
are valoarea TRUE şi cursorul mouse-ului este mutat deasupra unui obiect din
grup. Evenimentul se generează cu valoarea FALSE dacă senzorul e activ (adică
enabled e TRUE) şi cursorul mouse-ului nu se opreşte deasupra niciunui obiect din
grup. Evenimentul isOver se generează numai în cazul obiectelor vizibile pentru
utilizator.
- evenimente care apar la mişcarea cursorului poziţionat pe un obiect din grup:
• hitPoint_changed – returnează poziţia exactă a obiectului în cadrul
grupului de obiecte;
• hitNormal_changed – returnează normala la suprafaţă, folosind
coordonatele 3D stabilite prin evenimentul hitPoint_changed;
• hitTextCoord_changed – returnează valorile textCoord referitoare la
suprafaţă;
- isActive – este un eveniment generat în momentul în care senzorul este activ şi se
realizează un click asupra unui obiect (valoarea alocată evenimentului va fi
TRUE). În momentul în care mouse-ul nu mai este apăsat isActive ia valoarea
FALSE şi se generează un eveniment touchTime care memorează momentul
înregistrării click-ului.
Nodul VisibilitySensor
Sintaxă:
VisibilitySensor {
enabled TRUE
center 0 0 0
size 0 0 0
}
Semantică:
Acest nod poate fi folosit pentru a detecta modificările aduse în vizibilitatea obiectelor
VRML, răspunzând cu anumite evenimente la aceste modificări de vizibilitate. Rolul său însă
nu este acela de a stabili dacă un anumit obiect este sau nu vizibil, senzorul reacţionează doar
la modificările aduse lumii VRML.
202
- size – reprezintă mărimea laturii cubului;
- enabled – specifică statutul senzorului, valorile sale sunt booleene;
Senzori de mişcare
203
Nodul PlaneSensor
Sintaxă:
PlaneSensor {
enabled TRUE
offset 0 0 0
autoOffset TRUE
maxPosition 1 1
minPosition 0 0
}
Semantică:
Permite o deplasare a obiectelor VRML în sistemul de coordinate local în planul XY,
astfel încât mişcarea se poate limita la o suprafaţă dreptunghiulară. Câmpurile specifice
acestui nod sunt:
- maxPosition – reţine valoarea maximă permisă pentru X şi Y;
- minPosition - reţine valorile minime pentru X şi Y;
În cazul în care valoarea specificată de maxPosition este mai mică decât cea din
minPosition, nu există limitare în deplasarea obiectului.
Nodul SphereSensor
Sintaxă:
SphereSensor {
enabled TRUE
offset 0 1 0 0
autoOffset TRUE
}
Este folosit pentru a realiza mişcarea obiectelor pe suprafaţa unei sfere imaginare (deci
în jurul centrului sistemului de coordonate local).
Nodul CylinderSensor
Sintaxă:
PlaneSensor {
enabled TRUE
offset 0
autoOffset TRUE
maxAngle -1
minAngle 0
diskAngle 0.262
}
204
Semantică:
Este folosit pentru a realize mişcarea obiectelor pe suprafaţa unui cilindru imaginar
(adică în jurul axei Y al sistemului de coordinate local, limitând mişcarea la un anumir unghi
dat).
Câmpurile nodului CylinderSensor sunt:
- offset – cu aceeaşi semnificaţie ca şi în cazul celorlalte noduri de mişcare, însă
mişcarea se realizează relativ la valoarea de pe axa X;
- maxAngle – specifică rotaţia maximă ce poate fi realizată;
- minAngle- specifică rotaţia minimă;
Dacă valoarea specificată în maxAngle este mai mică decât cea din minAngle, atunci
rotaţia care se realizează nu este limitată (unghiul poate fi şi de 360 de grade).
Acest tip de senzori sunt reprezentaţi de către nodul ProximitySensor. Acesta asigură un
anumit grad de interactivitate într utilizator şi lumea VRML, generând anumite evenimente de
fiecare dată câbd utilizatorul intră, iese sau se mişcă în interiorul unui spaţiu de control,
delimitat printr-un cub imaginar. Senzorul nu ajută la determinarea poziţiei relative al
obiectelor din lumea VRML.
Sintaxă:
ProximitySensor {
enabled TRUE
center 0 0 0
size 0 0 0
}
Semantică:
ProximitySensor are următoarele câmpuri:
- enabled – specifică statutul senzorului (poate fi activ sau inactiv);
- center – conţine coordonatele centrului cubului imaginar;
- size – specifică dimensiunea laturii cubului;
Evenimente generate de către ProximitySensor:
- isActive – este generat cu valoarea TRUE atunci când senzorul este activ (câmpul
enabled are valoarea TRUE) şi pointerul mouse-ului se deplasează dintr-o poziţie
din exteriorul cubului într-o poziţie din interiorul cubului. Câmpul ia valoarea
FALSE atunci când mişcarea se realizează în sens invers;
- enterTime – este generat atunci când utlizatorul (prin intermediul mouse-ului)
accesează interiorul cubului. În momentul în care utilizatorul părăseşte interiorul
cubului se generează un eveniment exitTime. La orice mişcare a mouse-ului
(accesarea interiorului cubului, schimbarea poziţiei în interiorul cubului sau ieşirea
din cub) se generează următoarele evenimente:
205
M5.U3.7. Noduri speciale
Sintaxă:
{
DEF name node
}
Nodul astfel creat poate fi apelat folosind sintaxa:
{
USE name
}
Nodul Inline
Sintaxă:
Inline {
url []
bboxCenter 0 0 0
bboxSize -1 -1 -1
}
Semantică:
VRML permite ca lumea virtuală să fie “împrăştiată” în mai multe fişiere .wrl, astfel
încât codul să fie mai lizibil şi gradul său de reutilizabilitate să fie crescut. Nodul Inline
permite definirea unui URL de unde browserul poate extrage datele necesare construcţiei
lumii 3D (URL-ul trebuie să conţină calea absolută către un fişier VRML complet şi corect).
206
range []
}
Semantică:
Nodul LOD permite ca un obiect VRML să fie reprezentat în mai multe versiuni la care
diferă doar gradul de reprezentare ale detaliilor acelui obiect, în funcţie de distanţa la care
acesta se află de utilizator.
Nodul LOD are următoarele câmpuri:
- level – reprezintă multţimea de reprezentări posibile ale obiectului VRML;
- center – conţine coordonatele unui punct 3D în funcţie de care se va calcula
distanţa faţă de obiectul reprezentat;
- range – cuprinde o mulţime de valori reale ce reprezintă distanţele faţp de obiect,
în ordine crescătoare; valorile trebuie să fie mai mari sau egale decât 0.
Operaţia de interpolare se referă la definirea unei legături directe dintre o cheie (key) şi
o valoare a cheii (keyValue). Cheia poate avea valori cuprinse între 0.0 şi 1.0, iar keyValue
poate fi reprezentată de orice tip de dată în funcţie de tipul interpolării. VRML permite
următoarele tipuri de interpolări:
- ColorInterpolator
- CoordinateInterpolator
- NormalInterpolator
- OrientationInterpolator
- PositionInterpolator
- ScalarInterpolator
Fiecare dintre aceste noduri are un eveniment eventIn de tip set_fraction (este acel
eveniment ce produce modificările la nivelul nodului vizat) şi un eventOut value_changed
(care reflectă modificările realizate). Legătura între cele două evenimente este realizată de
către cheie: set_fraction stabileşte valoarea ei, iar value_changed reacţionează verificând
valoarea lui keyValue, direct asociată cheii.
Operaţiile de interpolare combinate cu efectele senzorului TimeSensor rezultă în apariţia
de lumi virtuale animate (lumi care conţin variaţii de culori, obiecte ce se metamorfozează
etc.). Modul de funcţionare al acestor două noduri este următorul: TimeSensor are un
eveniment fraction_changed care poate fi legat de evenimentul set_fraction, folosind operaţia
de rutare a evenimentelor (ROUTE). Interpolatorul va genera un eveniment value_changed
care poate fi legat prin rutare de una din câmpurile expuse ale unui nod obişnuit. Rezultatul
final constă în modificarea unei anumite proprietăţi al obiectului VRML (culoare, mărime,
poziţie etc.), odată cu trecerea timpului.
Câmpurile nodurilor de interpolare sunt key[] şi value[], valorile alocate acestor câmpuri
având următoarea semnificaţie: set_fraction primeşte ca parametru valorile din key[], atunci
valoarile returnate prin eveneimentul value_changed este keyValue.
207
Nodul ColorInterpolator
Este un nod de interpolare care în câmpul keyValue conţine o listă de valori RGB şi care
are ca efect modificarea culorii obiectului VRML asupra căruia se aplică.
Sintaxă:
ColorInterpolator {
key [ ]
keyValue[ ]
}
Nodul CoordinateInterpolator
Sintaxă:
CoordinateInterpolator {
key [ ]
keyValue[ ]
}
Nodul NormalInterpolator
Sintaxă:
NormalInterpolator {
key [ ]
keyValue [ ]
}
Nodul OrientationInterpolator
Sintaxă:
OrientationInterpolator {
key [ ]
keyValue[ ]
}
Nodul PositionInterpolator
208
Este un nod de interpolare care în câmpul keyValue conţine o listă de coordonate 3D şi
care are ca efect animaţia obiectelor VRML asupra cărora se aplică prin deplasarea lor pe ruta
definită în keyValue.
Sintaxă:
PositionInterpolator {
key [ ]
keyValue[ ]
}
Nodul ScalarInterpolator
Este un nod de interpolare care în câmpul keyValue conţine o listă de valori reale
folosite pentru modificarea oricărui câmp expus cu valori reale (de exemplu: viteza cu care se
redă un film sau sunet – dacă se modifică valoarea câmpului speed).
Sintaxă:
ScalarInterpolator {
key [ ]
keyValue[ ]
}
M5.U3.9. Rezumat
209
M5.U3.10. Test de evaluare a cunoştinţelor
210
Modulul VI. Prelucrarea imaginilor cu Gimp 2.6
Introducere
GIMP (GNU Image Manipulation Program este un program software pentru
prelucrarea imaginilor. GIMP poate fi utilizat la cele mai simple prelucrari de
imagini, cum ar fi luminozitate, contrast, filtre RGB, pana la realizarea celor mai
complexe colaje de imagini, efecte, GIF-uri animate, care pot fi incorporate într-o
pagină web.
GIMP este disponibil gratuit pentru diferite sisteme de operare. Cele mai multe
distribuţii Linux includ GIMP ca aplicaţie standard. Programul este disponibil de
asemenea si pentru Microsoft Windows si Apple. GIMP este un software gratuit
care detine o licenţă de utilizare publică numită General Public License.
Competenţe
La sfârşitul acestui modul studenţii vor fi capabili:
• să utilizeze un program pentru prelucrarea imaginilor
• să înţeleagă principiile de bază ale prelucrării imaginilor: luminozitate,
contrast, poziţionarea subiectului
• să realizeze logo-uri, bannere, GIF-uri animate, care pot fi incorporate într-
un site web
211
U1. Concepte de bază în GIMP 2.6
M6.U1.1. Introducere
Straturi (layere)
Straturile reprezintă foi suprapuse şi sunt utilizate pentru a facilita manipularea
imaginilor. Straturile pot fi ascunse, şterse sau transparente.
Canalele (channels)
Canalele sunt utilizate pentru a face modificări la nivel de culoare, spre exemplu
stergerea efectului de ochi roşii.
212
Selecţiile (selection)
Sunt utilizate pentru a selecta o anumită parte dintr-o imagine. În GIMP există trei
tipuri de selectori: dreptunghiular (rectangular selection), sub formă de elipsă (elipse
selection) şi formă neregulată (lasso selection).
213
Fig.2 Setarea parametrului Quality
214
Comprimarea unei imagini
Se realizează cu File- Save As – JPG. Se setează parametrul Quality, spre exemplu valoarea
10 înseamnă o imagine de dimensiune mai mica, iar valoarea 40 înseamnă o imagine de dimensiune
mai mare dar de o calitate mai ridicată.
Să ne reamintim...
• GIMP este un program utilizat pentru prelucrarea imaginilor
• Pentru a obţine imagini de calitate, trebuie să le salvăm într-un format adecvat,
setând paramentrul Quality la 100%
M6.U1.5. Rezumat
• GIMP oferă o varietate de modalităţi de prelucrare a imaginilor şi suportă
fişiere având extensiile: .GIF, .JPG, .TIF, .PNG, .XCF
• O imagine GIMP conţine mai multe obiecte, fiind similară cu o carte având
mai multe pagini, numite straturi (layers). Pe lângă acestea, imaginea mai
poate conţine o mulţime de canale (channels).
• Cele mai importante ferestre de lucru în GIMP sunt:
• Toolbox – conţine instrumentele de lucru
• Canvas – suprafaţa de lucru
• Gradients – conţine butoane pentru utilizarea schemelor de culori
215
• Fereastra Layers, Channels, Paths
216
U2. Lucrul cu logo-uri, butoane, bannere
Cuprins
M6.U2.1. Introducere ......................................................................................................
M6.U2.2. Obiectivele unităţii de învăţare .......................................................................
M6.U2.3. Crearea unui logo ............................................................................................
M6.U2.4.Crearea unui banner........................................................................................
M6.U2.5.Realizarea unui GIF animat..............................................................................
M6.U2.6. Rezumat ............................................................................................................
M6.U2.7. Test de evaluare..............................................................................................
M6.U2.1. Introducere
217
Pentru crearea unui buton, se parcurg aceiaşi paşi, însă folosind opţiunea File – Create –
Buttons.
218
Fig. 5 Salvarea unei imagini ca .GIF animat
Exemplul 1
219
Fig.6 Banner animat pentru produse din domeniul IT
Pentru a realiza acest banner în GIMP, mai întâi se caută imaginile necesare: imaginea colorată
de pe fundal, o imagine cu sigla Apple şi imaginea cu două iPhone-uri. Pentru realizarea
acestui banner se urmează paşii:
220
Exemplul 2
3. Forma creată a fost duplicată și apoi întoarsă pentru a o pune în partea de sus a
banner-ului
6. În final se inserează sub formă de text, simbolul „*” care simulează fulgii de zăpadă
pe întregul banner
221
M6.U2.6. Rezumat
• Pentru a crea un logo în GIMP se utilizează File – Create – Logos
• Pentru a crea un buton în GIMP se utilizează File – Create – Buttons
• Pentru a crea un banner se utilizează File – New – Template – Web
banner common
222
U3. Crearea animaţiilor complexe
Cuprins
M6.U3.1. Introducere ......................................................................................................
M6.U3.2. Obiectivele unităţii de învăţare .......................................................................
M6.U3.3. Lucrul cu filtre în GIMP .................................................................................
M6.U3.4. Animaţii complexe...........................................................................................
M6.U3.5. Rezumat ............................................................................................................
M6.U3.6. Test de evaluare...............................................................................................
M6.U3.1. Introducere
În prelucrarea imaginilor, o importanţă deosebită o are utilizarea filtrelor. Cu
ajutorul lor se pot obţine efecte vizuale de excepţie.
223
Filtrul Blur
Filtrul Blur produce un efect similar cu cel al unei camere foto. Acest filtru se utilizează cel
mai bine pentru imagini mari, deoarece el este foarte puţin perceptibil pe imagini de
dimensiune mică.
224
Fig. 10 Aplicarea filtrului Gaussian Blur
225
Crearea unui colaj de imagini de tip diafilm
Se parcurg următorii paşi:
1. Open - File, se selectează mai multe imagini, cu ajutorul tastei SHIFT
2. Fiecare imagine se va deschide într-o fereastră separată; se selectează Filters –
Combine – FilmStrip
3. Se introduc imaginile dorite în diafilm folosind butonul ADD
4. Imaginea finală va fi o combinaţie de imagini de tip diafilm, care se salvează cu
extensia .GIF
Exemplul 1
226
7. Se salvează imaginea ca .GIF animat
Exemplul 2
M6.U3.5. Rezumat
• Un filtru este un plug-in care modifică modul de afişare a unei imagini
• Utilizarea filtrelor este foarte importantă pentru obţinerea lor de
animaţie complexe
• Animaţiile se rulează astfel: Filters – Animation – Playback
1. Ce reprezintă un filtru?
2. Ce efect are aplicarea filtrului Motion Blur?
3. Ce efect are aplicarea filtrului Blur?
4. Cum se realizează un colaj de imagini de tip diafilm?
5. Ce efect are setarea parametrului Blur Radius – Horizontal şi Vertical din
fereastra de setări Gaussian Blur?
227
Bibliografie
L. Sângeorzan, Tehnologii web şi WebDesign, Ed. Univ. Transilvania din Braşov,
pg.215, 2009, ISBN 978-973-598-523-3.
R. Dörner (FH Wiesbaden, Germania), L. Sângeorzan, K. Kiss-Iakab, Introducere în
OpenGL - Einführung in OpenGL, Ed. Univ. Transilvania din Braşov, pg.224, 2009, ISBN
978-973-598-472-4.
Gerald Reinhardt, Praxiswissen, Flex3, O’Reilly Verlag GmbH &Co.KG, 2009, pg.441,
ISBN 978-3-89721-860-4
Bettina K. Lechner, GIMP, Fuer digitale Fotografie, Webdesign und kreative
Bildbearbeitung, Addison-Wesley, pg.356,2009, ISBN 978-3-8273-2804-5.
L. Sângeorzan, K. Kiss-Iakab, Grafică pe calculator: JAVA - teorie şi aplicaţii, Ed.
Univ. Transilvania din Braşov, pg. 144, 2006, ISBN –973-635-713-9, ISBN – 978-973-535-
713-8.
Tudor Sorin, Vlad Hutanu, Crearea si programarea paginilor WEB, ed. L&S SOFT,
2006, ISBN 973 86022 2 X
L. Sângeorzan, C. L. Aldea, Tehnologii internet, Ed. Univ. Transilvania din Braşov, pg.
160, 2003, ISBN 973-635-176-9.
L. Sângeorzan, O. Tatu, A. Tatu, Web Resources for Teaching and Studying English; An
Introduction to HTML 4.0, Ed. Univ. Transilvania din Braşov, pg. 156, 2003 , Commenius
Programme, 87160-CP-1_2000-1-RO.COMENIUS–C31, ISBN 973-635-208-0.
Robin Williams Initiere in Design, Ed. Corint, 2003
Robin Williams, Design pentru WEB, Ed. Corint, 2003, ISBN 973 653 421 9.
L. Sângeorzan, O. Tatu, Basic Computer Science and English for Chemistry Teachers,
Ed. Univ. Transilvania din Braşov, pg. 68, 2002, ISBN: 973-635-066-5.
L. Sângeorzan, C. L. Aldea, M. R. Dumitru , JAVA, aplicaţii, Ed. Infomarket, Braşov,
pg. 203, 2001, ISBN 973-8204-14-3.
Tudor Gugoiu, HTML prin exemple, , Ed. Teora, 2001, ISBN 973 20 0455 X
Sabin Corneliu Buraga, Tehnologii WEB , Matrix Rom, Bucuresti 2001,nr. Pg. 662,
ISBN 973 685 28
L.Sângeorzan, VRML - Îndrumar de laborator, , Reprografia Universitatea Transilvania
Braşov, 1999
Rolf Daessler, Das Einsteigerseminar VRML, Ed. BHV, ISBN 3-8287-1082-4
http://www.gimp.org/tutorials/
http://http://docs.gimp.org/2.8/en/
http://getbootstrap.com/2.3.2/getting-started.html
228