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