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.
Download
Report
Transcript 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.
ALGORITMIKE
Leksion 1
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
2
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
3
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.
4
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
Instruksione Kushtezuese
ekzekutohen nese plotesohet nje kondite
Instruksione Iterative
ekzekutohen derisa te plotesohet nje
kondite
7
Figure 8-7
Skema per tri format?
8
Figure 8-8
Pseudokodi per tri format?
9
A duhet t’i 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
ndryshme
10
kete interpretime te
A duhet t’i 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
+ Preçiz 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
11
A duhet t’i 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
-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
Printo vleren e c-se
Merr vleren n dhe listen e elementeve
integer L1 … Ln
Output i variablave
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
Veprimet Kushtezuese
Zgjidh nje bashkesi shprehjesh per t’u
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
Dhe logjike
or
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
x to y
is true] do steps x to y
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)
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
Versioni me cikel Do 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
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
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!
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 t’i 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)
22
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:
i (numri i vlerave)
V1, … , Vi (lista e
vlerave)
Outputi i Deshiruar:
Lista V ku Vi = V1, Vi-1 = Vi, Vi-2 =Vi-1, etj.
Strategjia e zgjidhjes: Shkembe vendet e te
dhenave fqinje ne menyre te njepasnjeshme
25
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