0% au considerat acest document util (0 voturi)
208 vizualizări362 pagini

Cursuri Informatica

Încărcat de

Robert Petre
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
208 vizualizări362 pagini

Cursuri Informatica

Încărcat de

Robert Petre
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
Sunteți pe pagina 1/ 362

Structura cursului

Curs:

Sala I101 - seria I, grupele 1411 -1413 săptămâna impară


Sala I101 - seria II, grupele 1414-1416 saptămâna pară

Laborator

Sala F113

Proiect

Sala F312
Materiale

platforma Moodle

http://fim.curs.pub.ro/
Informatică Aplicata 1
Structura cursului

Saptamanile 1...6 curs si laborator MATLAB

Saptamanile 7,8 – Verificare MATLAB

Saptamanile 7...12 curs si laborator HTML

Saptamanile 13,14 – Verificare practica HTML

Ultimul curs – Colocviu final HTML &MATLAB


Ce se asteapta de la voi


Prezenta obligatorie la Laborator

NU se fac recuperari la laborator

Prezenta obligatorie la:

Verificarea practica MATLAB

Verificare practica HTML


Calculul Notei Finale

30% din nota Verificare practica MATLAB

30% din nota Verificare practica HTML

20% din nota Proiect

20% din nota Colocviu final HTML & MatLab

Cerinte minimale pentru promovare:

obtinerea a minim 50% din punctajul total


Proiect

Scopul : sa intelegeti domeniul Ingineriei Biomedicale

Subiectul – idei contemporane: imagistica medicala,


biomecanica, biomateriale, inginerie genetica, organe
artificiale, biosenzori etc.

Documentare: obligatoriu articole de jurnal si resurse online


(intotdeauna scrieti referintele )

Modul de realizare: Crearea unor pagini HTML – echipe de 2

Sectiuni obligatorii: Titlul, Autorii, Abstract (ce? de ce? cum ?)


Introducere, Metode, Rezultate, Discutii, Referinte
Curs 1
MATLAB
The Language of Technical
Computing

numere/variabile/functii uzuale
Ce este MATLAB-ul?


MATrixLABoratory este un limbaj de programare de nivel
inalt, mai exact este un interpretor folosit in
realizarea/programarea calculelor numerice - produs al firmei
MathWorks Inc.

Pachet de programe de inalta performanta pentru calcul si
analiza numerica, simulari si reprezentari grafice in
domeniul stiintei si ingineriei.

MATLAB integreaza analiza numerica cu calculul matriceal, cu
prelucrarea semnalelor si cu grafica intr-un mediu usor de
utilizat. MATLAB este construit pe baza unui soft sofisticat
de calcul matricial de analiza a ecuatiilor liniare.
De ce MATLAB?


Include numeroase funcții built-in

Include instrumente de desenare/vizualizare/simulare

Optimizeaza calculul matriceal

Vasta documentatie si suport online

Poate fi folosit in orice domeniu care utilizeaza modele ce
necesita calcule numerice complex: matematica aplicata, fizica,
chimie, bioinginerie și in orice domeniu tehnic, finante etc
MATLAB & Octave

La sfarsitul acestor cursuri veti fi capabili sa:


Creati si folositi scripturi si functii

Sa scrieti mici programe interactive

Procesati fisiere de date

Lucrati cu vectori si matrici

Creati grafice 2D si 3D
MATLAB-ul?

https://uk.mathworks.com/products/matlab.html

http://www.mathworks.com/academia/student_version

Versiune online:
https://uk.mathworks.com/products/matlab-online.html

Site Octave:
https://www.gnu.org/software/octave/

Pachete extra pentru GNU Octave:


https://octave.sourceforge.io
MATLAB Desktop
Structura

MATLAB este realizat sub forma unui nucleu de baza,


cu interpretor propriu, in jurul caruia sunt construite
Toolbox-uri - aplicatii specifice

Toolbox – o colectie extinsa de functii MATLAB care


dezvolta mediul de programare, pentru a rezolva
probleme din domenii variate
Toolbox-uri disponibile
Signal Processing – pentru procesarea semnalelor si analiza seriilor
temporale
Image Processing – pentru procesarea imaginilor si a semnalelor
bidimensionale
Neural Network – pentru proiectarea si simularea retelelor neurale
Statistics – pentru analiza, modelarea si simularea datelor
Spline – aproximare si modelare folosind functii
Control System Design – pentru analiza si proiectarea sistemelor
automate de control
Robust Control – pentru sinteza sistemelor care trebuie sa functioneze
in conditii de incertitudine
System Identification – pentru procesarea semnalului in vederea
modelarii parametrice si analiza seriilor temporale
Aerospace, Bioinformatics, Computer Vision, Curve Fitting,
Econometrics, Filter Design, Financial, Global Optimization ,
Image Acquisition, Parallel Computing, Symbolic Math,
SimBiology, Wavelet, Simulink
MATLAB Desktop
Structura sistemului MATLAB

Structura sistemului MATLAB consta in 5 parti principale:

1. Mediul de dezvoltare - set de unelte care faciliteaza


folosirea functiilor si fisierelor MATLAB. Multe dintre
acestea reprezinta de fapt interfetele grafice si includ:
fereastra principala MATLAB sau MATLAB Desktop,
fereastra de comenzi sau Command Window,
fereastra ce memoreaza istoria comenzilor sau Command
History,
browser-ele de Help, Workspace, Files, Search Path etc.
Structura sistemului MATLAB

2. Biblioteca de funcţii matematice MATLAB - vasta


colectie de algoritmi de calcul, pornind de la functii
elementare precum suma, sinus, cosinus si aritmetica
complexa, pana la funcţii mai sofisticate precum inversare
de matrici, calcul de valori proprii, functii Bessel, si
transformata Fourier.
Structura sistemului MATLAB

3. Limbajul MATLAB - un limbaj matrice/vector de inalt


nivel ce include instructiuni de control al buclelor, functii,
structuri de date, comenzi de intrare/iesire si instructiuni
de programare orientata pe obiecte.

Limbajul MATLAB permite atat ”programarea superficiala”


pentru crearea rapida a unor mici programe de calcul
specifice, cat si "programarea in detaliu" in vederea
dezvoltarii unor programe complexe de nivel superior.
Structura sistemului MATLAB

4. Handle Graphics®. Handle Graphics - reprezinta


sistemul de grafica MATLAB si include :
– comenzi de nivel inalt pentru vizualizarea 2D şi 3D a
datelor, procesare de imagini, animatie si grafica

– comenzi de nivel jos ce permit personalizarea


completa a reprezentarilor grafice si construirea
integrala a interfetelor grafice (GUI) pentru
aplicatiile MATLAB.
Structura sistemului MATLAB

5. MATLAB Application Program Interface (API) - este


o biblioteca ce permite scrierea programelor C si Fortran ce
interactioneaza cu MATLAB.

Biblioteca contine facilitati de apel de subrutine din


MATLAB (dynamic linking), de apelare a MATLAB-ul ca
pe o masina de calcul, si de citire si scriere de fisiere MAT-
files.
Resurse de calcul


Elementul de baza cu care lucreaza MATLAB-ul este
matricea numerica rectangulara, cu elemente reale sau
complexe.

Matlab simplifica crearea și managementul variabilelor
>> a=10
a=
10
Moduri de lucru (mediu de programare)

• modul linie de comanda – fiecare linie este


prelucrata imediat si rezultatele sunt afisate
(comenzile se introduc in Command Window)

• modul de lucru cu programe continute in fisiere.


Fisierele ce contin instructiuni MATLAB se numesc
fisiere M si au extensia .m (fisierele M pot apele alte
fisiere M sau pot contine apeluri recursive)
Fisierele .m
• Fisiere script – cand trebuie executate in mod repetat
o secventa de comenzi MATLAB. Trebuie salvate cu
extensia .m Nu permit integrarea in programe mari,
construite pe principiul modularizarii. Sunt apelabile
prin tastarea numelui lor.

• Fisiere function – declararea propriilor functii. Pot


lucra cu argumente. Pot fi apelate din alte functii.
Numele functiei trebuie sa fie acelasi cu numele
fisierului in care se salveaza funtia si trebuie
salvat cu extensia .m MATLAB presupune implicit
ca noile functii lucreaza pe matrici

• Fisierele .m sunt salvate implicit in subdirectorul


Work, al directorului MATLAB
Exportul fisierelor – functia save

Salvarea unui fisier de date se face cu functia save

Sintaxa: save – formatdate numefisier numevariabile

Exemple:
save – salveaza toate variabilele in fisierul matlab.mat
save numefisier salveaza toate variabilele/datele in
format binar, numefisier .mat
save numefisier x y - salveaza variabilele x si y in format
binar, numefisier .mat
save -ascii -tabs numefisier.ext se salveaza toate
variabilele in fisierul nume_fisier.ext cu toate datele in
format text si separate de TAB
Exportul fisierelor – functia save
Salveaz toate variabilele din workspace in fisierul tot.mat
ce are formatul .mat (binar)
>> x=[ 1 2 3]
>> y= [4 5 6]

>> save -mat tot.mat

>> clear all % comanda sterge toate variabilele

>> who % comanda listeaza toate variabilele

>> save -mat tot.mat x % salvam doar variabila x


Importul fisierelor – functia load


Incarcarea unui fisier de date se face cu functia load

load nume_fisier – variabilele si valorile lor sunt stocate
in workspace si pot si folosite. Implicit se considera
extensia .mat

load masuratori.txt – datele din fisierul masuratori.txt
sunt stocate intr-o variabila numita masuratori. Orice
extensie in afara de .mat indica MATLAB-ului ca datele
sunt incarcate ca date ASCII, text.

File\Import Data – se incarca fisiere extensii diferite.


Caractere speciale
: Se foloseste la generarea diviziunilor / range
( ) Folosite pentru “corpul” unei functii
[ ] Pentru desemnarea unei matrici/vector
… Continuarea unei comenzi Matlab pe linia de
comanda urmatoare
, Separator intre instructiuni pe aceiasi linie de
comanda (cu ecou pe ecran)
; Separator intre instructiuni pe aceiasi linie de
comanda ( fara ecou pe ecran)
% Se foloseste pentru a adauga comentarii in program
! Parasirea mediului Matlab pentru o sesiune de lucru
extern
= Asignare
' Transpusa unei matrici
[;] Separator intre liniile unei matrici
Tipuri de date - Numere
In afara datelor de tip numeric, MATLAB lucreaza si cu date
de tip logic sau de tip caracter.
• Notatia zecimala conventionala, cu punct zecimal optional si
semne plus sau minus.
• Notatia stiintifica foloseste litera e pentru a specifica 10 la puterea
corespunzatoare.
• Numerele imaginare folosesc fie i fie j ca sufix.
• Toate numerele sunt stocate intern folosind formatul long, 64biti
standardizat, avand o precizie de circa 16 cifre semnificative si
variind intre aproximativ 10-308 si 10+308.
• Pentru a economisi memorie, numerele pot fi folosite si in forma
intreg sau zecimal cu simpla precizie.
• Exemple de numere:
3 -99 0.0001
9.6397238 1.60210e-20 6.02252e23
1i -3.14159j 3e5i
Tipuri de erori
• Scopul : Aprecierea preciziei rezultatelor calculelor.

• Tipuri de erori care pot limita aceasta precizie:

erori in datele de intrare - se pot datora imperfectiunilor inerente


ale masuratorilor fizice

erori de rotunjire - apar daca se fac calcule cu numere a caror


reprezentare se restrange la un numar finit de cifre- eroare de
trunchiere (termen utilizat pentru erorile de rotunjire comise prin
stergerea ultimelor cifre ale reprezentarii)

erori de aproximare - multe metode nu dau solutia exacta a


problemei date P ( chiar daca calculele se fac fara rotunjire), ci o
solutie a unei alte probleme mai simple, care aproximeaza P
Eroarea de aproximare

Exemplu: e = 1 +1/1!+1/2!+1/3! + · · · insumam un numar finit de


termeni ai seriei

Multe probleme de aproximare se se obtin prin ,,discretizarea“


problemei originale P:
- integralele definite se aproximeaza prin sume finite,
- derivatele prin diferente, etc

Eroarea de aproximare se numeste eroare de discretizare.


Unii autori extind termenul de ,,eroare de trunchiere“ pentru a
acoperi si eroarea de discretizare.
Masuri ale erorii
notatie x∗ ≈ x : un element x∗ ∈ A se numeste aproximanta a lui x
din A

Eroare:Daca x∗ este o aproximanta a lui x diferenta Δx = x − x∗ se


numeste eroare.

Eroare absoluta : | Δx | = | x*-x |

Eroare relativa: δx = | Δx | / | x | , x≠0

Observatii:
1. in practica x este necunoscut, se foloseste aproximarea
δx = | Δx | / | x* | . Daca | Δx | este mic comparativ cu x*, atunci
aproximanta este buna.

2. Daca X = R, se lucreaza cu δx = Δx / x si x = x* − x.
Reprezentarea in virgula mobila a numerelor reale

Reprezentarea in virgula mobila(virgula flotanta) este utilizata


pentru numere reale, permitand o precizie ridicata si o plaja
larga de valori.

Termenul de numar in virgula mobila este utilizat pentru a


desemna un numar real care poate fi reprezentat exact in
virgula mobila.

Parametrii reprezentarii in virgula mobila sunt (numere naturale):


- baza β (intotdeauna para),
- precizia p,
- exponentul maxim emax
- exponentul minim emin.
Reprezentarea numerelor in virgula mobila

-s bitul de semn al numarului (s=0 numar pozitiv si s=1 numar


negativ);
-m mantisa numarului (cifrele semnificative);
-e exponentul (puterea la care trebuie ridicata o valoare numita baza
si care inmulteste cifrele semnificative ale numarului).

valoare = (-1)s x m xbazae

(baza β : 2, 10 sau 16).

Un numar este reprezentat in virgula mobila, printrun cuvant de n biti


Exemplu: pentru o reprezentarea in virgula mobila 7 biti pentru
exponent =>128 valori distincte cu semn: -64 ≤ exponent ≤ +63
Reprezentarea in virgula mobila a numerelor reale
Reprezentarea generala a unui nr in virgula mobila:

x = ±d0 . d1 d2 . . . dp−1 × βe, 0 ≤ di < β

unde d0.d1d2 . . . dp−1 se numeste semnificant sau mantisa, iar


e exponent .

Valoarea lui x este : ±(d0 + d1β−1 + d2β−2 + · · · + dp−1β−(p−1))βe.

Pentru ca reprezentarea in virgula mobila sa fie unica, numerele


se normalizeaza, adica se modifica reprezentarea (nu valoarea)
astfel incat d0 diferit de 0.

Zero se reprezinta ca 1.0×βemin -1.


Reprezentarea in virgula mobila a numerelor reale
Fiecare interval de forma [βe, βe+1) din R contine βp numere in
virgula mobila (numarul posibil de semnificanti).

Intervalul (0, βemin) este gol si din acest motiv se introduc


numerele denormalizate, adica numere cu semnificantul de
forma 0.d1d2 . . . dp−1 si exponentul βemin−1.

Denormalizarea se considera a fi un parametru suplimentar al


reprezentarii.

Multimea numerelor in virgula mobila pentru un set de parametri


dati ai reprezentarii se va nota cu

F(β, p, emin, emax, denorm), denorm ∈ {true, false}.


Eroarea de reprezentare

ulps – units in the last place (unitati in ultima pozitie)

Daca numarul x se reprezinta prin d0.d1d2 . . . dp−1 × βe, atunci


eroarea de reprezentare este :

| d0.d1d2 . . . dp−1 − x / βe| βp−1ulps

Eroarea relativa ce corespunde la 1/2ulps este

1/2β−p ≤ 1/2ulps ≤ β / 2 β−p

Valoarea eps = β /2 β−p se numeste epsilon-ul masinii.


Rotunjirea
daca x = d0.d1 . . . dp−1dp . . .

Rotunjirea implicita se face dupa regula cifrei pare:

daca dp > β /2 rotunjirea se face in sus,


daca dp < β /2 rotunjirea se face in jos,
iar daca dp = β /2 si printre cifrele eliminate exista una nenula
rotunjirea se face in sus, iar in caz contrar ultima cifra pastrata
este para.

Axioma fundamentala a aritmeticii in virgula mobila:


orice operatie in aritmetica in virgula mobila este exacta pana
la o eroare relativa de cel mult eps (epsilon-ul masinii)
eps = β /2 β−p
Anularea

Singura operatie critica din punct de vedere al erorii este scaderea a


doua cantitati apropiate x ≈ y, caz in care eroarea relativa
δx−y → ∞. Acest fenomen se numeste anulare.

Anularea este de doua tipuri: benigna - cand se scad doua cantitati


exacte catastrofala -cand se scad doua cantitati deja rotunjite.
Exemple Anularea
Expresiile in care apare anularea trebuie rescrise, iar o anulare
catastrofala trebuie intotdeauna transformata in una benigna.

Ex1: Daca a ≈ b, atunci expresia a2 −b2 se transforma in (a−b)(a+b)

Ex2: Daca anularea apare intr-o expresie cu radicali, se amplifica cu


conjugata

Ex3: La ecuatia de gradul al doilea ax2 + bx + c = 0, anularea poate


sa apara daca b2 ≫ 4ac. Pentru b > 0 anularea apare la calculul lui
x1, iar pentru b < 0 anularea apare la calculul lui x2.

Remediul este sa amplificam cu conjugata


Exemple Anularea
Sa consideram acum ecuatia de gradul al doilea:
a = 1, b = -100000000 si c = 1

>>a=1; c=1; b=-100000000;


>>x1=(-b+sqrt(bˆ2-4*a*c))/(2*a)
x1 =
100000000
>>x2=(-b-sqrt(bˆ2-4*a*c))/(2*a)
x2 =
7.45058059692383e-009

Daca se amplifica cu conjugata pentru a calcula x2 avem:


>> x2a=2*c/(-b+sqrt(bˆ2-4*a*c))
x2a =
1e-008
Aceleasi rezultate se obtin si cu functia root
Standardizarea reprezentarii
Exista doua standarde diferite pentru calculul in virgula mobila:
IEEE 754 care prevede β = 2
IEEE 854 care permite β = 2 sau β = 10, dar lasa o mai mare
libertate de reprezentare.

Parametrii standardului IEEE 754:

Precizia Simpla Simpla extinsa Dubla Dubla extinsa


p 24 ≥ 32 53 ≥ 64
emax +127 ≥ +1023 +1023 ≥ +16383
Emin -126 ≤ −1022 -1022 ≤ −16382
dim.exponent 8 ≥ 11 11 ≥ 15
dim. numar 32 ≥ 43 64 ≥ 79
Standardizarea reprezentarii
NaN - operatiile ilegale sau nedeterminate care conduc la NaN:
∞+ (−∞), 0 ×∞, 0/0, ∞/∞, xREM0, ∞REMy, √x pentru x < 0.
Daca un operand este NaN rezultatul va fi tot NaN.

Infinit 1/0 = ∞, −1/0 = −∞.


Valorile infinite dau posibilitatea continuarii calculului, lucru mai
sigur decat abortarea sau returnarea celui mai mare numar
reprezentabil. Exemplu x/(1+x2) pentru x = ∞ da rezultatul 0.

Zero cu semn Avem doi de 0: +0 si −0


relatiile +0 = −0 si −0 < +∞ sunt adevarate.
Avantaje: tratarea simpla a depasirilor inferioare si a
discontinuitatilor.
Se face distinctie intre log 0 = −∞ si log x = NaN pentru x < 0.
Fara 0 cu semn nu s-ar putea face distinctie la logaritm intre un
numar negativ care da depasire superioara si 0.
Standardizarea reprezentarii

Fie f , satisface 0 ≤ f < 1, iar exponentul −1022 ≤ e ≤ 1023.

Sistemul de numere in virgula mobila al MATLAB poate fi


caracterizat de trei constante:
realmin - reprezinta cel mai mic numar normalizat in virgula
mobila. Orice cantitate mai mica decat ea este fie un numar
denormalizat, fie da depasire inferioara.

realmax - reprezinta cel mai mare numar reprezentabil in virgula


mobila. Orice cantitate mai mare decat el da depasire superioara.

eps - epsilon-ul masinii


realmin, realmax, eps
Valorile acestor constante sunt :

binar zecimal hexazecimal


eps 2−52 2.220446049250313e-016 3cb0000000000000

realmin 2−1022 2.225073858507201e-308 0010000000000000

realmax (2−eps)×21023 1.797693134862316e+308 7fefffffffffffff

Exemplu calculul lui eps:


function z=myeps()
x=4/3-1;
y=3*x;
z=1-y;
Functia format
Stabileste formatul extern de afisare a numerelor pe ecran.
Afecteaza doar afisarea numerelor, nu si precizia de calcul sau
modul de salvare .

MATLAB-ul executa calculele in dupla precizie 64 biti. Precizie


simpla insemana 32 biti.

Sintaxa: format optiune. Optiunile sunt:

• short – afiseaza 5 cifre: 7.4567


• short e – afiseaza 5 cifre + exponent: 7.4346e+5
• long – afiseaza 15 cifre 1.333333333333333
• long e – afiseaza 15 cifre + exponent: 1.333333333333333e+4
• hex – afiseaza hexazecimal: 3efd4acd5679b1f
• rat – afiseaza rational: 346/127
• bank- afiseaza cu 2 zecimale: 123.45
Functia format
Numerele denormalizate sunt situate in intervalul dintre
eps*realmin si realmin.

Numerele denormalizate sunt reprezentate luand e = 1023.

Infinitul - Inf, se reprezinta luand e = 1024 si f = 0.

NaN se reprezinta luand e = 1024 si f ≠0.


Exemplu:
>> format short
>> Inf-Inf
ans =
NaN
>> Inf/Inf
ans =
NaN
Functia format

Doua functii care descompun in componente si recompun din


componente numerele in virgula mobila sunt log2 si pow2.

La conversia din double in single, datorita rotunjirii la cel mai


apropiat numar in simpla precizie, valoarea poate fi afectata:

>> format long


>> single(3.14)
ans =
3.1400001
Variabile
• Instructiunile introduse creaza variabile care sunt memorate in
spatiul de lucru. MATLAB nu necesita instructiuni de
declarare sau dimensionare a variabilelor. Cand MATLAB
intalneste un nou nume de variabila, acesta creeaza automat
variabila si aloca memoria necesara. Daca variabila deja exista,
MATLAB schimba continutul acesteia si daca este necesar aloca
o alta cantitate de memorie.

• Numele de variabile incep obligatoriu cu o litera, urmata de


orice numar de litere, cifre, etc. MATLAB foloseste doar primele
63 de caractere ale unui nume de variabilă. MATLAB este
CASE SENSITIVE face deosebirea intre litere mari si mici. A si
a variabile diferite.

• Exista si un numar de cuvinte rezervate, care nu pot fi folosite


ca nume de variabile ('break‘, 'continue‘, 'else‘, 'end‘, 'for‘,
'function‘, 'if‘, 'return‘, 'switch‘, 'while‘, etc)
Variabile

• Spatiu nu poate fi folosit in numele variabilelor – folositi _

• Pentru a preveni conflicte in denumirea variabilelor folositi


functia built-in exist : exist nume care va intoarce una din
aceste valori:
0 variabila nu exista
1 variabila este in workspace
2 variabila exista in file system (poate fi in script/functie)
3 variabila exista in fisiere Mex
4 variabila este intr-o functie built-in MATLAB
5 variabila este un director
Variabile

Nu e necesar sa declarati o variabila.


Tipul si dimensiunea variabilei sunt alocate automat
>> a =-3.75

>> b=[2 5.5] – vector linie - folosesc spatiu sa separ coloanele


b=
2.0000 5.5000

>> c=[2 ; 5.5] – vector coloana - folosesc ; sa separ liniile


c=
2.0000
5.5000

>> d =[ 2 4 6 ; 6 4 2] ce va rezulta ?
Variabile
ATENŢIE ! Daca unei variabile i se da numele unei funcții
predefinite din MATLAB, functia nu mai poate fi folosita pana
cand variabila nu este stearsa.

>> sin(3)
ans = 0.14112

>> sin(3) =2
sin =
0 0 2

>> sin(3)
ans = 2

>> clear sin - sterg variabila sin si pot sa refolosesc functia sin
Functii si Comenzi pentru Variabile
Datorita faptului ca intr-o sesiune de lucru numarul de variabile
folosite poate fi foarte mare, MATLAB dispune de o serie de
comenzi si functii care sa usureze munca programatorului:

• who - pentru a lista variabilele din workspace-ul curent;


• whos - pentru a lista variabilele si informatii despre
dimensiunile lor.
• exist nume_variabila - pentru a vedea daca variabila specificata
a fost creata
• isvarname nume_variabila - verifică daca numele variabilei
propuse este valid, returnand valorile 0 sau 1.
• which -all nume_variabila - verifica daca numele variabilei
propuse este folosit de o functie.
• clear nume_variabila – sterge din memorie numele variabilei.
Folosita fara un nume, comanda sterge din memorie toate
variabilele.
Variabile speciale si constante

Variabile speciale nu pot fi declarate si sunt accesibile global in


orice fisier .m.

ans Variabila creata automat in care se returneaza rezultatul unei


expresii care nu a avut niciun nume
pi 3.14159265...
i,j sqrt(-1)
eps Variabila permanentea in care este memorata precizia
relativa in virgula mobila 2.2204e-016
realmin Cel mai mic număr in virgula mobila 2.2251e-308
realmax Cel mai mare număr in virgula mobila 1.7977e+308
inf Infinit, rezultatul impartirii la 0\
NaN Not-a Number rezultatul unor operatii ilegale
Operatori

Operatorii pot si aritmetici,logici si relationali. Operatiile


aritmetice raman valabile ptr nr. complexe si ptr vectori si ptr
matrici a caror elemente sunt nr. complexe.

+ Adunare
- Scadere
* Inmultire
/ Impartire la dreapta sau \ Impartire la stanga
.* Inmultire element cu element
./ Impartire la dreapta element cu element
.\ Impartire la stanga element cu element
Functii de aproximare a numerelor
Aceste functii pot fi aplicate unor scalari sau element cu
element unor vectori sau matrici:

ceil – returneaza un nr. intreg rotunjit la cel mai apropiat numar
intreg spre infinit: ceil (5.2)= 6

fix - returneaza un nr. intreg rotunjit la cel mai apropiat numar
intreg spre 0: fix (-5.2)= -5

floor – returneaza un nr. intreg rotunjit la cel mai apropiat numar
intreg spre -infinit: floor (5.2)= 5

round – returneaza un nr. intreg rotunjit la cel mai apropiat numar
intreg: round(5.2)= 5

rem – returneaza restul impartirii argumentelor: rem(-5,2) =-1

mod – returneaza modulul restului impartirii argumentelor : mod(-
5,2)=1

rat – returneaza aproximarea unui nr. cu fractii rationale continue:
rat(5.2) = 5 +1/5

rats – returneaza aproximarea unui nr. cu fractii rationale
rats(5.2)=26/5

Functii de operare cu numere complexe

abs – calculeaza modulul numerelor complexe (valoare absoluta):
abs(3+4i)=5

angle – calculeaza faza numerelor complexe: angle(1+i)=0.7854

unwrap – calculeaza partea reala si imaginara a numerelor
complexe exprimate sub forma polara: unwrap(1+i) =1+i

conj – calculeaza conjugata complexa a numerelor complexe:
conj(3+i)=3-i

imag – calculeaza partea imaginara a numerelor complexe:
imag(3+5i) =5

real – calculeaza partea reala a numerelor complexe:
real(7+2i)=7

complex – construieste numere complexe daca se cunosc partea
reala si imaginara: complex(7,6)=7+6i

isreal – determina daca elementele matricilor sau vectorilor sunt
numere reale: isreal([2 3])=1
Functii putere, radical, exponentiala, logaritm


^ – ridicare la putere a numerelor sau a matricilor: 2^2=4

power – ridicare la putere a numerelor sau a matricilor
element cu element: power(2,2)=4

exp – calculeaza exponentiala: exp(2)=7.3891

log- calculeaza logaritmul natural:log(7.3891)=2

log2- calculeaza logaritmul in baza 2:log2(4)=2

log10- calculeaza logaritmul natural:log10(100)=2

pow2- calculeaza puterea lui 2 :pow2(5)=32

sqrt- calculeaza radicalul de ordinul 2 al numerelor:
sqrt(81)=9
Functii de matematica discreta

factor – intoarce un vector ce contine factorii primi ai unui nr n:
factor(39)= 3 13

factorial – calculeaza factorialul unui numar: factorial(4)=24

gcd – calculeaza cel mai mare divizor comun a doua numere:
gcd(115, 35)=5

lcm- calculeaza cel mai mic multiplu comun a doua numere:
lcm(115, 35)=805

primes- intoarce un vector ce contine numele prime mai mici decat
n: primes(7)= 2 3 5 7

isprime- determina daca elementele unui vector sau matrice sunt
numere prime: isprime([4 5 7])= 0 1 1

nchoosek- calculeaza combinari de n luate cate k: nchoosek(3,2)=3

perms- calculeaza toate permutarile posibile: perms([2,3])= 3 2 ;
23
Functii trigonometrice
Aceste functii pot fi aplicate unor scalari sau elementelor unor
vectori sau matrici. Unghiurile sunt considerate in radiani:

sin, asin, sinh, asinh – calculeaza sinusul, arcsinusul, sinusul
hiperbolic, arcsinusul hiperbolic a argumentului

cos, acos, cosh, acosh - calculeaza cosinusul, arcosinusul,
cosinusul hiperbolic, arcosinusul hiperbolic a argumentului

Tan, atan, tanh, atanh -calculeaza tangenta, arctangenta, tangenta
hiperbolica, arctangenta hiperbolica a argumentului

cot,acot,coth, acoth - calculeaza cotangenta, arcotangenta,
cotangenta hiperbolica, arcotangenta hiperbolica a argumentului

sec,asec,sech, asech- calculeaza secanta, arcsecanta, secanta
hiperbolica, arcsecanta hiperbolica a argumentului

csc,acsc, csch,acsh - calculeaza cosecanta, arcosecanta, cosecanta
hiperbolica, arc0secanta hiperbolica a argumentului
Taste ajutatoare in MATLAB
1. Tasta sageata in sus

>> y=sin(45)

dar din greseala scrieti

>> y=sine(45)

MATLAB returneaza urmatorul mesaj:


??? Undefined function or method 'sine' for input arguments
of type 'double'.

Apasand tasta sageata in sus se rescrie comanda tiparita


anterior.
Taste ajutatoare in MATLAB
2. Tasta Tab

Ati uitat numele functiei pe care vreti s-o folositi :


>> y=sq
Apasati tasta TAB si selectati functia
>> y=sqrt(45)

3. Tasta ;

Aplicata la sfarsitul comenzii suprima afisajul din fereastra


Command Window.
>> y=25+3 ;
MATLAB salveaza valoarea variabilei y in memorie :
>> y
Bibliografie


Stormy Attaway, Matlab, A Practical Introduction to
Programming and Problem Solving, 3rd Edition, 2013 Elsevier
Inc.

Calcul numeric-grafica-aplicatii M. Ghinea, V Fireteanu.
Mathlab. Ed. Teora 2001

http://www.mathworks.com/help/pdf_doc/matlab/getstart.pdf

http://www.mathworks.com/academia/student_center/tutorials/
launchpad.html

Documentatie Octave in format HTML
https://www.gnu.org/software/octave/doc/interpreter/
Curs 2
MATLAB
The Language of Technical
Computing

matrici/vectori/scalari
operatori relationali si logici
instructiuni de control
Baza structurilor de date - Matricea

Matlab-ul lucreaza numai cu un singur tip de obiecte
MATRICEA numerica rectangulara cu elemente reale
sau complexe, sau orice expresie Matlab.
Anm se acceseaza prin A(n,m) - elementele unei
matrici, elementul de la intersectia liniei n cu
coloana m (nu folositi i si j !).
Dimensiunea matricei e data de perechea (n x m).
Indicii incep de la valoarea 1.

Vectorii sunt asimilati :
vector linie – matrice cu o linie (1 x n)
vector coloana – matrice cu o coloana (n x 1).
v(k) – elementul de pe pozitia k din vector

Scalarii sunt asimilati matricilor cu o singura linie si o
singura coloana (1x 1).
Definirea matricilor

In Matlab o matrice se poate defini in mai multe feluri:

• Se introduce o lista explicita de elemente.



Se genereaza matricea folosind instructiuni si functii.

• Se incarca matricea din fisiere de date externe.

• Se creaza matricea folosind propriile functii, fisiere.m.


Definirea matricilor

Pentru introducerea unei matrici ca o lista de elemente


trebuie respectate cateva conventii de baza:

• Elementele unui rand sunt separate de blanc-uri sau


virgule.

• Liniile se separa cu semnul punct si virgula ”;”

• Elementele matricei sunt cuprinse intre paranteze


patrate, ”[ ]”.
Exemple - Definirea matricilor
X =[] - matrice goala
A=[11 22; 33 44 ] A= 11 22
33 44
Vector linie Vl=[1 2 3]
Vector coloana Vc=[1; 2; 3]

Matrice cu numere complexe ( in scrierea nr complexe


spatiile trebuie excluse):

A= [1 2; 3 4]+i[5 6; 7 8] sau
A= [1+5i 2+6i; 3+7i 4+8i ]

Nu folositi i, j ca variabile pentru ca suprascrieti valorile


lor si va trebui sa va generati alte variabile: ii=sqrt(-1).
Numere Random -Definirea matricilor
rand, randn, randi - functii MATLAB buit-in ce pot
genera numere aleatoare.

Funcțiile aceastea nu sunt cu adevărat aleatoare ele sunt


pseudoaleatoare

Pornesc cu un seed, o valoare predeterminată sau una


obținuta din ceasul calculatorului. Un proces determină
următorul „număr aleatoriu“, folosind aceast număr ca
seed este generat un alt număr aleator si tot asa.

Seed din functia rand va fi aceeasi ori de cate ori


MATLAB este pornit – si genereaza “global stream” de
numere aleatore.
Numere Random -Definirea matricilor

Functia rng seteaza un seed initial si-l se poate schimba.


(rng – nu e implementata in Octave)

>> rng('shuffle') % foloseste data si ora ptr a genera seed


>> rng(intseed)
>> rng('default')
Concatenarea matricilor/vectorilor

Operatorul [] permite generarea unor noi matrici/vectori


prin concatenarea unor matrici/vectori deja generate.

[ A,B] - concatenarea pe orizontala a matricilor A cu B,
matricile A si B trebuie sa aiba acelai numar de linii.

[A;B] - concatenarea pe verticala a matricilor A cu B,
matricile A si B trebuie sa aiba acelasi numar de
coloane.

Exemplu: A=[1 2; 3 4] B=[5 6; 7 8] C=[A,B] = [ 1 2 5 6


3 4 7 8]
Concatenarea matricilor/vectorilor
>> help cat
cat (DIM, A, B) permite generarea unor noi
matrici/vectori prin concatenarea unor matrici/vectori
dealungul dimensiunii DIM
cat (2 , A, B) este similar cu [ A,B] - concatenarea pe
orizontala a matricilor A cu B ( matricile A si B trebuie
sa aiba acelai numar de linii) dealungul dimnsiunii 2,
adica cea a coloanelor.
cat (1, A, B) este similar cu [A;B] - concatenarea pe
verticala a matricilor A cu B (matricile A si B trebuie sa
aiba acelasi numar de coloane) dealungul dimnsiunii 1,
adica cea a liniilor.
Exemplu: A=[1 2; 3 4] B=[5 6; 7 8] C=cat(2,A,B) =
[1256
3 4 7 8] D=cat(3,A,B) ?
Concatenarea matricilor/vectorilor

>> help horzcat

horzcat(A1, A2, A3...) – concateneaza pe orizontala lista


de matrici A1, A2, etc ( matricile trebuie sa aiba acelasi
numar de linii)

>> help vertcat

vertcat(A1, A2, A3,...)- concateneaza pe verticala lista de


matrici A1, A2, etc ( matricile trebuie sa aiba acelasi
numar de coloane)
Functii de generare a matricilor de baza
zeros(n,m) - Matrice (n x m) cu toate elementele nule. Daca
matricea e patrata avem zeros(n).

ones(n,m) – Matrice (n x m) cu toate elementele 1. Daca


matricea e patrata avem ones(n).

eye(n) – Matrice unitare de ordinul n, elementele de pe


diagonala principala 1, restul elementelor 0.

diag(v,k) - Matrice banda- vectorul v devine o diagonala


paralela cu diagonala principala aflat la distanta k
deasupra(k>0)sau dedesubtul( k<0) diagonalei
principale iar restul elementelor matricii sunt nule.
Daca k lipseste sau este 0 atunci v va devenii chiar
diagonala principala.
rand(n,m) - Matrice (n x m) cu elemente aleatoare uniform
distribuite.
Generarea vectorilor. Operatorul :

Cu pas liniar v= begin:pas:end



v= vmin : pas : vmax – pas este ratia progresiei
aritmetice din intervalul [vmin,vmax];
nr de elemente= [(vmax –vmin)/pas] + 1
pasul 1 e implicit in Matlab, v= a:b.

v = linspace( vmin, vmax, nr_puncte)

Cu pas logaritmic

v = logspace( vmin, vmax, nr_puncte)
nr de elemente sunt distribuite logaritmic intre
[10vmin, 10vmax].
Accesarea elementelor. Operatorul :

Operatorul : permite accesarea multipla a elementelor


matricilor.

v= A(:) - rearanjarea elementelor matricei A sub forma
v-vector coloana: coloana1, coloana2... ultima

A(1, 1:3) – elemetelor liniei 1, coloanele1,2,3.

A(2:3, :) - elementele liniilor 2 si 3 si toate coloanele

A (i, 1:2:end) – elementele liniei i, coloane impare end
inseamna “pana la sfarsit”

A(A>0) – doar elementele pozitive (elementele ce
indeplinesc conditia logica)
Accesarea elementelor

Daca se asigneaza o valoare unui element care ocupa o


pozitie in afara dimensiunii maxime a vectorului,
dimensiunea acestuia este marita automat pana la
valoarea indicelui noului element, iar elementele
nedefinite sunt setate la valoarea zero.

Exemplu: x=[7.2457 -1.3345 4.5777 ]


x(2) = -1.3345
x(5) =abs(x(2)) rezulta
x= [7.2457 -1.3345 4.5777 0 1.3345]
Accesarea elementelor

A = diag(5:-1:1)

A(1:3,[1,3,5]) = A(1:3,[1,3,5]) + ones(3,3)

A= 6 0 1 0 1
1 4 1 0 1
1 0 4 0 1
0 0 0 2 0
0 0 0 0 1
Operatii matriceale

Desfasurate dupa regulile calculului matriceal:

Adunarea A+ B
Scaderea A– B
Inmultirea A* B
Impartirea la dreapta A/B este echivalent cu A⋅B-1,
daca B este o matrice patratica inversabila
Impartirea la stânga A\B este echivalent cu A-1⋅B, daca
A este o matrice patratica inversabilă,
Ridicarea la putere A^B, A este matrice patratica si B
scalar sau invers, insa A si B nu pot fi simultan matrice
Transpunerea A' = AT
Operatii cu tablouri
Desfasurate dupa regulile calculului scalar, intre elemente
situate pe aceeasi pozitie. Cu exceptia operatiei de
transpunere, pentru celelalte operatii operanzii trebuie sa
aibe aceleasi dimensiuni sau unul dintre operanzi sa fie
scalar .

Adunarea element cu element +


Scaderea element cu element –
Inmultirea element cu element .*
Impartirea la dreapta element cu element ./
Impartirea la stanga element cu element .\
Ridicarea la putere element cu element .^
Transpunerea element cu element .'
Operatii cu tablouri
>>A=[2 3 0; 1 0 -2; 0 0 3]
>>A+2
ans =

4 5 2
3 2 0
2 2 5

>> a1= A(:,1); a2=A(:,2);


>> s= a1+a2 % rezulta vectorul coloana s=[5 1 0]’
>> p = a1*a2 % eroare – nu au dimensiunea corecta
Operatorul . face inmultirea element cu element
>> p= a1.*a2 % rezulta vectorul coloana p=[6 0 0]’
Cateva functii Matlab pentru calcul matriceal


[n,m] = size(A) – returneaza dimensiunea matricei A:
n- nr de linii si m- nr de coloane

det(A) – returneaza determinantul matricei patratice A

rank(A) – returneaza rangul matricei A

inv(A) – returneaza inversa matricei patratice inversibile
A (inversa unei matrici se calculeaza si asa A^ (-1))

diag(A) – returneaza diagonala principala a matricei A.

conj(A) – returneaza conjugata matricei complexe A
Cateva functii Matlab pentru calcul vectorial


norm(v,p) – returneaza norma p a vectorului v

norm(v)- returneaza norma euclidiana(p=2) a vectorului

dot(v,w) – returneaza produsul scalar al vectorilor de
aceeasi lungime v si w. < u w >= |u| |w| * cos α
;

cross(v,w) – returneaza produsulvectorial al vectorilor v
si w, ( au cate 3 elemente)

sum(v) – returneaza suma elementelor vectorului v

length(v) – returneaza lungimea vectorului v, adica
numarul de elemente
Functii Matlab opereaza pe vectori


Aceste functii opereaza pe vectori (linie sau coloana).
Aplicate pe o matrice (m x n) - matricea interpretata in
maniera coloana x coloana - rezultatul fiind un vector
linie

max, min, sort, sum prod, median, mean, std, any,all

Interpretare linie x linie se obtine folosind transpusa:
exemplu: mean(A')'.
Operatori relationali

Relationali < mai mic


> mai mare
<= mai mic sau egal
>= mai mare sau egal
== egal
~= diferit
Operari logici

A B A&&B A||B ~A XOR(A,B)

0 0 0 0 1 0
1 0 0 1 0 1
0 1 0 1 1 1
1 1 1 1 0 0
Ordinea operatiilor

() % paranteze
‘ ^ % transpusa si ridicare la putere
~ % negatia
* /\ % inmultirea si impartirea
+- % adunarea si scaderea
: % range
< % operatorii relationali
&& % and
|| % or
Operatori relationali si logici
Utilizati la crearea expresiilor logice

Ca date de intrare sunt acceptate doar datele numerice:
-valoarea logica „adevrat” (A) - orice numar diferit de 0
-valoarea logica “fals” (F) - valoarea 0

Datele de iesire nu pot fi decat numerele 1 sau 0,
interpretate ca fiind valorile logice A, respectiv F.

Operatorii relationali pot fi folositi pentru a compara:

a) Doua matrici de aceiasi dimensiune. Rezultatul este


o matrice, compararea se face element cu element.
b) O matrice cu un scalar. Rezultatul este o matrice, iar
compararea se face prin compararea fiecarui element al
matricii cu scalarul dat.
Instructiuni de control logic

Instructiune repetitive cu numar specificat de pasi: for

Instructiune repetitive cu conditie logica: while

Instructiune de decizie, executie conditionata: if, else,
elseif

Instructiune de terminare fortata a unui ciclu: break

Instructiune de returnare a executiei catre functia
apelanta sau catre tastatura: return

Instructiune pentru inchiderea ciclurilor “for”, “while” si
“if”: end
Instructiunea if simpla
Instructiunea if are mai multe forme, cea simpla este :
if expresie_logica
grup de instruciuni;
end

Daca conditia exprimata de expresie_logica este adevarata


se executa grupul de instructiuni si apoi se trece la
executia comenzilor ce urmeaza dupa end.

Daca conditia nu este adevarata se trece la executia


comenzilor de dupa end.

Toate comenzile din grupul de instructiuni trebuie sa


se termine cu ;
Instructiunea if simpla
>> x=2;
>> if x<10
x=x+1;
end
>> x % ce se va afisa ?
function [] =testif (a, b)
if(a < b)
disp(‘ primul numar mai mic ca al doilea numar’ );
disp( [num2str(a) ‘ < ‘ num2str(b)] ) ;
end
>> testif(4,2) % ce se va afisa ?
adaug in corpul functiei
if ( ( a>0) && (b>0) )
disp (‘ambele numere sunt pozitive’);
>> testif(4,2) % ce se va afisa ?
Instructiunea if cu clauza else
Este utilizata cand se doreste executia unui grup de
instructiuni pe conditie adevarata si a altui grup de
instructiuni pe conditie falsa :
if expresie_logica
grup1 de instruciuni;
else
grup2 de instructiuni;
end
Exemplu: >> interval =1.9;
>> if interval<1
x=interval/10;
else
x=0.1;
end
>> x
Instructiunea if cu clauza elseif
Datorita unor conditii complexe, uneori este necesara
imbricarea comenzilor if. Pentru aceste cazuri exista
optiunea elseif: Exemplu:
if conditie1 >>n=7;
grup1 de instruciuni; >>ind=1;
elseif conditie2 >> if n>10
grup2 de instructiuni; ind=10;
elseif conditie3 elseif n>5
grup3 de instructiuni; ind=5;
......................... else
else ind=0;
grupn de instructiuni; end
end >> ind
Instructiunea switch-case
In cazul unor ramificari multiple pentru a preveni scrierea
unor secvente if imbricate complexe se utilizeaza
comanda switch-case:
Exemplu:
switch expresie >>switch punctaj <=10
case valoare1 >>case {9,10}
secventa 1 de comenzi nota = ‘5’;
case valoare2 case 8
secventa 2 de comenzi nota =’4.5’;
……………………………. otherwise
nota = ‘slaba’
otherwise end
secventa n de comenzi >> punctaj =8
end
Instructiunea for
for variabila=expresie
grup de instructiuni;
end
-Daca rezultatul evalurii expresiei este o matrice vida, atunci se sare
direct la prima comanda dupa end fara sa se execute grupul de
instructiuni;
- Daca rezultatul evaluarii expresiei este o matrice cu n coloane,
atunci grupul de instructiuni se va executa de n ori. Variabila va lua
pe rand ca valoare coloana k la executia k si poate fi utilizata cu
aceasta valoare in grupul de instructiuni;
- Daca rezultatul evaluarii expresiei este un vector cu n elemente,
atunci grupul de instructiuni se va executa de n ori, la a k-a executie
variabila luand ca valoare elementul de ordin k din vector;
- Daca rezultatul evaluarii expresiei este un scalar grupul de
instructiuni se va executa o singur data, iar variabila va lua ca
valoare acel scalar;
- Expresia poate fi de forma: k=initial:pas:final;
Instructiunea for imbricata
Exemplu: scrieti o functie care calculeaza n!
function y =fact(n)
y=1;
for ind=1:n
y=y*ind;
end
Apelez functia : >> y=fact(6)
Exemplu:sa se genereze o matrice Hilbert de ordinul 4,ale
carei elemente sunt date de expresia H(a,b)=1/(a+b-1)
n=4;
for a=1:n
for b=1:n
H(a,b) = 1/(a+b-1);
end
end
Instructiunea for
Pentu bucle mari e bine sa pre-alocati spatiu

tic
for ii = 1:2000
for jj = 1:2000
A(ii,jj) = ii + jj;
end
end
toc % Elapsed time is 12.357 seconds

tic
A = zeros(2000, 2000);
for ii = 1:size(A,1)
for jj = 1:size(A,2)
A(ii,jj) = ii + jj;
end
end
toc % Elapsed time is 2.261 seconds
Instructiunea while
Utilizata pentru repetarea unui set de instructiuni atat timp
cat o conditie specificata este adevarata.
while expresie
grup de instructiuni
end
Exista posibilitatea ca pentru o conditie data sa se cicleze
la infinit. Pentru a evita acest lucru este bine sa
introduceti un numar maxim de iteratii:
it=1;
itmax=1000;
while conditie & (it<itmax)
grup de instructiuni;
it=it+1;
end
Instructiunea while
Exemplu:ghicesc numarul
function[]=ghici(nr)
zic = input(‘Introduceti un nr mai mic ca 10: ’)
if (zic == nr)
disp(‘Felicitari!’)
end
end % trebuie sa rulez de mai multe ori functia

function[]=ghici(nr)
zic = input(‘Introduceti un nr mai mic ca 10: ’)
while (zic ~= nr)
zic = input(‘Introduceti un nr mai mic ca 10: ’)
end
disp(‘Felicitari!’)
end
Instructiunea while

Exemplu:calculeaza suma primelor elemente pozitive ale


vectorului v

function[s]=suma(v)
s=0;
k=1;
l=length(v);
while (v(k)>0)&(k<=l)
s=s+v(k);
k=k+1;
end

end
Instructiunea break
Iesirea fortata dintr-o bucla, inainte de terminarea ei, da
controlul primei comenzi de dupa end-ul buclei - pentru
ciclurile for sau while
Se recomanda a fi utilizata daca o conditie de eroare a fost
detectata
In cazul unor cicluri imbricate comanda iesirea din ciclul
cel mai interior
Exemplu: x = [1 12 NaN 7 8]
>> for ind=1:length(x)
if x(ind)==NaN
break
end
x(ind)=rem(x(ind-1),5);
end
>> x
Instructiunea break
Iesirea fortata dintr-o bucla, inainte de terminarea ei, da
controlul primei comenzi de dupa end-ul buclei - pentru
ciclurile for sau while
Se recomanda a fi utilizata daca o conditie de eroare a fost
detectata
In cazul unor cicluri imbricate comanda iesirea din ciclul
cel mai interior
Exemplu: inlocuiesc elementele vectorului cu restul
impartirii lor la 5 .
>>x = [1 12 NaN 7 8]
>> for ind=1:length(x)
if x(ind)==NaN
breakend
x(ind)=rem(x(ind),5) end
>> x
Exemple
function p=fbreak(v)
% iese fortat din ciclul la intalnirea unui 0 in vector
%daca nu exista elemente nule, treturneaza produsul lor

n=length(v);
p=1;
for k=1:n
if v(k)==0
disp('elemente nule')
break
else
p=p*v(k);
end
end
Exemple
Scrieti functia pentru a calcula suma primilor N+1 termeni a unei
serii geometrice.
gsum=∑ ∞n=0 an = 1/1-a
Cand N -> ∞ suma converge doar daca a<1
Generalizare:
function gsum = geomInf(a,N)
if(N==inf)
if(abs(a)>=1)
error('Serie geometrica divergenta.');
else
gsum=1/(1-a);
end
else
n=0:N;
gsum = sum(a.^n);
end
Vectorizarea codului – MATLAB fara bucle !!
MATLAB rapid pe operatii cu vectori si matrici si lent cu bucle!
Exemplu:
an = n, bn = 1000-�n ptr n = 1... 1000. Calculati
psum=∑ 1000n=1 an bn

a = 1:1000; b = 1000 - a;
psum=0;
for n=1:1000 %solutie proasta
psum = psum +a(n)*b(n);
end

Recunoastem ca psum este produsul vectorilor a and b, abT


psum = a*b' %Vectorizarea … solutie buna!

Mai multe informatii despre vectorizare - MathWorks' Code


Vectorization Guide 2
Functii C in MATLAB – MEX files

M files
- ruleaza foarte rapid functiile Built -In in MATLAB

- niciodata nu trebuiesc compilate

- de fiecare data MATLAB interpreteaza fiecare linie din M-files

- procesul este lent pentru functii mari si complicate, in special


pentru cele cu multe bucle →

MATLAB poate rula functii scrise in C - fisierele care contin


codul sursa - fisiere MEX

The mexFunctions nu sunt construite cu scopul de a inlocui


functiile Built-In din MATLAB.
MEX files – interfata cu MATLAB

Legatura dintre functiile Built-In MATLAB si codul C se realizeaza


prin functia mexFunction (similara cu functia main din C)

#include "mex.h" /* Aceasta e obligatorie */


#include "math.h" /*Se pot include orice librarii C necesare */

Intotdeauna functia mexFunction arata asa:

void mexFunction(int nlhs, mxArray *plhs[], int nrhs,


const mxArray *prhs[])
{
% scrieti codul aici *
return;
}
MEX files – interfata cu MATLAB
Sunt 4 parametrii de intrare care corespund apelului de functie
(exemplu [ z0, z1] = vasilica (x,y,z) )

nlhs (type= int) – reprezinta numarul de argumente“ left hand side”.


(nlds =2, corespunzatoare lui z0 si z1)

plhs (type = tablou de pointeri catre mxArray) – acest parametru


este de fapt argumentul de iesire – mxArray este structura MATLAB
care tine datele, fiecare element din plhs tine un mxArray de date.

nrhs(type= int)-reprezinta numarul de argumente“ right hand side”.

prhs (type= const tablou de pointeri catre mxArray) – acest tablou


tine toti pointerii catre tabloul datelor de intare mxArray
(prhs[0] tine tabloul mxArray pentru x, prhs[1] tine tabloul
mxArray pentru y, etc).)
Crearea datelor in MEX files
In MEX-Files structura MATLAB folosita pentru stocarea datelor
este mxArray – aceasta structura poate tine date de tip
real, complex, matrici, siruri de caractere si alte stucturi de date
MATLAB.

In exemplul [z0, z1] = vasilica(x,y,z) presupunem ca


x – matrice 2D, y – sir, z – intreg

Cum extragem si folosim datele ?

Avem acces la parametrul de intrare x printr-un pointer tinut in


tabloul prhs. In C, cand referim un tablou printr-un index, variabila
este automat dereferentiata (ex: nu folosim *).

Pentru claritate vom copia variabila x peste pointerul catre


mxArray si o vom numi xData ( pasul acesta nu e nevoie sa-l faceti
ca sa va mearga codul, il fac doar sa intelegeti mai usor)
Crearea datelor de tip matrice in MEX files
% inauntul functiei mexFunction
% fac declaratii
mxArray *xData;
double *xValues;
int i,j;
int rowLen, colLen;
double avg;

xData = prhs[0]; % copiex pointerul de intare x, in xData


xValues = mxGetPr(xData); % iau matricea x
rowLen = mxGetN(xData); %intoarce un intreg,lungimea liniilor
colLen = mxGetM(xData); %intoarce un intreg,lungimea coloanelor

Functia mxGetPr – obtine un pointer la datele de tip real, xData.


(similar putem folosi functictia mxGetPi pentru date complexe).
Daca traversam matricea liniar, si vrem sa sarim la o anumita pozitie
(a,b) vom scrie codul asa: a*colLen+b – mult mai eficient.
Crearea datelor de tip matrice in MEX files
%inauntul functiei mexFunction

%Printez variabila avg pentru fiecare coloana la consola MATLAB


for(i=0;i<rowLen;i++)
{
avg=0;
for(j=0;j<colLen;j++)
{
avg += xValues[(i*colLen)+j];
%alta metoda ar fi: avg += *xValues++;
}
avg = avg/colLen;
printf("Media liniilor %d, este %d",i,(int)avg);
}
Crearea datelor de tip string in MEX files
Similar pentru a obtine un sir (strings), dar folosind alte functii:

% inauntul functiei mexFunction

mxArray * yData; % declaratii


int yLength;
char *TheString;

yData = prhs[1]; % copiez pointerul de intrare y, in yData

yLength = mxGetN(yData)+1; % fac variabila "TheString" sa


pointeze la un string
TheString = mxCalloc(yLength, sizeof(char)); % mxCalloc este
similar cu malloc din C
mxGetString(yData,TheString,yLength);
Crearea datelor de tip intreg in MEX files

Similar pentru a obtine un intreg, dar folosind alte functii:

% inauntul functiei mexFunction

mxArray *zData; %declaratii


int Num;

zData = prhs[2]; % copiez pointerul de intrare z in zData

Num = (int)(mxGetScalar(zData)); % iau intregul

printf("Intregul meu este: %d",Num); % il printez pe ecran


Exportul datelor in MATLAB
Pentru asignarea datelor/valorile de intoarcere in parametrii de iesire
(left hand side) trebuie sa alocam memorie pentru structurile de
date folosite.
Exemplu cum sa intorc o matrice 2D : intrarea va fi x si va intoarce
in z0, o copie a matricii cu fiecare element din x inmultit cu 2.

%inauntrul functiei mexFunction


mxArray * xData; % declaratii
double *xValues, *outArray;
int i,j;
int rowLen, colLen;

xData = prhs[0]; % copiez pointerul de intrare x

xValues = mxGetPr(xData); % iau matricea


rowLen = mxGetN(xData);
colLen = mxGetM(xData);
Exportul datelor in MATLAB

% Aloc memorie si asignez pointerul de iesire


plhs[0] = mxCreateDoubleMatrix(colLen, rowLen, mxREAL);
%mxReal pentru ca acesta e tipul nostru de date

%iau pointerul datelor in spatiul de memorie nou alocat


outArray = mxGetPr(plhs[0]);

% copiez matricea si multiplic cu 2


for(i=0;i<rowLen;i++)
{
for(j=0;j<colLen;j++)
{
outArray[(i*colLen)+j] = 2*xValues[(i*colLen)+j];
}
}
Apelez functiile Built-In MATLAB din MEX files

Exemplu cum sa folosesc functia MATLAB Built-In z = conv(x,y);

% inauntrul functiei mexFunction

mxArray *rezultat; % declaratii


mxArray *arg[2];

% pun ceva in parametrii de intrare


arg[0] = mxCreateDoubleMatrix(1, 20, mxREAL);
arg[1] = mxCreateDoubleMatrix(1, 10, mxREAL);

%Apelez functia
mexCallMATLAB(1,&rezultat,2,arg,"conv");

Variabila rezultat pointeaza catre mxArray si puteti extrage datele


Apelez functiile Built-In MATLAB din MEX files

Exemplu cum sa folosesc functia MATLAB Built-In z = conv(x,y);

% inauntrul functiei mexFunction

mxArray *rezultat; % declaratii


mxArray *arg[2];

% pun ceva in parametrii de intrare


arg[0] = mxCreateDoubleMatrix(1, 20, mxREAL);
arg[1] = mxCreateDoubleMatrix(1, 10, mxREAL);

%Apelez functia
mexCallMATLAB(1,&rezultat,2,arg,"conv");

Variabila rezultat pointeaza catre mxArray si puteti extrage datele


Compilarea MEX files
Compilarea fisierelor MEX similara cu compilarea cu gcc.

De la command prompt MATLAB (directorul curent trebuie sa fie


locatia fisierului sursa MEX) aplica comanda:
>> mex vasilica.c

MATLAB va va intreba sa alegeti un compilator si va produce


functia [z0,z1] = vasilica(x,y,z) (numele fisierului identic cu numele
functiei)

Dupa compilare MATLAB produce fisierul binar MEX care poate fi


apelat ca o functie built-in MATLAB. Pentru a apela aceasta
functie, trebuie sa fiti in acelasi director cu binarul !

Fisierul binar are diferite extensii depinzand de sistemul de operare


pe care rulati:( ex: Windows=.dll MacOSX=.mexmac
Solaris=.mexsol Linux=.mexlx).
Alte functii utile
Lista completa a functiilor si exemple poate fi gasita MATLAB help

Alte example gasiti si in directorul extern MATLAB


(MATLAB/extern/examples/mx or mex).

mxDuplicateArray
mexErrMsgTxt
mxMalloc
mxRealloc
mxCreateString
mxDestroyArray
mxFree
mxGetCell
mxGetData
…..
Bibliografie


Stormy Attaway, Matlab, A Practical Introduction to
Programming and Problem Solving, 3rd Edition, 2013 Elsevier
Inc.

Calcul numeric-grafica-aplicatii M. Ghinea, V Fireteanu.
Mathlab. Ed. Teora 2001

http://www.mathworks.com/help/pdf_doc/matlab/getstart.pdf

http://www.mathworks.com/academia/student_center/tutorials/la
unchpad.html

Documentatie Octave in format HTML
https://www.gnu.org/software/octave/doc/interpreter/
Bibliografie


Stormy Attaway, Matlab, A Practical Introduction to
Programming and Problem Solving, 3rd Edition, 2013 Elsevier
Inc.

Instructiuni Conditionate
Sumarul de la pagina 136
Exercitiile din capitolul 4 : 1, 6, 10, 16, 27, 30, 31

Bucle
Sumarul de la paina 183
Exercitiile din capitolul 5 : 1, 6, 7, 8, 9, 13, 40
Exercitiile din capitolul 10 : 1, 2, 6, 7
Curs 3
MATLAB
The Language of Technical
Computing

calcul simbolic
polinoame
sisteme de ecuatii liniare
reprezentari grafice
Aproximari numerice
In Matlab avem urmatoarele functii de aproximare numerica.
Precizia aproximarii poate fi adaptata.

inline - definirea functiei
>> g=inline('sin(x)./(sin(x)+cos(x)+4)')

fplot(numef,lm,specl) - graficul functiei utilizator, unde lm este un
vector cu 2 sau 4 valori indicand limitele pentru x si eventual y,iar
specl este specificatorul de linie acelasi ca la comanda plot.

fminbnd(numef,xmin,xmax)- determinarea valorii minime a unei
functii pe un interval, unde [xmin,xmax] indica intervalul in care
cautam valoarea minima.

fzero(numef, x0) -calculul zerourilor(radacinilor) unei functii,
calculeaza o radacina a functiei cea mai aproape de x0.

quad(numef,a,b)- calculul integralei definite, unde a si b sunt
limitele intre care se integreaza. Putem calcula integrale duble sau
triple cu functiile dblquad(numef, ax,bx,ay,by) sau
triplequad(numef,ax,bx,ay,by,az,bz).
Precizia solutiei
In Matlab, solutiile chiar date de formule exacte sunt intotdeauna
aproximative si de aceea este bine ca inainte de a determina
solutia sa calculam precizia solutiei.

Formula preciziei este data de:

p < C * cond(A)* p(calculator) unde

C o constanta 1<C<10 ( recomandabil C=10)


p(calculator) precizia calculatorului, pentru PC-uri ~ 2.2*10-16
cond(A) functia Matlab- numarul de conditie al matricii referitor
la inversare.

Precizia de calcul, in cel mai defavorabil caz: 2.2*10-15 cond(A)

Pentru calcule cu numere foarte mari sau foarte mici folositi


Symbolic Math Toolbox → precizie vs. viteza de calcul
Precizia solutiei
Vrem sa calculam exp(7.0873e002). ans=?

Solutie folosind un mic artificiu:


a = 7.0873e2;
x = a/log(10);
D = floor(x); % D va fi un intreg, puterea lui 10
F = 10^(x-D); % va fi F mantisa

F = 6.27376373225551 % mantisa
D = 307 % exponentul (power of ten)

ans = 6.273763732256170e+307

Symbolic Math Toolbox - functia vpa (S,D)


Tipuri de date in Matlab
Un tip de date defineste un set de valori si operatiile permise pe
aceste valori.

Tipurile de date fundamentale din Matlab:


int16 numar intreg 16-biti
single numar precizie simpla (32 biti)
double numar precizie dubla (implicit 64 biti )
logical numar logical, boolean
char sir de caractere
sym obiect simbolic

Un obiect simbolic este o structura de date care stocheaza


reprezentarea unui simbol – folosit pentru reprezentarea
variabilelor, expresiilor si matricilor simbolice.
Calcul simbolic
Toolbox-ul Symbolic Math - lista completa a functiilor si
comenzilor Matlab pentru calcul simbolic.

Pe cale simbolica putem efectua operatiile de derivare, integrare,
calcularea limitelor, simplificarea expresiilor algebrice si
rezolvarea ecuatiilor.

Rezolvarea unei probleme pe cale simbolica trebuie sa inceapa cu
definirea obiectelor simbolice (simbolurilor), apoi se trece la
implementarea propriu-zisa a solutionarii problemei.

Definirea/crearea obiectelor simbolice se face cu comanda sym (un
obiect) sau syms (mai multe obiecte). Pentru crearea expresiilor
simbolice constante, trebuie folosita comanda sym. ( f = sym('5') e
diferita de f = 5, care nu defineste f ca o expresie simbolica)
Calcul simbolic


Datele numerice duc la rezultate efective, iar datele simbolice dau
un rezultat simbolic.

Forma simbolica este un rezultat exact in timp ce forma numerica
este un rezultat aproximativ (deoarece reprezentarea numerica are
un numar infinit de zecimale dupa virgula)
Exemplu: >> a=1/2+1/3
a =0.8333
>> b=sym(1)/sym(2)+sym(1)/sym(3)
b = 5/6

Intotdeauna putem obtine valoarea numerica a unui simbol cu


comanda double( )
Rezultatele simbolice nu se indenteaza!
Functii/comenzi pentru calcul simbolic

comanda s=sym(x,'optiune') – creaza o variabila simbolica x ce se
stocheaza in s, iar optiunea de reprezentare/afisare poate fi: d (numar
decimal), f (numar real), r (numar rational), e-(numar in forma
rationala plus diferenta intre expresia rationala teoretica si expresia
actuala, reala (a calculatorului) in termeni exponentiali (the floating-
point relative accuracy); real- specifica proprietatile matematice a
variabilei simbolice create.

comanda findsym(f) – determina ce variabile simbolice sunt
prezente in expresia f.

subs(f,x,val) – substituirea/inlocuirea simbolurilor x dintr-o
expresie simbolica f , cu o valoare , val.

collect(f,v) - ordonam in raport cu puterile lui v o expresie f. Daca
variabila v lipseste se considera implicit x.
>> syms x y
>> collect((x+y)*(x^2+y^2+1))
ans =
x^3+y*x^2+(y^2+1)*x+y*(y^2+1)
Functii/comenzi pentru calcul simbolic

expand(f) - scrierea expresiei f cu elementele ei constitutive.
Aceasta functie calculeaza produse de polinoame, desface expresii
trigonometrice, exponentiale sau logaritmice.
>> expand(cos(x+y))
ans =
cos(x)*cos(y)-sin(x)*sin(y)

simplify(f) - simplifica expresia f.
>> simplify((x^2+x-2)/(x-1))
ans =
x+2

[n1,n2]=numden(f) calculeaza f ca o expresie rationala si
calculeaza numaratorul n1 si numitorul n2.Nu face si simplificarile!

solve('eq1', 'eq2', …'eqn', 'var1', 'var2'...'varn')- pentru
rezolvarea ecuatiilor si a sistemelor de ecuatii unde eqn sunt
expresiile simbolice reprezentand ecuatiile, iar varn sunt variabilele
simbolice ale necunoscutelor. Se presupune ca eq=0 (ducem toti
termenii in stanga!)
Functii simbolice
Unele functii simbolice au primit acelasi nume ca cele pentru
calcule pentru simplicitate.

det - functie care calculeaza determinantul unei matrice simbolice.
>>syms a b c d;
>>det([a, b; c, d]) ans = a*d-b*c

inv -functie care calculeaza inversa unei matrice simbolice
numeric sau simbolic. Exemple:
>>A = sym([a b;c d]);
>>inv(A)
ans =
[ d/(a*d-b*c), -b/(a*d-b*c)]
[ -c/(a*d-b*c), a/(a*d-b*c)]

rank - functie care calculeaza rangul maxim al unei matrice simbolice

factor(f)- factorizeaza expresia f. Daca f este un numar intreg face
descompunerea lui f in numere prime.
>> factor(x^3-y^3+x^2-y^2) ans = (x-y)*(x^2+x+y*x+y+y^2)
>> factor(13482) ans= 2 3 3 7 107
>> factor(sym(13482)) ans = (2)*(3)^2*(7)*(107)
Functii simbolice

limit(numef) - calculeaza limita unei functii
- numef este o expresie simbolica a unei functii de variabila x, sau
numele unei astfel de functii. Limita se calculeaza in 0.
>> syms x ; limit(sin(x)/x) ans =1
- limita in alt punct trebuie sa indicam valoarea catre care tinde x.
>> limit((x^2-1)*log(x),2) ans = 3*log(2)
- limite laterale indicand ‚left’- stanga, respectiv ‚right’ -dreapta.
>> limit(1/x,x,0,'left') ans = -Inf
>> limit((2-x-x^2)/(x^2+1),x,inf,'left') ans = -1

diff - derivata unei functii date. Variabila de derivare este considerata
implicit x.
>> diff(x^5*log(x^2+1)) ans = 5*x^4*log(x^2+1)+2*x^6/(x^2+1)
-derivate de ordin superior indic ca argument a lui diff ordinul derivatei
>> diff(x^5*log(x^2+1), 3)
-derivata in functie de alta variabila decat x, indicata intre apostrofi – se
foloseste in calculul derivatelor partiale.
>>diff(t*sin(t^2+1),'t') ans = sin(t^2+1)+2*t^2*cos(t^2+1)
>>f (x, y) = x3 *sin y diff(diff(x^3*sin(y),2),'y') ans = 6*x*cos(y)
Functii simbolice
Functiile int si diff sunt inverse.

int- calculul primitivei unei functii
>>int(5*x^4*log(x^2+1)+2*x^6/(x^2+1)) ans = x^5*log(x^2+1)

Putem calcula si integrale definite indicand limitele de integrat (care pot
fi simboluri):
>> int(3*x^2,sin(t),cos(t)) ans = cos(t)^3-sin(t)^3

Acest lucru ne permite sa facem diverse calcule complexe

>>int(int(3*x^2,sin(t),1),t) ans = t+1/3*sin(t)^2*cos(t)+2/3*cos(t)


ezplot(f)- graficul expresiei f=f(x) in intervalul implicit
-2*pi < x < 2*pi.
Polinoame

Notatia utilizata la polinoame este una simbolica.

Matlab utilizeaza in calcule un vector ce are ca elemente
coeficientii monoamelor.
Ex :se foloseste vectorul p=[1 0 0 0 -5 4] pentru a
reprezenta polinomul: p=x5 - 5x + 4

Avem la stanga coeficientul monomului de grad maxim.

Avem coeficient zero pentru monoamele care lipsesc (cele
de grad 4, 3 si 2).

Numarul elementelor este cu 1 mai mare decat gradul
polinomului (adica 6, 5 fiind gradul polinomului+1).
Manipularea polinoamelor
In Matlab, manipularea polinoamelor se face prin intermediul mai
multor functii aplicate asupra vectorilor coeficientilor:

w=conv(u,v) - inmultirea a doua polinoame, unde u si v sunt
vectorii coeficientilor polinoamelor care se inmultesc, iar w este
vectorul coeficientilor polinomului produs.

[c,r]=deconv(p,q) - impartirea a doua polinoame,unde c este
vectorul coeficientilor catului, iar r este vectorul coeficientilor
restului.

roots(p) -determinarea radacinilor unui polinom

w=poly(v) -determinarea polinomului ale carui radacini sunt
elementele unui vector v

polyval(vcoef,x)-determinarea valorii polinomului reprezentat de
vectorul coeficientilor vcoef, intr-un punct x. (atentie! x poate fi si
un vector!)

w=polyder(p) -derivata polinomului p , unde w sunt coeficientii
rezultati.
Manipularea polinoamelor
Deseori avem nevoie sa determinam un polinom de un anumit grad
care sa aproximeze un set de date experimentale.

Una dintre metodele de aproximare este metoda celor mai mici
patrate (the least squares method)- in care polinomul de gradul n
trebuie generat:

yn(x)= a0xn+a1xn-1+...an-1x+an

astfel incat cei n+1 coeficienti aproximeaza cel mai bine datele
masuratorilor experimentale. n=1- aproximare lineara, n=2-
aproximare patratica etc.

In Matlab acesti coeficienti sunt calculati cu functia polyfit.

Pentru evaluarea acestei aproximari putem folosi functia polyval.
Manipularea polinoamelor


w=polyfit(x,y,n)-determinarea unui polinom de un anumit grad
care sa aproximeze un set de date experimentale in sensul
metodei celor mai mici patrate, unde w este vectorul coeficientilor
polinomului cautat, vectorii x si y sunt vectorii datelor
experimentale, iar n este gradul polinomului cautat.

Exemplu: daca x=0:pi/10:pi, iar y=sqrt(x) atunci polinomul de


gradul 4 ce aproximeaz setul de date este dat de
>> polyfit(x,y,4)
ans =
-0.2969 1.4531 -2.5609 2.3776 0.0183
Adica polinomul:
-0.2969x4 +1.4531x3 - 2.5609x2 + 2.3776x + 0.0183
Manipularea polinoamelor

interp1(x,y,x0, ‚metoda’)-pentru aflarea valorilor prin interpolare
polinomiala , unde x,y sunt vectorii datelor experimentale. X0 este
punctul in care vrem sa aflam valoarea, iar metoda poate fi:
nearest -nearest neighbor interpolation,
linear - linear interpolation (implicit),
spline - piecewise cubic spline interpolation (SPLINE)
cubic - shape-preserving piecewise cubic interpolation
Metodele spline si cubic necesita mai mult timp de calcul dar sunt
mai precise.

Exemplu :pentru functia sqrt(x) in pct 1.1 avem valorile:


>> sqrt(1.1) ans =1.0488
>> interp1(x,y,1.1,'nearest') ans =1.0954
>> interp1(x,y,1.1,'linear') ans =1.0477
>> interp1(x,y,1.1,'spline') ans =1.0489
>> interp1(x,y,1.1,'cubic') ans = 1.0488
Rezolvarea sistemelor de ecuatii liniare

Pe cale numerica, in Matlab se pot rezolva:



sisteme compatibile determinate

sisteme compatibile nedeterminate (se pot gasi maxim 2
solutii particulare)
In rezolvarea sistemelor liniare in Matlab se presupune forma
matriceala:
A*X=b
respectiv,
Y*A=b
A-matricea coeficientilor
b-vectorul coloana al termenilor liberi si
X, Y- vectorul coloana/linie al necunoscutelor.

Un sistem de ecuatii liniare este definit in Matlab prin definirea


matricei A si a vecorului b.
Rezolvarea sistemelor compatibile determinate

Pot fi rezolvate prin doua metode numerice diferite:



Metoda inversarii matriceale

Metoda impartirii la stanga/dreapta

Metoda inversarii matriceale

In cazul unui sistem patratic, solutia sistemului este obtinuta


prin inversarea matricei coeficientilor si inmultirea ei cu
vectorul termenilor liberi:
X = inv(A) * b

respectiv,

Y = b * inv(A)
Rezolvarea sistemelor compatibile determinate
In Matlab, aceasta metoda nu necesita determinarea inversei
matricei coeficienţilor.

S-a introdus operatorul \ care calculeaza solutia sistemelor de


ecuatii liniare prin metoda eliminarii in versiunea Gauss.

Metoda impartirii la stanga /dreapta

X=A\b
respectiv,
Y=b/A
Soluia cu operatorul / este mult mai rapida decat cu formula clasica
a inversarii, acest fapt devenind observabil atunci cand matricile
sunt de mari dimensiuni. Astfel pentru matrici de ordinul 1000
soluia / a fost de 400 ori mai rapida.
Rezolvarea sistemelor compatibile nedeterminate

In cazul sistemelor compatibile nedeterminate nu se pot


determina pe cale numerica toate solutiile, acestea fiind in
numar infinit.

Se poate determina o solutie particulara folosind una din


urmatoarele doua metode:

Metoda pseudo-inversarii matriceale

Metoda impartirii la stanga/dreapta
Metoda pseudo-inversarii matriceale

Solutia sistemului este obtinuta prin inmultirea pseudo-inversei


matricei coeficientilor cu vectorul termenilor liberi. Se
utilizata pseudo-inversa Moore-Penrose a unei matrici -
functia pinv: X = pinv(A) * b
respectiv,
Y = b * pinv(A)
Rezolvarea sistemelor compatibile nedeterminate

Metoda impartirii la stanga /dreapta

X=A\b
respectiv,
Y=b/A

In acest caz, aceasta metoda realizeaza cautarea acelei solutii a


sistemului care minimizeaza (in sensul celor mai mici patrate)
norma euclidiana a vectorului A*X-b si care are cel mult rang A
componente nenule.
Rezolvarea sistemelor de ecuaţii liniare folosind
Symbolic Math Toolbox

Metodele de rezolvare precizate anterior sunt valabile si pentru


rezolvarea pe cale simbolica:
1. metoda inversarii / metoda pseudo-inversarii;
2. metoda impartirii la stanga / dreapta.

Rezolvarea pe cale simbolica necesita de obicei studiul sistemului


si efectuarea solutionarii pe cazuri.
Reprezentari grafice in plan 2D

Matlab permite reprezentarea in plan a graficelor de


functii si a suprafetelor poligonale.

Reprezentarile grafice ale functiilor pot fi facute in mai


multe tipuri de coordonate:

carteziene,

polare,

logaritmice,

semilogaritmice
Reprezentari grafice in plan- 2D
O parte din functiile Matlab destinate reprezentarilor
grafice 2D:

plot(x,y, speclinie) - grafice in coordonate X-Y liniare; x
si y sunt vectorii ce definesc punctele de reprezentat, iar
speclinie este un sir de caractere intre ` ` reprezentand tipul
liniei ce uneste punctele definite de x si y, markerul cu care
se reprezinta punctele definite de x si y si culoarea liniei,
toate in aceasta ordine.

line(x,y) -reprezentarea grafica a liniilor poligonale

fill (x,y,s) - reprezentarea grafica a poligoanelor

loglog(x,y,s) -grafice in coordonate X-Y logaritmice

semilogx (x,y,s), semilogy(x,y,s) -grafice in coordonate
X-Y semilogaritmice (in baza 10)

polar(theta,rho,s) -grafice in coordonate polare
Reprezentari grafice in plan - 2D


Tipul de linie poate fi unul din simbolorile:
- continua (implicit) , -- intrerupta, : puncte, -. linie-punct

Tipul marker-ului:
+ ( semnul +), o (cerc), * (asterisc), . (punct), x (cruce),
s (patrat), d (romb), p (pentagon), h (hexagon), ^ (triunghi
cu un varf in sus), v (triunghi cu un varf in jos), > (triunghi
cu un varf la dreapta), < (triunghi cu un varf la stanga)

Culorile pot fi urmatoarele simboluri:
r (rosu), g (verde), b (albastru), c (bleu), m (mov),
y (galben), k (negru), w (alb).
Reprezentari grafice in spatiu- 3D
In Matlab pot fi reprezentate grafic in spatiul 3D: curbe, suprafete
si corpuri 3-dimensionale. O parte din functiile Matlab destinate
reprezentarilor grafice 3D:

plot3(x,y,z, speclinie) - reprezentarea liniilor in spatiu, x,y,z sunt
vectorii ce definesc punctele de reprezentat, iar speclinie este un sir
de caractere intre ` ` reprezentand tipul liniei ce uneste punctele
definite de x si y, markerul cu care se reprezinta punctele definite de
x si y si culoarea liniei, toate in aceasta ordine.

mesh(x,y,z,c) - reprezentarea grafica a suprafetelor 3D sub forma
unei retele (“mesh”)

surf(x,y,z), surfl(x,y,z,s) - reprezentarea grafica a suprafetelor
pline, cu iluminare

contour(x,y,z) , contourf(x,y,z,v) – reprezentarea grafica doar a
liniilor de contur

fill3 - reprezentarea grafica spatiala a poliedrelor

cylinder (y,n), sphere(n), ellipsoid(xc,yc,zc,rx,ry,rz) -
reprezentarea grafica a unor corpuri tridimensionale
Functii auxiliare pentru reprezentari grafice
Cateva functii auxiliare ce pot controla proprietatile modului de
reprezentare:

title - inserarea unui titlu pentru reprezentarea grafica

axes, axis - controlul aparitiei si stabilirea lungimii unitatilor de
reprezentare pe axele sistemului de coordonate

xlabel, ylabel, zlabel - inserarea etichetelor axelor sistemului de
coordonate

text, gtext - plasarea unui text pe grafic la o anumita pozitie, sau
selectata cu mouse-ul.

hold- pastrarea graficului curent si al proprietatilor sale

subplot - impartirea ferestrei de reprezentare grafica in mai multe
regiuni grafice.

grid - suprapunerea unei retele de linii pe grafic

meshgrid -definirea sub forma de retea de puncte a domeniului de
reprezentare 3D a suprafetelor.

colormap - stabilirea sau returnarea matricei de culoare

shading- stabilirea modului de umbrire pentru suprafetele 3D
Bibliografie


Calcul numeric-grafica-aplicatii M. Ghinea, V Fireteanu.
Mathlab. Ed. Teora 2001

http://www.mathworks.com/help/pdf_doc/matlab/getstart.pdf

http://www.mathworks.com/academia/student_center/tutorials/
launchpad.html
Curs 1 HTML

Limbajul HTML- Static webpages


Style
Legaturi- Link
Liste
Internet versus World Wide Web
Internet


Schimb de informatii -> calculatoarele sunt inter-conectate ->
retele de calculatoare.

Inter-retele sunt retele de calculatoare conectate intre ele
(retele de retele de calculatoare) – Internet.

World Wide Web Set de servicii sau metode de acces la informatia


stocata pe un calculator prin intermediul retelei internet:

FTP (File Transfer Protocol) pentru transferul fisierelor

Telnet pentru accesul de la distanta la resursele unui calculator

Electronic Mail de mesagerie electronica (e-mail)

World Wide Web este o alta metoda (serviciu) de acces la
informatia stocata pe un calculator aflat oriunde in lume -
Distribuit, Interactiv, Dinamic
Serviciul World Wide Web

World Wide Web (WEB) - reprezinta un spatiu informational alcatuit


din resurse situate in locatii cunoscute sub numele de noduri.

Nodurile sunt utilizate prin intermediul unui sistem hypertext


folosind modul de identificare URL(Uniform Resource Locator).
Terminologie Web
IP address: fiecare calculator de pe internet are o unica adresa, numita IP
Internet Protocol adress, o serie de 4 numere intre 0 si 255 , separate de puncte,
adica in formatul _._._._ (4 byte =4 bilioane adrese IP)

TCP/IP: reteaua internet dispune de mijloace de dirijare a pachetelor astfel


încat acestea sa ajunga la destinaţie -Internet Protocol (IP). Reteaua Internet
dispune de mijloace de corectie a erorilor de transmitere a pachetelor -
Transfer Control Protocol (TCP).

DNS: Domain Name System: este un sistem folosit in Interent pentru a traduce
numele domeniilor (ex: www.romtelecom.ro) in adresa IP corespunzatoare.

URL:Uniform Resource Locator un standard de identificare si accesare a


resurselor din Internet. URL concatenează trei elemente:
Nume Protocol Internet utilizat pentru accesarea resursei:
http:// sau ftp:// sau file:// - pentru accesul la fisierele stocate pe calculatorul
local.
Nume Server/Domeniu identificatorul calculatorului care stochează resursa,
format din: nume_calculator.domeniu_internet
Indicator de cale si nume_fisierului destinaţie
Exemplu: http://www.pub.ro/news/index.html
Terminologie Web

Routers/gateways – directioneaza datele intre adresa IP sursa si adresa IP


destinatie (maxim 30 redirectionari)

Comanda : traceroute www.cnn.co.jp

Listeaza toate numele de domeniu ale routerelor prin care trec datele.

3 masuratori de timp independente (cat a durat ca datele sa ajunga la router) –


proportionale cu distanta fizica intre aceste routere.
Terminologie Web
Web Page: fisiere speciale ce pot fi interpretate de anumite aplicatii si
contin pe langa text si imagini, filme, sunete, link-uri si a caror extensie
este .html sau .htm.

Web Site: colectie organizata de fisiere (pagini Web), vizibile de


toata lumea formeaza un site web.

Web Server : calculator care ruleaza in permanenta o aplicatie


speciala (httpd) si gazduieste mai multe site-uri web.
Ex:Apache Server, Microsoft Web Server, Oracle Web Server.

Browser: aplicatie care permite vizualizarea paginilor de web, sa


navigheze urmand legaturile dintre ele si sa transfere fisiere redand astfel
toata informatia text, grafica, video si audio inglobata in aceste
documente.
Ex: Internet Explorer, Netscape Navigator, Chrome, Opera, Mozila.
Accesam un Web Site ?
UTILIZATOR

URL­ul 
Afişează paginii Web

Solicită conectarea la server
BROWSER WEB SERVER WEB

Transmite fişierul


Browser de pe calculatorul client se conecteza la un server local (DNS)

Cere adresa IP a paginii de web respective

DNS intoarce clientului adresa IP a paginii respective, de exemplu 1.2.3.4

Clientul trimite o cerere sa afle ce calculator din Internet are adresa 1.2.3.4

Gateways sau Routers: directioneaza date, similar cu sistemul postal

Webserver-ul de pe calculatorul cu adresa 1.2.3.4 recunoaste cererea si trimite fisierul
paginii de web.

Transferul se realizeaza printr protocol de transfer: Hyper Text Transfer Protocol (HTTP)
In ce limbaj e scrisa o pagina de web ?

Incarcam in Browser o pagina oarecare

CTRL+U sau View/PageSource

HTML -codul sursa

(1989) Tim Berners-Lee a scris primul draft pentru un sistem numit


"World Wide Web"

(1990) Tim Berners-Lee a scris primul browser si primul server WEB


elaborand specificatiile pentru URL, HTTP, HTML, XML, CSS,
XHTML

(1994) Tim Berners-Lee a creat World Wide Web Consortium W3C

(2017) - Sir Tim Berners-Lee primesteTuring Award


“The Web is considered one of the most influential computing
innovations in history”.
HTML

HTML inseamna Hyper Text Markup Language

HTML nu este un limbaj de programare. Nu utilizeaza
instructiuni (ca C-ul/ Pascal-ul), nici comenzi ca (FoxPro-
ul). HTML este un schelet care da paginii de web o
structura.

HTML limbaj de marcaje (de descriere) semntice, are o
anumita sintaxa bazata pe etichete/ tags. <> </>

Continutul documentului descris prin diferite tag HTML

Fisiere HTML = Pagini Web
HTML


HyperText inseamna text asociat cu link-uri – referiri
catre o noua pagina de web.

MarkupLanguage e un limbaj de comunicare in care text-
ul e asociat cu link-uri, imagini, tabele, liste etc.

CSS - Cascading Style Sheets limbaj folosit pentru a
descrie prezentarea – style unui document scris in HTML

Retineti ! HTML - scheletul CSS – hainele, machiajul
Cum edităm o Pagina de Web ?
Orice editor de text poate fi folosit pentru a crea pagini Web.

Unele editoare de text oferă mai multe facilități pentru verificarea erorilor,
colorarea sintaxelor și salvarea unor tipuri de scriere prin completarea
lucrurilor pentru dvs :
Sublime Text – foarte popular cu dezvoltatorii (necesită de curbă de învățare)
Notepad – peWindows PC
Visual Studio - pe Windows PC
TextEdit - pe Mac, dar asigurați-vă că salvați ca text simplu, nu ca fișier .rtf sau
.doc.
XCode - dezvoltatorii de Mac pot fi familiarizați cu XCode
BlueGriffon este un editor de conținut WYSIWYG ("Ceea ce vezi este ceea ce
primești") pentru World Wide Web. Powered by Gecko, motorul de randare al
Firefox, este o soluție modernă și robustă de editare a paginilor Web în
conformitate cu cele mai recente standarde Web.
Atom este un alt editor de platforme, creat de GitHub.
Vim sau Emacs sunt editorae excelente pe care Web-ul a fost construit, dar dacă
nu sunteți deja familiarizat cu acestea, nu este timpul să încerca ți.
Editoare Online

JsBin - http://jsbin.com/ - instrument open source pentru depanarea


dezvoltării în colaborare. Acest instrument este foarte simplu, trebuie doar să
deschideți să examinați codul, să examinați rezultatul etc, pute ți modifica
exemplele după cum doriți, de asemenea, le puteți modifica / clona / salva /
împărtăși.

Tutorialele (sau pe YouTube):

http://code.tutsplus.com/tutorials/javascript-tools-of-the-trade-jsbin--net-36843)

Rețineți că este întotdeauna mai bine să vă conectați (este gratuit) dacă nu dori ți
să pierdeți contribuția / munca personală.
Editoare Online
CodePen - https://codepen.io/ este un editor de cod HTML, CSS, JavaScript
cu care previzualizări codul în browser. Ajută la testarea dispozitivelor
încrucișate, programarea în pereche.

CodePen este un serviciu excelent, puteți începe a coda imediat, deoarece nu vă


cere să descărcați nimic și îl puteți accesa, împreună cu proiectele dvs. salvate
de la orice browser web.

Un articol interesat dacă utilizați CodePen:


10 Cool Things You Can Do with CodePen and JavaScript [Chris Coyier, 13
iunie 2016]:

https://www.sitepoint.com/cool-things-codepen-javascript/

Există multe alte instrumente folositoare, cum ar fi JSFiddle și Dabblet


(instrumentul Lea Verou folosit pe larg pentru CSS).
Cum modificam o Pagina de Web
Manual, lansati in executie editorul de text Notepad sau Visual Studio

– Start→Programs→Accessories→Notepad
– Introduceţi textul.
– Daca salvam fisierul cu numele index.html, devine pagina default a
browser-ului accesand-o prin double click. Putem salva fisierul si sub alt
nume, dar cu extensia .html sau .htm

sau


Cu ajutorul editoarelor HTML precum Visual Studio, Homesite, Adobe
Golive, Microsoft Frontpage, Macromedia Dreamweaver (aplicaţia cea mai
apreciata de profesionisti), CoffeeCup HTML Editor, Netscape Composer.

Porniti browser-ul Microsoft Internet Explorer;


– File→Open si deschideti fisierul salvat cu extensia .html


– Pentru a aduce modificari fisierului, executati click-dreapta pe suprafata
acestuia si din meniul contextual alegeti View Source si veti obtine codul-
sursa. Dupa modificare fisierului, salvati-l.
HTML – notiuni de limbaj

HTML este un text semantic adnotat folosind un limbaj
special pentru a adauga noi specificatii textului.

Tag – incep cu caracterul < si se incheie cu caracterul >
<item> - inceputul unei secvente
</ item > - sfarsitul unei secvente
< item /> - gol/ vid

Element – structura ce cuprinde un tag de început și de
sfârșit sau un tag vid
<item> text text </item>
<item / >
Informația cuprinsă intre tag-urile de început și sfâr și se
numește continutul elementului.
Structura generala a Paginilor de Web

<!DOCTYPE html>
<html>
<head> <!-- Acesta e antetul doar, cateva
etichete sunt permise in aceasta parte -->
<title> Titlul documentului </title>
</head>
<body> <!--Continutul actual al paginii, text,
imagini, link-uri, tabele -->
</body>
</html>
Tag-ul comentariu

Browser-ul nu afiseaza/interpreteaza comentariile si spatiile


libere din documentele HTML.

Comentariile incep cu tag-ul <!- -, pot contine orice caracter si se


termina cu tag-ul -- >.

<!-- Acesta este un comentariu -->

Ca regula generala trebuie plasat fiecare comentariu pe o linie


separata şi este preferabil sa se evite in interiorul comentariului
utilizarea caracterelor speciale de tipul <, >, & sau ! Nu este
indicat să se includă alte tag-uri HTML între tag-urile de
comentariu.
Versiuni HTML
HTML 1.0 (1991) – notiunea de hypertext (un document poate
referi alt document). Primul browser Mosaic

HTML 2.0 (1995) - tabele, image maps, incarcarea fisierelor,


limbaj international. Browser-re Netscape si Internet Explorer

HTML 3.0-3.2 (1997) – frame-uri, applets, text in jurul imaginilor,


elemente de text, JavaScript si elemente de CSS

HTML 4.0- 4.01(1999) – s-a inlaturat formatarea specifica


browserului, accent pe CSS

XHTML 1.0 (2000) – standardizare.

HTML5 (2014) – noi elemente si atribute. Standardul viitorului.


XHTML

Browser : calculatoare, telefoane mobile, diverse dispozitive mici

Initial limbajul HTML a fost conceput astfel incat prin tag-uri sa se
defineasca continutul si nicidecum tag-urile sa fie folosite pentru
formatarea documentului, font, color, size etc. - XHTML
XHTML- versiunea mai “curata” si mai stricata a limbajului
HTML 4.01

XHTML Extensible HyperText Markup Languge



XML Extensible Markup Language limbaj de marcare destinat sa
transporte si stocheaze date, nu are tag-uri predefinite, poate fi
interpretat atat de oameni cat si de masini.

Combinatie intre HTML (doar afiseaza) si XML(doar descrie)

Nu foarte diferit de versiunea HTML 4.01
HTML versus XHTML
XHTML elementele obligatorii:

<! DOCTYPE html>


<html>
<head>
<title> </title>
</head>
<body>
.....
</body>
</html>
HTML versus XHTML


XHTML elementele trebuie inchise corect (s-a adaugat un spatiu
liber inainte />)

XHTML documentul trebuie sa aiba un singur element radacina
<html>

XHTML elementele trebuie sa fie scrise cu litere mici

XHTML elementele trebuie sa fie “properly nested” corect
imbricate

XHTML numele atributelor trebuie scrise cu litere mici (width),
iar valorile atributelor intre “” . Minimizarea atributelor e
interzisa(<option selected=”selected”/>,
<input disabled=”disabled” /> )

XHTML impatit in 32 Module- seturi bine definite de elemente ce
pot fi folosite separat in diverse aparate mici sau aplicatii mai
complexe.
W3C Validare
De peste 15 ani, W3C a dezvoltat și găzduiește unelte gratuite și
open source folosite în fiecare zi de milioane de dezvoltatori web și
designeri web:
Validatorul W3C https://validator.w3.org/ verifică validitatea
marcării diferitelor formate de documente web, cum ar fi HTML
https://validator.w3.org/docs/help.html#validation_basics

Validatorul CSS verifică documente CSS (Cascading Style Sheets)


și documente (X)HTML care utilizează foi de stil CSS.
https://jigsaw.w3.org/css-validator/

Unicorn este validatorul unificat al W3C, care vă ajută să


îmbunătățiți calitatea paginilor Web prin efectuarea unei varietăți de
verificări. Unicorn colectează rezultatele validatorilor HTML și CSS,
precum și alte servicii utile, precum internaționalizarea, feedurile
RSS / Atom și anteturile http.
HTML 4 versus HTML 5

HTML5 este noul standard din 2014 suportat de toate browserele

HTML5 noile elemente vor fi bazate pe HTML, CSS and
JavaScript (eliminarea/inlocuirea unor elemente HTML4/HTML5)
Exemplu: <acronym> / <abbr>

HTML5 trebuie sa fie independent de „device”

HTML5 reduce necesitatea plugins externe (ex: Flash)

HTML5 mai multe elemente pentru inlocuirea scripturilor

In HTML5 declaratia <!DOCTYPE html> obligatorie!

In HTML5 declaratia de encodare a caracterelor simplificata


<head>
<meta charset="UTF-8">
</head>
HTML 5

HTML5 introduce elemente noi pentru o mai buna manipulare si


structura, pentru desenare si pentru continutul media:

• Semantice (8): <header>, <footer>, <article> ,<section>, <nav>,


<main>, <aside> si <figure>
• Multimedia <video> and <audio>
• Controale noi pentru: calendar, date, time, email, url, search
• Grafice <svg> si <canvas>

HTML5 API's (Application Programming Interfaces):

Geolocation , Drag and Drop ,Local Storage, Application Cache ,


Web Workers , SSE
HTML5
Toate documentele trebuie sa aiba obligatoriu Document Type
Definition (DTD), adica o declaratie <!DOCTYPE html>

- este intotdeauna in prima linie a documentului, inainte de <html>

- <!DOCTYPE html > nu e un tag al limbajului HTML


este o instructiune pentru browser, set de reguli ptr a afisa corect
informatia.

- declaratia <!DOCTYPE html> NU este case sensitive.

Exemplu HTML4:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01
Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
HTML -tags
Tag-uri/etichetele:
<numeTag> continut </numeTag>

cuvinte cheie sau NumeTag, delimitate de paranteze
unghiulare, de ex: <p>, <html>, <h1>

de obicei sunt in pereche, tag de inceput / deschidere
<body> si tag de sfarsit/inchidere </body>

Tag-ul de deschidere poate avea un set de atribute ce
adauga informatie:

<NumeTag Atribute=”valoare”> Textul afectat de acest


tag </NumeTag>
HTML -tags
Element tot ceea ce e cuprins intre <NumeTag> DA </NumeTag>
Tag-urile sunt de 2 feluri:

elemente vide au efect imediat in punctul din document in
care apar, deschidem si inchidem imediat <NumeTag />,
Exemplu: <br /> Insereaza o linie noua
<hr /> Inserează o linie orizontala in locul in care apare
<img src="poza.gif" /> Specifica inserarea unei imagini.

elemente nevide sunt in pereche, de inceput si de sfarsit, intre
care apare textul afectat. Ele au efect numai asupra textului inclus
între ele
Exemplu: <i>Acest text va fi afişat italic</i>

Tag-urile pot si imbricate: pot fi utilizate şi în interiorul altor tag-


uri
<Tag1><Tag2>Textul afectat de tag</Tag2></Tag1>
HTML -atributul tag-ului
Atributele adauga informatie modificand comportamentul unui tag

Atributele au nume si pot lua anumite valori, avnd sintaxa:


NumeAtribute=”valoare”

Atributele sunt intotdeauna specificate in tag-ul de inceput

Dacă în tag există mai multe atribute, ele trebuie separate prin
spaţiu.
<NumeTag NumeAtribut="Valoare">Textul afectat de tag
</NumeTag>
Exemplu:<img src="poza.gif" alt="Nu s-a gasit poza.gif" />

Intotdeauna se folosesc " " , doar in cazuri speciale folositi ' '
Exemplu: <p title='John "ShotGun" Nelson'> Porecla John </p>
HTML5 -atributul tag-ului

Oricare din aceste variante este acceptabila in HTML5:

Empty <input type="text" value="Vasile" disabled>

Unquoted <input type="text" value=Vasile>

Double-quoted <input type="text" value="Vasile Stanescu">

Single-quoted <input type="text" value='Vasile Stanescu'>


Reprezentare Hexazecimala a Culorilor

<body bgcolor=”blue”> <!--varianta depasita--> </body>


Valoarea poate fi : “red”, “green”, “blue”, “yellow” etc...ptr alte
nuante folositi reprezentarea numerelor in hexazecimal.

O culoare reprezentata in hexazecimal are nevoie de 3 octeti: o


combinatie de Red, Green, Blue - RGB
(0..255,0..255,0..255) – 255*255*255 = 16 milioane de culori
Exemplu: negru #000000 RGB(0,0,0)
alb #ffffff RGB(255,255,255)
rosiatic #600000 RGB(96,0,0)
gri #606060 RGB(96,96,96)

In HTML reprezentarea hexazecimala incepe cu #.


Structura generala a Paginilor de Web

<!DOCTYPE html>
<html>
<head>
<title> Titlul documentului </title>
<meta charset="UTF-8">
</head>
<body> <!--Continutul actual al paginii, text,
imagini, link-uri, tabele -->
</body>
</html>
Setul de caractere HTML
Pentru a afisa corect limbajul HTML, browserul trebuie sa stie
ce set de caractere sa foloseasca:

ASCII suporta numerele (0-9), litere (A-Z), si cateva caractere


speciale: ! $ + - ( ) @ < > .
ANSI (Windows-1252) setul de caractere Windows. Suporta
256 coduri de caractere diferite.
ISO-8859-1 set de caractere ptr HTML4. Suporta 256 coduri
de caractere diferite.
Deoarece ANSI si ISO erau limitate, setul de caractere UTF-8
este folosit in HTML5.
UTF-8 (Unicode) acopera aproape toate caracterele si
simbolurile din lume.
<meta> HTML4 vs HTML5

Pentru a afisa corect limbajul HTML, browserul trebuie sa stie


ce set de caractere sa foloseasca:

HTML4 : <meta http-equiv="Content-Type"


content="text/html;charset=ISO-8859-1">

HTML5: <meta charset="UTF-8">


Entitati HTML

Caracterele rezervate limbajul HTML (<, >, & ) trebuie


inlocuite cu entitati HTML.

Caracterele care nu sunt pe tastatura pot fi inlocuite cu entitati

Sintaxa : &nume_entitate sau &#numar_entitate

Exemple: < &lt &#60 ; > &gt &#62;

Entitatea HTML non-breaking space: &nbsp; adauga un


spatiu liber (nu trecerea la o noua linie )
Simboluri HTML

Simbolurile matematice, tehnice nu sunt pe tastatura, deci ele


pot fi inlocuite cu entitati HTML.

Exemple:

∀ &#8704; &forall; ORICARE


∃ &#8707; &exist; EXISTA
∈ &#8712; &isin; APARTINE
∑ &#8721; &sum; SUMA

Γ &#915; &Gamma; GAMA


→ &#8594; &rarr;
€ &#8364; &euro; EURO
Prima mea Pagina de Web

<!DOCTYPE html>
<html>
<head>
<title> Cursul de informatica </title>
<meta charset="UTF-8">
</head>
<body> Tag-ul title este obligatoriu ptr orice HTML
deoarece: defineste titlul in tab-ul browser-ului,
furnizeaza titlul cand pagina e adaugata in Favorites,
afiseaza titlul in paginile rezultate in procesul de search
</body>
</html>
Structura elementul <head> </head>

Acest element contine informatii despre document (date despre
date), cum ar fi titlul său, cuvinte cheie utilizabile de motoarele de
cautare, descrierea documentului si style-sheet-uri asociate/utilizate

Aceste metadate nu sunt afisate de browser

Poate contine urmatoarele tags:
<title> titlul documentului
<link> defineste relatiile documentului propriu-zis cu alte
documente auxiliare
<base> defineste o adresa de default si un default target
(adica unde sa se deschida link-ul) pentru toate link-
urile dintr-o pagina
<meta> defineste un set de „metadate“=date auxiliare
utilizate in diverse alte scopuri: cuvinte cheie, autor,)
<script> defineste un script client-side (secventa de
instructiuni ce se executa în client)
<style> defineste stilurile de document (style-sheet) folosite
in document
Structura - elementul <body> </body>
Elementele ce apar în corpul unui document sunt de tip bloc ,
tip inline sau tip nedefinit (pot fi atat inline cat si block).Tipul
elementului defineste modul de afisare.
Elemente de tip bloc:
întotdeauna ocupa întregul spațiu disponibil pe ecran
continutul elementului pe o linie noua
Structura - elementul <body> </body>
Elementele de tip bloc :
-containere de text:
<main>, <article>, <aside>, <footer>, <header>
<p> definirea unui paragraf
<div>definirea unei diviziuni logice de text
<pre>definirea unui text preformatat
<blockquote>definirea unui citat de dimensiuni mari
<address> definirea unui informatii specifice de adresa
<br />
<button>, <canvas>, <caption>
-tip header <h1..h6>
-definesc (sau sunt strans legate de) liste <dd>, <dl> <dt>
-definesc tabelele
-alte elemente
<form> definirea unui formular pentru a introduce date
<frameset> definirea unui „frameset“
Structura - elementul <body> </body>
Elemente de tip inline:
întotdeauna ocupa doar spațiul necesar pe ecran
mai multe elemente pe o linie, dacă nu încap se face „ wrap” - unul
în continuarea celuilalt
Structura - elementul <body> </body>
Elemente de tip inline:
-de marcare logica a proprietatilor unei portiuni de text
<em> text scos in evidenta
<strong>text puternic scos in evidenta, etc
-de marcare fizică a proprietăţilor unei porţiuni de text
<i>italic
<b>bold
<s>subliniat
- de marcare a proprietatilor speciale ale unei portiuni de text
<a> anchor (ancoră, legătură hypertext)
<img> imagine
<bdo> redefinirea directiei in care se citeste textul
- de definire a controalelor din interiorul unui formular
<select> lista de selectie
<textarea> camp de introducere a unui text
<label> eticheta unui camp
<button> buton
<option> lista de selectie a unor optiuni de meniu
Elemente bloc vs. inline

Elementele de tip block intotdeauna adauga o linie noua si ocupa
toata latimea disponibila
<div>, <h1>...<h6>, <p> si <form>

Elemente inline ocupa spatiul minim necesar
<span>, <img>, <a>

Exemple:
<div style="background-color:#670067; color:white;
padding:20px;">
<h3> Literatura universala</h3>
<p> Alegeti o carte din literatura japoneza </p>
</div>

<h1> Ce<span style="color:red">carte</span> citesti? </h1>


Structura - elementul <body> </body>

Elemente de tip nedefinit (pot fi atat inline cat si block).


Daca sunt utilizate ca elemente inline (adică sunt in interiorul unui
alt element inline) ele nu trebuie sa contina nici un element de tip
bloc:
<map> definirea unei imagini senzitive (prelucrata client-side)
<area> zona activa inauntrul unei imagine senzitive
<param> definirea parametrilor unuiobiect sau applet Java
<del> defineste text sters
<ins> defineste text inserat
<object> includerea unui obiect
<script> includerea unui script client-side
<iframe> definirea unei frame inline (in punctul în care apare
elementul)
Tag-uri de tip bloc/
Titlu de capitol/sectiune <h1>
HTML construit pe baza ierarhie de informatii


Tag heading <h1>..</h1> ... <h6>..</h6> - 6 nivele de titluri
Browsers adauga automat o linie goala inainte si dupa aceste tag-uri.

Exemplu:
<body>
<h1> CEO- Titlu de marimea cea mai mare</h1>
<h2> VP- …. </h2>
<h3 >Director - Titlu de marimea mijlocie</h3>
<h6> Secretara - Titlu de marimea cea mai mica</h6>
</body>
</html>

Atributele de alieniere “right”,”left“,”center” sunt depasite

Search engines folosesc tagul heading pentru a indexa structura
documentului HTML.
Tag-uri de tip bloc/ Containere de text
tag-ul Paragraf <p>

Tag-ul <p> si </p> face trecerea la un paragraf nou
Browser-ul adauga automat o linie goala inainte si dupa titlu.
<p> Continutul paragrafului </p>

In combinatie cu tag-ul <br/> se realizeaza trecerea la o linie noua
Exemplu:
<html>
<head><title>Exemplul de Paragraf</title></head>
<body>
<p>Un<br />a para<br />graf intrerupt</p>
<p> Numarul de linii dintr-un paragraf depinde de
marimea ferestrei browser-ului.Daca redimensionam fereastra browser-
ului, nr de linii ale paragrafului se schimba. </p>
</body>
</html>
Tag-uri de tip bloc/ Containere logice
tag-ul <div>

Tag-ul <div> si </div> folosit la formatarea şi delimitarea unui
bloc de text.
Browser-ul adauga automat o linie goala inainte si dupa titlu.

Atributul style afiseaza o sectiune/ bloc de text albastru-verzui
Exemplu:
<html>
<head><title>Exemplul de Div</title></head>
<body>
<h3>Un titlu oarecare</h3>
<p>Un paragraf oarecare</p>
<div style=" background-color:#66ff99;color:#3C00F4;">
<h3>Text scris in culoarea setata</h3>
<p>Textul e format dintr-un titlu si un paragraf.</p>
</div>
</body>
</html>
Tag-uri de tip bloc/ Text Preformatat tag-ul <pre>


Tag-ul <pre> si </pre> folosit la afisarea unui bloc de text ca in
codul sursa, toate spatiile goale vor fi afisate.
Folosit pentru afisarea codului programelor, a poeziilor
Exemplu:
<html>
<head><title>Text Preformatat</title></head>
<body>
<pre>
<b>A venit, a venit toamna </b>
<i>Acopera-mi inima cu ceva</i>
</pre>
</body>
</html>
Tag-uri de tip bloc/ Indentare tag-ul <blockquote>

Tag-ul <blockquote> si </blockquote> folosit la afisarea
citatelor lungi. Blocul de text e indentat cu un TAB fata de ambele
margini (stanga si dreapta) ale spaţiului disponibil (pagina, celula
de tabel, etc.)

Tag-ul <q> si </q> folosit la afisarea citatelor scurte (adauga „”)
Exemplu:
<html>
<head><title>Citate</title></head>
<body>
Textul urmator este indentat:
<blockquote>Acest bloc de text este indentat cu un TAB fata de
ambele margini ale paginii.</blockquote>
<q> Cogito ergo sum</q>
</body>
</html>
HTML5 elemente semantice
Elementele semantice funcționează identic ca cele de tip bloc, dar
cu noi posibilități de administrare și modificare a aplicației web –
se poate infera informație din pagina (puteți face search doar într-
un anumit element):

<header> , <footer> , <nav>, <section>, <article> , <aside>,


<details>, <figure>, <figcaption>, <main>, <mark>,
<summary>, < time>

Avantaje: abilitatea de a utiliza CSS pentru a proiecta elementul


semantic direct, fără a necesita clase suplimentare CSS.
Exemple: flexbox în CSS pentru a pune elementul <aside> de o
parte, pe partea dreaptă a paginii web.
CSS Media Queries pentru a re-aranja elementele semantice pentru
un browser mobil.
HTML5 <header> <section> <main> <footer>
<header> defineste sectiunea din partea de sus a paginii sau un set
de link-uri de navigatie (poate contine tag <h1>-<h6>, logo,
icoane).Un document poate avea mai multe elemente <header>
<header> nu poate fi plasat in tag-urile <footer>, <address> sau in
alt tag <header>.
<footer> defineste sectiunea din partea de jos a paginii (autor,
copyright, contact, diverse link-uri) . Un document poate avea
mai multe elemente <footer>.
<main> defineste continutul principal al documentului si trebuie
sa fie doar un singur element <main> in document. Informatia
din interior trebuie sa fie unica, nu trebuie sa se repete in zonele
laterale, link-uri de navigatie sau in formulare de search.<main>
nu e un descendant din <article>, <aside>, <footer>,
<header> ,<nav>
<section> defineste o sectiune in document, cum ar fi capitole,
headers, footers, sau orice alta sectiune a documentului.
HTML5 <article> <aside>
<article> o sectiune de sine statatoare, poate fi distribuita
independent de restul site-ului. Pot exista mai multe elemente
<article> in acelasi document. Folosit in postari pe blog, forum
comentarii:
Exemplu:
<article>
<h1>Google Chrome</h1>
<p>Google Chrome is a free, open-source web browser
developed by Google, released in 2008.</p>
</article>

<aside> defineste continut suplimentar si e in raport cu continutul


din jur
HTML5 <time>

Microformats – metadate care sunt machine- readeble, pot adauga


CSS sau JavaScript pe aceste elemente

Exemplu:
<body>
<p> Aveți următoarea programare
<time datetime="2015-12-13T08:30:00-05:00">
<strong>12 Decembrie la 08:30 AM</strong>
</time>.
</p>
</body>

Am adaugat informație care poate fi prelucrata, chiar dacă nu e


nicio diferența în afisare. Pot face search după <time> și pot
adauga informația în aplicația de calendar.
HTML5 <figure> <figcaption>

Elementul <figure> marcheaza o poza/imagine/grafic in document


Elementul <figcaption> adauga explicatie figurii

<figure>
<img src="img_pulpit.jpg" alt="The Pulpit Rock" width="304"
height="228" />
<figcaption>Fig1. - A view of the pulpit rock Norway.</figcaption>
</figure>

Pot aplica CSS pe elemetul <figure> pentru a-l stiliza si sa pastrez


acelasi stil pe toate imaginile din pagina/site.
Tag-uri de tip inline/ tag-uri logice


Indica doar cum anume sa fie utilizat textul marcat NU si cum
anume sa fie afiasat - asemanatoare tag-urilor folosite la
marcarea paragrafelor sau titlurilor.

Tag-urile stilurilor logice indica doar faptul ca textul este o
definitie, o bucată de cod sau doar o portiune de text care trebuie
scoasa in evidenţă in raport cu contextul.

Tag-urile stilurilor logice nu sunt invechite, dar obtinem efect
mai bun cu CSS
Tag-uri de tip inline/ tag-uri logice

<em>Text accentuat</em>
<strong>Text puternic accentuat</strong>
<dfn>Definitie (cuvant care va fi definit)</dfn>
<code>Secvenţă de cod afişată cu font fix (ex Courier)</code>
<samp>Esantion, similar cu code</samp>
<kbd> Text tastat de utilizator</kbd>
<var>Variabila</var>
<cite>Citatie</cite>
<acronym title=”Org Nat Unite”>O.N.U. </acronym> HTML4
<abbr>O abreviere </abbr> HTML5
<mark> Text marcat</mark>
<ins>Un text subliniat)</ins>
<del>Text marcat ca sters </del>
<sub>Text scris ca indice</sub>
<sup>Acesta e un exponent </sup>
Tag-uri de tip inline/ tag-uri fizice

Indica browser-ului cum anume sa fie afisat textul marcat.

Utilizarea stilurilor fizice are neajunsul ca daca browser-ul nu
poate afisa acel stil el il va substitui cu un altul.

Tag-urile stilurilor fizice nu sunt invechite, dar obtinem efect mai
bun cu CSS
<b> Text ingrosat (aldin)</b>
<i> Textul italic (cursiv) </i>
<u> Text subliniat </u>
<big> Text afisat cu un font mai mare decat restul </big>
<small> Text afisat cu un font mai mic decat restul </small>
<tt> Text monospatiat </tt>

Imbricare
<p><b>bold</b>, <i>italic</i>, <b><i>bold italic</i></b>,
<tt>teletype text</tt>, si <big>big</big> si
<small>small</small> text.
Legaturi/link-uri <a>

Legatura/link-ul (hyperlink-ul) - constructie de baza - poate fi
definita ca o conexiune de la o resursa Web la alta.

Legatura/link are doua capete zise si ancore - sursa/destinatie si o
directie. Ancora destinatie poate fi orice resursa Web :un
document HTML, un element din interiorul unui document
HTML, o imagine, un clip, un sunet, un program, etc.

Tag-ul <a> si </a> defineste un (hyper)link.

Implicit link-urile apar in toate browserele asa:
- un link ne-vizitat este subliniat si albastru
- un link vizitat este subliniat si purple
- un link active este subliniat si rosu
Atributele tag-ului <a> - partea I

name - marcheaza destinatia legaturii, folosit, de obicei, pentru
navigarea în cadrul aceleiaşi pagini.

href - URL-ul fisierului. Adresa poate fi absoluta sau relativa.

type indica tipul fisierului ( .html, audio, video etc. )

title furnizeaza o scurta descriere a fisierului.

target precizeaza fereastra in care va fi incarcat fisierul. Acest
atribut accepta urmatoarele valori:
"_blank" : fisierul se incarca intr-o noua fereastra, fara nume
"_self" : fisierul se incarcă in frame-ul/cadrul curent
"_top" : fisierul se incarca in intreaga fereastra a browser-ului
"_parent": fisierul se incarca in fereastra parinte a ferestrei care
contine link-ul
accesskey ia o valoare care este un caracter. Link-ul poate fi accesat
apasand simultan tasta "Alt" si tasta corespunzatoare caracterului
respectiv.
Atributele tag-ului <a> - partea II


Atributele shape si coords specifica forma si coordonatele unui
link. Ofera posibilitate utilizatorului sa specifice o harta de imagini
senzitive (client-side image maps, prin intermediul elementului
<object>), un numar oarecare de zone in interiorul unei imagini si un
set de documente/resurse catre care sa indice fiecare zona anterior
definita.
Aceste atribute accepta valorile:
-rect - regiune dreptunghiulară, coords="left, top, right, bottom"
-circle - cerc, coords="center-x, center-y, radius"
-poly - un poligon, coords="x1, y1, x2, y2, ..., xN, yN"
-default - specifica intreaga imagine, sau ce a ramas nedefinit
Atributele tag-ului <a> - partea III


Coordonatele sunt relativ la coltul stanga sus al imaginii. (0,0)

Coordonatele pot fi exprimate in pixeli sau procente.

O rază a unui cerc data ca procent este calculata relativ la cea mai
mica dimensiune a imaginii/obiectului (latimea sau inaltimea).

Daca doua sau mai multe regiuni se suprapun are prioritate cea
definita intîi.

Pentru a crea imagini de harti care merg in toate browserele folositi
elementul <area> inauntrul elementului <map>.
Tag-ului <map> <area> si <img>
Atributul usemap este asociat cu atributul name (sau id-ul)
elementului <map> si creaza o relatie de legatura intre elementul
<img> si <map>.

Exemplu:
<img src="planets.gif" width="145" height="126" alt="Planets"
usemap="#planetmap" />

<map name="planetmap">
<area shape="rect" coords="0,0,82,126" href="sun.htm"
alt="Sun">
<area shape="circle" coords="90,58,3" href="mercur.htm"
alt="Mercury">
<area shape="circle" coords="124,58,8" href="venus.htm"
alt="Venus">
</map>
Tag-ul <a>


Tag-ul <a> poate fi folosit in doua moduri
link destinatie
ancora

Link destinatie se creaza o legatura catre alt document folosind


atributul href si a carui valoare este adresa altui site sau
fisier.
<a href=”http://www.romlit.ro/”>Revista Romania Literara</a>
<a href="contact.html">Contact</a>
<a href="/cale/orice.html">Vizit Romania</a>
Exemple Tag-ului <a>


<a href="http://www.romlit.ro/" target=”_blank”>
htpp://www.google.com/</a>
Atentie! Link-ul apare http://www.google.com/ dar ancora e la
site-ul www.romlit.ro ce se deschide intr-o noua fereastra fara
nume


Mail to link: <a href="mailto:[email protected]">Send
e-mail</a>
Link-ul apare Send e-mail, si se initiaza protocolul de transfer
mailto si nu http.
Exemple Tag-ului <a>

O imagine ca link:

<p>Aceasta e sigla ziarului RomaniaLiterara:


<a href="http://www.hotnews.ro">
<img src="logo_romlit.gif" width="50" height="50"/> </a>
</p>

Un link catre o imagine:

<a href="../images/me.jpg">Poza mea</a>


Link-ul apare Poza mea si se acceseaza imaginea me.jpg din
directorul/images.
Tag-ul <a>
Folosind atributul id se creeaza o ancora, o legatura intre un anumit
punct al unui document şi un alt anumit punct al aceluiaşi
document sau al altui document.
Salt inauntrul aceluiasi document:
<a id="cuvînt_cheie">Paragraf tintă</a>
<a href="#cuvant_cheie"> Ancora e paragraful tinta</a>
Exemplu:<h2><a id=”C2”>Capitolul 2</a></h2>
<p> ba bla bla</p>

<p><a href="#C2"> Ancora e Capitolul 2</a></p>
Salt inauntrul altui document:
<a href="/cale/doc.html#cuvint_cheie">Salt la paragraful
dorit</a>
Exemplu:<h2><a id=”capitol3”>Capitolul 3</a></h2>
<a href="carte.html#capitol3">Capitolul 3</a>
HTML5 <nav>

<nav> defineste link-uri de navigatie


Exemplu:
<nav>
<a href="www.braila.ro">Braila</a> |
<a href="www.brasov.ro">Brasov</a> |
<a href="www.const.ro">Constanta</a> |
<a href="www.cluj.ro">Cluj</a>
</nav>

Nu toate link-urile unui document trebuie sa fie in interiorul


elemetului <nav>

Elementul <nav> e principalul bloc de navigatie.


Liste

Exista trei tipuri standard de liste:



neordonate <ul> </ul>

ordonate <ol> </ol>

liste de definiţii (glosar) <dl> </dl>
Liste

Exista trei tipuri standard de liste:



neordonate <ul> </ul>

ordonate <ol> </ol>

liste de definiţii (glosar) <dl> </dl>
Liste Neordonate <ul>
Fiecare element este introdus in lista cu ajutorul tag-ului <li> </li>

<ul type=”value”>
<li> Primul element al listei neordonate</li>
<li> Al doilea element </li>
<li> A1 treilea element</li>
</ul>

Browser-ul afiseaza elementele listei:



nenumerotate

afisate identat, unele sub altele

precedate de un semn specific definit de atributul type care
poate avea valorile: disc (cerc umplut/plin) , square, diamond
circle circumferinta unui cerc

Listele neordonate pot contine text, line breaks, imagini, links, alte
liste, etc.
Liste Neordonate Imbricate
Se insereaza o noua lista in interiorul primei liste.
Exemplu:
<html>
<body>
<ul>
<li>Salate</li>
<li>Aperitiv</li>
<li>Ciorba
<ul>
<li>De burta</li>
<li>De perisoare</li>
</ul>
</li>
<li>Desert</li>
</ul>
</body>
</html>
Liste Ordonate <ol>

Fiecare element este introdus in lista cu ajutorul tag-ului <li>

<ol type=”value”>
<li> Primul element al listei neordonate</li>
<li> Al doilea element </li>
<li> A1 treilea element</li>
</ol>

Browserul numeroteaza elementele listei secvential cu numere sau


litere in functie de valoarea „A” „a” atributului type.

Listele ordonate pot contine text, line breaks, imagini, links, alte
liste, etc.
Liste Ordonate Imbricate


Se insereaza o noua lista in interiorul primei liste.


Se pot insera liste neordonate in interiorul celor ordonate si
viceversa.


Felul în care apar afişate listele imbricate diferă mult de la un
browser la altul.
Liste de definitii/ glosar <dl>
Fiecare element este introdus in lista cu ajutorul tag-ului <dt> -
termeni ce trebuie definiti, iar definitiile corespunzatoare se fac
cu tag-ul <dd>.

<dl>
<dt> Termen care urmează să fie definit </dt>
<dd> Definiţia termenului </dd>
<dt> Alt termen </dt>
<dd> Altă definiţie </dd>
</dl>
Elementele listei pot contine text, line breaks, imagini, links, alte
liste, etc.
Browserul numeroteaza elementele listei secvential cu numere sau
litere in functie de valoarea „A” „a” atributului type.
Exemplu legaturi tip ancora in liste
<h1> Meniu </h1>
<ol type=”I”>
<li><a href="#Sal">Salate</a></li>
<li>Aperitive
<ul type=”disc”>
<li>Calde</li>
<li>Reci </li>
</ul>
</li>
<li>Ciorbe</li>
<li><a name="desert">Desert</a></li>
</ol>
<h2><a name="Sal">Salate</a></h2>
<p>Salata Cezar, Salata greceasca, Salata asortata</p>
<h2>Aperitive</h2>
<p>Calde:<br/>Cascaval pane<br/>Creier pane<br/></p>
<h2><a href="http://www.lacena.ro/Meniu_Desert.html#desert">Desert</a></h2>
</body>
</html>
Atributele Standard

Atribute standard sunt:

title - specifica o extra informatie pentru un element. Ia valoarea text.

style - specifica stilul inline pentru un element. Ia valoarea definitie_stil.

id - specifica un id unic pentru un element. Ia valoarea nume_id . Nu


poate incepe cu o cifra.

class- specifica un nume de clasa pentru un element. Se foloseste cel mai


des in style sheet. Ia valoarea nume_clasa.
HTML4 atributele standard NU se folosesc pentru elementele:
<base>, <head>, <html>, <meta>, <param>,<script>, <style> si <title>.

HTML5 atributele standard sunt folosite pentru orice element


Atributele tag-urilor

Exemplu

<NumeTag style="atribut:valoare; atribut:valoare;”>


Textul afectat </NumeTag>

Numele si valorile atributelor trebuie scrise cu litere mici !

Folosirea acestuia introduce numeroase probleme legate de
accesibilitatea pe diverse platforme
Atributele Globale
accesskey - specifica o combinatie de taste pentru activarea/focus unui
elementet. <element accesskey="character"> In HTML 4.01 poate fi
folosit doar pentru elementele: <a>, <area>, <button>, <input>, <label>,
<legend>, si <textarea>.
dir - specifica directia in care sa fie afisat continutul unui element.
<element dir="ltr|rtl|auto"> In HTML 4.01, nu poate fi folosit pentru
elementele: <base>, <br>, <frame>, <frameset>, <hr>, <iframe>,
<param>, si <script>.
tabindex - specifica ordinea pentru navigare ( tasta TAB) pentru un
element. <element tabindex="number"> In HTML 4.01, poate fi folosit
doar pentru elementele: <a>, <area>, <button>, <input>, <object>,
<select>, si <textarea>.
lang - specifica limba de afisare pentru un element. <element
lang="language_code"> In HTML 4.01, nu poate fi folosit pentru:
<base>, <br>, <frame>, <frameset>, <hr>, <iframe>, <param>, si
<script>.

In HTML5 aceste atribute globale sunt folosite pentru orice element.


Atributele Globale HTML5
contenteditable - specifica daca continutul unui elementet se poate edita
sau nu. Suportat de majoritatea browser-elor.
<element contenteditable="true|false|inherit">
hidden - specifica daca continutul unui element sa fie afisat sau nu.
Suportat de majoritatea browser-elor cu exceptia IE.
<element hidden="hidden">
spellcheck - specifica daca continutul unui element sa fie verificat sau nu
Suportat de majoritatea browser-elor cu exceptia IE si Firefox.
<element spellcheck="true|false">.
draggable - specifica daca un element poate fi manipulat sau nu. Suportat
de majoritatea browser-elor cu exceptia IE si Opera.
<element draggable="true|false|auto">
dropzone - specifica daca elementele „dragged” pot fi copiate/mutate/link
sau nu. Nu este suportat de niciun browser inca.
<element dropzone="copy|move|link">
contextmenu - specificat pentru elementul <p>, apare la right-click.
Nu este suportat de niciun browser inca.
<element contextmenu="menu_id">
Atributele Eveniment Globale
Evenimentele definesc actiuni si permit executarea scripturilor in browser.

Executarea unui JavaScript cand utilizatorul click/ apasa o tasta pe un


anumit element.
Evenimente pentru elementul <body>:
HTML4 &5 : onbeforeprint, onafterprint, onload, onunload, onresize
<body onresize="showMsg()">
HTML5 : ononline, onoffline, onresize, onundo, onredo, onpopstate,
etc
Evenimente ptr tastatura:
HTML4 & 5: onkeydown, onkeypress onkeyup
Evenimente ptr mouse:
HTML4 & 5: onclick, ondblclick, onmousedown, onmouseup,
onmousemove, onmouseover, onmouseout.
<p onmousedown="mouseDown()">Click the text!</p>

Evenimentele ptr tastatura si mouse nu pot fi folosite pentru elementele:


<base>, <bdo>, <br>, <head>, <html>, <iframe>, <meta>, <param>,
<script>, <style>, <title>.
Atributul Style


Formatarea tag-urilor a fost introdus cu HTML 4.0

Formatarea poate fi adaugata inline, intern si extern folosind un
fisier separat - style sheets CSS.

Inline
<Numetag style="atribut:valoare; atribut:valoare;”> Textul
afectat</NumeTag>
Exemplu:
<html>
<body style="background-color:#606099;">
<p style="font-family:times;color:green"> Text in Times si
verde</p>
</body></html>
Atributul Style- inline

Exemplu:
<html>
<body style="background-color:#3a3b3c;">
<h3 style="background-color:#ff0000;font-
family:arial;">Acesta e un titlu de capitol pe fond rosu si
cu font arial </h3>
<p style="background-color:#0010ff;text-align:right;font-
size:40px;”> Acesta e un paragraf pe fond bleu si
marimea fontului de 40pixeli</p>
</body>
</html>

Nu lasati spatiu intre valoare si unitati, adica 40px si nu 40 px!


IE accepta, dar FireFox si Opera nu.
Tag-ul Style- intern

Tag-ul <style> este folosit sa defineasca formatarea informatiei
pentru un singur document HTML, specificand cum sa fie afisate
elemetele in browser.

Tag-ul <style> se afla intotdeauna in sectiunea < head>.

Tag-ul <style> accepta atributele globale, eveniment si atributele
standard: type si media

Atributul type este obligatoriu, defineste continutul elementului
style si are singura valoare posibila "text/css".
<head>
<style type="text/css">
NumeTag {atribut:valoare}
NumeTag{atribut:valoare}
NumeTag{atribut:valoare}
</style>
</head>
Tag-ul Style- intern

Tag-ul <style> este folosit sa defineasca formatarea informatiei
pentru un singur document HTML, specificand cum sa fie afisate
elemetele in browser.

Tag-ul <style> se afla intotdeauna in sectiunea < head>.

Tag-ul <style> accepta atributele globale, eveniment si atributele
standard: type si media

Atributul type este obligatoriu, defineste continutul elementului
style si are singura valoare posibila "text/css".
<head>
<style type="text/css">
NumeTag {atribut:valoare}
NumeTag{atribut:valoare}
NumeTag{atribut:valoare}
</style>
</head>
Tag-ul Style- intern
Exemplu:
<html>
<head>
<style type="text/css" >
h3,p {background-color:#007890;}
div { font-family:arial;color:blue; font-size:20px;}
body {color:#ff00c0;}
</style>
</head>
<body>
<h3>Header 1</h3>
<div>A paragraph.</div>
<p> orice text </p>
</body>
</html>
Style extern – in fisier CSS

Un fiser extern - style sheet este ideal cand formatarea se aplica mai
multor pagini. Modificand doar fisierul extern putem sa schimbam
formatarea intregului Web site.

Fiecare pagina de web trebuie sa faca referinta la fisierul extern
folosind tag-ul <link> .

Tag-ul <link> se afla intotdeauna in sectiunea head si are
atributele:
-rel – specifica relatia dintre documentul HTML si resursa, care
poate fi :contents, index, chapter, copyright, stylesheet etc.
-type – tipul MIME (Internet media type) al resursei referite
-href – adresa URL a resursei cu care se face legatura

<head>
<link rel="stylesheet" type="text/css" href="mystyle.css" />
</head>
Style invechit – ASA NU!
<!DOCTYPE html>
<html>
<head>
<title>HTML URAT</title>
</head>
<body bgcolor="lightblue">
<p align="right">
<font face="Consolas" size="62px" color="purple">
<strong>Demo</strong> <em>Text</em>
</font>
<center>
Sample Text
</center>
</p>
</body>
</html>
Bibliografie


HTML prin exemple – Tudor Gugoniu, Ed.Teora 2002

HTML, XHTML,CSS si XML prin exemple – Tudor Gugoniu,
Ed.Teora 2005

Crearea paginilor Web – Ned Suell, Ed. Teora 2002

Totul despre HTML 4 – Rick Darnell, Ed Teora.

http://www.w3schools.com/html/default.asp
Idei ?

<blink> orice text </blink>

<marquee> un text ce se misca de la dreapta la stanga


</marquee>

<marquee scrollamount=1 direction=down loop=true>text ce se


misca de sus in jos </marquee>
Curs 2

Atributele standard
Stiluri – CSS
Frame-uri/Cadre
Atributele Standard

Atribute standard sunt:

title - specifica o extra informatie pentru un element. Ia valoarea text.

style - specifica stilul inline pentru un element. Ia valoarea definitie_stil.

id - specifica un id unic pentru un element. Ia valoarea nume_id . Nu


poate incepe cu o cifra.

class- specifica un nume de clasa pentru un element. Se foloseste cel mai


des in style sheet. Ia valoarea nume_clasa.
HTML4 atributele standard NU se folosesc pentru elementele:
<base>, <head>, <html>, <meta>, <param>,<script>, <style> si <title>.

HTML5 atributele standard sunt folosite pentru orice element


Atributele tag-urilor

Exemplu

<NumeTag style="atribut:valoare; atribut:valoare;”>


Textul afectat </NumeTag>

Numele si valorile atributelor trebuie scrise cu litere mici !

Folosirea acestuia introduce numeroase probleme legate de
accesibilitatea pe diverse platforme
Atributele Globale
accesskey - specifica o combinatie de taste pentru activarea/focus unui
elementet. <element accesskey="character"> In HTML 4.01 poate fi
folosit doar pentru elementele: <a>, <area>, <button>, <input>, <label>,
<legend>, si <textarea>.
dir - specifica directia in care sa fie afisat continutul unui element.
<element dir="ltr|rtl|auto"> In HTML 4.01, nu poate fi folosit pentru
elementele: <base>, <br>, <frame>, <frameset>, <hr>, <iframe>,
<param>, si <script>.
tabindex - specifica ordinea pentru navigare ( tasta TAB) pentru un
element. <element tabindex="number"> In HTML 4.01, poate fi folosit
doar pentru elementele: <a>, <area>, <button>, <input>, <object>,
<select>, si <textarea>.
lang - specifica limba de afisare pentru un element. <element
lang="language_code"> In HTML 4.01, nu poate fi folosit pentru:
<base>, <br>, <frame>, <frameset>, <hr>, <iframe>, <param>, si
<script>.

In HTML5 aceste atribute globale sunt folosite pentru orice element.


Atributele Globale HTML5
contenteditable - specifica daca continutul unui elementet se poate edita
sau nu. Suportat de majoritatea browser-elor.
<element contenteditable="true|false|inherit">
hidden - specifica daca continutul unui element sa fie afisat sau nu.
Suportat de majoritatea browser-elor cu exceptia IE.
<element hidden="hidden">
spellcheck - specifica daca continutul unui element sa fie verificat sau nu
Suportat de majoritatea browser-elor cu exceptia IE si Firefox.
<element spellcheck="true|false">.
draggable - specifica daca un element poate fi manipulat sau nu. Suportat
de majoritatea browser-elor cu exceptia IE si Opera.
<element draggable="true|false|auto">
dropzone - specifica daca elementele „dragged” pot fi copiate/mutate/link
sau nu. Nu este suportat de niciun browser inca.
<element dropzone="copy|move|link">
contextmenu - specificat pentru elementul <p>, apare la right-click.
Nu este suportat de niciun browser inca.
<element contextmenu="menu_id">
Atributele Eveniment Globale
Evenimentele definesc actiuni si permit executarea scripturilor in browser.

Executarea unui JavaScript cand utilizatorul click/ apasa o tasta pe un


anumit element.
Evenimente pentru elementul <body>:
HTML4 &5 : onbeforeprint, onafterprint, onload, onunload, onresize
<body onresize="showMsg()">
HTML5 : ononline, onoffline, onresize, onundo, onredo, onpopstate,
etc
Evenimente ptr tastatura:
HTML4 & 5: onkeydown, onkeypress onkeyup
Evenimente ptr mouse:
HTML4 & 5: onclick, ondblclick, onmousedown, onmouseup,
onmousemove, onmouseover, onmouseout.
<p onmousedown="mouseDown()">Click the text!</p>

Evenimentele ptr tastatura si mouse nu pot fi folosite pentru elementele:


<base>, <bdo>, <br>, <head>, <html>, <iframe>, <meta>, <param>,
<script>, <style>, <title>.
Atributul Style


Formatarea tag-urilor a fost introdus cu HTML 4.0

Formatarea poate fi adaugata inline, intern si extern folosind un
fisier separat - style sheets CSS.

Inline
<Numetag style="atribut:valoare; atribut:valoare;”> Textul
afectat</NumeTag>
Exemplu:
<html>
<body style="background-color:#606099;">
<p style="font-family:Arial;color:#004c09;font-size:30px;"> Text
de culoare verde</p>
</body></html>
Atributul Style


Formatarea tag-urilor a fost introdus cu HTML 4.0

Formatarea poate fi adaugata inline, intern si extern folosind un
fisier separat - style sheets CSS.

Inline
<Numetag style="atribut:valoare; atribut:valoare;”> Textul
afectat</NumeTag>
Exemplu:
<html>
<body style="background-color:#606099; font-size:10px;">
<p style="font-family:Arial;color:#004c09;"> Text in Times
si verde</p>
</body></html>
Atributul Style- inline

Exemplu:
<html>
<body style="background-color:#3a3b3c; color:#5d0040;">
<h3 style="background-color:#ff0000;font-
family:arial;">Acesta e un titlu de capitol pe fond rosu si
cu font arial </h3>
<p style="color:#0010ff;text-align:right;font-size:40px;”>
Acesta e un paragraf pe fond bleu si marimea fontului de
40pixeli</p>
</body>
</html>

Nu lasati spatiu intre valoare si unitati, adica 40px si nu 40 px!


IE accepta, dar FireFox si Opera nu.
Sintaxa - CSS
O regula CSS este formata din doua parti:
un element de selecţie
un element declarativ (format din doua sau mai multe declaratii)

Fiecare declaratie este compusa dintr-un atribut de stil si valoarea

Declaratiile CSS sunt incadrate de acolade si termina cu caracterul „;”

Comentariile CSS se incadreaza cu caracterele „/*” si „*/”.


Tag-ul Style- intern

Tag-ul <style> este folosit sa defineasca formatarea informatiei
pentru un singur document HTML, specificand cum sa fie afisate
elemetele in browser.

Tag-ul <style> se afla intotdeauna in sectiunea < head>.

Tag-ul <style> accepta atributele globale, eveniment si atributele
standard: type si media

Atributul type este obligatoriu, defineste continutul elementului
style si are singura valoare posibila "text/css".
<head>
<style type="text/css">
NumeTag {atribut:valoare}
NumeTag{atribut:valoare}
NumeTag{atribut:valoare}
</style>
</head>
Tag-ul Style- intern
Exemplu:
<html>
<head>
<style type="text/css" >
h4{background-color:#007890;text-align:right;}
div { font-family:Calibri;color:blue; font-size:20px;}
body {color:#ff00c0;}
</style>
</head>
<body>
<h4>Header 1</h4>
<div>A paragraph.</div>
<p> orice text </p>
</body>
</html>
Atributul standard id
id-ul este un identificator unic pentru un element care poate fi declarat
doar o singură dată în cadrul aceluiași fișier HTML
Specifica stilul pentru un singur element HTML, in mod unic .
Se defineste prin intermediul constructiei:
nume_tag_html#nume_id { declaratii_CSS; }
nume_tag_html este optional
Exemplu:
<html>
<head>
<style type="text/css">
#stil_1{text-align:right; text-decoration:underline;}
</style>
</head>
<body>
<p id="stil_1">Paragraf centrat de culoare roşie</p>
<p>Paragraf cu stil determinat de browser.</p>
</body>
</html>
Atributul standard class
Specifica stilul pentru un grup de elemente HTML

Se defineste prin intermediul constructiei:


nume_tag_html. numele_clasei { declaratii_CSS; }
nume_tag_html este optional
Exemplu:
<html>
<head>
<style type="text/css">
body {font-family:times; color: #969696; margin: .5in}
h1{font-family: arial; color:blue;}
.page1 {margin:2in; text-decoration:overline;padding:2in;}
p{color:green; background-color: white;}
</style>
</head>
<body>
<h1 class="page1">Timp liber</h1>
<p>Maine incepe vacanta.</p>
<p class="page1">Important e ca maine nu mergem la scoala dar tot
trebuie sa facem lectii.</p>
</body></html>
Combinarea claselor

Exemplu:
<html>
<head>
<style type="text/css">
body {font-family:times; color: #969696; margin: .5in}
h1{font-family: arial; color:blue;}
.page1 {margin:2in; text-decoration:overline;padding:2in;}
.bckg {background-color: #57BCF4;}
</style>
</head>
<body>
<h1 class="page1">Timp liber</h1>
<p>Maine incepe vacanta.</p>
<p class="page1 bckg">Important e ca maine nu mergem la
scoala dar tot trebuie sa facem lectii.</p>
</body></html>
Style extern – in fisier CSS

Un fiser extern - style sheet este ideal cand formatarea se aplica mai
multor pagini. Modificand doar fisierul extern putem sa schimbam
formatarea intregului Web site.

Fiecare pagina de web trebuie sa faca referinta la fisierul extern
folosind tag-ul <link> .

Tag-ul <link> se afla intotdeauna in sectiunea head si are
atributele:
-rel – specifica relatia dintre documentul HTML si resursa, care
poate fi :contents, index, chapter, copyright, stylesheet etc.
-type – tipul MIME (Internet media type) al resursei referite
-href – adresa URL a resursei cu care se face legatura

<head>
<link rel="stylesheet" type="text/css" href="mystyle.css" />
</head>
Stilul external - CSS
Decupati etichetele si continutul lor, definiti clasele, salvati fisierul ca
*.css si faceti legatura in fisierul original (index.html) in sectiunea
<head> si dupa tag-ul <title>.
<head>
< title> Prima mea pagina cu CSS </title>
<link rel="stylesheet" type="text/css" href="mystyle.css" />
</head>

Exemplu: fisierul mystyle.css


main{font-family:Verdana; background-color: #969696; margin:2in;}
footer{ font-size:10px; color:orange;}
p,h4{color: #0067f2; background-color: white;}

.page1
{ text-align: right; border: 2px solid black;}

. important
{ text-align: center;}
Stilul external - CSS
Puteți modulariza CSS-ul prin separarea fiecărui stylesheet ptr diverse
platforme.
Browser-ul va prelua numai fișierele CSS relevante pe baza interogării
atributului media.

Exemplu:
<head>
<link rel="stylesheet" href="base.css" />
<link rel="stylesheet" href="mobile.css" media="screen and (max-
width: 1000px)" />
<link rel="stylesheet" href="print.css" media="print" />
</head>

Stylesheet mobil este recuperat doar dacă folosiți un ecran de dispozitiv


cu lățimea browser-ului mai mică sau egală cu 1000 de pixeli.
Stylesheet de imprimare este preluat numai dacă încerați să imprimați
pagina de web.
Definirea stilurilor pentru Font
{font-family: serif, “goudy old style”} - controleaza aspectul fontului. Daca un
nume de font e format din mai multe cuvinte de include intre “”. Se listeaza
familiile de fonturi in ordinea preferintelor separate de virgula.

{font-size: 12pt} - controleaza dimensionarea fontului in cadrul paginii. Se


exprima in puncte (pt), pixeli (px), inci (in), centimetri (cm) sau procente
(%). Nu se lasa spatiu intre valoare si unitatea de masura!

{font-style: italic} - controleaza aspectul textului. Poate fi normal, italic si


oblique.

{font-variant: normal} – stabileste scrierea cu minuscule. Poate fi normal si


small-caps.

{font-weight: light } - controleaza grosimea fontului. Poate fi extra-light,


demi-light, light, medium, extra-bold, demi-bold si bold. Inainte sa fixati
grosimea de font asigurati-va ca fontul respectiv are disponibila aceasta
grosime!
Definirea și Importul unui Font extern

Aveți posibilitatea să utilizați o varietate de formate de fi șiere pentru a vă crea


propriile fonturi : OpenType Font (OTF), TrueType Font (TTF), Web Open Font
Format (WOFF), SVG Fonts (SVG) – suportat doar de Opera si Chrome

In fisierul .css, vă definiți propria familie de fonturi, pe care le importa ți ca un


fișier extern, folosind cuvantul cheie @font-face:

@font-face {
font-family: "Demo Font";
src: url(/https/ro.scribd.com/demofont.otf);
}

Odată definit, puteți folosi aceasta nouă familie de fonturi :

article {
font-family: "Demo Font", Arial, sans-serif;
}
Definirea stilurilor pentru Text
{line-height: 12px} - marimea spatiului dintre liniile textului.Se exprima in puncte
(pt), pixeli (px), inci (in), centimetri (cm) sau procente (%).

{color} - stabileste culoarea textului.Poate lua valorile color-rgb, color-hex, color-


name.

{text-decoration: blink} - decoreaza textul si include valorile: none, underline,


overline, line-through, blink.

{vertical-align: top} – stabileste pozitionarea pe verticala a textului, fie in functie de


parinte, fie relativ la o referinta absoluta. Poate lua valorile: baseline, sub, super,
text-top, text-bottom, middle, top, bottom, percentage

{text-align: right} - alinierea textului, poate fi : justify, center, left si right.

{text-indent: 2in}- stabileste distanta in puncte (pt), inci (in), centimetri (cm) si pixeli
(px).

{letter-spacing: 0.2em} – modifica spatiul dintre caractere. Poate lua valorile


normal sau em, definit ca spatiul ocupat de litera m.
{word-spacing: 1em} - modifica spatiul dintre cuvinte. Poate lua valorile normal
sau sau em, definit ca spatiul ocupat de litera m.
Definirea stilurilor pentru Background

{background-image}- Seteaza imaginea de fundal. Poate lua valorile none sau


URL(“/img/*.gif”) exemplu: body {background-image:url('Desert.jpg');}

{background-attachment}- Indica daca imaginea de fundal este fixa sau se


deplaseaza odata cu textul. Poate lua valorile scroll, fixed.

{background-color} - Seteaza culoarea de fundal. Poate lua valorile color-


rgb, color-hex, color-name, transparent.

{background-position} – Indica poziţia de start a imaginii de fundal. Poate lua


valorile top left, top center, top right, center left, center center, center
right, bottom left, bottom center, bottom right, x%, y%, xpos, ypos.

{background-repeat} - Indica daca şi cum este repetata imaginea de fundal.


Poate lua valorile repeat, repeat-x, repeat-y, no-repeat.
Exemplu: body{background-repeat:repeat-y;}
Definirea stilurilor pentru Liste

{list-style-type} - Indica tipul de marcator folosit pentru elementele din lista.


Poate lua valorile none, disc, circle, square, decimal, decimal-leading-
zero, armenian, georgian, lower-alpha, upper-alpha, lower-greek, lower-
latin, upper-latin, lower-roman, upper-roman.

{list-style-position} - Indica daca marcatorii elementelor din lista apar in


interiorul sau in exteriorul listei. Poate lua valorile inside sau outside.

{list-style-image} - Specifica o imagine ce va marca fiecare element din lista.


Poate lua valorile none sau URL-ul.
Margini / Spatieri / Borduri Style
Fiecare element e reprezentat in propria caseta. Dimensiunile/distantele
se stabilesc in puncte (pt), inci (in), centimetri (cm) si pixeli (px).

{margin-top},{margin-right},{margin-bottom},{margin-left}-
stabilesc bordura din exteriorul casetei, spatiul dintre element si
elementele alaturate.Valorile sunt date in ordinea (sus, dreapta, jos,
stanga).

{padding-top},{padding-bottom},{padding-left},{padding-right}-
stabilesc spatiul inserat intre bordura casetei si continut.

{border-top} {border-bottom}, {border-right}, {border-left} –


stabilesc stilul si culoarea fiecarei borduri din jurul unui element.
border-width, border-color , border-style
border-style poate avea valorile: none, dotted, dashed, solid, double,
groove, ridge, inset, outset
Gruparea Atributelor
Se poate face gruparea atributelor pentru a se seta toate proprietatile pentru:
font, background, list-style, margin, padding, border.

Exemple: body {font: small-caps bold 14pt palatino, serif;}


p {margin: .25in .25in; border: 2px solid green;}
q {padding: 20px;border:2px dotted red;}

Ordinea atributelor grupate pentru font este: font-style, font-variant,


font-weight, font-size, line-height, font-family.

Ordinea atributelor grupate pentru margin si padding este: sus, dreapta,


jos, stanga. Daca se specifica doar o valoare se aplica la toate, daca sunt
2sau 3 valori, cele ce lipsesc se aplica ca si marginile opuse.

Valorile sunt separate de spatiu, cu exceptia familiilor de fonturi care se


separa cu virgula.

Valorile negative extrag spatiu in loc sa adauge.


Border - Gruparea Atributelor
<!DOCTYPE html>
<html>
<head>
<title>HTML Page</title>
<link rel="stylesheet" href="css/style.css" />
</head>
<body>
<article class="Bordura">
Imi place ciocolata ...
</article>
<article class = “altaBrd”>
Imi plac si filmele...
</article>
</body>
</html>

<! in fișierul style.css imi declar clasele !>


.Bordura { border-width: thick; border-color: #69D2E7; border-style: inset
solid; }
.altaBrd { border: 25px #FA6900 dotted; background-color: #E0E4CC; }
Nivele CSS

CSS1 (Cascading Style Sheets - level 1)


mecanism simplu care permite autorilor si utilizatorilor
paginilor Web sa ataseze acestora stiluri (de exemplu,
fonturi, culori si spatieri). Este usor de inteles si de folosit de
designerii Web si exprims stilurile conform terminologiei
editării computerizate.

CSS2 (Cascading Style Sheets - level 2) – generalizare


(extensie) a primului nivel de fisiere de stiluri, aducand in
plus facilitati de mostenire a fisierelor de stiluri, efecte
vizuale, pozitionari si paginari, integrarea mai multor
tipuri de medii (suport pentru sunet/video).
Cascadarea stilurilor
Este posibil ca pentru acelasi element HTML sa fie definite mai
multe stiluri :fişier .css (external) , tag-ul <style> (intern) , atributul
style (in-line).

Documentul HTML va avea stilurile definite conform unei foi de


stiluri virtuale obtinute prin cascadarea definitiilor folosite:

Stilurile definite implicit de browser - prioritate minimă

Stilurile definite prin fisier .css

Stilurile definite in tag-ul <style> (in interiorul elementului <head>)

Stilurile definite prin atributul style (apartinand unui element
HTML din interiorul elementului <body>) -prioritate maxima

Daca legatura catre fisierul .css se afla in document dupa


elementul <style>, stilurile definite extern vor avea prioritate mai
mare si vor suprascrie stilurile definite in interiorul elementului
<style>!
Exemplu de Cascadarea stilurilor
Stilurile definite extern ( in fisierul.css):
h3
{
color:red;
text-align:left;
font-size:8pt;
}
Stilurile definite internal (in elementul <style>):
h3
{
text-align:right;
font-size:20pt;
}
Stilurile obtinute in urma cascadarii:
color:red;
text-align:right;
font-size:20pt;
Selecția CSS - indirectă
<body>
<section>
<article>
<p>Primul Paragraf</p>
<aside>
<p>Al doile Paragraf</p>
</aside>
</article>
<p>Al treilea Paragraf</p>
</section>
</body>
Selecția indirectă :
section p { font-family: monospace; }

Selecteaza orice element care este un descendent al primului


element specificat – toate cele trei <p> vor avea stilizarea aplicată
Selecția CSS - directă
<body>
<section>
<article>
<p>Primul Paragraf</p>
<aside>
<p>Al doile Paragraf</p>
</aside>
</article>
<p>Al treilea Paragraf</p>
</section>
</body>
Selecția directă :
section > p { font-weight: bold; }
Selectează numai elementele care sunt descendenți direcți ai
primului element specificat. Acest selector este util dacă doriți să
restrângeți domeniul de aplicare al stilului ptr un anumit descendent
Doar <p> Al treilea Paragraf </p> va avea stilizarea aplicată
Selecția CSS – directă multiplă
<body>
<section>
<article>
<p>Primul Paragraf</p>
<aside>
<p>Al doilea Paragraf</p>
</aside>
</article>
<p>Al treilea Paragraf</p>
</section>
</body>
Selecția directă multiplă :
section > article > aside > p { border: 2px solid red; }
Aveți posibilitatea să faceți mai multe selecții directe, dacă doriți să
selectați un alt element <p>
Doar <p> Al doilea Paragraf </p> va avea stilizarea aplicată
Selecția CSS – directă combinată
<body>
<section>
<article>
<p>Primul Paragraf</p>
<aside>
<p>Al doilea Paragraf</p>
</aside>
</article>
<p>Al treilea Paragraf</p>
</section>
</body>
Selecția directă combinată :
section > article p { font-style: italic;}
Aveți posibilitatea să combinați selecțiile directe
Ambele < p> Primul Paragraf </p> și <p> Al doilea Paragraf </p>
vor avea stilizarea aplicată
Frame-urile HTML

Frame-urile permit prezentarea mai multor documente HTML in
zone de ecran multiple, zone care pot fi ferestre independente sau
subferestre ale ferestrei principale a browserului.

Fereastra browserului este divizata la fel cum un tabel imparte o
pagina. In fiecare dintre aceste zone se pot incarca diverse si
diferite (!) documente HTML.

Frame-urile pot interactiona intre ele, actiunile dintr-un frame
afectand continutul si comportamentul altui frame.

Avantaje: ofera o crestere a vitezei de incarcare a unor pagini.

Dezavantaje: controleaza aspectul browser-ului – contravine
scopului HTML, programatorul trebuie sa tina evidenta mai multor
documente HTML.
Tag-urile frame-urilor

• <frameset>...</frameset> - divide fereastra browser-ului (sau


un alt frame deja definit) in frame-uri specificate ca randuri sau
coloane din fereastra respectiva.

• <frame/> - defineste caracteristicile unui frame particular dintr-


un set de frame-uri.

• <noframes>...</noframes> - defineste continutul alternativ


pentru browserele ce nu pot afisa frame-uri.

• <iframe> ...</iframe> - defineste un frame in-line care contine


alt document HTML.
Structura documentului frameset

Un document care descrie modalitatea in care frame-urile sunt
pozitionate pe ecran (layout-ul frame-urilor) - document frameset
are o structura diferita de cea a unui document fara frame-uri.

<!DOCTYPE "HTML Frameset DTD" >


<html>
<head>
<title>Un simplu document frameset </title>
</head>
<frameset>
<noframes>
<p>pentru browserele ce nu pot afisa frame-uri </p>
</noframes>
</frameset>
</html>
Tag-ul <frameset>...</frameset>
<frameset> este un container de frame-uri, utilizat pentru a
imparti o fereastra in subspatii dreptunghiulare numite frame
uri. Specifica modul modul de aranjare (layout-ul) zonelor
ocupate de frame-uri in fereastra principala a browserului.

<frameset> ia locul lui <body> si urmeaza imediat elementului


<head>.Elementele ce in mod normal apareau in <body> nu
trebuie sa apara inaintea primului element <frameset> pentru ca
in acest caz elementul <frameset> va fi ignorat.

Poate contine si un element <noframes> pentru browserele ce


nu pot afisa frame-uri.

Atributele rows si cols definesc dimensiunea fiecarui frame din


set.
Atributele tag-ului <frameset>

Sintaxa: <frameset cols=”value” rows =”value”>
Exemplu: <frameset cols="25%,*,25%">

cols - specifica dimensiunea si numarul de coloane a unui frameset.
Valorile specificate pentru cols sunt separate de virgula si dau latimea
fiecarei coloane, de la stanga la dreapta.

rows -specifica dimensiunea si numarul de randuri a unui frameset.
Valorile specificate pentru rows sunt separate de virgula si dau inaltimea
fiecarui rand, de sus in jos.

Daca sunt specificate ambele atribute, se defineste un grid („caroiaj“)
care se umple de la stanga la dreapta si de sus in jos.

Fiecare atribut ia ca valoare o lista de lungimi specificate in pixeli
("100px" sau doar "100"), ca procent (50%) sau ca lungime relativa
''*'', adica restul spatiului disponibil. Dimensiunile fixe in pixeli se
folosesc doar in frame-urile care contin imagini, sau ale obiecte de
dimensiune fixa. Se prefera procentele.
Exemple pentru atributele cols si rows
1. Impartirea ecranului pe orizontala, in doua parti egale:
<frameset rows="50%, 50%">
... restul definitiilor ...
</frameset>

2. Crearea a 3 coloane: a doua cu dimensiune fixa de 250px (ptr o


imagine de aceasta latime), prima primind 25% din spatiul care
mai ramane si a treia 75% din acesta:
<frameset cols="1*,250,3*">
... restul definitiilor...
</frameset>

3. Grid de 2x3 subspatii:


<frameset rows="30%,70%" cols="33%,34%,33%">
... restul definitiilor ...
</frameset>
Frame-uri imbricate

Frame-urile descrise de un document pot fi imbricate oricat de mult
prin includerea unui element <frameset> in alt element <frameset>.

Exemplu: primul element <frameset> (cel din „exterior“) divide tot
spatiul disponibil in 3 coloane egale. Al doilea <frameset>, din
interiorul primului, divide a doua zona in randuri de inaltimi inegale.

<frameset cols="33%, 33%, 34%">


...continutul primului frame ...
<frameset rows="40%, 60%">
... continutul celui de al doilea frame, primul rand ...
... continutul celui de al doilea frame, al doilea rand ...
</frameset>
... continutul celui de al treilea frame ...
</frameset>
Tag-ul <frame />
• <frame /> – defineste un subspatiu dreptunghiluar dintr-un
document frameset. Fiecare element <frame> trebuie sa apara
intr-un element <frameset> care ii defineste dimensiunea.

• Continutul (documentul care se incarca in frame) si infatisarea


unui frame/cadru (detalii despre marginile frame-ului si despre
posibilitătile de scroll) sunt definite de elementul <frame /> prin
intermediul atributelor specifice.

• Continutul unei frame NU trebuie sa fie in acelasi document cu


definitia frame-ului!

• Fiecare frame/cadru poate avea atribute diferite fata de celelalte


fram-uri din set.
Atributele tag-ului <frame />
• name – specifica numele frame-ului si e folosit cu atributul
target al elementelor <a>, <base>, <form> si <link> <area>.
• src – adresa URL a documentului HTML ce va fi afisat in
cadrul respectiv. Poate fi o adresa absoluta (catre alt website) sau
relativa (catre un fisier din acelasi website):
src=''http://www.yahoo.com/default.htm" sau src="default.htm"
• frameborder - specifica daca sa se afiseze sau nu marginea in
jurul frame-ului. Ia valorile 0 sau 1. Mai bine foloseste style!
• marginheight specifica inaltimea marginii intre continut si
partea de sus si de jos a frame-ului. Ia valori in pixeli.
• marginwidth specifica grosimea marginii intre continut si partea
din stanga si din dreapta a frame-ului. Ia valori in pixeli.
• noresize - dezactiveaza posibilitatea de redimensionare a frame-
ului. Ia valoarea noresize.
• scrolling – specifica posibilitatea de derulare/scroll a frame-ului.
Ia valorile yes, no, auto.
Frame-urile HTML


Frame-urile nu sunt inca implementate in HTML 5


Declaratie <!DOCTYPE html > se schimba cu :

<!DOCTYPE "HTML Frameset DTD" > sau


<!DOCTYPE "XHTML Frameset DTD" >
Exemplu
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset //
EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html>
<head> <title>Un document frameset </title>
</head>
<frameset cols="33%,34%,33%">

<frame src="fisier.html" frameborder="1" />

<frameset rows="*,200">
<frame src="frame1.html" scrolling="yes" />
<frame src="poza.gif" resize=''resize'' />
</frameset>

<frame src="frame4.html" frameborder="0" />


</frameset>
</html>
Comunicarea intre frame-uri
Comunicare intre cadre se realizeaza prin folosirea atributul target.
Acest atribut se gasete in urmatoarele elemente: <a>, <link>,
<base>, <form> si <area>.
Exemplu: fisierul frames.html
<frameset rows="20,80">
<frame name="top" src="pagina1.html" />
<frame name="bot" src="pagina2.html" />
</frameset>
Fisierul pagina1.html
<body> <h1> Aceassta este pagina 1</h1>
<p><a href="pagina2.html"> Link catre pag2</a></p>
<p><a href="pagina3.html"> Link catre pag3</a></p></body>
Fisierul pagina2.html
<body bgcolor="#969090"> <h2> Sfarsit de pag 2 <h2></body>
Fisierul pagina3.html
<body bgcolor=”#ff0000”><h2> Sfarsit de pag 3 <h2></body>
Comunicarea intre frame-uri
• Atributul target se poate adauga fiecarui hyperlink din fisierul
pagina1.html

• Atributul target se poate adauga in tag-ul <base target=”bot”>


ce se afla in sectiunea <hread> a fisierului pagina1.html.

• Valorile atributului target ce sunt rezervate:


_blank- incarca documentul intr-o fereastra noua fara nume.
_self - incarca documentul in frame-ul elementului care a folosit
acest nume.
_parent – incarca documentul in frameset-ul ce contine frame-ul
curent.
_top – incarca documentul in fereastra originala renuntand la
toate celelalte frame-uri.
Reguli ce guverneaza comportamentul frame-urilor

• daca atributul target al unui element are valoarea unui nume de


frame existent, atunci acel frame primeste destinatia continutului.
• daca un element nu are atributul target, dar exista <base> in
fisierul respectiv, atunci valoarea atributului target din <base>
determina destinatia continutului elementului.
• daca atat elementul cat si <base> contin target si fiecare are
valori diferite, se foloseste valoarea elementului, iar valoarea din
<base> este ignorata.
• daca nici elementul, nici <base> nu contin atributul target atunci
frame-ul curent ce contine elementul activat primeste continutul.
• cand numele frame-ul specificat in target nu exista atunci se
creaza o fereastra noua, i se atribuie numele necunoscut, iar
continutul este incarcat in fereasta noua.
Tag-ul <noframes>...</noframes>

• Daca browser-ul nu poate afisa continutul unui document ce


foloseste frame-uri, se poate specifica o alternativa la acesta prin
intermediul elementului <noframes>.

• <noframes> cand este folosit intr-un <frameset> trebuie sa


contina un element <body>. In acest caz nu mai trebuie sa
apara insa nici un element <noframes> in elementul <body>.

• Este recomandabil sa se ofere un element <noframes> care are


semnificatie, si care, la limita, sa contina cel puţin un link spre o
varianta de document fara frame-uri.
Exemplu <noframes>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset //
EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html>
<head> <title>Document ce defineste un frameset dar care are si
noframes </title>
</head>
<frameset cols="50%,50%">
<frame src="pagina1.html" />
<frame src="cuprins.html" />
<noframes><body>
<p>Aici este <a href="doc_fara_frames ">versiunea fara
frame-uri</a></p></body>
</noframes>
</frameset>
</html>
Exemplu ilegal
Continutul unui frame NU POATE SA FIE in acelasi document ca si
definitia setului de frame-uri (frameset-ului):

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset //


EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html>
<head> <title>Un document frameset ilegal </title>
</head>
<frameset cols="50%,50%">
<frame src="frame1.html" />
< frame src="#anchor_in_acelasi_document" />
<noframes><body>
<h2><a name="anchor_in_acelasi_document">Important
section</a></h2></body>
</noframes>
</frameset>
</html>
Tag-ul <iframe>...</iframe>
• <iframe> defineste un inline frame care contine alt document.
Permite sa se includa un frame intr-un bloc de text.

• Pe langa aceleasi atributele ca si tag-ul<frame/>: name, src,


frameborder, marginwidth, marginheight, scrolling mai sunt si
atributele: align, height si width.

• Frame-urile inline nu pot fi redimensionate nu au atributul


noresize!

• Continutul elementului <iframe> (ce se afla intre tagul de


inceput si cel de sfarsit) este alternativa pentru browser-ele care
nu suporta frame-uri. Pot apare aici elemente inline sau bloc!
Orice element de tip bloc este permis in interiorul elementului
ce-l conţine pe <iframe>.
Exemplu <iframes>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Frameset //
EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
<html>
<head> <title>Document ce are si iframes </title>
</head>
<body>
<p> Aceasta e o reteta foarte usoara si foarte gustoasa
<iframe src="reteta.html" width=”300” height =”300”>
<!-- Continut alternativ ptr browser-ele care nu suportă iframe -->
<h2>Reteta lui Nicu</h2>
<ul> Ingrediente
<li>faina</li>...
</ul>
</iframe>
</p>
</body>
</html>
Utilizarea mediilor externe:imagini, sunete,video

• Mediile externe sunt fisiere care nu pot fi afisate direct de


browser (video MPEG, fisiere PostScript, fisiere arhivate, etc).

• Cand serverul trimite un anumit fisier browser-ului, include si


informatii despre tipul fisierului utilizand un mesaj special,
trimis odata cu fisierul. Browser-ul incearca sa identifice (dintr-o
lista cunoscuta) o aplicatie ajutatoare ( helper sau viewer), careia
să-i paseze fisierul. Daca tipul fisierului este recunoscut si
aplicatia ajutatoare corespunzatoare este definita, browser-ul
deschide aplicatia cu fisierul respectiv.

• Specificarea mediilor externe in HTML se face cu ajutorul tag-


ului <a> si a atributului href, ca in cazul legaturilor la toate
celelalte documente HTML.
Imagini

<a href=”imagine.gif”> 25K fisier GIF</a>


Sunet
<a href=”audio_clip.au”>Muzica(375K format AU)</a>
Video
<a href=nunta.qt>Sfarsit de nunta(Quick Time, 1.5M)</a>
HTML 5 – animatii, sunete,video, filme

Elementele Multimedia (sunet or video) sunt stocate in fisiere


media.

Diferite formate cu extensiile: .wav, .mp3, .mp4, .mpg, .wmv,


and .avi.

MP4 is noul format ptr internet video (YouTube, Flasch Players)

Only MP4, WebM, and Ogg (video) sunt suportate de noul


standard HTML5 .
HTML5 – <video>

Inainte de HTML5, video putea fi interpretat doar cu plug-in (like


flash).
<video width="320" height="240" controls>
<source src="movie.mp4" type="video/mp4">
<source src="movie.ogg" type="video/ogg">
Browser-ul nu suporta video.
</video>

Atributul controls – ptr a adauga play, pause, si volum.

Textul intre <video> si </video> va fi afisat de browserele care nu


au implementat inca elementul <video>
HTML5 – <audio>
Inainte de HTML5, fisierele audio puteau fi interpretate doar cu
plug-in - nu exista un standard

<audio controls>
<source src="horse.ogg" type="audio/ogg">
<source src="horse.mp3" type="audio/mpeg">
Browserul nu suporta audio.
</audio>

Atributul controls – ptr a adauga play, pause, si volum.

Textul intre <audio> si </audio> va fi afisat de browserele care nu


au implementat inca elementul <audio>
HTML5 – plug-ins <object>
Aplicatii care extind functionalitatea standard a browser-ului.

Plug-ins pot fi folosite ptr: afisarea hartilor, scanare ptr virusi,


verificarea id la banca etc.

<object> defineste un “embedded object” in documentul HTML


Exemple: Java applets, cititor PDF , Flash Players

<object width="400" height="50" data="bookmark.swf"></object>


Include HTML in HTML:
<object width="50%" height="500px data="fisie1.html"></object>
Include imagini
<object data="vasile.jpeg"></object>
HTML5 – plug-ins <embed>

<embed> defineste un “embedded object” in documentul HTML

Elementul <embed> nu are tag de sfarsit, nu poate contine un text


alternativ.

<embed width="400" height="50" data="bookmark.swf">


Include HTML in HTML:
<embed width="50%" height="500px data="fis2.html">
Include imagini
<embed src="vasile.jpeg">
HTML5 – You Tube

Convertirea fisierelor video la diferite formate poate fi dificila.


Lansam YouTube in paginile de web.

<iframe width="420" height="345"


src="http://www.youtube.com/embed/XGSy3_Czz8k"></iframe>

<object width="420" height="315"


data="http://www.youtube.com/v/XGSy3_Czz8k"> </object>

<embed width="420" height="315"


src="http://www.youtube.com/v/XGSy3_Czz8k">
Tema
1. Faceti o pagina de prezentare pentru un restaurant. Pagina sa contina
urmatoarele: un titlu de capitol <h1>, un subtitlu <h3>, o imagine
<img>, descriere, detalii <p>, 2 legatura cu titlul Meniul studentului si
Meniul General si adresa <address> continand o ancora <a> de tipul
mail to (< a href="mailto:[email protected]">Email us</a>)

Definiti stilurile elementelor folosind atribute multiple, gruparea


atributelor si atribuirea de clase.

2. Pentru legatura Meniul Studentului faceti o alta pagina in care sa


folositi liste imbricate sortate si nesortate. Elementele listelor sa
contina text si legaturi externe si in cadrul aceluiasi document.

3. Pentru legatura Meniul General faceti o alta pagina in care sa folositi


liste de definitii.

4. Formati fisierul *.css si legatura in fisierul original.


Bibliografie


HTML prin exemple – Tudor Gugoniu, Ed.Teora 2002

HTML, XHTML,CSS si XML prin exemple – Tudor Gugoniu,
Ed.Teora 2005

Crearea paginilor Web – Ned Suell, Ed. Teora 2002

Totul despre HTML 4 – Rick Darnell, Ed Teora.

http://www.w3schools.com/html/default.asp
Curs 3

Cascading Style Sheets


JavaScript
DOM

DOM – Document Object Model – World Wide Web Consortium


standard de acces la documente

DOM este o platforma si o interfata neutra care permite programelor
si scripturilor sa acceseze si sa actualizeze dinamic continutul,
structura, si stilurile unui document

DOM standard separat in 3 parti diferite:

Core DOM model standard model pentru toate tipurile de documente

XML DOM – model standard pentru documentele XML

HTML DOM – model standard pentru documentele HTML


HTML DOM
HTML DOM este un model standard de obiecte si o intefata de
programare pentru HTML.

HTML defineste:

Obiectele ca elementele HTML

Propertietatile tuturor elementelor HTML

Metodele de accesare a tuturor elementelor HTML

Evenimentele tuturor elementelor HTML

HTML DOM este un standard pentru accesarea, schimbarea,


adaugarea sau stergerea elementelor HTML.
HTML DOM

Cand se incarca o pagina, browser-ul creaza DOM pentru pagina


respectiva - creaza o structura de arbore formata din obiecte
Sintaxa - CSS

• CSS defineste cum sa fie afisate elementele HTML

O regula CSS este formata din doua parti:


un element de selecţie
un element declarativ (format din doua sau mai multe declaratii)

Fiecare declaratie este compusa dintr-un atribut de stil si valoarea

Declaratiile CSS sunt incadrate de acolade si termina cu caracterul „;”

Comentariile CSS se incadreaza cu caracterele „/*” si „*/”.


Tipuri principale de obiecte CSS

Selector
<head> <style=”text/css”>
p{font-family:"Times New Roman", Arial; font-size:15px;}
</style></head>

Identificator
<head> <style type=”text/css”>
#nume_id { text-align:center; font-size:15px; } </style></head>
<body> <h1 id="nume_id"> Text </h1>

Clasa
<head> <style type=”text/css”>
. nume_clasa1{text-align:center;} sau asa
div.nume_clasa2{text-align:right;} </style></head>
<body><div class="nume_clasa2"> Text </div>
<p class=” nume_clasa1”> orice text </p>
<h1 class = nume_clasa1”> Capitol 1 </h1>

Numele identificatorului si al clasei nu inceapa cu un numar!


Cum inseram declaratiile CSS ?

Inline
<p style="color:#7856f3;margin-left:20px;">Un paragraf </p>

Intern
<html>
<head>
<style type=”text/css”>
hr {color:#e45a68;}
p {margin-left:40px;}
body {background-image:url(' images/black.gif ');}
</style>
</head>
<body> </body>
</html>
Cum inseram declaratiile CSS ?
Extern
Se creaza fisierul nume_fisier.css (contine declaratiile css)
hr {color:#563467;}
p {margin-left:20px;}
body {background-image:url(' images/black.gif ');}
#star{border: 2px double red;}

<head>
<style type=”text/css”>
p{margin-left:15px;} </style>
<link rel="stylesheet" type="text/css" href=”nume_fisier.css” />
</head>

Inline style are cea mai mare prioritate, ceea ce insemna ca va


suprascrie stilul definit intern (cu tag-ul <style> din sectiunea
<head>), or stilul extern prin fisierul css, sau setarile implicite ale
browser-ului.
Continut/Padding/Border/Margin
<html>
<head>
<style type=”text/css”>
div { background-color: lightgrey;
width: 300px;
padding: 25px;
border: 25px solid orange;
margin: 25px;
}
</style>
</head>
Cand setam proprietatile width si height ale unui element, setam
doar width si height a ariei continutului. Pentru a calculate intreaga
dimensiune a unui element, trebuie sa tinem cont de padding,
borders si margin.
width = width + left padding + right padding + left border +
right border + left margin + right margin
Afisarea elementelor - display
display:block display:inline
Fiecare element HTML are un mod implicit de afisare, depinzand de
ce tip de element este : block sau inline
Elemente de tip block: intotdeauna incep cu o linie noua si ocupa
intreaga latime disponibila a browserului. Exemple:
<div> ,<h1> - <h6>, <p>,<form>,<header>,<footer>, <section>
Elemente de tip inline: nu incep de pe o linie noua si ocupa spatiul
minim necesar: Exemple: <span>, <a>, <img>

Prin CSS putem schimba stilul de afisare din element block in


element inline si invers: Exemplu : afiseaza o lista de linkuri ca un
meniu orizontal li{display:inline}
<ul>
<li><a href="www.roma.it" target="_blank">ROMA</a></li>
<li><a href="www.paris.fr" target="_blank">PARIS</a></li>
<li><a href="www.praga.ch" >PRAGA</a></li>
</ul>
CSS Pozitionare
Pozitionarea exacta sau relativa a elementelor intr-o fereastra sau in
raport cu alte elemente.

Prin utilizarea proprietatii position se poate specifica pozitia


elementului in pagina web.

Elementele pot fi positionate folosind proprietatile: top, bottom, left,


si right. Aceste proprietati nu functioneaza daca nu este setatata
intai proprietatea de position !

Metode de pozitionare: statica, fixa, relativa si absoluta

Valoarea initiala, prestabilita, a pozitionarii elementelor este statica.


Elementele sunt dispuse unul dupa altul in interiorul documentului
(normal flow). Elementele pozitionate static nu sunt afectate de
proprietatile ''top'', ''bottom'', ''left'', si ''right'.
CSS Pozitionare
Pozitionarea fixa: - elementul este pozitionat relativ la fereastra
browser-ului. Nu se va misca chiar daca se aplica scroll -
elementul fixat ramane pe pozitia lui initiala, fara a se derula.

.pos1{position:fixed;top:30px;right:50px;}

Elementele fixe se pot suprapune cu alte elemente

Pozitionare relativa – elementul este amplasat relativ la pozitia


initiala din cadrul ferestrei sau a elementului parinte, in sensul ca el
apare dupa toate elementele dinaintea sa, respectiv inaintea tuturor
elementelor amplasate dupa el. Elementele pot fi mutate si
suprapuse din locatia lor folosind proprietatile "top" "left"
"bottom" si "right".

.pos_left {position:relative; left:-20px;}


Valoarea negativa extrage spatiu
CSS Pozitionare
Pozitionarea absoluta: - positionarea relativa la cel mai apropiat
element pozparinte pozitionat (in loc sa fie pozitionat relativ la
intreaga zona a paginii):

h2{position:absolute; top:150px; right:0;}

position:absolute

Elementele pozitionate absolut se pot suprapune peste alte


elemente.
CSS Pozitionare in spatiul 3D
Asezarea elementelor suprapuse (stiva), unele in raport cu altele.

Sintaxa: selector { z-index:valoare; }

valoarea acestei proprietati fiind relatia tridimensionala a


elementului in raport cu alte elemente din fereastra – in fata, in
spatele - numar intreg pozitiv, 0 sau negativ.

img{position:absolute; left:20px; top:10px; z-index:-1;}

Elementul cu numarul de ordine mai mare apare deasupra elementului


cu numar mai mic.

Utilizarea unei valori negative determina amplasarea elementului


dedesubtul parintelui sau cu atatea niveluri cu cate indica indexul z.
Proprietatile Float /Clear/Overflow
Float: folosit pentru a “impacheta” un element in jurul altui element
float poate fi setat la una din variantele : none , left sau right
Exemplu: text in jurul imaginii:
img { float: right; margin: 0 0 10px 10px;}
Clear: controleaza comportamentul elementelor cu proprietatea float
clear poate fi setat la una din variantele: none, left, right sau both

Toate elementele dupa cel cu proprietatea de float se vor „impacheta”


in jurul acelui element. Sa nu se intample asa, folosim clear.
Proprietatea clear specifica pe care latura sa nu se aplice proprietatea
de float.

Proprietatea overflow specifica ce se intampla cand un element


depaseste dimensiunea altui element
overflow poate fi setat la una din variantele: visible, hidden, scroll,
sau auto
Elementul <span>

<span> folosit ptr a grupa inline alte elemente.

<span> furnizeaza o metoda de adaugare a unui “pointer” sau “hook”


unei parti a textului sau a documentului. Acea parte a textului poate
fi stilizata cu CSS, sau manipulata cu JavaScript.

Exemplu:
<p>Merg la teatru cu <span style="color:#675611;font-
weight:bold">Maria</span > si <span style="color:#f34455;font-
size: 150%">Vasile</span> Popescu</p>
Exemplu <span>

<p>Mouse peste cuvant - schimba cursorul</p>

<span style="cursor:auto">auto</span><br>
<span style="cursor:crosshair">crosshair</span><br>
<span style="cursor:default">default</span><br>
<span style="cursor:e-resize">e-resize</span><br>
<span style="cursor:help">help</span><br>
<span style="cursor:move">move</span><br>
<span style="cursor:pointer">pointer</span><br>
<span style="cursor:progress">progress</span><br>
Elementul <span>
<head><style>
span {
float: left;
width: 0.7em;
font-size: 400%;
font-family: Algerian;
line-height: 80%;
}
</style></head>
<body>
<p><span>T</span>text text text text texttext texttext texttext</p>

Litera T este inclusa in interiorul elementului span. Elementul span


are o latime de 0.7 ori marimea fontului curent. Dimensiunea
fontului elementului span este 400%, si grosimea liniei 80%. Fontul
literei T va fi "Algerian".
CSS Pseudo-classe/Pseudo-Element
Pseudo-clasele sunt folosite ptr a defini o stare speciala a elementelor
HTML

Permit adaugarea de stiluri CSS doar la anumite elemente ale


aceluiasi selector, id sau clasa.

Exemplu, pot fi folosite pentru:

- a stiliza un element cand mouse-ul este deasupra lui

- schimbam culorile ptr link-uri vizitate si nevizitate

- a stiliza un element cand este in focus


CSS Pseudo-classe/ Pseude-element
Pseudo-clasa/Pseudo-element este una din expresiile urmatoare:
active - adauga un stil unui element cand acesta este activat (actionat
prin click pe el)
first-child - adauga un stil unui element care este primul din acel tip
de elemente
focus - folosit pentru input-urile de formulare, le adauga un stil cand
acestea sunt active (dupa click si cursorul de text in ele)
hover-adauga un stil unui element cand mouse-ul se afla deasupra lui
first-letter – adauga un still style primei litere a fiecarui element
last-child - adauga un stil unui element care este ultimul din acel tip
de elemente
link - adauga un stil unui link nevizitat
visited - adauga un stil unui link vizitat
before - insereaza un continut intr-un anumit stil inaintea elementelor
selectate
after - insereaza un continut intr-un anumit stil dupa elementele
selectate
CSS Pseudo-classe/Pseudo-Element
Sintaxa: selector : pseudo-clasa { proprietate:valoare; }
selector :: pseudo-element { proprietate:valoare; }

:: - sintaxa in CSS3, : - sintaxa in CSS1, CSS2

selector este un element, id sau clasa,


pseudo-clasa/pseudo-element este una din expresiile urmatoare:
active, link, visited, first-child, last-child, focus, hover etc /
first-letter, first-line , before, after, selection
Exemple: a:link {color:#0000FF;} /* link nevizitat */
a:visited {color: #00FF00;} * link vizitat */
a:hover {color:#FF00FF;} /* mouse peste link */
tr:hover{background-color:#F5F5F5;}
a:active {color:#0000FF;} /* link selectat */
p::first-line {color:#00FF00;} /* prima linie a fiecarui element p */
p::before {content: ''ATENTIE-”;}
input:focus{background-color:pink;}
CSS class & Pseudo-classe / Pseudo-element
CSS class poate fi combinat cu Pseudo-clasa :

selector.class:pseudo-class {property:value;}

Exemplu: daca link-ul a fost visited, se va afisa in rosu


a.rosior:visited {color:#FF0000;}
<a class="rosior" href="css_syntax.asp">CSS Syntax</a>

Combinat cu Pseudo-element :

selector::pseudo-element {property:value;}
Exemplu: afiseaza prima litera a tuturor paragrafelor in rosu.
p::first-letter {color:#ff0000; font-size:200%;}
<p>Un film bun</p>
<p> Merg la NY</p>
Exemplu Pseudo-classe / Pseudo-element
<!DOCTYPE html>
<html>
<head>
<style type=”text/css”>
p i:first-child {color: #007700;}
</style>
</head>
<body>
<p>Merg la <i>teatru</i>. Merg la <i>film</i>. </p> </br>
<p>Merg la<i>restaurant</i>.Merg la <i>sala</i></p>
</body>
</html>

Merg la teatru. Merg la film


Merg la restaurant.Merg la sala.
JavaScript (JS)
JavaScript (Brendan Eich - 1995) diferit de limbajul de programare
JAVA (SUN)

limbaj de programare orientat pe obiecte pentru HTML, web,
servere, tablete, telefoane – pentru a face paginile interactive
JavaScript = DHTML dinamic HTML

codul JavaScript este o secventa de declaratii /comenzi ce vor fi
inserate in paginile HTML si executate de catre browser-
scripturile care rulează în pagină sunt oprite imediat, în momentul
în care utilizatorul oprește vizualizarea paginii.

declarațiile JavaScript sunt scrise în interiorul tag-ului <script>


încorporat în pagina HTML - informează browserul că codul
JavaScript urmează sau pot fi în fișiere externe cu extensia .js
JavaScript (JS)
JavaScript este un limbaj de scripting de nivel înalt, interpretat,
orientat pe objecte și care ruleaza pe partea de client.

JavaScript poate fi utilizat pentru:

Adăugare de elemente multimedia, cum ar fi afișarea, ascunderea,


modificarea, crearea de imagini interactive, defilare text în bara de
stare, etc.

JavaScript face posibilă crearea unor conținuturi adaptate paginilor


dinamice, data și ora sau alte date externe.

Java Script permite validarea datelor introduse de utilizator în


timpul depunerii unui formular, să modifice conținutul
formularului, etc
JavaScript (JS)

JavaScript poate fi utilizat impreuna cu CSS pentru a face DHTML


- Dynamic HyperteTt Markup Language – permite afisarea sau
dispariția paginilor de web.

JavaScript se execută doar in pagina de web care se află în


fereastra browser-ului, în orice moment. Acest lucru înseamnă că
script-urile care rulează pe o pagină sunt oprite imediat, în
momentul în care utilizatorul se oprește vizualizarea paginii.
JavaScript

JavaScript

JavaScript poate schimba toate elementele HTML din pagina

JavaScript poate schimba toate atributele HTML din pagina

JavaScript poate schimba declaratiile de stilurile CSS din pagina

JavaScript poate reactiona la toate evenimenele din pagina


JavaScript – elemente HTML

JavaScript poate accesa si schimba toate elementele HTML din
pagina

Identificarea elementelor HTML dupa:
ID
document.getElementById("nume_id");

Numele CLASS-ei
document.getElementsByClassName("nume_class");

Numele TAG-ului (numele etichetei HTML < >)


getElementsByTagName("p");

Colectii de obiecte( document.anchors , document.forms,


document.images , document.links)
Declaratiile JavaScript
Declaratiile JavaScript sunt "comenzi" pentru browser.

; se adauga la sfarsitul fiecarei declaratii

declaratiile se executa in ordinea scrierii si sunt „case sensitive”

JavaScript ignora spatiile libere

\ intrerupe o linie de code intr-un text string :
document.write("Hello \
World!");

<html> <body>
<h1>Imagistica Medicala</h1>
<p id="pImg"> Tipuri de aparate medicale</p>
<div id="divCT"> Computer Tomograf</div>
<script>
document.getElementById("pImg").innerHTML="Buna ziua!";
document.getElementById("divCT").innerHTML="Ce faci ?";
</script>
</body></html>
Functii JavaScript

Functiile - gruparea declaratiilor = secventa de instructiuni ce se


execute impreuna

function numele_functiei()
{
cod/declaratii JavaScript;
}

Cod-ul functiei se executa cand cineva apeleaza numele_functiei

O functie poate fi apelata direct, cand apare un eveniment


(utilizatorul apasa un button), sau poate fi apelata de oriunde
scriind JavaScript code.
Functii JavaScript
<html>
<body>
<h1>Imagistica Medicala</h1>
<p id="pImg"> Tipuri de aparate medicale</p>
<div id="divCT" style=”color:red”> Computer Tomograf</div>
<button type="button" onclick="myfct()">Schimba</button>
<script>
function myfct()
{
document.getElementById("pImg").innerHTML="Buna ziua!";
document.getElementById("divCT").innerHTML="Ce faceti?";
}
</script>
</body>
</html>
Comentariile in JavaScript


Nu sunt executate de catre JavaScript

// pentru o singura linie

//document.getElementById("myH1").innerHTML="Welcome!";
var i=5; // declar variabila i si ii asignez valoarea 5

/* */ pentru un bloc de text/declaratii
Cum adaug declaratiile JavaScript

Declaratiile JavaScripts trebuie inserate intre tag-urile


<script> si </script>

Declaratiile JavaScript pot fi in sectiunea <body> sau in
sectiunea <head> si/sau in ambele sectiuni din pagina HTML

Pot fi nenumarate tag-uri <script> in pagina HTML

Scripturile pot fi in fisiere externe, intotdeauna cu extensia .js
Fisierele externe contain cod care poate fi utilizat de mai multe
pagini web.

<script src="myScript.js"></script>
Manipularea elementelor in JavaScript
innerHTML - inlocuieste continutul

<h1> Scripturi </h1>


<h2 id="myp">un paragraf</h2>
<script>
document.getElementById("myp").innerHTML="javaaaa";
</script>

write -scrie direct in outputul documentului HTML
<h1> Marea Neagra </h1>
<script>
document.write("<p> Marea Rosie</p>");
document.write(Date());
</script>

Daca se executa document.write dupa ce documentul s-a terminat


de incarcat , intreaga pagina HTML va fi rescrisa!
Manipularea elementelor in JavaScript

Apasand tasta "F12" în multe browsere moderne se va deschide


consola.

În consola puteți explora:

--DOM -ul documentului HTML curent

--depana JavaScript

--vizualizati resursele ce vin într-o rețea și de a face tot felul de


lucruri interesante.

Vom folosi consola pentru a exemplifica JavaScript:


Variabile in JavaScript
var fN=1; am asignat valoarea 1 variabilei fN
var sN=2;

fN+sN

sN-fN

fN= = 3;

fN+=2;
sN-=1;

window.alert(‘ Vreau sa merg la film’);

document.write(‘ <h1> Ciocolata </h1> <p> Orice ciocolata îmi


place </p>’)
Variabile in JavaScript

Variabilele in JavaScript sunt „containere” pentru stocare

Numele variabilelor trebuie sa inceapa cu o litera, ( $ si _ )
Numele variabilelor sunt case sensitive

Declararea variabilelor se face cu var
var x (variabila x e nedefinita, nu are nici o valoare atribuita)

Asignarea unei valori se face cu =
var x = 3.14;
y=”Mos Craciun”;
var age=30, var str=”Ulita”, var=”44”;

Re-declararea variabilelor nu pierd valoarea asociata
var age=30;
var age;

Se pot face operatii aritmetice cu variabile:
var x, var y, var z;
x=5; y=x+5; z =x+y;
Variabile in JavaScript
Variabilele pot fi declarate ca argumente, la declararea functiilor:
function myPar (tata, mama) {}

Exemplu:
<button onclick="myPar('Vasile','Vasilica')">Try it</button>

<script>
function myPar(tata,mama)
{
alert("Parintii mei " + tata + ", si " + mama);
}
</script>

Functia se poate apela cu variabile diferite


myPar('Ion','Ana')
Variabile in JavaScript
Cand se foloseste cuvantul cheie return, se opreste executia
functiei si se intoarce valoarea acelei variabile;

<script>
function myFct()
{
var x=455;
return x
}
</script>

var myX=myFct();

Se poate returna valoarea functiei fara sa o stochezi ca variabila:

document.getElementById("suma").innerHTML=myFct();
Variabile in JavaScript


Variabilele declarate cu var in functii sunt variabile LOCALE,
pot fi folosite doar in acea functie. Variabilele LOCALE sunt
sterse dupa executia functiei

Variabilele declarate in afara functiilor sunt GLOBALE, toate
scripturile si functiile din pagina HTML le pot accesa. Variabilele
GLOBALE sunt sterse cand se inchide pagina HTML

Daca se asigneaza o valoare unei variabile care nu a fost
declarata, ea devine GLOBALA, chiar daca se afla in interiorul
unei functii
x=6;
Operatori in JavaScript
De asignare:
= x=y x=y
+= x += y x = x + y
-= x -= y x = x - y
*= x *= y x = x * y
/= x /= y x=x/y
%= x %= y x = x % y
Aritmetici:
+ , - , * , / , % (modul) , ++ (increment), -- (decrement)
Logici:
< , <=, > , >=, ? (operator conditional)( a ? b : c)

== determina dacă doua variabile/valori sunt echivalente in valoare

!=determina dacă doua variabile/valori nu sunt echivalenteîn valoare


Instructiuni de control in JavaScript

Liniile de cod, in programare realizează diverse acțiuni în funcție


de rezultatul unor decizii. Declarațiile in care se alege o cale de
execuție pe baza unei decizii sunt numite declarații de control.

If/Else - declarațiile condiționate, în funcție de rezultatul unei


evaluări.

if (zi > 5) {
mesaj = "Weekend placut!";
} else {
mesaj = "Bine ați venit la școala!";
}
Instructiuni de control in JavaScript

Declarația else if vă permite multiple conditionari in lanț, astfel


încât să puteți evalua mai multe condiții.

Else if - declarațiile condiționate, în funcție de rezultatul unei


evaluări.

if (zi > 5) {
mesaj = "Weekend placut!";
} else if (zi< 2) {
mesaj = "E ziua de luni!";
} else {
mesaj = "Bine ați venit la școala!";
}
Instructiuni de control in JavaScript
Buclele pot executa un bloc de cod de mai multe ori.
Buclele sunt folosite dacă doriți să executați același cod de mai
multe ori, dar de fiecare dată cu o valoare diferită.

Bucla for este compusa din trei părți: crearea variabilei de


indexare; expresia ce se evalueaza înainte de fiecare buclă;
declarația ce se executa la sfârșitul fiecărei bucle

Indexarea începe de zero, această buclă se va evalua la valoarea


true pentru 0, 1, 2 și 3, dar apoi eșuează, atunci când i este 4.

var tari = ["RO", "JPN", "RUS", "ENG"];


for (var i = 0; i < tari.length; i++) {
text += tari + "<br />";
}
Instructiuni de control in JavaScript

forEach invocă în mod convenabil o funcție (numită sau anonim)


pentru fiecare element din vector/matrice. Acest lucru poate fi
folosit pentru a itera cu ușurință peste elementele unui vector/
matrice.

var sum = 0;
var nr = [4, 9, 16, 25];
function increment(item, index) {
sum += item;
}
numbers.forEach(increment);
alert(sum);
Tipuri de Date in JavaScript
String var nume=”Gheorghe”, var p='Fun Store';

Number var x= 3.14, var y=123e5 ;

Boolean var t=true, var f=false;

Array
var cul=new Array();
cul[0]="Rosu";
cul[1]="Verde";
cul[2]="Alb"; sau asa
var cul=new Array("Rosu","Verde","Alb"); sau asa
var cul=["Rosu","Verde","Alb"];
Null var bani=null;

Undefined var x;
Obiecte in JavaScript

Object = variabile cu proprietati si metode asociate

Un obiect este o listă de tipuri de date neorganizate, stocate ca o


secvență de perechi nume: valoare.

Elementele din lista se numesc proprietăți ale obiectului.

Atunci când o proprietate a unui obiect stochează o funcție,


proprietatea devine cunoscută sub numele de metodă.
Obiecte in JavaScript
Un limbaj de programare poate fi numit orientat-obiect în cazul în
care are următoarele patru capabilităti :

• încapsularea (encapsulation) – datele sau metode, impachetate


împreună într-un obiect.

• agregarea (aggregation) – stocheaza un obiect într-un alt obiect.

• moștenirea (inheritance)- capacitatea unei clase să depindă de o


altă clasă (sau de mai multe clase) pentru unele dintre proprietățile
și metodele sale.

• polimorfismul (polymorphism)- scriu o funcție care servește


într-o varietate de moduri diferite.
Obiecte in JavaScript
Object pot fi de tip : Date, Stringuri, Functii, Arrays, Math, etc

Crearea unei obiect (persoana):


var persoana={
nume : "Cretu",
prenume : "Toma",
cnp : 2700
};
sau așa:
var persoana={nume:"Cretu", prenume:"Toma", cnp:2700};

Se pot accesa proprietatile obiectului in doua moduri:

x=persoana.cnp; sau asa x=persoana["cnp"];


Obiecte in JavaScript

Cand o variabila este declarata cu "new", variabila este declarata


ca un object:
var msg= new String('Hai la munte');

Accesarea proprietatiilor obiectului: objectName.propertyName


var msg=new String('Hai la munte');
var x=msg.length; =12

Apelarea metodelor obiectului : objectName.methodName()


var msg="Hai la munte!";
var y=msg.toUpperCase();
var z = msg.indexOf("munte");
Obiecte in JavaScript
De reținut câteva puncte-cheie când lucrati cu obiecte JavaScript:

Proprietățile obiectului sunt oricare din tipurile de date abstracte,


sau un alt obiect. Ele sunt variabile normale utilizate intern în
metodele obiectului sau pot fi variabile vizibile la nivel global.
Metodele obiectului sunt functiile care permit obiectului de a face
o acțiune sau pentru a permite ceva să fie făcut pentru ea: afișarea
conținutului, executarea operațiilor matematice etc.
Obiecte definite de utilizator – toate sunt descendenți ai unui
obiect numit object.
"this" - acest cuvânt cheie desemneaza o prescurtare pentru
proprietățile sau metodele unui obiect.
JavaScript are multe obiecte-built-in sau obiecte native. Aceste
obiecte sunt accesibile oriunde în program și vor funcționa în
același mod, în orice browser care rulează în orice sistem de
operare.
Exemplu JavaScript : Ceas
<!DOCTYPE html>
<html>
<head>
<script>
function startTime()
{
var today=new Date();
var h=today.getHours();
var m=today.getMinutes();
var s=today.getSeconds();
// add a zero in front of numbers<10
m=checkTime(m); s=checkTime(s);
document.getElementById('txt').innerHTML=h+":"+m+":"+s;
t=setTimeout(function(){startTime()},500);
}
................se continua pe urmatoarea pagina
Exemplu JavaScript:Ceas

function checkTime(i)
{
if (i<10)
{
i="0" + i;
}
return i;
}
</script>
</head>
<body onload="startTime()">
<div id="txt"> Atat e ora</div>
</body>
</html>
Exemplu JavaScript: Ce zi e azi?
<body><p id="demo">Afiseaza ziua </p>
<button onclick="ziua()">Ce zi e azi?</button>
<script>
function ziua()
{
var d = new Date();
var zi=new Array(7);
zi[0]="Duminica";
zi[1]="Luni";
zi[2]="Marti";
zi[3]="Miercuri";
zi[4]="Joi";
zi[5]="Vineri";
zi[6]="Sambata";
var x = document.getElementById("demo");
x.innerHTML=zi[d.getDay()];
} </script></body>
JavaScript – schimbarea stilurilor CSS
document.getElementById(id).style.property=new style

<body>
<p id="p1">Hai la film!</p>
<p id="p2">Hai la teatru!</p>
<h1 id="id3">Hai la restaurant!</h1>
<script>
document.getElementById("p2").style.color="blue";
document.getElementById("p2").style.fontFamily="Arial";
document.getElementById("p2").style.fontSize="larger";
</script>
<button type="button"
onclick="document.getElementById('id3').style.color='red' ">
Click Me!</button>
</body> </html>
JavaScript – schimbarea stilurilor CSS
Proprietatile ptr background sunt :
background-color
background-image
background-repeat
background-attachment
background-position

Object.style.background=
"color image repeat attachment position"
<script>
function schimbaBackground()
{
document.body.style.background="#f3f3f3 url('Desert.jpg') no-repeat
right top";
} </script>
JavaScript – schimbarea stilurilor CSS

Proprietatile ptr background sunt :


border-width
border-style
border-color

<script>
function displayBorder()
{
document.getElementById("ex1").style.border="thick solid blue";
}
</script>
JavaScript – exemplu <canvas>
<!DOCTYPE html>
<html>
<head>
<title>HTML Page</title>
<link rel="stylesheet" href="style.css" />
</head>
<body>
<canvas id="demoCanvas" width="800" height="400">
Test Canvas
</canvas>
<script src="script.js"></script>
</body>
</html>

Atenție! apelez scriptul după ce am definit <canvas> și nu în


secțiunea <head>
JavaScript – exemplu <canvas>

Fișierul style.css :

canvas {
border-style: solid;
border-width: thick;
border-color: #FCA90F;
background-color: #C1D6CD;
}
JavaScript – exemplu <canvas>
Fișierul script.js :
var canvas = document.getElementById("demoCanvas");
var context = canvas.getContext("2d");

context.fillStyle = "#A9B0B3";
context.strokeStyle = "#746C73";
context.lineWidth = 5;

context.moveTo(0, 0); //metoda moveTo() muta cursorul (x,y) =(0,0)


context.lineTo(700, 350); // metoda lineTo() traseaza o linie de la poziția cursorului pana la poziția (700,350)
context.stroke(); // metoda stroke() deseneaza

context.beginPath();
context.arc(160, 80, 70, 0, 2 * Math.PI); // metoda arc(x,y, raza, pct initial, pct final)
context.fill(); // metoda fill() umple cu o culoare cercul
context.stroke();

context.beginPath();
context.moveTo(650, 345);
context.lineTo(700, 350);
context.lineTo(665, 315);
context.stroke() ; // am desenat o linie care se termina cu o sageata

context.fillStyle = "#20293F";
context.strokeStyle = "#20293F";

context.font = "78px Segoe UI"; // stabilesc familia de font și dimensiunea fontului


context.fillText("Hello", 190, 230); // textul ce se va afisa la poziția (190,230)
context.strokeText("World", 190, 310);` // alt text afisat la poziția (190,310)
JavaScript – exemplu canvas
Bibliografie


HTML prin exemple – Tudor Gugoniu, Ed.Teora 2002

HTML, XHTML,CSS si XML prin exemple – Tudor Gugoniu,
Ed.Teora 2005

Crearea paginilor Web – Ned Suell, Ed. Teora 2002

Totul despre HTML 4 – Rick Darnell, Ed Teora.

http://www.w3schools.com/html/default.asp

S-ar putea să vă placă și