You are on page 1of 30

ALGORITMIKE

Leksion 1

Ne kete leksion
I. Cfare eshte nje algoritem II. Paraqitja e algoritmeve
A. B. C. D. Pseudokodi Veprimet Sekuenciale Veprimet Kushtezuese Veprimet Iterative

III.Shembuj

Cfare eshte nje algoritem?


Cfare eshte nje algoritem?

Nje varg instruksionesh qe zgjidhin nje problem Nese mund te percaktojme nje algoritem, mund te automatizojme zgjidhjen Nje agjent kompjuterik (robot, kompjuter) mund te interpretoje dhe te ekzekutoje instruksione per te zgjidhur problemin

Pse jane algoritmet te rendesishem?

Perkufizimi i Algoritmit
Nje varg mire-renditur. . . veprimesh te mire-percaktuara (jo te dykuptimta) dhe qe mund te llogariten sakte. . . qe prodhon nje rezultat. . . dhe ndalon ne nje kohe te fundme.

A eshte ky nje Algoritem?


Te shtohet miell derisa brumi te jete i forte Te perzihet dhe te pritet ne forma Te piqet ne nje furre me ngrohtesi mesatare derisa te marre nje ngjyre kafe te lehte. Te lihet te ftohet

Jo! Pse? Ndihme: A eshte ai i mire-percaktuar?


5

A eshte ky nje Algoritem?


Vendosni nje sasi te vogel me shampo ne floke Masazhojeni koken per rreth nje minute Shperlarjeni mire Perseriteni Jo! Pse? Ndihme: A eshte ai i mire-renditur?
6

Si ndertohen algoritmet?
Instruksione Sekuenciale

ekzekutohen ne rendin e dhene ekzekutohen nese plotesohet nje kondite ekzekutohen derisa te plotesohet nje kondite

Instruksione Kushtezuese
Instruksione Iterative

Figure 8-7

Skema per tri format?

Figure 8-8

Pseudokodi per tri format?

A duhet ti paraqesim algoritmet ne Gjuhe Natyrale ?


Shembull
Fillimisht, jepini variablit m vleren 0 dhe variablit i vleren 0. Me pas, filloni ciklin derisa i te jete me i madh se m-1. Ne cikel, mbidhni vlerat e dy vektoreve a dhe b

Pro

Kunder

+ Familjar - Paraqitje verbale - I pasakte, mund te kete interpretime te


ndryshme

10

terma te Gjuheve Formale te Programimit?


Shembull
{ int i, m, carry int [] a = new int[100]; int [] b = new int[100]; int [] c = new int[100]; m = Consolte.readInt(); for (int j = 0; j <= m-1; j++) { } Pro + Preiz dhe i mire-percaktuar + Ne fund do te progamohet ne keto gjuhe programimi Kunder - Mund te jete nivel teper i ulet (shume i detajuar) per

A duhet ti paraqesim algoritmet ne

dizenjim algoritmesh Detajet e sintakses jane te lodhshme


11

A duhet ti paraqesim algoritmet ne Pseudokod?


Shembull
Hapi 1: vendos vleren e carry ne 0 Hapi 2: vendos vleren e i ne 0 Hapi 3: merr vlerat e vektoreve a dhe b dhe gjatesine e tyre m Hapi 4: perserit hapat 5 dhe 6 derisa i >= m-1

Pro

- Nje kompromis i mesem - Ngjan me disa gjuhe programimi popullore - I lexueshem - Relativisht i lire nga rregullat gramatikore - Perfshihen vetem shprehje te mire-percaktuara - Nje gjuhe programimi pa detaje Kunder?
12

Veprimet sekuenciale
Vleredhenie variablash

Jepi a-se vleren b + 4

Krijim dhe input variablash Output i variablave


Printo vleren e c-se

-a dhe b jane variabla, te cilet mund te mendohen si vende ne memorie per vlerat

Merr vlerat per a dhe b

Krijim i listave dhe inicializim i vlerave te tyre

Shenim: L1 akseson elementin e pare te listes, L2


elementin e dyte, e keshtu me rradhe.
13

Merr vleren n dhe listen e elementeve integer L1 Ln

Veprimet Kushtezuese
Zgjidh nje bashkesi shprehjesh per tu ekzekutuar, bazuar ne rezultatin verteterreme te nje test:
Nese [Kushti vertete-rreme eshte i vertete] Atehere Ekzekuto nje bashkesi shprehjesh Perndryshe Ekzekuto nje tjeter bashkesi shprehjesh

Shprehjet kushtezuese jane vertete te rendesishme sepse ato na lejojne te marrim vendime bazuar ne vlerat e variablave
14

Operatoret Logjike perdoren ne Shprehjet Kushtezuese


Operatori
= <> < <= > >=

Kuptimi
I barabarte me I ndryshem nga Me i vogel se Me i vogel ose i barabarte me Me i madh se Me i madhe ose i barabarte me

and
or

Dhe logjike
Ose logjike

15

Veprimet Iterative (Ciklet)


Ekzekutojne nje bashkesi shprehjesh ne menyre te perseritur Tre forma te pergjithshme:
(1)For count = n to m do steps (2)While [true-false condition (3)Do
Execute set of statements While [true-false condition is true]

x to y is true] do steps x to y

Cikli for eshte me pak fleksibel, me i thjeshti nga ana konceptuale Ciklet while dhe do-while jane me fleksibel dhe me te fuqishem; ndryshimi i vetem eshte se kur vleresohet kushti vertete-rreme: perpara apo pas ciklit) while count <= 100 [statements] endwhile do [statements] while count < 100 (supozohet se variabli count rritet ne do cikel)
16

Krahasimi i cikleve While dhe Do-While


Marrim problemin e meposhtem: Te ngrihet x ne fuqi y (supozo qe y eshte jonegative) Versioni me cikel While
Get the values for x and y set result to 1 while (y > 0) set result to result * x set y to y 1 endwhile print result

Versioni me cikel Do while


Get the values for x and y set result to 1 do set result to result * x set y to y 1 while (y > 0) print result

Shenim: Ka nje gabim ne versionin me cikel do-while. Cili eshte?


17

Fuqia e Algoritmeve
Kombinimi i shprehjeve mund te jete kompleks

Prova te mirenjohura nga shkenca kompjuterike teorike tregojne qe nese nje problem mund te zgjidhet ne menyre algoritmike, ai mund te zgjidhet duke perdorur vetem veprime sekuenciale, kushtezuese dhe iterative!

Ciklet dhe kushtezimet mund te nderfuten te njeri-tjetri Blloqet e cikleve ose te shprehjeve kushtezuese mund te jene sekuenca te gjata shprehjesh komplekse

Pseudokodi mund te llogarise do gje qe eshte e llogaritshme!


18

Shembull i Zgjidhjes Algoritmike te Problemit: Kerkimi


Problemi: Gjeni vleren e dhene ne nje liste vlerash (psh, nje emer nje numrator telefonik) Inputi: Nje vlere e dhene (psh, Smith) dhe nje liste vlerash N1, N2, . . ., Ni. Outputi i Deshiruar: i vertete nese gjendet vlera e dhene dhe pozicioni i vleres se pare te gjetur ne liste, ose i rreme ne te kundert Percaktimi i nje strategjie zgjidhjeje quhet zbulim i algoritmit dhe eshte pjesa me sfiduese e ketij kursi!
19

Shembull i Zgjidhjes Algoritmike te Problemit: Kerkimi (vazhdim)


Strategji te mundshme zgjidhjeje: Kerko listen ne menyre sekuenciale
Get the value of i and the string values of N1..i Get the string value of target set num to 1 set found to false while (found = false) if target = Nnum set found to true else add 1 to num endwhile print "the target was found A do te funksionoje kjo zgjidhje? Pse ose Pse jo?
20

Shembull i Zgjidhjes Algoritmike te Problemit: Kerkimi (vazhdim)


Rishikohet strategjia e zgjidhjes: kerko listen ne menyre sekuenciale dhe informo perdoruesin nese vlera nuk gjendet
Get the value of i and the string values of N1..i Get the string value of target set num to 1 set found to false while (found = false and num <= i) if target = Nnum set found to true else add 1 to num endif endwhile if found = true print "Target was found else print "Target was not found." endif
21

Shembull i Zgjidhjes Algoritmike te Problemit: Kerkimi (vazhdim)


Pse e kerkuam listen ne menyre sekuenciale? A kerkohet keshtu nje emer ne nje numrator telefonik? Natyrisht qe jo! Nje numrator telefonik eshte i alfabetizuar dhe kjo ju mundeson qe ti gjeni emrat me shpejt Cfare algoritmi perdoret per te kerkuar ne nje numrator telefonik? Eshte i ndryshem nga algoritmi sekuencial qe sapo pame dhe Menyra se si jane organizuar te dhenat mund te percaktoje se cili lloj algoritmi eshte i pershtatshem Me vone do te shohim nje algoritem kerkimi me efikas qe perdoret ne lista te renditura (kerkimi binar)
22

ndoshta me efikas

Shembull: Gjetja e shumes dhe e mesatares se vlerave ne nje liste



Input: nje liste me vlera numra te plote pozitive N1, N2, . . ., Ni Outputi i deshiruar: shuma dhe mesatarja e vlerave ne liste Strategjia e zgjidhjes

- Vizito

ne menyre sekuenciale do vlere ne liste, duke mbajtur nje variabel Sum qe ruan shumen Ne perfundim te ciklit, pjesto shumen me numrin e elementeve te listes per te gjetur mesataren
23

Shembull: Gjetja e shumes dhe e mesatares se vlerave ne nje liste (vazhdim)

Algoritmi
Get the values of i and V1..i set sum to 0 set current to 1 while current <= i Do add Vcurrent to sum add 1 to current endwhile print Sum: " and sum print Average: and sum / i
24

Zgjidhja Algoritmike e Problemeve


Problemi: Zhvendosni vleren qe ndodhet ne pozicionin e pare te nje liste, ne pozicionin e fundit ne liste, duke i zhvendosur te gjitha vlerat me nje pozicion majtas Input:

Outputi i Deshiruar:

i (numri i vlerave) V1, , Vi (lista e vlerave)

Strategjia e zgjidhjes: Shkembe vendet e te dhenave fqinje ne menyre te njepasnjeshme


25

Lista V ku Vi = V1, Vi-1 = Vi, Vi-2 =Vi-1, etj.

Zgjidhja Algoritmike e Problemeve


Algoritmi
get the values of i and V1..i set current to 1 while current < i do swap Vcurrent with Vcurrent+1 add 1 to current end while

26

Permbledhje: Pseudokodi
Pseudokodi eshte nje gjuhe fleksibel per zgjidhjen algoritmike te problemeve

Duket shume si gjuhe natyrale, por eshte me i strukturuar Duket pak si gjuhe programimi por eshte me fleksibel Si mund ta dini nese ajo qe keni shkruar eshte shkruar sakte ne pseudokod?

- Nese

dikush tjeter mund ta lexoje ate qe keni shkruar dhe ta ekzekutoje ate hap-pas-hapi, atehere me siguri ai eshte i vlefshem.
27

Permbledhje: Variablat dhe Listat


Variablat jane hapesira ne memorie (kontenitoresh) qe ruajne vlerat Ato mund te mbushen me vlera ne dy menyra:

Input nga perdoruesi (psh: merr vleren e n-se) Shprehje vleredhenieje (psh: jepi n-se vleren n + 1)

Listat jane vargje hapesirash ne memorie qe mund te aksesohen nepermjet nje indeksi

Per nje liste L me n qeliza, L1 akseson qelizen e pare, L2 qelizen e dyte, Ln akseson qelizen e n-te

28

Si behet zgjidhja algoritmike e problemeve: Nje Proces i Pergjithshem Hapi 1: Percakto variablat e nevojshem dhe inicializoji ato, shpesh nepermjet inputit te perdoruesit Hapi 2: Kryej llogaritjet Hapi 3: Afisho rezultatet, shpesh nepermjet shprehjeve te printimit
29

Pyetje

30

You might also like