You are on page 1of 30

1

ALGORITMIKE



Leksion 1
2
Ne kete leksion

I. Cfare eshte nje algoritem
II. Paraqitja e algoritmeve
A. Pseudokodi
B. Veprimet Sekuenciale
C. Veprimet Kushtezuese
D. Veprimet Iterative
III.Shembuj


3
Cfare eshte nje algoritem?
Cfare eshte nje algoritem?
Nje varg instruksionesh qe zgjidhin nje
problem
Pse jane algoritmet te rendesishem?
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
4
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.
5
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?
6
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?
7
Si ndertohen algoritmet?
Instruksione Sekuenciale
ekzekutohen ne rendin e dhene
Instruksione Kushtezuese
ekzekutohen nese plotesohet nje kondite
Instruksione Iterative
ekzekutohen derisa te plotesohet nje
kondite
8
Figure 8-7
Skema per tri format?
9
Figure 8-8
Pseudokodi per tri format?
10
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
+Familjar
Kunder
- Paraqitje verbale
- I pasakte, mund te kete interpretime te
ndryshme
11
A duhet ti paraqesim algoritmet ne
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
dizenjim algoritmesh
- Detajet e sintakses jane te lodhshme
12
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?
13
Veprimet sekuenciale
Vleredhenie variablash
Jepi a-se vleren b + 4
-a dhe b jane variabla, te cilet mund te mendohen si vende
ne memorie per vlerat
Krijim dhe input variablash
Merr vlerat per a dhe b
Output i variablave
Printo vleren e c-se
Krijim i listave dhe inicializim i vlerave te tyre
Merr vleren n dhe listen e elementeve
integer L
1
L
n
Shenim: L
1
akseson elementin e pare te listes, L
2

elementin e dyte, e keshtu me rradhe.
14
Veprimet Kushtezuese
Zgjidh nje bashkesi shprehjesh per tu
ekzekutuar, bazuar ne rezultatin vertete-
rreme 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
15
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 Dhe logjike
or Ose logjike
16
Veprimet Iterative (Ciklet)
Ekzekutojne nje bashkesi shprehjesh ne menyre te
perseritur
Tre forma te pergjithshme:
(1)For count = n to m do steps x to y
(2)While [true-false condition is true] do steps x to y
(3)Do
Execute set of statements
While [true-false condition is true]
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)

17
Krahasimi i cikleve While dhe Do-While
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?
Marrim problemin e meposhtem:
Te ngrihet x ne fuqi y (supozo qe y eshte jonegative)

18
Fuqia e Algoritmeve
Kombinimi i shprehjeve mund te jete kompleks
Ciklet dhe kushtezimet mund te nderfuten te
njeri-tjetri
Blloqet e cikleve ose te shprehjeve kushtezuese
mund te jene sekuenca te gjata shprehjesh
komplekse
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!
Pseudokodi mund te llogarise do gje qe eshte e
llogaritshme!
19
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 N
1
, N
2
, . . ., N
i
.
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!
20
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 N
1..i
Get the string value of target
set num to 1
set found to false
while (found = false)
if target = N
num

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?

21
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 N
1..i
Get the string value of target
set num to 1
set found to false
while (found = false and num <= i)
if target = N
num

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


22
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
ndoshta me efikas
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)
23
Shembull: Gjetja e shumes dhe e
mesatares se vlerave ne nje liste

Input: nje liste me vlera numra te plote
pozitive N
1
, N
2
, . . ., N
i


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
24
Shembull: Gjetja e shumes dhe e
mesatares se vlerave ne nje liste (vazhdim)
Algoritmi
Get the values of i and V
1..i
set sum to 0
set current to 1
while current <= i Do
add V
current
to sum
add 1 to current
endwhile
print Sum: " and sum
print Average: and sum / i
25
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:
i (numri i vlerave)
V
1
, , V
i
(lista e vlerave)
Outputi i Deshiruar:
Lista V ku V
i
= V
1
, V
i-1
= V
i
, V
i-2
=V
i-1
, etj.
Strategjia e zgjidhjes: Shkembe vendet e te
dhenave fqinje ne menyre te njepasnjeshme
26
Zgjidhja Algoritmike e Problemeve
Algoritmi

get the values of i and V
1..i
set current to 1
while current < i do
swap V
current
with V
current+1
add 1 to current
end while
27
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.
28
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, L
1
akseson qelizen e
pare, L
2
qelizen e dyte, L
n
akseson qelizen e n-te
29
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
30

Pyetje