Documente Academic
Documente Profesional
Documente Cultură
Algoritmul reprezinta o multime ordonata si finita de pasi care prelucreaza un set de date de
intrare in vederea obtinerii unor rezultate cerute.
Caracteristici:
1.Claritatea
Orice algoritm trebuie sa fie clar prelucrat.Toate etapele trebuie sa fie clar transferate.
2.Finitatea
Algoritmul trebuie sa se incheie dupa un numar finit de pasi.
3.Succesiunea pasilor
Pasii care compun algoritmul trebuie sa se succeada unu cu altu intr-o ordine bine stabilita.
4.Universalitatea
Algoritmul trebuie sa rezolve o clasa de probleme de acelasi tip.
5.Realizibilitatea
Algoritmul trebuie sa poata sa fie implementat intr-un limbaj de programare si sa poata fi
rezolvat cu sistemul diponibile ale sistemului de calcul.
6.Eficienta
Algoritmul trebuie sa obtina rezultatul dupa un numar minim de pasi, sa fie eficient din punct
de vedere al memoriei ocupate si al timpului de calcul.
https://ctptc-airinei.ro/catinfo/4matoffline/Etapele%20rezolvarii%20unei
%20probleme.pdf
3. Algoritmi elementari
a. Schimbarea valorilor a doua variabile
Exemplu: Presupunem ca avem 2 pahare: primul pahar (a) contine apa, al
doilea pahar (b) contine lapte. Cum putem interschimba continuturile celor
doua pahare? Raspuns: utilizand un alt pahar (aux).
Varianta cu scaderi si cu binar
Cu aux : aux=a, a=b, b=aux
Cu + si - : a=a+b; b=a-b; a=a-b;
Aia pe biti : a=a^b; b=a^b; a= a^b; ^ sau exclusiv
b. Parcurgerea elementelor unei multimi
Liste, vectori
c. Implementarea cuantificatorilor matematici oricare si exista.
????
4. Metode si tehnici de realizare a algoritmilor
a. Metoda Greedy
În general, metoda Greedy se aplică problemelor de optimizare.
Specificul acestei metode constă în faptul că se construieşte solutia
optimă pas cu pas, la fiecare pas fiind selectat în solutie elementul care
pare „cel mai bun” la momentul respectiv, în speranta că această alegere
locală va conduce la optimul global.
b. Metoda Backtracking
Backtracking este o metodă de parcurgere sistematică a spaţiului
soluţiilor posibile al unei probleme. Este o metodă generală de
programare, şi poate fi adaptata pentru orice problemă pentru care
dorim să obţinem toate soluţiile posibile, sau să selectăm o soluţie
optimă, din mulţimea soluţiilor posibile. Backtracking este însă şi cea
mai costisitoare metodă din punct de vedere al timpului de execuţie.
c. Metoda Divide et Impera
Divide et impera se bazează pe principiul descompunerii problemei
în două sau mai multe subprobleme (mai ușoare), care se rezolvă, iar
soluția pentru problema inițială se obține combinând soluțiile
subproblemelor. De multe ori, subproblemele sunt de același tip și
pentru fiecare din ele se poate aplica aceeași tactică a descompunerii în
(alte) subprobleme, până când (în urma descompunerilor repetate) se
ajunge la probleme care admit rezolvare imediată.
d. Programare dinamica
Este o tehnică de proiectare a algoritmilor pentru rezolvarea
problemelor care pot fi descompuse în subprobleme care se suprapun – poate
fi aplicată problemelor de optimizare care au proprietatea de substructură
optimă. Particularitatea metodei constă în faptul că fiecare suproblemă
este rezolvată o singură dată iar soluția ei este stocată (într-o structură
tabelară) pentru a putea fi ulterior folosită pentru rezolvarea problemei
inițiale.
5. Structuri de date
a. structuri neomogene (articol, fisier)
Articolele sunt structuri de date neomogene si continue. Ele au un
numar fix de elemente numite campuri, iar accesul la acestea se face
direct. Utilitatea articolelor apare in manipularea datelor complexe (care
presupun stocarea unui numar de caracteristici pentru fiecare entitate)
si in crearea structurilor de date evoluate.
Fişierul este un tip interesant. Este prima metodă de a construi un
tip care -- teoretic vorbind -- este infinit! (Toate tipurile de pînă acum
sunt finite pentru că sunt construite prin combinaţii finite ale unor
mulţimi finite). Bine-nţeles că practic şi acest tip este finit, dar cu o
dimensiune maximă neprecizată.
b. tablouri: operatii cu tablouri. Metode de sortare
Acestea sunt variabila numită care conține un set de valori de tipuri
de date similare. Asta înseamnă că, folosind un singur nume de
variabilă putem stoca mai multe valori. Acest lucru este posibil prin
utilizarea indexurilor pe numele variabilei. Aceste variabile pot fi de
orice tip primitiv.
Incepe cu elementul i gaseste cel mai mic element in vector si il interschimba cu acel
element si tot asa cu elementul 2
Utilizaeaza devide et impera adica se imparte in secvente de numere cat mai mici astfel in
cat fiecare secventa sa fie ordonata la un moment dat si interclasata cu o alta
c. liste inlantuite
O listă liniară simplu înlănțuită conține elemente (noduri) a căror valori
constau din două părți: informația utilă și informația de legătură.
Informația utilă reprezintă informația propriu-zisă memorată în
elementul liste (numere, șiruri de caractere, etc.), iar informația de
legătură precizează adresa următorului element al listei. În C/C++
putem folosi următorul tip de date pentru a memora elementele unei liste
liniare simplu înlănțuite alocate dinamic.
d. arbori binari de cautare
Un arbore binar de căutare (BST – Binary Search Tree) este un arbore
binar care are asociată o cheie cu fiecare din nodurile sale interne, cu
proprietatea suplimentară că cheia fiecărui nod este mai mare sau egală
cu cheile din toate nodurile subarborelui său stâng şi mai mică sau egală
cu cheile din toate nodurile subarborelui său drept.
https://www.pbinfo.ro/articole/25704/arbori-binari-de-cautare
e. grafe
Se numește graf neorientat perechea ordonată de mulțimi G=(X,U), unde
X este o mulțime finită și nevidă numită mulțimea nodurilor (vârfurilor),
iar U este o mulțime de perechi neordonate de forma [x,y], cu x,y∈X,
numită mulțimea muchiilor grafului.
Definiție. Se numeşte graf orientat sau digraf o pereche ordonată de
mulțimi notată
G=(V, U), unde: V este o mulțime finită şi nevidă ale cărei elemente se
numesc noduri sau vârfuri;
U este o mulțime de perechi ordonate de elemente distincte din V ale
cărei elemente se numesc arce.
6. Programarea modulara. Definirea si parametrizarea
subalgoritmilor.
Programarea modulară este o paradigmă de programare care are la
bază utilizarea modulelor. În acest stil de programare unitățile de cod ce
oferă funționalitate specifică (proceduri, funcții, metode sau clase) sunt
grupate în module separate deseori numite biblioteci, cataloage sau clase.
Modulele separă interfața de implementare. Interfața unui modul
conține acele elemente pe care modulul le expune și de care are nevoie
utilizatorul(programatorul) modulului pentru a folosi functionalitatile
puse la dispozitie de acesta. Aceste elemente sunt vizibile celorlalte
module. Implementarea modulului conține codul care corespunde
elementelor declarate în interfață cat si altor elemente care nu sunt
vizibile in exterior, folosite ca pasi intermediari in realizarea unei
operatii din interfata. Acest cod sursă nu este vizibil celorlalte module,
ceea ce permite un nivel de abstractizare mai mare, utilizatorul fiind
nevoit sa cunoasca doar interfata pentru a folosi modulul respectiv.
2.Abstractizarea
Abstractizarea presupune reducerea la un model simplu a tuturor proprietăţilor şi metodelor
de care dispune un obiect. Astfel realizarea unei clase (şablon) care ne arată ce proprietăţi si
ce metode vor avea obiectele, reprezintă tocmai conceptul de abstractizare.
3, Obiectul
Un obiect reprezintă un exemplu individual al unei clase care are toate proprietățile și
comportamentele pe care acea clasă le definește. Fiecare obiect are propriile sale caracteristici
definite de către clasă. Pe baza datelor definite, este posibil să se creeze un număr infinit de
obiecte.
4. Incapsularea
Incapsularea reprezintă proprietatea claselor de a grupa datele şi metodele într-o singură
structură de date. Incapsularea înseamnă că datele se definesc împreuna cu codul care
acţioneaza asupra lor.
5. Atribute
Atributele sunt membri de date din interiorul unei clase sau al unui obiect care reprezintă
diferitele caracteristici ale clasei. Ele pot fi, de asemenea, denumite caracteristici ale clasei
care pot fi accesate de la alte obiecte sau pot diferenția o clasă de alte clase. De exemplu, un
atribut al unei mașini include: anvelopă, ușă, scaune, plăcuță de înmatriculare, far, roată,
mâner, marca, anul. Esența definirii variabilelor într-o clasă este de a menține codul simplu și
ușor de întreținut.
6. METODE
Metodele sunt funcții care sunt definite în interiorul unei clase care descriu comportamentele
unui obiect. Fiecare metodă conținută în definițiile clasei începe cu o referință la un obiect
instanță. În plus, subrutinele conținute într-un obiect sunt numite metode de instanță.
Programatorii folosesc metode de reutilizare sau de păstrare a funcționalității încapsulate în
interiorul unui obiect odată.
Atribut
Schema unei relatii = Numele relatiei urmat de lista atributelor sale si (eventual) de domeniul
din care acestea provin.
Cheia unei relații = mulțime minimala de atribute ale căror valori identifica în mod unic un
tuplu al relației respective.
Valori nule = Uneori, unele elemente ale unei relatii (celule ale tabelei) nu au nici o valoare
concreta. Se spune ca in acel loc exista o valoare nula.
4. Normalizarea;
a. Formele normale FN1, FN2, FN3
Forma normala 1 cere urmatoarele:
● ca fiecare camp intr-o baza de date sa cuprinda numai o valoare atomica
● ca fiecare inregistrare sa fie definita astfel incat sa fie identificata in mod unic prin
intermediul unei chei primare
Forma normala 2 cere urmatoarele:
● A doua forma normala cere ca toate elementele unei tabele sa fie dependente
functional de totalitatea cheii
b. Scheme relationale
5. Algebra relationala;
a. Chei primare si secundare. Constrângeri de integritate
CHEIA PRINCIPALA- cheia primară, este unul dintre principalele tipuri de constrângeri
din baza de date. Cheia primară are scopul de a identifica în mod unic o înregistrare într-un tabel
și trebuie să fie unică. Cheile primare PRIMARY KEY sunt în tabele care sunt numite părinte
(Parent). Nu confundați cheia primară cu indecșii primari ai bazelor de date locale, cheia primară
nu este un index, ci o constrângere. La crearea unei chei primare InterBase creează automat
pentru el indice unic. Totuși, dacă creăm indice unic, acest lucru nu va crea constrângerile cheii
primare. Un tabel poate avea doar o CHEIE PRIMARĂ
O cheie secundara (alternativa, unica) (secondary, alternate, unique key) este o cheie
candidata care nu a fost desemnata de proiectant ca si cheie primara. Cheile secundare admit
valori NULL pentru unele din atributele lor daca se respecta conditia de unicitate a valorilor.
Proceduri stocate
Declanșatoare
Declanșatoarele (trigger-ele) sunt o clasă specială de proceduri stocate, asociate unei
tabele, definite pentru a fi lansate în execuţie automat la iniţierea unei operaţii de tip
UPDATE, INSERT sau DELETE asupra tabelei în cauză [5]. Spre deosebire de
procedurile stocate, declanșatoarele sunt asociate unor tabele individuale.
Funcții stocate
Funcțiile stocate suportă doar execuția comenzii SELECT, acceptă doar parametri de
intrare și trebuie să returneze o singură valoare. Se utilizează, în general, când se
dorește manipularea datelor sau efectuarea de calcule speciale.
Utilizatori : pot sa fie mai multi utilizatori cu diferite drepturi doar de executare vederi
doar de scriere select doar de vizualizare a tabelelor etccc
e. Gestiunea tranzacțiilor
POST este folosit pentru a trimite date către un server pentru a crea/actualiza o
resursa:
POST /test/test.php HTTP/1.1
name1=value1&name2=value2
Cookie:
Sesiune:
Sripturile PHP pot conține și cereri SQL, care vor fi adresate serverului de
baze de date (mySQL).