You are on page 1of 13

Leksione të Algoritmikës 2.

Paraqitja e algoritmave

Kapitulli 2. Paraqitja e algoritmave

2.1 Koncepti i primitivës


2.2 Paraqitja e algoritmave me anë të Pseudo-kodit
2.3 Të dhënat dhe organizmi i tyre
2.4 Instruksionet dhe organizimi i tyre
2.5 Procedura
2.6 Rregullat e përgjithshme të paraqitjes se algoritmit

Në këtë kapitull do të trajtohen çështjet që lidhen me paraqitjen e një algoritmi. Në


literaturë përmenden katër mënyra të ndryshme të paraqitjes së algoritmave:

1. Forma e hapave (step-form)


2. Pseudo-kodi (pseudocode)
3. Bllok-skema (flowchart)
4. Diagrama e Nassi-Schneiderman (Nassi-Schneiderman diagrams)

Dy mënyrat e para janë trajta të shkruara, tekstore. Në leksionin e parë u paraqitën


disa algoritma. Paraqitja e tyre u krye me mënyrën e quajtur Forma e hapave (Step-
Form). Forma e hapave është një gjuhë krejt normale. Problemi kryesor me gjuhën
normale është se ajo mund të jetë e pasaktë. Nga ana kuptimore ajo që shkruajmë mund të
mos jetë e njëjtë me atë që lexojmë. Pseudo-kodi gjithashtu është i ngjashëm me gjuhën
njerzore por tendon drejt saktësisë duke përdorur një fjalor të kufizuar. Dy mënyrat e
fundit janë të orientuara drejt paraqitjes grafike duke përdorur simbole gjeometrike dhe
gjuhën për të shprehur zgjëdhjen, përsëritjen dhe sekuencat.

2.1 Koncepti i primitivës

Kanalet natyrale të komunikimit nuk mund të përdoren për të paraqitur algoritmet mbasi
mund të mbajnë qoftë ndonjë paqartësi qoftë edhe se terminologjia e përdorur mund të
ketë më tepër se një kuptim. Për shëmbull fraza “Të shkosh për vizitë tek nipat mund të
jetë acaruese” mund të tregojë ose se nipat mund të shkaktojnë probleme kur i takon ose
se rruga për të vajtur deri tek ata mund të jetë problematike. Vështirësitë gjithashtu mund
të burojnë edhe nga një kuptim jo i saktë i nivelit të detajeve të kërkuara.
Algoritmika i përballon këta probleme duke përcaktuar një bashkësi të përcaktuar të
komponenteve themelore, që duke u nisur prej tyre, mund të ndërtohet algoritmi. Këto
komponente themelore quhen primitiva. Duke u dhënë kuptime të sakta primitivave,
eleminohen problemet e paqartësisë; ndërkaq duke kërkuar që algoritmat të përshkruhen
në funksion të këtyre primitivave vendoset një nivel uniform detajimi. Një bashkësi e
primitivave dhe e rregullave që spjegojnë se si të kombinohen këta primitivë për të
paraqitur ide më të ndërlikuara përbën gjuhën e programimit.
Çdo primitivë përbëhet nga dy pjesë: nga sintaksa dhe nga semantika. Sintaksa ka të
bëjë me paraqitjen simbolike të primitivës dhe semantika me kuptimin e saj. P.sh. fjala
ajër nga pikpamja sintaksore është e formuar nga katër shenja, ndërsa nga pikpamja
semantike është përmbajtja gazore që rrethon tokën.
Për të përftuar një bashkësi primitivash për të paraqitur algoritmat mund të përdoren
instruksionet bazë të procesorit të kompjutërit, të cilat ai është në gjëndje t„i ekzekutojë.
Në se një algoritëm shprehet në këtë nivel detajimi, sigurisht rezulton në një program të

Prof. Dr. Dhimitri Tole 1 / 13


Leksione të Algoritmikës 2. Paraqitja e algoritmave

gatshëm për ta ekzekutuar nga makina. Megjithatë të shprehesh algoritmet në këtë


mënyrë është shumë shtërnguese. Prandaj zakonisht përdoret një bashkësi primitivash “në
një nivel më të lartë”, secila prej të cilave është një instrument abstrakt i përcaktuar nga
primitiva të nivelit më të ulët që furnizon gjuha e makinës. Rezultati është një gjuhë
komunikimi formale në të cilën algoritmat mund të shprehen në një nivel konceptual më
të lartë në krahasim me gjuhën e vërtetë të makinës.

2.2 Paraqitja e algoritmave me anë të Pseudo-kodit

Procesi i projektimit të një algoritmi kompleks kërkon që projektuesi të mbajë gjurmën e


një numri të madh veprimesh: një detyrë që mund ta tejkalojë kapacitetin e mendjes
njerëzore. Prandaj projektuesi i algorimit kompleks ka nevojë për një mënyrë të thjeshtë
për të regjistruar dhe për të thirrur në mendje pjesë të ndryshme të algoritmit në zhvillim.
Fillimisht, në vitet 1950-1960, diagramat e fluksit apo të ashtuquajturat bllok-skema
(flowchart) ishin mjeti kryesor i paraqitjes se algoritmave. Sipas kësaj mënyrë veprimet
ekzekutuese të algoritmit paraqiten të përfshira në disa figura gjeometrike të lidhura me
shigjeta (Figura 2.1). Të mirat e bllok-skemës janë thjeshtësia dhe mundësia për të
paraqitur një algoritëm në trajtë vizuale. Megjithatë bllok-skemat kanë disa të meta si:
 Bllok-skemat me një nivel shumë të lartë detajimi krijojnë mundësinë që të futen
gabime dhe pasaktësi për shkak se bllok-skema shpesh kthehet në rrjeta
merimangash për shkak të shigjetave që ndërpriten dhe që bëjnë të vështirë të
kuptuarit e procesit.
 Gjatë hartimit të bllok-skemës shpenzohet një kohë shtese për të pozicionuar
shenjat dhe për të lidhur simbolet e bllok-skemës bile edhe në se përdoren mjete
për të shpejtuar këtë proces.
 Bllok-skemat janë mjete të kohës së programimit të strukturuar por nuk janë të
vlefshme në kontekstin e programimit të orientuar objekt.

Figura 2.1 Paraqitja e një algoritmi me bllok-skemë

Prof. Dr. Dhimitri Tole 2 / 13


Leksione të Algoritmikës 2. Paraqitja e algoritmave

Më vonë, si një alternativë, u krijua teknika e pseudo-kodit (pseudo-code) sipas të


cilës algoritmi paraqitet me anë të strukturave të tipit tekst. Edhe sot vazhdon e kërkohet
në këtë drejtim për të krijuar metoda sa më të mira të paraqitjes së algoritmave.
Në këtë cikël leksionesh kemi zgjëdhur teknikën e pseudo-kodit për të paraqitur
algoritmat. Paraqitja e pseudo-kodit do të bëhet me fjalë të gjuhës angleze për të qënë sa
më afër me mënyrën e paraqitjes me anë të gjuhëve të programimit.
Megjithëse në pseudo-kod futen edhe fraza të ngjashme me anglishten, deri tani nuk
ka qënë e mundur që të krijohet një kompilator (compiler) që t‟i transformojë ato në kod
makine. Një pseudo-kod i mirë është një ekuilibër ndërmjet qartësisë dhe detajeve.
Pseudo-kodi i keq jep shumë detaje ose është tepër i varur nga një implementim specifik.
Një pseudo-kod i mirë abstragon algoritmin, paraqet mirë shënimet matematike dhe është
i lehtë në përdorim.
Pseudo-kodi është i ngjashëm me gjuhët e programimit si Pascal, C, C++, Java, etj.
Ndryshimi kryesor nga gjuha e programimit është se pseudo-kodi nuk kërkon ndjekjen e
rregullave rigoroze sintaksore, mbasi ai do të lexohet nga njerzit, nuk do të ekzekutohet
nga makina. Ndërsa çështje të inxhinierise softuerike si abstraksioni i të dhënave,
modulariteti dhe drejtimi i gabimeve nuk do të trajtohen gjatë hartimit të algoritmave.

2.3 Të dhënat dhe organizimi i tyre

Thelbi i përpunimit kompjuterik është përpunimi i të dhënave. Në lidhje me të dhënat


takojmë dy koncepte të rëndësishëm: tipi i të dhënës dhe struktura e të dhënave. Me tip të
dhëne kuptojmë se çfarë paraqët e dhëna nga ana kuptimore (matematikore) ndërsa me
strukturë kuptojmë mënyrën se si janë organizuar të dhënat.

Tipi i të dhënës. Në matematikë, të dhënat klasifikohen sipas përmbajtjes. Në këtë


kuptim dallojmë të dhëna të tipit të plotë (integer), real (real), kompleks (complex) dhe
logjik (logical). Paraqitja e të dhënave realizohet me anë të variablave. Variablat
zakonisht klasifikohen sipas një numri të caktuar karakteristikash. Një nga karakteristikat
e variablave është tipi i të dhënës që ai përfaqson.
Edhe në shkencën e kompjutrave të dhënat karakterizohen nga përmbajtja. Krahas
tipeve të lartpërshkuara në algoritmikë takohen edhe dy tipe të tjera: tipi karakter
(characters) dhe tipi string (string) të cilat përfaqsojnë vlera tekst. Në algoritmikë, ashtu
si në matematikë, të dhënat paraqiten me anë të variablave, shprehjeve ose konstanteve.
Në tekstet matematike, tipi i një variabli njihet nga mënyra se si ai është shkruar, pa
patur nevojë që të shihet përmbajtja. Në algoritmikë kjo nuk është e mundur të bëhet
mbasi për identifikimin e variablave përdoret një bashkësi e vetme shënjash (gërmat
latine). Prandaj është e domosdoshme që në mënyrë të dukshme një tip i caktuar të lidhet
me një deklarim tipi në mënyrë të drejtpërdrejtë ose tërthorazi. Ky deklarim duhet të
paraprijë çdo përdorim të konstantes, variablit apo funksionit. Për lëndën e algoritmikës
deklarimi i tipit të të dhënës nuk është i një rëndësie parësore. Prandaj më tej, në
algoritmat që do të paraqësim, nuk do të deklarojmë në mënyrë të dukshme tipin e të
dhënës. Përkundrazi, kur hartojmë një program, përcaktimi i tipit merr një rëndësi
parësore. Ky rregull është në veçanti i rëndësishëm në se marim parasysh faktin që një
kompilator/interpretues duhet të zgjedhë paraqitjen e objekteve në kujtesë: sasia e
kujtesës e rezervuar për çdo variabël do të llogaritet duke marre parasysh tipin e të dhënës
që ndryshon në funksion të tipit.
Së fundmi tërheqim vëmëndjen edhe për një fakt tjetër . Në matematikë, një variabël
është përgjithësisht një e panjohur. Kur shkruajmë y = 3x + 2, variablat x dhe y që kënaqin

Prof. Dr. Dhimitri Tole 3 / 13


Leksione të Algoritmikës 2. Paraqitja e algoritmave

ekuacionin kanë një numër të pafundëm vlerash (grafikisht bashkësia e zgjidhjeve të këtij
ekuacioni përcakton një drejtëz). Kur shkruajmë ax2 + b x+ c = 0, variabli x shënon
zgjidhjet e këtij ekuacioni, që në varësi të kombinimit të vlerave të a, b, c mund të jenë 0,
1 ose 2 vlera. Ndërsa në informatikë, një variabël ka gjithmonë një dhe vetëm një vlerë.
Për të ruajtur rigorozitetin, në disa gjuhë programimi por jo në të gjitha ajo mund të mos
ketë vlerë (përderisa nuk i është dhënë vlerë). Në disa gjuhë të tjera të tjera, variablave që
nuk i u është dhënë vlerë u jepet vlera 0, ndërsa disa të tjera kanë një vlerë të
papërcaktuar. E vetmja mënyrë për të ndryshuar vlerën e variablit është instruksioni i
vlerëdhënies.

Struktura të të dhënave. Pavarsisht nga tipi, të dhënat organizohen në mënyrë të


përshtatshme për të lehtësuar përpunimet e parashikuara. Strukturat e të dhënave
specifikojnë mënyrën se si të paraqiten të dhënat e problemit në shqyrtim; kjo është e
domosdoshme në veçanti kur algoritmi trajtohet me ndihmën e një kompjutëri. Problemi i
organizimit të të dhënave është më i vjetër se shkenca e kompjutrave. P.sh. faqet e një
libri numërohen; ndërtohet indeksi për termat e rëndësishëm; në një fjalor fjalet renditen
sipas rendit alfabetik, etj. Shkenca e kompjutrave nuk bën gjë tjetër veçse e shtyn deri në
ekstrem këtë rrugë organizimi.
Për të mbështetur gamën e gjërë të problemeve që takohen në shkencën e kompjutrave
jane krijuar struktura të ndryshme të dhënash. Pa hyrë në klasifikimet e tyre dhe në
plotshmërinë e listës përmendim tabelat, listat e lidhura, stivat, rradhët, rradhët
prioritare, pemët, grafet, etj. Në lëndën e algoritmikës ne do të paraqesim algoritmat
kryesisht që mbështeten nga struktura e të dhënave e tipit tabelë.

Tabela (array) është një nga strukturat më të rëndësishme. Një tabelë, një-dimensionale,
është një varg i n termave me të dhëna të të njëjtit tip që janë vendosur në mënyrë të
vazhduar në kujtesën e kompjutrit. Sasia elementeve që përmban tabela quhet përmasë ose
madhsia e tabelës.Si çdo strukturë tjetër ajo identifikohet me një emër të zgjedhur nga
programisti.
Elementët e veçantë të tabelës bëhen të aksesueshme me anë të specifikimit të vlerës
së indeksit (index) të tabelës (Figura 2.2). Indeksi përcakton pozicionin relativ të një elementi
në lidhje me elementin e parë të tabelës. Elementin e tabelës që ndodhet në pozicionin e i te do ta
shënojmë në trajtën elementi[i]. Indeksi vetë mund të jetë një konstante e plotë, një variabël i tipit
të plotë ose një shprehje numerike, rezultati i së cilës duhet të jetë një vlerë e plotë.

Figura 2.2 Paraqitja grafike e një tabele

Në pjesën më të madhe të rasteve, indeksi është një vlerë numerike e plotë ndërmjet 0
dhe n – 1 ose ndërmjet 1 dhe n. Disa gjuhë kompjutrike lejojnë që indeksi të ndryshojë
ndërmjet dy kufijsh të plotë low dhe hight, dhe disa bile lejojne indekse jo numerike p.sh.
vlerat e të dhënave që u korespondojnë 12 muajve të vitit me anë të emrave të muajve.
Secili nga elementët e tabelës mund të aksesohet duke shpenzuar të njëjtën sasi kohe
pavarsisht pozicionit të tij në tabelë. Kjo është një cilësi mjaft pozitive e tabelës.
Supozohet gjithashtu se çdo element i tabelës zë të njëjtën sasi kujtese.
Përveç organizimit të të dhënave në formen e një tabelë një-dimensionale ato mund të
organizohen edhe në tabela shumë-dimensionale. P.sh. elementet e tabelës dy-dimensionale
mund të përceptohen si një varg tabelash me një dimension. Një element i çfardoshen i saj

Prof. Dr. Dhimitri Tole 4 / 13


Leksione të Algoritmikës 2. Paraqitja e algoritmave

identifikohet nëpërmjet dy indekseve në formën elementi[i, j]. Indeksi i parë i, tregon


rreshtin ndërsa indeksi i dytë j, tregon shtyllën.
“E meta” e tabelës është ngurtësia e saj: duhet që të parashikojmë përmasën e saj që
në momentin e krijimit. Gjithashtu ndërfutja e elementëve të rinj dhe fshirja e elementeve
ekzistues nuk është një veprim i menjëhershëm por është një veprim që shpenzon kohë.
Tabelat, gjithashtu përdoren për implementimin e një vargu strukturash të tjera të të
dhënave. Më e spikatura ndër to është stringu (string), një varg karakteresh të një alfabeti
që përfundon me një karakter të veçantë që tregon fundin e stringut. Stringjet e përbërë
nga zero dhe njësha ndonjëherë quhen stringje binarë (binary strings) ose stringje
bitesh (bit string). Stringjet janë të domosdoshëm për të përpunuar të dhëna tekst, për
përcaktimin e gjuhëve të kompjutrit dhe programeve të kompilimit të shkruajtura për to si
dhe për studimin e modeleve llogaritës abstraktë. Veprimet që kryejmë me stringjet
ndryshojnë nga ata që kryejme zakonisht me tabelat e tjera (le të themi me elementë
numerikë). Ato përfshijnë njehsimin e gjatsisë së stringut, krahasimin e dy stringjeve për
të përcaktuar se cili prej tyre i paraprin tjetrit në përputhje me të ashtuquajturin rend
leksikografik (lexicographic order), d.m.th. në një fjalor dhe lidhjen e dy stringjeve
(formimin e një stringu të vetëm me dy stringje të dhënë duke shtuar të dytin në fund të të
parit).

2.4 Instruksionet dhe organizimi i tyre

Në vitin 1966, C. Böhm dhe G. Jacopini vërtetuan matematikisht se në një algoritëm,


është e mundur, që një bashkësi instruksionesh (veprimesh) bazë, të mund të kombinohen
në vetëm tre struktura më komplekse: E njëpasnjëshme (sequence), zgjedhse (selection)
dhe përsëritse (repetition).

2.4.1 Struktura e njëpasnjëshme

Në strukturën e njëpasnjëshme futen instruksionet bazikë të hyrjes, daljes dhe


vlerëdhënies (kopjimit).

Instruksioni i Hyrjes
Shërben për t‟i transmetuar të dhëna algoritmit nga “jashtë” (në një program këtë rol e
luajnë njësitë e hyrjes së të dhënave). Sintaksa e zgjedhur në këtë cikël leksionesh është:

Input (lista e variablave)


P.sh:
Input (a, b)

Instruksioni i Daljes
Shërben për të nxjerrë nga algoritmi vlerat e variablave ose mesazhe (në një program këtë
rol e luajnë njësitë e daljes të rezultateve). Sintaksa e zgjedhur në këtë cikël leksionesh
është:

Print (lista e variablave dhe /ose mesazhe)


P.sh:
Print (a, b)

Instruksioni i vlerëdhënies

Prof. Dr. Dhimitri Tole 5 / 13


Leksione të Algoritmikës 2. Paraqitja e algoritmave

Instruksioni i vlerëdhënies shërben që të kopjojë në një variabël pritës (target) një vlerë të
caktuar (source). Kjo vlerë e caktuar mund të jetë një madhësi konstante, një variabël ose
një shprehje ose funksion. Në trajtë formale, sintaksa e përgjithshme e instruksionit të
vlerëdhënies është:

variabli_pritës:= shprehje

ku:
variabli_pritës, është variabli në të cilin do të kopjohet vlera;
shprehje, mund të jetë një konstante, variabël ose shprehje, e të njejtit tip si variabli
pritës;
:=, është shenja që identifikon veprimin e vlerëdhënies.

Nëpërmjet instruksionit të vlerëdhënies kopjohen vlera numerike, tekst ose logjike.


Në shprehjet matematike marrin pjesë operatorët e veprimeve matematike:
* (shumezimi),
/ (pjestimi),
+ (mbledhja),
- (zbritja),
^ (ngritja ne fuqi)
dhe kllapat e rumbullakta ( , ).
Përdorimi i shenjave dhe vlerësimi i shprehjeve u nënështrohet rregullave të
matematikës.
Në shprehjet e krahasimit dhe logjike marrin pjesë përkatësisht operatorët e
krahasimit: <, >, =, ≤, ≥ , ≠ dhe operatorët e veprimeve logjike: And, Or. Rezultati i
një shprehjeje logjike është një vlerë e vetme: e vërtetë (true) apo jo e vërtetë (false).

Në figurën 2.3 jepen disa shembuj të instruksioneve të vlerëdhënies.

Figura 2.3 Shembuj të instruksioneve të vlerëdhënies

Instruksioni Variabli prites Vlera e variablit


para veprimit

x:=2 x 2
y:= x+8 y 10
t := x > y t false

Për shëmbull, përkëmbimi i vlerës së dy variablave me anë të instruksionit të


vlerëdhënies mund të realizohet si më poshtë:
temp := a;
a := b;
b := temp;

2.4.2 Struktura zgjedhëse

Struktura zgjedhëse është një strukturë algoritmike kontrolli, që ka për qëllim të drejtojë
ekzekutimin e një vargu instruksionesh në varësi të plotësimit apo të mosplotësimit të një
kushti kontrolli. Instruksionet e kësaj strukture shfaqen në tre formate.

Prof. Dr. Dhimitri Tole 6 / 13


Leksione të Algoritmikës 2. Paraqitja e algoritmave

Formati 1:
If (kusht)
Then bllok_instruksione1
Else bllok_instruksione2

Për shëmbull, gjetja e më të madhes ndër dy vlera të dhëna a dhe b, mund të


realizohet me anë të instruksionit If / Then / Else si më poshtë:
If (a > b)
Then max := a
Else max := b

Formati 2:
If (kusht)
Then bllok_instruksione1

Për shëmbull, gjetja e më të madhes ndër dy vlera të dhëna a dhe b, mund të


realizohet me anë të instruksionit If / Then si më poshtë:
max := a;
If (b > max)
Then max := b;

Formati 3:
If (kusht)
Then asgje
Else bllok_instruksione1

Për shëmbull, gjetja e më të madhes ndër dy vlera të dhëna a dhe b, mund të


realizohet me anë të instruksionit If / Else si më poshtë:
max := a;
If (b < max)
Then
Else max := b;

Shënim 1:
Shpesh zhvendosja e të shkruarit e përmirëson lexueshmërinë e një algoritmi. P.sh
shkrimi në formën:
If (kusht1)
Then
If (kusht2)
Then bllok_instruksione1
Else bllok_instruksione2
Else bllok_instruksione3

është më i qartë se sa të shkruarit në formën:


If kusht1 Then If (kusht2) Then bllok_instruksione1 Else bllok_instruksione2 Else
bllok_instruksione3

Për këtë arsye, në praktikën e paraqitjes së algoritmit me anë të pseudo-kodit, do të


aplikojme zhvendosjen.
2.4.3 Struktura përsëritëse

Prof. Dr. Dhimitri Tole 7 / 13


Leksione të Algoritmikës 2. Paraqitja e algoritmave

Struktura përsëritëse (e quajtur ndryshe sipas kontekstit edhe ciklike) është një strukturë
algoritmike kontrolli, që ka për qëllim të drejtojë ekzekutimin e një vargu instruksionesh,
të quajtur trupi i ciklit, një numër të caktuar herësh, numër që edhe mund të mos njihet
paraprakisht. Renditja e emrave për t‟u afishuar, llogaritja vlerës së përgjithshme të disa
transaksioneve me kartë krediti, printimi i rreshtave të një fature, etj, janë disa shembuj
veprimesh të përsëritura.
Në përgjithsi, përsëritja mund të realizohet nëpërmjet dy tipeve: iteracionit dhe
rekursionit. Tipi i përsëritjes përcakton edhe tipin e algoritmit nga pikpamja strukturore
duke e quajtur algoritëm iterativ ose algoritëm rekursiv.
Iteracioni është thjesht përsëritja e hapave të përpunimit. Numri i hapave të
nevojshëm përcaktohet nga numri i faktorëve të ndryshëm që marrin pjesë në problem.
Rekursioni është një teknikë tjetër, krejt e ndryshme, për zgjidhjen e problemeve që
kanë përsëritje. Kjo realizohet me anë të zgjidhjes së problemeve gjithmonë e më të
vegjël por që secili prej tyre është krejt i ngjashëm më problemin nga i cili u formua.
Rekursioni shpesh, por jo gjithmonë, mund të jetë një mënyrë më e natyrshme për të
shprehur një algoritëm se sa iteracioni. Në një leksion të ardhshëm do të flasim për
përsëritjen nëpërmjet rekursionit më me hollësi.
Shëmbull tipik i përsëritjes iterative është të kërkuarit e një vlere të caktuar në një
varg të dhënë vlerash qofshin këto të tipit numerik ose të tipit tekst. Le të supozojme se
kemi një listë me emra të vendosur në mënyrë të çfardoshme. Mund ta kqyrim listën që
nga fillimi duke krahasuar çdo emër të saj radhazi me emrin që na intereson. Sapo emri
të gjëndet në listë, kërkimi ka përfunduar me sukses. Në se kemi mbritur në fund të listës
pa e gjetur emrin në listë, kërkimi ynë ka dështuar. Bëjmë këtu një vërejtje, kërkimi i
mësipërm fillon e zbatohet në se lista me emra nuk është bosh.
A ka ndonjë metodë të përgjithshme për të ndërtuar një algoritëm iterativ? Në fakt
nuk ështe gjetur ndonjë metodë të përgjithshme por ka ide të përgjithshme që ndihmojnë
për të gjetur një metodë të veçantë për të ndërtuar një algoritëm të veçantë.
Në përgjithësi, një strukturë përsëritëse iterative përbëhet nga tre procese që drejtojnë
përsëritshmërinë:
Inicializimi: vendosja e gjëndjes fillestare e parametrit të kontrollit të ciklit iterativ.
Kontrolli i përfundimit: kontrollohet relacioni i gjëndjes vijuese të parametrit të
kontrollit me gjëndjen përfundimtare për të gjykuar për përfundimin e përsëritshmërisë.
Modifikimi: ndryshohet parametri i kontrollit për t‟iu afruar kushtit të përfundimit të
përsëritshmërisë.
Secili prej këtyre aktiviteteve duhet të jetë i pranishëm në një cikël në mënyrë që
struktura e kontrollit të jetë e rregullt.
Struktura iterative takohet në tre formate bazike: While, Repeat dhe For.

a) Instruksioni While ka formatin e përgjithshëm si më poshtë:


While (kusht) Do
bllok_instruksione

Nga ana semantike ky instruksion, mundëson ekzekutimin e instruksioneve që


përbëjnë bllok_instruksione në varësi të vërtetësisë të një kushti, i cili vlerësohet para se
të fillojnë të ekzekutohen instruksionet që përbëjnë atë. Në rastin e instruksionit ciklik
këta instruksione përbëjnë atë që quhet “trupi i ciklit”. Instruksionet që përmban “trupi i
ciklit” vazhdojne të ekzekutohen deri sa kushti të jetë i vërtetë. Sapo kushti të mos jetë i
vërtetë, ekzekutimi i instruksioneve të trupit të ciklit përfundon. Ky lloj cikli quhet cikël i
papërcaktuar me para-kontroll.

Prof. Dr. Dhimitri Tole 8 / 13


Leksione të Algoritmikës 2. Paraqitja e algoritmave

Për shëmbull, llogaritja e shumës se n numrave të parë natyrale realizohet me anë të


instruksionit While si më poshtë:
shuma:=0;
i :=1;
While (i ≤ n) Do
Begin
shuma := shuma + n;
i := i+1;
End

b) Instruksioni Repeat ka formatin e përgjithshëm si më poshtë:


Repeat
bllok_instruksione
While (kusht)

Nga ana semantike instruksion, mundëson ekzekutimin të paktën një herë të bllokut të
instruksioneve që përbëjnë trupin e ciklit para se të vlerësohet kushti i përfundimit të
përsëritjes. Në se më pas, kushti i përfundimit të ciklit është i vërtetë vazhdon ekzekutimi
i instruksioneve përndryshe realizohet dalja nga cikli. Kjo formë ciklike quhet cikël i
papërcaktuar me pas-kontroll.
Për shëmbull, llogaritja e shumës se n numrave të parë natyralë realizohet me anë të
instruksionit Repeat si më poshtë:

shuma := 0;
i := 1;
Repeat
shuma := shuma + i;
i := i + 1;
While (i ≤ n)

c) Cikli i formës For mundëson kryerjen e një vargu të caktuar veprimesh një numur të
përcaktuar paraprakisht herësh. Ky cikël quhet edhe cikël me numër hapash të
përcaktuar. Kontrolli i përfundimit të veprimeve kryhet në fillim të ciklit.
Ky cikël takohet në dy formate: formati me hap rritës, i quajtur formati For/To dhe
formati me hap zvogëlues, i quajtur formati For/Downto.

c1) Trajta e përgjithshme e ciklit me hap rritës, For/To është:

For vcik := vfill To vfun Step hap Do


bllok_instruksione
ku:
vcik, variabli që drejton ciklin, i quajtur variabli ciklik;
vfill, vlera fillestare që merr variabli cikli;
vfun, vlera përfundimtare që do të marrë variabli ciklik;
hap, hapi i ciklit, vlera me të cilën zmadhohet automatikisht variabli ciklik. Në se
mundësia Step nuk specifikohet atëhere variabli ciklik zmadhohet me 1 (plus një).

Për shëmbull, llogaritja e shumës së n numrave të parë natyralë realizohet me anë të


instruksionit For/To si më poshtë:

Prof. Dr. Dhimitri Tole 9 / 13


Leksione të Algoritmikës 2. Paraqitja e algoritmave

shuma := 0;
For i := 1 TO n Do
shuma := shuma + i;

c2) Trajta e përgjithshme e ciklit me hap zvogëlues, For/Downto është:

For vcik := vfill DownTo vfun Step hap Do


bllok_instruksione
ku:
vcik, variabli që drejton ciklin, i quajtur variabli ciklik
vfill, vlera fillestare që merr variabli ciklik
vfun, vlera përfundimtare që do të marrë variabli ciklik
hap, hapi i ciklit, vlera me të cilën zvogëlohet automatikisht variabli ciklik. Në se
mundësia Step nuk specifikohet atëhere variabli ciklik zvogëlohet me -1 (minus një).

Për shëmbull, llogaritja e shumës së n numrave të parë natyrale realizohet me anë të


instruksionit For/To si më poshtë:
shuma := 0;
For i := n DownTo 1 Do
shuma := shuma + i;

2.5 Procedura

Koncepti i procedurës është një nga konceptet bazë si në algoritmike ashtu edhe në
programim. Emërtime të tjera për të janë nënprogram (subroutine) ose funksion
(functions). Hartimi i algoritmave në formë procedure, është i rëndësishëm për disa
arsye, më të rëndësishmet prej të cilave janë:
 Ajo furnizon një mënyrë për thjeshtimin e algoritmeve duke i bërë proceset e
përbashkëta disponibël për një numër të gjërë algoritmesh
 Lejon modularizimin e algoritmeve komplekse
 I bën më të sigurtë algoritmet mbasi, pasi shihet që algoritmi funksionon, ai mund
të bëhet nënprogram dhe nuk është e nevojshme të ritestohet

Nga pikpamja formale, procedurës i jepet një emër, që e dallon në bashkësinë e


procedurave të tjera. Transmetimi i vlerave procedurës (algoritmit) realizohet me anë të
listës së variablave në çastin e thirrjes së procedurës për ekzekutim me anë të referimit të
emrit të saj nga algoritmi kryesor. Rezultati që jep procedura do të kthehet me anë të
instruksionit Return, i vendosur në një vend të përshtashëm në procedure. Instruksionet e
procedurës duhet të paraprihen nga fjala Begin dhe duhet të mbyllen nga fjala End.

Për shëmbull, procedura për gjetjen e vlerës më të madhe ndër dy variabla të dhënë a dhe
b do të kishte pamjen:
Procedure VMM (a, b)
Begin
max:=a
If b> max
Then Max := b;
Return (max)
End vmm

Prof. Dr. Dhimitri Tole 10 / 13


Leksione të Algoritmikës 2. Paraqitja e algoritmave

Një kategori interesante dhe mjaft e vlershme janë procedura që llogaritin vlera të
funksioneve matematikë. Këto procedura, përderisa nuk kërkohet e kundërta, do të
përdoren si algoritma të gatshëm dhe do të përdoren në shprehjet e ndryshme me anë të
referimit të emrit të zgjedhur për ta. Gjatë ciklit të leksioneve kjo listë edhe mund të
shtohet.

a) Mbetja e pjestimit të dy numrave të plotë

Funksioni Mod, llogarit mbetjen e pjestimit të dy numrave të plotë. P.sh. rezultati i


pjestimit të 11 me 4 ka si mbetje 3. Për të përftuar këtë rezultat ne mund të shkruajmë
instruksionin e vlerëdhënies si më poshtë:
x := 11 Mod (4)

b) Kufiri i sipërm i plotë i një numri real

Funksioni Ceiling1, llogarit më të voglin nga numrat e plotë që është më i madh se një
numër real i dhënë (e thënë ndryshe llogarit tavanin e një numri real). P.sh. rezultati i
zbatimit të këtij funksioni ndaj numrit 4.3 jep si rezultat numrin e plotë 5. Për të përftuar
këtë rezultat në mund të shkruajmë instruksionin e vlerëdhënies si më poshtë:

x := Ceiling(4.3)

Për të shprehur këtë veprim mund të përdoret edhe çifti i simboleve grafike ⌈ ⌉ si më
poshtë:
x := ⌈4.3⌉

c) Kufiri i poshtëm i plotë i një numri real

Funksioni Floor, llogarit më të madhin nga numrat e plotë që është më i vogël se një
numur real i dhënë (e thënë ndryshe llogarit dyshemenë e një numri real). P.sh. rezultati i
zbatimit të këtij funksioni ndaj numrit 4.3 jep si rezultat numrin e plotë 4. Për të përftuar
këtë rezultat ne mund të shkruajmë instruksionin e vlerëdhënies si më poshtë:
x := Floor(4.3)
Për të shprehur këtë veprim ndonjëherë përdoret edhe çifti i simboleve grafike ⌊ ⌋ si
më poshtë:
x := ⌊4.3⌋

d) Pjesa e plotë e pjestimit

Funksioni Div, llogarit pjesën e plotë të herësit të pjestimit të dy numrave të plotë.


Për shëmbull, rezultati i zbatimit të këtij funksioni ndaj numrave 11 dhe 4 jep si rezultat
numrin e plotë 2. Për të përftuar këtë rezultat ne mund të shkruajmë instruksionin e
vlerëdhënies si më poshtë:

1
Konceptet floor and ceiling janë futur nga Kenneth E. Iverson ne 1962.

Prof. Dr. Dhimitri Tole 11 / 13


Leksione të Algoritmikës 2. Paraqitja e algoritmave

x := Div(11,4)

e) Logaritmi i një numri

Funksioni Log, llogarit logaritmin e një numri pozitiv sipas përkufizimit log x b = a.
Në lëndën e algoritmikës, në përgjithsi, një shkrim i logaritmit pa bazë logaritmi
nënkupton bazën 2, d.m.th log b nënkupton log 2 b. Për shëmbull, rezultati i zbatimit të
këtij funksioni ndaj numrave 4 prodhon si rezultat numrin e plotë 2. Për të përftuar këtë
rezultat ne mund të shkruajmë instruksionin e vlerëdhënies si më poshtë:
x := log (4)

f) Rrënja katrore

Funksioni SQR, llogarit rrënjën katrore të një numri pozitiv. Për shëmbull, rezultati i
zbatimit të këtij funksioni ndaj numrave 4 si rezultat numrin e plotë 2. Për të përftuar këtë
rezultat ne mund të shkruajmë instruksionin e vlerëdhënies si më poshtë:
x := sqr (4)

2.6 Rregullat e përgjithshme të paraqitjes se algoritmit

Për të paraqitur një algoritëm nëpërmjet instruksioneve me anë të pseudo-kodit ne do


të ndjekim disa rregulla të caktuara. Disa nga këto rregulla nuk kanë të bëjnë me anën
funksionale, ato janë thjesht një marreveshje që është e mira të respektohet në paraqitjen e
algoritmave. Rregullat janë:

1. Algoritmi do të paraqitet si një tekst i përbërë nga rreshta.


2. Çdo rresht i algoritmit mund të paraprihet nga një numër natyral jo
medoemos i njëpasnjëshëm. Roli i tij i vetëm është identifikues. Ai nuk ka asnjë
rol funksional.
3. Për ta bërë sa më të qartë një algoritëm, mund të futen komente përshkruese.
Komenti mund të futet kudo në një algoritëm me kusht që të paraprihet nga
çifti i shënjave //.
4. Rreshti i parë ne paraqitjen e algoritmit duhet të specifikojë në formë
komenti, listën e të dhënave fillestare (në hyrje)
5. Rreshti i dytë duhet të specifikojë në formë komenti, listën e rezultateve që
prodhon algoritmi (në dalje)
6. Në rreshtin e tretë fillon specifikimi i vetë algoritmit me fjalën Procedure,
pasuar nga emri i zgjedhur për algoritmin dhe pasuar nga lista e të dhënave
fillestare të përfshira në kllapa të rrumbullakta dhe të ndara me presje. Në se
një algoritëm nuk ka të dhëna fillestare atëhere çifti kllapave të rrumbullakta
përsëri duhet të vendoset.
7. Rezultati që prodhon (kthen) algoritmi do të tregohet me fjalën Return pasuar
nga lista e variablave apo shprehjeve përfshirë në kllapa të rrumbullakta
8. Fillimi i instruksioneve të algoritmit duhet të paraprihet nga një rresht që do
të përmbajë fjalën Begin.
9. Algoritmi mbyllët më fjalën End pasuar nga emri i algoritmi.
10. Disa instruksione, në vijueshmëri, mund të grupohen për të krijuar të
ashtuquajturin Bllok i instruksioneve. Një bllok i instruksioneve fillon me

Prof. Dr. Dhimitri Tole 12 / 13


Leksione të Algoritmikës 2. Paraqitja e algoritmave

fjalen Begin dhe mbyllet me fjalën End. Edhe një instruksion i vetëm mund të
quhet bllok i instruksioneve.
11. Për qartësi paraqitjeje, në një rresht fizik të algoritmit të paraqitur do të
shkruajmë vetëm nje instruksion që në përgjithsi mbyllet me shenjën ;
(pikpresje).

Duke marrë në konsideratë rregullat e mësipërme, algoritmi 1.2, shërben për të


llogaritur shumën e vargut të n numrave të parë natyralë, 1, 2, 3, ..., n.

Algoritmi 2.1 Llogaritja e shumës të vargut të n numrave të parë natyralë

01 // Ne hyrje: një numur natyral n


02 // Ne dalje : sh, shuma e n numrave natyrale të pare
03 Procedure ShumaNat (n) // fillimi i algoritmit
04 Begin
05 shuma := 0 // inicializimi i akumulatorit
06 i := 1 // inicializimi i numratorit
07 while (i ≤ n) // cikli llogarites
08 Begin
09 shuma := shuma + i // akumulimi
10 i := i + 1
11 End
12 Return (shuma) // kthimi i vleres
13 End ShumaNat // fundi i algoritmit

Prof. Dr. Dhimitri Tole 13 / 13

You might also like