| Al-Forums.Com ™ - Discussions. Forum Virtual Shqiptar, wWw.Al-Forums.Com ™ - Discussions. Forum Virtual Shqiptar, Vendi i duhur pėr tė gjithė shqiptarėt anembanė. Diskutime tė ndryshme rreth shoqerisė dhe tema tė tjera. |
| | Programim / Koncepte | |
| | Autori | Mesazh |
---|
Vizitor Vizitor
| | | | Vizitor Vizitor
| | | | Vizitor Vizitor
| | | | Vizitor Vizitor
| | | | Vizitor Vizitor
| | | | Vizitor Vizitor
| | | | Vizitor Vizitor
| | | | Vizitor Vizitor
| | | | Vizitor Vizitor
| | | | Vizitor Vizitor
| Titulli: Programim / Koncepte 22.07.09 3:41 | |
| Analizimi i Algoritmeve Programim / Koncepte - 01/06/2005 - Shkruar nga: Betim DEVA - | Pėr shtypės | Koment:, Ky shkrim shpjegon mėnyra tė ndryshme se si tė bėhet analizimi i algoritmeve duke gjetur funksionin e rritjes. Poashtu spjegohet teorema Master dhe pėrdorimi i saj. Shkrimi pėrmban shembuj qė i korrespondojnė teoremave.
| Problemet e ndryshme mund tė zgjidhen nė mėnyra tė ndryshme. Varėsisht nga algoritmi qė pėrdoret, i njėjti problem mund tė zgjidhet brenda kohėve tė ndryshme, po ashtu edhe hapėsira qė shfrytėzohet pėr memorie mund tė ndryshojė. Me analizė tė algoritmeve nėnkuptohet parashikimi i resurseve qė i kėrkon algoritmi pėr ta zgjidhur njė problem tė caktuar si p.sh. koha, memoria, brezi i gjerėsisė sė komunikimit, hardueri. Mirėpo karakteristika kryesore qė brengosemi ėshtė koha e ekzekutimit. Kohėve tė fundit, memoria ėshtė e lire dhe jo aq problematike.
Para se tė analizojmė algoritmin na duhet njė model teorik qė nė fakt ėshtė makinė nė tė cilin do ti bazojmė analizat tona. Model i njohur ėshtė random-access machine (RAM), tė cilin do ta pėrdorim nė kėtė shkrim dhe i ka kėto karakteristika: - Instruksionet ekzekutohen njėri pas tjetrit - Ka numėr tė pafundmė regjistrash - Ka hapėsirė tė pakufizuar - Jo dy instruksione ekzekutohen nė tė njėjtėn kohė - Nuk pėrmban memorie cache apo virtuale - Ėshtė i pavarur nga arkitektura - Koha pėr tė cilin ekzekutohet ēdo instruksion ėshtė e njėjtė (psh, mbledhja, zbritja, transferimi i vlerės prej njė variabėl nė tjetrėn, etj) etj. Lidhur me analizėn e algoritmeve njihemi me nocionet si kompleksiteti kohor (Ang: time complexity) dhe kompleksiteti hapėsinor (Ang: space complexity).
Kompleksiteti kohor ėshtė numri i hapave qė duhet tė ekzekutohen si funksion i pėrmasave tė hyrjeve. d.m.th. koha e ekzekutimit varret nga hyrja (Ta keni parasysh kėtu qė nuk flasim pėr kohėn reale pėr tė cilėn kryhet programi, sepse ajo mund tė ndryshojė prej kompjuterit nė kompjuter).
Kompleksiteti hapėsinor ėshtė madhėsia e memories e cila pėrdoret si funksion i pėrmasave tė hyrjeve.
Zakonisht koha pėr tė cilin zgjidhet problemi rritet me rritjen e pėrmasave tė hyrjeve (Ang: input size). Pėrmasat e hyrjeve definohen nė bazė tė problemit. Pėr shumicėn e problemeve (algoritmet pėr radhitje, seritė, vargjet etj) numri i hyrjeve ėshtė numri n i elementeve tė matricės, pėr disa tė tjera numri i hyrjeve ėshtė numri i bitave etj. Koha ekzekutimit (Ang: running time) ėshtė numri i instruksioneve qė bėhen pėr tu ekzekutuar programi. Ta kemi parasysh kėtu qe flasim pėr hapat e instruksioneve tė pseudo-kodit e jo ato nė nivelin asembli. D.m.th i eliminojmė dallimet e arkitekturės sė procesorėve duke u bazuar nė modelin RAM.
Marrim njė shembull fillestar ku si hyrje do tė jetė vektori A me n elemente. Dhe dėshirojmė ti shtypim tė gjitha vlerat. Ta kemi parasysh qė Nė shembujt e ardhshėm, vektorėt (array) apo matrica fillojnė prej indeksit 1. Pseudokodi vijon:
for i:=1 to length(A) print A[i]
| Pra do tė bėhen n krahasime pėr tė shtypur tė gjithė elementet e matricės, si dhe njė krahasim mė shumė nė unazėn e fundit, atėherė kur i=n+1 d.m.th gjithsejt n+1, ku ne do ta shėnojmė si O(n), pasi qė numri 1 ėshtė pothuajse i parėndėsishėm kur kemi tė bėjmė me numra tė mėdhenj. Pra e tėra qė na intereson ėshtė numri i krahasimeve pėr vlera tė mėdha tė n.
Rritja e funksioneve
Zakonisht me rritjen e n rritet edhe kohėzgjatja e ekzekutimit tė programit. Varėsisht nga hyrjet, i njėjti program mund tė ekzekutohet pėr njė kohė tė shkurtėr apo tė gjatė. Nė tė shumtėn e rasteve neve na intereson se si sillet algoritmi nė skenarin mė tė pa favorshėm (Ang: worst case scenario). Qe ti krahasojmė dy algoritme, ne duhet ta dimė se sa shpejtė rriten ato algoritme. Pėr ketė arsye njihemi me simbolin O e madhe (Ang: Big-O notation) i cili pėrkufizohet kėshtu:
Definicion:
Le tė jenė f dhe g funksione prej bashkėsisė sė numrave tė plotė apo real nė bashkėsinė e numrave real. Ne themi qė f(x) = O(g(x)) nėse ekzistojnė konstantet C dhe k ashtu qė |f(x)| <= C|g(x)| , ku x > k dhe lexohet f(x) ėshtė O(g(x))
|
Do tė thotė qė nėse gjejmė njė pikė C, atėherė algoritmi me kompleksitetin kohor g(x) do tė jetė gjithmonė kufiri i lartėm i algoritmit f(x).
Shembull: Vėrtetoni se f(n) = n2 + 2n +1 ėshtė O(n2)
Nė shembullin e mėsipėrm nevojitet tė gjendet se pėr ēdo n>1, ekziston njė konstantė C ashtu qė |f(n)|<= C|g(n)|.
n2 + 2n + 1 e dimė qė ėshtė mė e vogėl qė n2 + 2n2 + n2 = 4n2 dmth 4n2 <= Cn2. Kjo ėshtė e saktė sa herė qe C=4 dhe k>=1 dmth n2 + 2n + 1 ėshtė O(n2)
Do ti vizatojmė kėto lakore
| Rritja e funksioneve tė algoritmeve |
|
|
| | | Vizitor Vizitor
| Titulli: Re: Programim / Koncepte 22.07.09 3:42 | |
| Ne vėrtetuam nė mėnyrė algjebrike qė n 2 + 2n + 1 ėshtė O(n 2). Ne gjetėm konstantėn C=4 ashtu qė funksionet do tė jenė tė barabarta (Shihet nė figurė ku funksionet priten), Dhe prej asaj pike funksioni n 2, do tė jetė gjithmonė mė i madh sesa qė n 2 + 2n + 1. Nėse i vizatojmė lakoret qė i korrespondojnė kohės sė ekzekutimit. Aq mė shpejtė funksioni qė rritet, aq mė e pjerrėt do tė jetė lakorja, pėr ēdo rritje tė n qė do tė thotė qė algoritmi do tė jetė aq mė i ngadalshėm. Simboli O na mundėson qė tė bėjmė analiza e krahasime konkrete tė algoritmeve. Algoritmet qė publikohen, zakonisht e bashkėngjisin kompleksiteti kohor nė mėnyrė qė tė vlerėsohet efikasiteti. Simboli O na tregon ku gjendet kufiri i sipėrm, mirėpo nuk na jep informatė lidhur me kufirin e poshtėm. Kjo do tė thotė qe e dimė qe njė algoritėm kufizohet me njė lakore pėr sė larti, qė nuk do ta kalojė atė, mirėpo nuk e dimė se cila ėshtė lakorja e poshtme qė do tė na kishte dhėnė informatė mė tė saktė se ku shtrihet algoritmi. Kėtu vjen nė shprehje simboli omega Ω qė ėshtė i ngjashėm me O dhe pėrkufizohet kėshtu. Definicion:Le tė jenė f dhe g funksione prej bashkėsisė sė numrave tė plotė apo real nė bashkėsinė e numrave real. Ne themi qė f(x) = Ω (g(x)) nėse ekzistojnė konstantet pozitive C dhe k ashtu qė | f(x) | >= C| g(x) | , ku x > k dhe lexohet f(x) ėshtė Ω (g(x))
| Shembull: Vėrtetoni se f(x) = 8x 3+5x 2+7 ėshtė Ω (g(x)), ku g(x) = x 3. Duhet tė vėrtetojmė qė 8x 3+5x 2+7 >= C x 3Kjo edhe shihet qė ėshtė e saktė pėr C>= 1 dhe x>=1. Njė simbol tjetėr qė ka tė bėjė me O dhe Ω ėshtė θ qė nė fakt ėshtė kur funksioni kufizohet edhe nga lartė edhe nga poshtė me njė funksion, dhe pėrkufizohet kėshtu: Definicion:Le tė jenė f dhe g funksione prej bashkėsisė sė numrave tė plotė apo real nė bashkėsinė e numrave real. Ne themi qė f(x) = θ (g(x)) nėse f(x) ėshtė O (g(x)) dhe f(x) ėshtė Ω (g(x)) dhe lexohet f(x) ėshtė θ (g(x)) apo f(x) i pėrket rendit g(x)
| Shembull: Vėrtetoni se f(x) = 3x 2+8xlog(x) ėshtė θ (g(x)), ku g(x) = x 2. Duhet qė tė vėrtetojmė se f(x) ėshtė O(g(x)) dhe f(x) ėshtė Ω (g(x)) Vėrtetojmė qė 3x 2+8xlog(x) <= C x 23x 2+8xlog(x) <= 3x 2+8x 2 = 11x 2 <= C x 2 sa herė qė C>=11, x>1 pra f(x) ėshtė O(g(x)) Nė anėn tjetėr vėrtetojmė qė 3x 2+8xlog(x) >= C x 2. Kjo shihet qarė qė ėshtė e saktė pėr pėr C>=1 dhe x>1. Tani do tė shohim ti analizojmė pseudo-kodet e algoritmeve, duke nxjerrė rendin e rritjes Shembull: Algoritmi 1 Kosto Kohėt ---------------------------------------------------- for i := 1 to n C1 n + 1 print i; C2 n
for j := 1 to n C3 n + 1 print j; C4 n
|
Ēdo rresht e ka koston e vet qė shėnohet me c i. p.sh Rreshti parė do tė kontribuojė C1(n+1) nė kohėn e ekzekutimit tė pėrgjithshėm. Pra T(n) = C1(n + 1) + C2n + C3(n + 1) + C4n = (C1 + C2 + C3 + C4)n + (C1 + C3) Kjo ėshtė formė lineare kx + l , ku k= C1 + C2 + C3 + C4 dhe l = C1 + C3 Nuk brengosemi shumė pėr konstante, por pėr n sepse ajo do tė kontribuojė me sė shumti kur rritet. Kėshtu qė funksioni rritės do tė jetė O(n) Marrim njė shembull tjetėr tė ngjajshėm Shembull: Algoritmi 2 Kosto Kohėt --------------------------------------------------------------------- for i := 1 to n C1 n + 1 for j := 1 to n C2 (n + 1) + (n + 1) +...+ (n + 1) = n(n + 1) print j; C3 n
|
Rreshti i dytė si i veēantė do tė ishte C2(n + 1). Mirėpo ky ėshtė brenda unazės sė sipėrme dhe do tė ekzekutohet n herė. Dmth gjithsejt C2(n + 1)n T(n) = C1(n + 1) + C2(n + 1)n + C3n = C2n 2 + (C1 + C2 + C3)n + C1 Kjo ėshtė formė kuadratike ax 2 + bx + d ku a= C3, b= C1 + C2 + C3 dhe d = C1. Termi qė do tė kontribuojė mė sė shumti ėshtė n 2 Kėshtu qė funksioni rritės do tė jetė O(n 2) I Vizatojmė funksionet pėr kėto dy algoritme dhe do tė kemi duke i konsideruar konstantet 1 dhe do tė kemi: | Rritja e funksioneve tė algoritmeve |
|
| | | Vizitor Vizitor
| Titulli: Re: Programim / Koncepte 22.07.09 3:42 | |
| Siē shihet nė figurė me rritjen e n (boshti horizontal), Algoritmi i dytė rritet mė shpejtė se algoritmi i parė. Mesiguri qė e vutė re se kur unazat janė tė futura njėra nė tjetrėn, atėherė kompleksitetet shumėzohen, ndėrsa nėse ekzekutohen njėri pas tjetrit, ato mblidhen. TeoremėLe tė jetė f1(x) me rend O(g1(x)); dhe f2(x) me rend O(g2(x)). Atėherė (f1 + f2)(x) ėshtė O(max(|g1(x)|,|g2(x)|)).
| TeoremėLe tė jetė f1(x) me rend O(g1(x)); dhe f2(x) me rend O(g2(x)). Atėherė (f1f2)(x) ėshtė O(g1(x)g2(x)).
|
Marrim njė shembull lidhur me kėto dy teorema: ShembullGjeni rendin O, pėr f(n) = 3nlog(n!) + (n 2 + 3)log(n). Sė pari e gjejmė rendin pėr pjesėn 3nlog(n!) log(n!) = log(1 * 2 * 3 ...n) <= log(n * n * n ...n) <= log(n n) = nlog(n) Pra log(n!) ėshtė O(nlog(n)) Nė bazė tė teormės sė dytė 3nlog(n!) ėshtė O ( n*nlog(n)) = O(n 2log(n)) Tani gjejmė rendin pėr pjesėn (n 2 + 3)log(n). (n 2 + 3) ėshtė O(n 2) log(n) ėshtė O(log(n)) Nė bazė tė teoremės sė dytė (n 2 + 3)log(n) ėshtė O(n 2log(n)) Dhe e pėrgjitshmja nė bazė tė teoremės sė parė do tė jetė f(n) = 3nlog(n!) + (n 2 + 3)log(n) = O(max(n 2log(n),n 2log(n)) = O(n 2log(n)) Tani do tė shohim se si tė gjejmė rendin e rritjes tė algoritmit pėr kėrkim i njohur si insertion-sortShembull: Kosto Kohėt ------------------------------------------------------------------ insertion-sort(A) for j := 2 to length(A) C1 n do key := A[j] C2 n - 1 //Inserto A[j] ne vendin e caktuar 0 i := j -1 C4 n - 1 while i > 0 and A[ i ] > key C5 Σnj=2(tj) do A[i + 1] := A[ i ] C6 Σnj=2(tj - 1) i := i - 1 C7 Σnj=2(tj - 1) A[i + 1] := key C8 n - 1
|
Ēdo rresht e ka koston e vet qė shėnohet me c i. Poashtu ēdo rresht ekzekutohet x herė. P.sh. rreshti parė do tė kontribuojė C1n nė kohėn e ekzekutimit tė pėrgjithshėm. Rreshti i tretė ėshtė koment dhe nuk numėrohet Llogarisim kohėn e ekzekutimit pėr ēdo rresht. T(n) = C1n + C2(n-1) + C4(n-1) + C5(Σ nj=2(t j)) + C6(Σ nj=2(t j - 1)) + C7(Σ nj=2(t j - 1)) + C8(n-1) Siē e dimė nga seritė Σ nj=2(t j) = 2 + 3 +...+ n = (1 + 2 + 3 + ... + n) - 1 = n(n+1)/2 - 1 Ngjajshėm Σ nj=2(t j - 1) = (2 - 1)+ (3 - 1) + ... (n - 1) = 1 + 2 + 3 + ... n - 1 = (n-1)(n-1 + 1)/2 = n(n-1)/2 Pra T(n) = C1n + C2(n-1) + C4(n-1) + C5(n(n+1)/2 - 1) + C6(n(n-1)/2) + C7(n(n-1)/2) +C8(n-1) = (C5/2 + C6/2 + C7/2)n 2 + (C1 + C2 + C4 + C5/2 - C6/2 - C7/2 + C8)n -(C2 + C4 + C5 + C8) Ku shihet qė ėshtė e formės kuadratike an 2 + bn + c Kur n rritet pafund, termi qė kontribuon mė sė shumti ėshtė n 2 prandaj skenari mė i pafavorshėm pėr insertion-sort ėshtė θ(n 2) Algoritmet Rekurzive "Divide and Conquer"Tani do tė analizojme disa algoritme rekurzive tė tipit "Divide and Conquer (D&C)" apo si i bie shqip "Pėrēaj e Sundo". Kėto janė algoritme qė e ndajnė problemin e dhėnė nė dy apo mė tepėr nėn-probleme tė tipit tė njejtė apo ngjajshėm nė mėnyrė rekurzive nė mėnyrė qė tė zgjidhen lehtė dhe pastaj duke i kombinuar ato zgjidhje pėr tė gjetur zgjidhjen e problemit tė dhėnė. Shembull do tė jetė algoritmi i njohur si "binary search", i cili e gjen pozitėn se ku gjindet njė numėr i caktuar nė vektorin i cili si parakusht e ka qė tė ketė numrat tė renditur sipas madhėsisė. Vektori ndahet nė dy pjesė dhe shikohet nėse numri i kėrkuar ėshtė nė mes, nėse jo shikohet nėse ai numėr ėshtė mė i madh apo mė i vogėl se numri nė mes. Nė bazė tė kėtij vendimi, vazhdohet nė pjesėn adekuate tė vektorit, duke e ndarė edhe atė nė dy pjesė nėse ėshtė nevoja. Me kėtė algoritėm shkojmė vetėm nė njė drejtim duke i eliminuar drejtimet tjerė. binarySearch(a, nr , majtas, djathtas) if djathtas < majtas return "Nuk u gjet" mes := floor((majtas+djathtas)/2) if a[mes] = nr return mes else if nr < a[mes] binarySearch(a, nr, majtas, mes-1) else if nr > a[mes] binarySearch(a, nr, mes+1, djathtas)
|
Kompleksiteti i kėtyre algoritmeve zgjidhet pėrmes relacioneve pėrsėritėse D&C (Ang: D&C recurrence relations) ku forma e pėrgjithshme ėshtė f(n) = af(n/b) + g(n) ku a ėshtė numri i nėn-problemeve ndėrsa bėshtė madhėsia e nėn-problemeve. Dhe g(n) ėshtė kompleksiteti shtesė qė i shtohet pėr tė bėrė punė si p.sh. kombinimin e nėn-problemeve pėr tė gjetur problemin kryesor. Nė algoritmin e mėsipėrm kemi tė bėjme me dy njė nėn-problem(a = 1. Vėreni se vetėm njė herė thirret funksioni binarySearch pėr ēdo thirrje, pasi qė thirrjet binarySearch janė tė ndara me strukturat kontrolluese "if-else"),dhe ēdo nėnproblem e zvogėlon n pėr dy herė ( b =2). pra numri i krahasimeve pėr binarySearch do tė jetė T(n) = T(n/2) + 1 Ka mėnyra tė ndryshme se si tė zgjidhet ky relacion pėrsėritės. Ne do ta shfrytėzojmė teoremėn Master (Ang: Master Theorem) pėr zgjidhjen e kėtyre relacioneve. Tė shohim definimin e kėsaj teoreme Teoremė:Le tė jetė f njė funksion rritės qė pėrkrahė kėtė relacion pėrsėritės: T(n) = aT(n/b) + cnk Sa herė qė n = bk, ku k ėshtė numėr i plotė pozitiv, a >= 1, b ėshtė numėr i plotė, mė i madh se 1, ndėrsa c numėr real pozitiv dhe k numėr real jo-negativ. Atėherė:
{ O(nk) , nėse a < bk T(n) = { O(nklog(n)) , nėse a = bk { O(nlogb(a)) , nėse a > bk
|
Kthehmi tash te detyra jonė ku T(n) = T(n/2) + 1 (pra b=2, a=1 dhe g(n) =1, pra k=0 Kjo i pėrket rastit a = b k1 = 2 01 = 1 Qė do tė thotė qė T(n) = O(n 0log(n)) = O(log(n)) Marrim njė shembull tjetėr. Shembull: procedure DC(n) if n <= 1 then return for i := 1 to 8 do DC(n div 2) for i := 1 to n^3 do print i
|
a) Le tė gjindet rendi i T(n) b) Ndryshoni pseudukodin ashtu qė nė unazėn e parė numri 8 ndryshohet nė 9, dhe gjeni rendin e T(n) c) Ndryshoni pseudukodin ashtu qė nė unazėn e parė numri 8 ndryshohet nė 7, dhe gjeni rendin e T(n) a) Relacioni pėrsėritės ėshtė: T(n) = 8 T(n/2) + f(n). Ku f(n) ėshtė O(n 3) dhe a = 8, b = 2, dhe k = 3. Pasi qė 8 = 2 3, kjo i pėrgjigjet O(n 3log(n)) b) Relacioni pėrsėritės ėshtė: T(n) = 9 T(n/2) + f(n). Ku f(n) ėshtė O(n 3) dhe a = 9, b = 2, dhe k = 3. Pasi qė 9 > 2 3, kjo i pėrgjigjet O(n log2(9)) b) Relacioni pėrsėritės ėshtė: T(n) = 7 T(n/2) + f(n). Ku f(n) ėshtė O(n 3) dhe a = 7, b = 2, dhe k = 3. Pasi qė 7 < 2 3, kjo i pėrgjigjet O(n 3) Kjo ishte njė hyrje mbi analizėn e algoritmeve. Burimet: Th.H.Cormen,Ch.E.Leiserso, R.L.Rivest,C. Stein. "Introduction to Algorithms". The MIT Press, second edition, 2001 Keneth H. Rosen. "Discrete Mathematics and its Applications". McGraw-Hill, fifth edition, 2003 Wikipedia.org http://en.wikipedia.org/wiki/Divide_and_conquer_%28computer_science%29 |
| | | Vizitor Vizitor
| Titulli: Re: Programim / Koncepte 22.07.09 3:43 | |
| Operatorėt nė C++ Programim / Koncepte - 13/02/2005 - Shkruar nga: Burim ALIJAJ - | Pėr shtypės | Koment:, Ky shkrim elaboron operatorėt nė C++, prioritetin e tyre. Shkrimi poashtu pėrmban shembuj lidhur me operacionet e rendėsishme.
| Pasi qė njohim ekzistencėn e konstanteve dhe variablave mund tė fillojmė qė tė operojmė me to. Pėr atė arsye, C++ i ofron operatorėt, tė cilėt nė kėtė gjuhė janė tė shumtė. Ėshtė mė rėndėsi ti dijmė sepse janė baza e gjuhės C++.
Operatori i barazimit(=)
Operatori i barazimit shėrben pėr tia caktuar njė vlerė variablės.
ia jep vlerėn 5 variablės a. Pjesa e majtė prej operatorit = ėshtė e njohur si lvalue (vlera e majtė) dhe ajo nė tė djathtė rvalue (vlera e djathtė). lvalue duhet gjithmonė tė jetė variabel ,ku ana e djathtė mund tė jetė konstantė, variabėl. Rezultati i ndonjė operacioni ose i ndonjė kombinimi tė tyre.
Ėshtė e nevojshme qė tė theksojmė se operatori i barazimit gjithmonė vepron nga e djathta kah e majta e kurrė nė tė kundėrten.
vlerėn qė e ka variabla b do ta marr edhe variabla a pavarėsisht se ēfarė vlere ka pasur me herėt. Nė kėtė rast ne jemi vetėm duke ndėrruar vlerėn e variablės a d.m.th nėse ndėrron me vonė vlera e variablės b nuk do tė thotė qė do tė ndėrrojė edhe vlera e variablės a. P.sh nėse e vėshtrojmė kėtė kod:
int a, b; // a:? b:? a = 10; // a:10 b:? b = 4; // a:10 b:4 a = b; // a:4 b:4 b = 7; // a:4 b:7
| do tė na jep rezultatin ashtu qė vlera e a-sė ėshtė 4 dhe ajo e b-sė ėshtė 7. Modifikimi final pėr b nuk ka patur efekte nė a, edhe pse me herėt kemi deklaruar se a = b; (rregullen nga e majta nė tė djathtė).
Njė pėrparėsi qė ka operatori i barazimit (assignation) nė C++ nė krahasim me gjuhet e tjera ėshtė se mund tė pėrdoret nė anėn e djathtė tė shprehjes. Pėr shembull:
prej nga kemi : ēka do tė thotė se: sė pari variabla b merr vlerėn 5 dhe atėherė ia japim vlerėn 2 variablės a plus rezultatin qė e ka marrur variabla b (e cila ėshtė 5), duke pasur rezultatin pėr variablen 7. Prej nga rrjedhė edhe shprehja e cila ėshtė valide nė C++:
ku tė njėjtėn vlerė e marrin tė tri variablat a,b dhe c.
Operatorėt aritmetik ( + , - , * . / . % )
Pesė operatorėt aritmetikorė tė pėrkrahur nga gjuha C++ janė:
+ mbledhja - zbritja * Shumėzimi / pjestimi % mbtetja
| Operatorėt e mbledhjes, zbritjes, shumėzimit dhe pjestimit janė mė se tė qartė ,pasi qė funksioni i tyre lidhet me shenjėn e tyre matematikore qė e kanė.
I vetmi operator i cili ėshtė i panjohur ėshtė ai i mbetjes %, i cili ėshtė paraqitur me shenjėn e pėrqindjes (%). Operatori (%) jep vlerėn e cila mbetet pas pjestimit tė dy numrave p.sh. nėse kemi a=11 % 3;, variabla do tė merr vlerėn 2 pasi qė 2 ėshtė vlera e cila mbetet pas pjestimit tė 11 me 3.
Operatorėt e barazimit tė pėrzierė (+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, I=)
Njė e risi e barazimit nė C++ ėshtė se ka mundėsuar operatorėt e barazimit tė pėrzier(+=, -=, *= dhe /= disa tė tjerė), tė cilėt lejojnė modifikimin e vlerės sė variablės me njėrin nga operatorėt : themelor:
a += 1; ėshtė ekuivalent me a = a + 1; a -= 5; ėshtė ekuivalnet me a = a 5; a /= b; ėshtė ekuivalenet me a = a / b; a *= b+1; ėshtė ekuivalent me a = a*(b+1);
|
Operatorėt e rritjes dhe zbritjes
Njė mėnyrė tjetėr e shkurtimit tė kodit nė C++ ėshtė pėrdorimi i operatorėve rritės operatori (++) dhe operatori zbritės operatori (--). Ku ata janė tė njėjtė me +=1 dhe -=1, respektivisht. prej ku tė gjithė janė tė njėjtė nė funksionin e tyre: tė tretė e rrisin vlerėn e variablės a pėr 1.
Karakteristikė e kėtij operatori ėshtė se mund tė pėrdoret si prefix ose sikur suffix. Kjo do tė thotė se mund tė shkruhet pėrpara identifikuesit tė variablės (++a) ose pas (a++), edhe pse shprehjet (a++) dhe (++a) e kanė tė njėjtin kuptim. Mirėpo nė shprehjet e tjera kur tė kombinohen mund tė kenė dallim nė mes veti. Kėtė mė sė miri do ta ilustrojmė me njė shembull:
shembulli 1
B=3; A=++B; // A ėshtė 4, B ėshtė 4
|
shembulli 2
B=3; A=B++; // A ėshtė 3, B ėshtė 4
| Nė shembullin 1, B ėshtė rritur para se tė ketė marrur vlerėn e variablės B ,variabla A . Nė shembullin 2, variabla A e ka marrur vlerėn e variablės B para se tė jetė rritur ajo e variablės B.
Operatorėt relacional ( ==, !=, >, <, >=, <= )
Nė mėnyrė qė tė bėjmė krahasimin nė mes tė dy shprehjeve mund tė pėrdorim operatorėt relacional. Specifiukuar nga ANSI-C++ standart,rezultati i operatorėve relacional ėshtė njė vlerė bool vlerė e cila mund tė jetė true ose false, e cila rrjedhė nga rezultati i operatorit pėr krahasim.
Ne do tė donim qė tė krahasonim dy shprehje, pėr shembull, pėr tė ditur se cila ėshtė mė e madhe se tjetra. Ja lista e njė numri tė operatorėve relacional qė mund tė pėrdoren nė C++; |
|
| | | Vizitor Vizitor
| Titulli: Re: Programim / Koncepte 22.07.09 3:44 | |
| == Barabartė != Ndryshėm > Me I madh < Me I vogėl >= Me I madh ose I barabartė <= Me I vogėl ose I barabartė Disa shembuj: (7 == 5) //rezultati false. (5 > 4) //rezultai true. (3 != 2) //rezultati true. (6 >= 6) //rezultati true. (5 < 5) //rezultati false
|
Kėtu nė kėto shprehje pėrpos numrave, mund tė pėrdorim cilėndo shprehje valide, duke pėrfshirė edhe variabla. Nėse a=2,b=3 dhe c=6, (a == 5) //rezultati false. (a*b >= c) //rezultati true pasi qė (2*3 >= 6). (b+4 > a*c) //rezultati false pasi qė (3+4 > 2*6). ((b=2) == a) //rezultati true.
|
Duhet vėrejtur se operatori=(shenja e barazimit) nuk ėshtė e njėjtė me ==(dy shenja tė barazimit), operatori i parė ėshtė operatori i barazimit i cili vlerėn e variablės nė anėn e majtė ia jep asaj nė anėn e djathtė ndėrsa operatori == bėnė krahasimin e anės sė djathtė me atė tė majtė se a janė tė barabartė. Prej nga nė shprehjen e fundit (b=2)==a), sė pari kemi dhėnė vlerėn 2 variablės b dhe atėherė kemi bėrė krahasimin e tyre, prej ku kemi marrė edhe rezultatin true. Operatorėt logjik ( !, &&, || ).Operatori ėshtė i njėjtė me boolean operatorin NOT, ka vetėm njė operand nė anėn e majtė, dhe i vetmi funksion qė e kryen ėshtė se e bėnė invertimin e vlerės sė operandit, duke treguar rezultatin false nėse operandi ka vlerėn true dhe do tė tregojė rezultatin true nėse operandi ka pasur vlerėn false. p.sh !(5==5) //rezultati false pasi qė nga shprehja (5==5) kemi rezultatin true !(6<=4) //rezultati true pasi qė (6<=4) ėshtė false. !true //rezultati false. !false //rezultati true.
|
Operatori logjik && dhe || pėrdoren kur dėshirojmė tė vlerėsojmė dy shprehje dhe qė tė fitojmė njė rezultat tė vetem -------------------------------------- | a | b | a && b | a || b | ------------------------------------- |True |True |True |True | |True |False |False |True | |False |True |False |True | |False |False |False |False | --------------------------------------
|
Shembull: ( (5 == 5) && (3 > 6) ) //rezultati false ( true && false). ( (5 == 5) || (3 > 6)) //rezultati true ( true || false).
| Bit operatorėt ( &, |, ^, ~, <<, >> ).Bit operatorėt modifikojnė variablat duke pasur parasysh bitet qė i pėrbėjnė ato nė vlerėn tė cilėn e ruajnė, kjo do tė thotė, formėn e tyre binare ------------------------------------------------- | op | Asm | pėrshkrimi | | & | AND | Logjik AND | | | OR | Logjik OR | | ^ | XOR | Logjik ekskluziv OR | | ~ | NOT | Komplementon (inverton bitat) | | << | SHL | Zhvendosė Majtas | | >> | SHR | Zhvendosė nė tė Djathtė | -------------------------------------------------
| Operatorėt kondicional (?)Operatori kondicional e vlerėson njė shprehje dhe e kthen njė vlerė tjetėr duke u nisur nga shprehja e vlerėsuar, duke e pasur parasysh se a ka vlerėn true ose false. Forma e sė cilės ėshtė kondita ? rezultati1 : rezultati |
nėse kondita ėshtė true shprehja do tė jep rezultatini1, nėse jo atėherė do tė jep rezultati2. Shembull: 7==5 ? 4:3 //rezultati 3 pasi qė 7 nuk ėshtė i barabartė me 5 7==5+2 ? //4:3 rezultati 4 pasi qė 7 ėshtė i barabartė me 5+2 5>3 ? a:b //rezultati a, pasi qė 5 ėshtė mė i madh se 3 a>b ? a:b //rezultai ėshtė mė i madhi, a ose b.
| Operatori sizeof()Ky operator e pranon njė parametėr, qė mund tė jetė tip variable ose vetėm variabėl dhe e kthen madhėsinė nė bajt tė atij tipi tė objektit: Kjo do tia kthejė vlerėn 1 variablės a pasi qė char ėshtė 1 bajt i gjatė. Kjo vlerė tė cilėn e kthen sizeof ėshtė konstante, pra ėshtė gjithmonė e pėrcaktuar para ekzekutimit tė programit. Prioriteti i operatorėveKur tė shkruajm ndonjė shprehje komplekse me shumė operand mund tė vijmė nė dyshim se cili operand do tė merret parasysh mė pėrpara. Pėr shembull, nė kėtė shprehje: Mund tė dyshojmė nė kuptimin e saj: a = 5 + (7 % 2 ) me rezultatin 6, ose a = (5 + 7) % 2 me rezultatin 0
|
shprehja e saktė ėshtė ajo e dyta, me rezultatin 6. Nė C++ ėshtė rregulluar prioriteti i secilit operator. E cila ėshtė e paraqitur nė tabelė: |
| | | Vizitor Vizitor
| Titulli: Re: Programim / Koncepte 22.07.09 3:44 | |
| _______________________________________________________________________________ |Prioriteti | Operatori | Pėrshkrimi | Asocijimi | |_____________________________________________________________________________| |1 | :: | Fushė | I majtė | |_____________________________________________________________________________| |2 | () [ ] -> . sizeof | | I majtė | |_____________________________________________________________________________| |3 | ++ -- | Rritės/zvogėlues | | | |_________________________________________________| | | | ~ | Komplemento nje bit | | | |_________________________________________________| | | | ! | Unary not | | | |_________________________________________________|I djathtė | | | & * | Referencė dhe Dereferencė| | | | | (pointerėt) | | | |_________________________________________________| | | | + - |Unary mbledhja dhe zbritja| | |_____________________________________________________________________________| |4 | * / % | Operacionet aritmetikore | I Majtė | |_____________________________________________________________________________| |5 | + - | Operacionet aritmetikore | I Majtė | |_____________________________________________________________________________| |6 | << >> | Zhvendosja e bitave | I Majtė | |_____________________________________________________________________________| |7 | < <= > >= | Operatorėt relacional | I Majtė | |_____________________________________________________________________________| |8 | == != | Operatorėt relacional | I Majtė | |_____________________________________________________________________________| |9 | & ^ | | Bit operatorėt | I Majtė | |_____________________________________________________________________________| |10 | && || | Operatorėt logjik | I Majtė | |_____________________________________________________________________________| |11 | ?: | Kondicional | I Djathtė | |_____________________________________________________________________________| |12 | = += -= *= /= %= | | | | | >>= <<= &= ^= |= | barazimit | I Djathte | |_____________________________________________________________________________| |13 | , | Presja , Ndarėsi | I Majtė | |_____________________________________________________________________________|
|
Asocijimi definon nė rastin kur kemi shumė operator tė tė njėjtit nivel dhe se i cili duhet qė tė llogaritet mė parė,i majti apo i djathti. Nėse nuk e dimė prioritetin e operatorėve mėnyra mė e lehtė ėshtė qė tė pėrdorim kllapat ( ), Si nė kėtė shembull: Mund tė shkruhet nė dy mėnyra: A = 5 + (7 % 2); ose A = (5 + 7) % 2;
|
Varėsisht se ēfarė operacioni dėshirojmė tė kemi. Pra nėse kemi tė shkruajmė ndonjė shprehje tė komplikuar dhe nuk e dijmė prioritetin e operatorėve ėshtė mirė qė gjithmonė ti pėrdorim kllapat. Mbingarkimi i operatorėveKur i pėrdorim klasat ėshtė e mundur tė definojmė njė kuptim tė ri pėr operatorėt qė ekzistojnė brenda njė objekti tė klasės sė re. Kėto mund tė definohen si anėtare tė funksionit. Por nuk duhet tė pėrdorim mbingarkimin e operatorėve vetėm sepse mundemi. Por duhet ti pėrdorim vetėm pėr tė bėrė programin mė tė qartė. Arsyja pse e bėjmė mbingarkimin e operatorėve.Kur shkruajmė njė klasė, operacionet qė i definojmė do tė shkruhen me njė rregull (funksione). Pėr shembull, pėr tė nxjerrė vlerėn nga njė vektor, kemi definuar funksionin at ashtu qė mundemi tė shkruajmė x = v.at (25). Arsyja pse shpeshėherė bėhet mbingarkimi i operatorėve ėshtė se e bėnė programin mė tė lexueshėm duke pėrdorur kuptime konvencionale pėr operatorėt = =, [], +, ... Me mbingarkimin e operatorit [] mund tė shkruajmė x =v[25] nė vėnd qė tė pėrdorim edhe at funksionin. Se a e rritė lexueshmėrinė e programit apo shkakton me shumė konfuzion, mbingarkimi i operatorėve ėshtė me shumė ēėshtje se me ēfarė teknike e pėrdorim, si do qė tė jetė C++ programerėt pritet qė ti pėrdorin. Operatorėt tė cilėt mund tė mbingarkohen Thuaj se tė gjithė operatorėt mund te ridefinohen, edhe pse nuk ėshtė e mundur tė ndryshojnė vetitė e tyre. Nuk mund tė ridefinohen ::, sizeof, ?:, or.(dot). Nuk ėshtė e mudur tė krijohen operator tė ri, vetėm mund tė mbingarkojmė ata ekzistues. Mbingarkimi i operatorit + nuk e mbingarkon operatorin +=, dhe po ashtu disa operator tjerė tė barazimit. Operatorėt =, [], {}, dhe -> duhet tė jenė anėtarė funksioni nėse mbingarkohen ata. ++ dhe -- duhet tė kenė tretman special. Duhet tė kemi parasysh disa probleme nėse e bėjmė mbingarkimin e operatorit tė barazimit (=) Shembull definimi + pėr point Duke pėrdorur klasėn point, mbledhja mund te definohet nė kėtė mėnyrė: //=== Point.h file ============================= Point operator+(Point p) const; //=== Point.cpp file =========================== Point Point::operator+(Point p) const { return Point(x+p.x, y+p.y); }
//=== myprogram.cpp ============================ Point a(10, 20); Point b(1, 2); Point c = a + b;
|
Definojmė njė funksion i cili fillon me fjalėn operator Dhe atėherė duhet paraprirė operatorit me fjalėn operator. Aty mund tė kėtė hapėsirė nė mes tė operator dhe operator, por zakonisht janė tė shkruara. Operatorėt new() dhe delete()C++ libraria pėr njė kohė te gjatė i ka pasur operatorėt new() dhe delet() nė caktimin dinamik tė memories,duhet cekur se ekziston dallim nė mes tė shprehjes: dhe funksionit: I fundit jo vetėm qė ėshtė pėrdorur pėr tė caktuar njė hapėsirė, pėrmes operatorit new(), por gjithashtu pėr aranzhimin e thirrjes sė konstruktorit pėr objektet individuale nė varg Ndėrsa operatori delete() pėrdoret pėr tė fshirė hapėsirėn e rezervuar. Bibliografia: 1.Learn C++ for 21 day Jesse Liberty 2.Turbo C/C++ - Herbert Schildt 3.C++ Unleashd 1999 Jesse Liberty |
| | | Vizitor Vizitor
| Titulli: Re: Programim / Koncepte 22.07.09 3:46 | |
| Nivelet nė Kod dhe Hierarkia e Blloqeve tė Kodit Programim / Koncepte - 23/10/2004 - Shkruar nga: Ridvan BUNJAKU - | Pėr shtypės | Koment:, Shkruarja e programeve tė bukura, tė lexueshme, tė qarta dhe tė kuptueshme ėshtė art nė vete nė programim. Kėtu do ta prezentohet njė sistem i nivelizimit tė kodit qė e bėn atė tė duket mirė e qartė.
| Programi i shkruar mirė ėshtė i lexueshėm nė atė masė qė tė shihet algoritmi drejtpėrdrejt nga kodi. Shkruarja e programeve tė bukura, tė lexueshme, tė qarta dhe tė kuptueshme ėshtė art nė vete nė programim. Kėtu do ta prezentojmė njė sistem tė nivelizimit tė kodit qė e bėn atė tė duket mirė e qartė. Pėr t'i dalluar pjesėt e programit (klasėt, metodat, urdhėrat) ndėrmjet vete, kodi organizohet nė nivele. Niveli i parė ėshtė niveli i klasės. Klasėt shkruhen nė fillim tė rreshtit, pa u futur fare 'brenda', dmth. pa u shtyrė fare djathtas:
/** TopLevizes e modelon nje top qe leviz */ public class TopLevizes {
}
|
Niveli i dytė, qė ėshtė njė Tab (ose dy karakterė) brenda, ėshtė niveli i metodave dhe i fushave tė klasės (ndryshoreve globale tė klasės):
/** TopLevizes e modelon nje top qe leviz */ public class TopLevizes { private int x_poz; // x-pozita e qendres se topit private int y_poz; // y-pozita e qendres se topit ... /** Konstruktori TopLevizes e konstrukton topin... */ public TopLevizes() {
}
/** rrezjaE e kthen rrezen e topit */ public int rrezjaE() {
} }
|
Niveli i tretė ėshtė edhe njė Tab (ose dy karakterė) djathtas. Ky ėshtė niveli i urdhėrave tė metodave, dmth. i trupave tė metodave:
/** TopLevizes e modelon nje top qe leviz */ public class TopLevizes { private int x_poz; // x-pozita e qendres se topit private int y_poz; // y-pozita e qendres se topit ... /** Konstruktori TopLevizes e konstrukton topin... */ public TopLevizes(int x_fillues, int y_fillues, int r, Kuti kutia) { x_poz = x_fillues; y_poz = y_fillues; rrezja = r; permbajtesi = kutia; }
/** rrezjaE e kthen rrezen e topit */ public int rrezjaE() { return rrezja; } }
| Qe njė grafikon qė e ilustron kėtė organizim:
|--------------------------------------------(niveli i klasės) | public class NdonjeKlase { |--------------------------- (niveli i metodave) | | | public NdonjeKlase() | { |--- (niveli i trupave te metodave) | | | ... | | |--- | } | | | public void ndonjeMetode() | { |--- (niveli i trupave te metodave) | | | ... | | | ... | | |--- | } | | | |---------------------------- } |----------------------------------------------------
|
|
|
| | | Vizitor Vizitor
| Titulli: Re: Programim / Koncepte 22.07.09 3:46 | |
| Urdhėrat e Pėrbėrė Urdhėra tė pėrbėrė kėtu i quajmė ata urdhėra qė nė vete mund tė ngėrthejnė bllok urdhėrash. Tė tillė janė: if, while, for. Ideja e pėrgjithshme ėshtė qė fjala kyēe e urdhėrit (if, while, pėrkatėsisht for) tė mos ketė urdhėra tė trupit tė vet nėn tė, por qė trupi tė jetė i shtyer djathtas mjaft. Me fjalėn 'trup', kėtu e quajmė bllokun e urdhėrave, domethėnė urdhėrat qė ndodhen brenda kllapave gjarpėrore. Urdhėri if Urdhėri if...else... if ( ... ) { | | ... | } else { | | ... | }
|
Urdhėri while while ( ... ) { | | ... | }
|
Urdhėri for for ( ...; ...; ... ) { | | ... | }
| Rregulla e njėjtė duhet tė ruhet edhe kur kemi urdhėr tė pėrbėrė pėrbrenda njė urdhėri tjetėr tė pėrbėrė: if ( ... ) { while ( ... ) { | | ... | } } else { for ( ...; ...; ... ) { | | ... | } }
|
Ngjashėm veprohet pėr tė gjitha kombinimet e urdhėrave. Tash ėshtė mė e qartė pse pėrdoren vetėm dy karakterė pėr t'i dalluar nivelet. Po tė pėrdorim mė shumė, pėr shembull tre ose katėr karakterė, urdhėrat e brendshėm na shkojnė shumė djathtas dhe na dalin prej pamjes. Dy karakterė mjaftojnė pėr ta dalluar nivelin nga niveli. Po pėrsėrisim edhe njėherė se kodi i shkruar bukur ėshtė i qartė, vetė-shpjegues pėr tė gjithė ata qė e shikojnė, duke e pėrfshirė edhe vetė autorin e tij. |
| | | Vizitor Vizitor
| Titulli: Re: Programim / Koncepte 22.07.09 3:47 | |
| PHP dhe MySQL (Rivizituar) Programim / Koncepte - 05/09/2004 - Shkruar nga: Krenar KOMONI - | Pėr shtypės | Koment:, PHP teknologjia pėr skriptim nga ana e serverit tė faqeve dinamike dhe programeve sė bashku me bazėn e shėnimeve MySQL shumė mė shumė po pėrdoren nga profesionalistėt dhe korporatat pėr zgjidhėn e shumė aspekteve. Ky shkrim do tė mbulon njė hyrje tė shkurtėr mbi PHP, hyrje tė shkurtėr mbi MySQL, disa funksione nė PHP edhe nė MySQL, dhe bashkėpunimin mes PHP e MySQL.
| Autorėt:
Betim Deva <>
Krenar Komoni <>
Hyrje
Mesiguri se jeni tė njohur me HTML dhe me mėnyrėn se si zhvillohen web faqet tė cilat informatat (tekstin) i ruajnė nė mėnyrė statike. Nė web faqet statike, informatat shkruhen brenda kodit tė HTML nė mėnyrė manuale (ang. hardcode). Tek kėto web faqe, sa herė qė kishim nevojė tė ndryshojmė diēka, edhe vetėm njė shkronjė tė vetme nė tekst, ėshtė nevojitur tė bėhet ndryshimi i html skedarit nė mėnyrė manuale. Kjo menyre shpesh herė ėshtė e mundimshme dhe e papėrshtatshme. Nė kėtė shkrim tė shkurtėr, do tė bejme fjalė se si tė arrijmė tė bėjmė njė web faqe dinamike, qė do tė thotė se teksti do tė nxirret dinamikisht nga baza e shėnimeve dhe do tė shfaqet nė shfletuesin e webit (ang. web browser) tuaj. Esenca ėshtė qė tė krijohen skriptat tė cilat do tė lidhen pėr serverin e bazave tė shėnimeve dhe tė nxerrin informatat e nevojshme. Ato informata do tė futen nė tag-at e caktuar tė HTML dhe si tė tillė, do tė paraqiten nė shfletuesin e klientit.
Nė kėtė shkrim, ne do tė bėjmė fjalė pėr gjuhėn skriptuese PHP dhe pėr bazen e shėnimeve MySQL, tė cilat sė bashku bėjnė njė kombinim perfekt sa i pėrket web aplikacioneve.
Ēka ėshtė PHP?
PHP (www.php.net) ėshtė gjuhė skriptuese e dedikuar pėr tė zhvilluar web aplikacione. PHP (PHP ėshtė shkurtese rekurzive e "Hypertext Preprocessor") ėshtė njėra ndėr gjuhet mė tė pėrhapura skriptuese qė janė tė bazuara nė burimet e hapura (Open Source). Interpreteri i PHP-sė ėshtė i shkruar per shume sisteme operative si Linux, Unix (duke pėrfshirė HP-UX, Solaris dhe OpenBSD), Mac OS X, Novel, OS/2, e Windows, qė do tė thotė se i njejti PHP kod do tė ekzekutohet nė tė gjithe serverėt e lartepėrmendur pothuajse pa ndonjė ndryshim nė te. Fuqinė mė tė madhe PHP e ka arritur nė web aplikacione. Kompanitė mė tė mėdhaja qė janė tė bazuara nė burimet e hapura kanė migruar apo janė duke migruar nė PHP. Nė kėtė shkrim do tė flasim prej perspektivės sė Linux-it, edhe pse esenca ėshtė e njejtė pėr tė gjitha sistemet operative. Ajo ēka e bėn PHP tė perhapur ėshtė se mund tė shkruhen aplikacione te vyeshme me mė pak punė se gjuhet tjera qė bėjnė punė tė ngjajshme, si dhe numri i madh e bazave te shėnimeve qė i perkrah si: MySQL, PostgreSQL, mSQL, MS-SQL, Sybase, Oracle, ODBC, dBase etj.
Ekzistojnė 3 fusha ku PHP mund te pėrdoret.
- Pėrdoret nė web servera ku kodi ekzekutohet nė server (ang. server side scripting) dhe klientit i kthehen rrezultatet si html ne shfletuesin e webit (ang. web browser).
- Me PHP mund tė shkruhen programe qė do te ekzekutohen nė "command line", dmth e tėra qe na nevojitet ėshtė interpreteri dhe shelli. Njė gjuhe skriptuese qė ėshtė e pėrshtatshme pėr kete punė ėshtė Perl.
- PHP pėrdoret edhe pėr shkruarjen e aplikacioneve me grafike (GUI) qė pėrdoren nėpėr makina te klientėve. Aplikacionet e kryera jane multi-platformike qė do tė thotė se punojnė nė shume sisteme operative me pothuajse kurrėfare ndryshimi nė kod. Pėr tė bėrė kėtė nevojitet PHP-GTK shtesa. Megjithatė PHP pėrdoret shumė pak sa i perket kėtij drejtimi.
Ne do tė fokusohemi nė fushen e parė, dmth. do te perdorim PHP pėr tė shkruajtur web-aplikacione. PHP ėshtė gjuhė interpretuese, qė do tė thotė se kėtu nuk ka nevojė qė kodi tė kompilohet. Interpretimi i kodit bėhet nga interpreteri sa herė qė ne e kėrkojmė faqen. Qė tė testojmė programet e shkruara nė PHP, na nevojiten: Web serveri qė e ka interpreterin ("PHP parser" si CGI apo modul i serverit, por zakonisht pėrdoret si modul) si dhe "web browser-i" (apo internet shfletuesi).
Interpreteri i PHP-sė e interpreton kodin e shkruar nė kėtė gjuhe. Qė ta thjeshtojmė esencėn e kėsaj gjuhe do tė marrim njė shembull bazik. Themi se e kemi nje skedar me emrin index.php nė web server. Nėse e kėrkojmė kėtė skedar pėrmes web-it (psh. pėrmes protokollit HTTP): http://serverijuaj/index.php atėherė web serveri sendin e parė qė do ta ben ėshtė ta shikon mbaresėn qė nė kėtė rast ėshtė "php". Menjėherė pas indentifikimit qė tipi i skedarit ėshtė "php", serveri ėshtė i gatshėm ta interpretojė atė kod duke e pėrdorur modulin pėrkatės. Pasi qė kodi interpretohet, tė gjitha rezultatet (nėse ka) do tė shfaqen nė "web browser".
Pas ekzekutimit te kėtij kodi nga serveri, nė internet shfletuesin tonė do tė shfaqet teksti "Tung pr-tech"
printf("Tung pr-tech"); ?> |
Faktikisht funksioni "printf" e ka kryer punėn e vetė nė server dhe neve na ka dėrguar vetėm "Tung pr-tech". Ketu ėshtė dallimi kyē i gjuhėve qė ekzekutohen nė server (si PHP) me ato qė ekzekutohen nė klient (si Javascript). Pra PHP bėn tė gjitha operacionet nė server, dhe klientit ia dėrgon vetėm tekstin e dėshiruar, ndėrsa javascript ekzekuton tė gjitha operacionet nė anėn e klientit. Tė ndalemi kėtu pak dhe tė krahasojmė se ēfarė tė mira na sjellin gjuhėt qė ekzekutohen nė server.
- Kodi ėshtė i centralizuar - Kodi ėshtė i mbrojtur dhe klienti nuk ka qasje nė te. - Nė server bėhen vendime se me ēka tė shėrbehet klienti. - Tė gjitha ndryshimet qė bėhen nė kod, vėrehen te tė gjithe klientet nė tė njejtėn kohė. - Shumė i dobishėm pėr baza tė shėnimeve
Gjuhėt qė ekzekutohen tek klienti siē ėshtė javascript nuk i pėrkahin kėto mundėsi sepse kodi shkarkohet tek klienti dhe i gjithė ekzekutimi bėhet nė "web browserin" e klientit
Sa i pėrket sintaksės, PHP sintaksėn e huazon prej gjuhėve si C, Java e Perl. Nėse keni punuar mė heret nė C me gjėrat bazike, llogariteni se 60% tė PHP e zotėroni.
Tė shohim njė shembull tė thjeshtė.
index.php -------------------------------------
Koka
$a = 3; $b = 5; $c = $a + $b; echo "$a + $b = $c"; ?>
|
Pas ekzekutimit tė mesipėrm, nė "web browserin" (shfletuesin) tuaj do tė paraqitet 3+5=8, apo nėse shikoni burimin e kėsaj php faqeje (nė shfletuesin tuaj bėni "view source"), ju do tė shihni:
index.php tek klienti -------------------------------------
Koka
3 + 5 = 8
|
Kjo ishte sa pėr tė dhėnė njė ide se ēfarė bėn PHP.
Ne do tė supozojmė se ju veē keni punuar me ndonjė gjuhė tjetėr programuese kėshtuqė mė poshtė do tė njihemi shkurtimisht me kodin e php.
Ēdo kod i php-sė duhet futur brenda "tag-ave" , apo nėse planifikojmė qė ta integrojmė PHP nė XML atėherė kodin e fusim nė mes tė "tag-ave" PHP ėshtė "case-sensitive" dmth. variabla $emri ėshtė e ndryshme nga $Emri; Sikur edhe C, PHP-ja i injoron hapėsirat e zbrazėta (hapėsirat, rreshti i ri, tab-at) nė mes komandave. Komentet e rreshtit nė PHP bėhen me "//" Komentet qė perfshijnė me shumė rreshta futen nė mes tė "/*" dhe "*/"
/* komenti 1 komenti 2 komenti 3 */ $qyteti="Prishtina"; $vendi="Shqiptaria";
$qyteti="Prishtina" //Komenti
?>
|
|
|
| | | Vizitor Vizitor
| Titulli: Re: Programim / Koncepte 22.07.09 3:47 | |
| Ēdo variabėl nė php pėrmban simbolin "$" pėrpara. P.Sh. $vendi = "Iliria"; $viti_i_lindjes_se_skenderbeut = 1405; ?>
|
Njė gjė qė po e vėreni ėshtė se nė PHP nuk ka nevojė tė deklarohet "data type" (tipi) i variablave si nė C. Nėse vleren e fusim nė thonjėza si tek variabla $vendi, atėherė menjėherė dihet se ajo variabėl pėrmban string, ndėrsa variabla $viti_i_lindjes_se_skenderbeut identifikohet menjehere si integer (numėr i plotė). KushtetSikur nė C, struktura IF ėshtė e njejtė <html> <head><title>Kushtettitle>head> <body>
$numri1 = 11; $numri2 = 5; if( $numri1 == $numri2){ printf("$numri1 dhe $numri2 jane te barabarte"); } else if( $numri1 < $numri2) { printf("$numri1 ėshtė me i vogel se $numri2"); } else { printf("$numri1 ėshtė me i madh se $numri2"); } ?>
|
|
|
|
|