1. ALGORITMET, STRUKTURA E
TË DHËNAVE DHE GJUHA
PROGRAMUESE “JAVA”
Punoi : “Leotrim Shatri”
Shkolla: “Haxhi Zeka” Istog
Klasa “XII/10”
Më simdhënësja: “Venera Mavraj Lipaj”
2. Tematika
Cfarë janë algoritmet, dhe historiku mbi to
Skemat dhe llojet e algoritmeve
Strukturat e te dhenave dhe llojet
Hyrje ne Programim
Gjuha programuese
3. Historiku mbi Algoritmet
Njohja me algoritme fillon qe prej vitit 852 nga
Muhammad ibn Musa al-Khë arizmi, ku në atë
kohë kryesisht problemet matematike, në bazë
të emrit "al Khaë arizmi" janë quajtur algoritme.
Algoritmin e parë për llogaritje e ka shkruar Ada
Bajron në vitin 1842.
Avancim të rëndësishëm në formalizimin e futjes
në përdorim të algoritmeve në matematikë dhe
në logjikë më pas ka dhënëAlanTjuringu, duke
përkufizuar makinën eTjuringut
4. Cfarë janë Algoritmet?
Algoritmi paraqet një bashkësi veprimesh që kryhen me renditje
të përcaktuar paraprakisht, me qëllim që nga të dhënat hyrëse të
njehsohen rezultatet e kerkuara.
Që ndonjë problem të zgjidhet në atë mënyrë, procesin e
zgjidhjes duhet ta definojmë sipas disa fazave:Ato janë:
1. Kuptimi i problemit
2. Krijimi i modelit
3. Krijimi i algoritmit
4. Përpunimi i një shembulli test dhe verifikimi i vërtetësisë së
algoritmit
5. Implementimi i algoritmit (d.m.th. shënimi i programit)
6.Testimi i programit
7. Përpilimi i dokumenteveohen rezultatet e kërkuara.
5. Paraqitja e Algoritmeve
Për paraqitjen e algoritmeve më shpesh përdoret
paraqitja grafike në formë të një skeme e cila quhet
skema e algoritmeve ose diagrami i rrjedhës (eng. floë
chart).
• Përveç paraqitjes grafike, shpeshherë
përdoren edhe këto dy mënyra:
– gjuha natyrore
-- gjuha pseudo (ndryshe quajtur “Paraqitja
Analitikie”)
6. Tipat e skemave algoritmike
Ekzistojnë tri skema elementare algoritmike:
1. Skemat lineare algoritmike (hapat algoritmikë kryhen
njëri mbas tjetrit, sipas renditjes së shënuar)
2. Skemat e degëzuara algoritmike (blloqet e hapave
algoritmikë të cilët për disa vlera të të dhënave hyrëse
asnjëherë nuk kryhen)
3. Skemat ciklike algoritmike (Skemat ciklike algoritmike
janë skemat në të cilat një apo më shumë hapa algoritmikë
mund të kryhen më shumë se një herë gjatë kohës së
kryerjes së algoritmit. Këta hapa formojnë ciklin, dhe një
kalim nëpër cikël quhet iteracion (përsëritje))
7. Skemat ciklike algoritimike
Ciklet numeruese - Më shpesh, në
fillim të ciklit numërues, para
kryerjes së tij, dihet numri i
përsëritjeve (iteracioneve) të tij.
Për shembull, kur nevojitet të
shënohet mesazhi i njëjtë 100
herë, dihet se kjo mund të
realizohet në 100 iteracione, duke
shënuar mesazhin një herë në
secilin iteracion.
Për realizimin e cikleve numëruese
përdoret komanda FOR.
8. Skemat ciklike algoritimike
Cikli iterativ - Për realizimin e ciklit
iterativ përdoren komandat WHILE dhe
DO-WHILE.
Në këtë cikël, B është një apo më
shumë komanda, gjersa kushti
përkufizon kriterin me të cilin
kontrollohet cikli dhe mund të jetë
cilado shprehje e saktë logjike.
Cikli përsëritet derisa kushti është
plotësuar. Kur kushti nuk vlen (nuk
plotësohet), dilet nga cikli dhe
kalohet në komandën e parë mbas
ciklit.
9. Skemat komplekse algoritmike
Degëzimeve dhe përsëritjeve
në skemat algoritmike, si edhe
me shembujt që kanë
përmbajtur vetëm njërën prej
tyre. Me kombinacione të
ndryshme të këtyre
elementeve përftohen skemat
algoritmike komplekse.
12. Tiparet e algoritmeve
1. Përkufizimi korrekt. Çdo hap në algoritëm duhet të përkufizohet në
mënyrë të qartë. Bashkësia e rregullave duhet të jetë e tillë që veprimet të
cilat përkufizohen mund të kryhen sipas radhës njëri mbas tjetrit.
2. Determinizmi (të përcaktuarit).Vlera që përftohet mbas kryerjes së secilit
hap, është përcaktuar në mënyrë unike nga vlerat e hapit paraprak.
3. Thjeshtësia. Ligji (rregulla) e përftimit të madhësive dalëse duhet të jetë e
qartë dhe e thjeshtë.
4. Përfundimi.Algoritmi duhet të përbëhet prej një numri të fundmë hapash
që kryhen në një interval kohor të fundmë. Numri i hapave mund të jetë
shumë i madh.
5. Rezultati. Për çdo bashkësi të madhësive hyrëse, algoritmi duhet të japë
rezultat.
13. Strukturat e
te dhenave
Strukturat e të dhënave janë mënyra më komplekse për të organizuar të dhënat në
memorie, duke na lejuar për të ruajtur informacione në Layoute të ndryshme.
Algoritmet na mundësojnë kryerjen e operacioneve/veprimeve llogaritëse në një mënyrë të
caktuar. Këto llogaritje i bëjnë me të dhënat e thjeshta ose me “strukturat e të dhënave” të
cilat na shërbejnë që të krijojmë “objektet abstrakte” në programe, të cilat pasqyrojnë në
mënyrën më të mirë të mundshme “objektet konkrete” (reale, fizike) nga bota reale dhe
jeta e përditshme
Shumica e algoritmeve të rëndësishme përfshijnë metodat për organizimin e të dhënave të
përfshira në llogaritje. Objektet e krijuara në këtë mënyrë quhen struktura të të dhënave
dhe këto janë gjithashtu objekte qëndrore të studimit në shkencat kompjuterike.
Strukturat e të dhënave Organizimi i të dhënave për përpunim (angl. processing- përpunim,
procesim, shqyrtim), është detyrë thelbësore në zhvillimin e programeve kompjuterike.
Ndonjëherë pyetjet e intervistës përmendin në mënyrë të qartë një strukturë të dhënash,
për shembull, "një pemë binare". Herë të tjera është implicite, si "gjurmimi i numrave e
librave të lidhur me secilin autor".
Pa marrë parasysh se çfarë problemi po zgjidhni, në një mënyrë ose në një tjetër ju duhet të
merreni me të dhëna - nëse kjo është paga e një punonjësi, çmimet e aksioneve, një listë
ushqimore, apo edhe një liste numrash ne nje telefon të thjeshtë
14. Strukturat e të dhë nave, cilat
perdoren me se shumti
Arrays
Stacks
Queues
Linked Lists
Trees
Graphs
Tries (they are effectively trees, but it’s still
good to call them out separately).
HashTables
15. Hyrje ne Programim
Shumë shpesh zgjedhja e sistemit kompjuterik përcakton bashkësinë e gjuhëve
programuese nëpërmjet të cilëve zgjidhja algoritmike e propozuar mund të
implementohet.
Sistemi kompjuterik, gjegjësisht kompjuteri, përbëhet nga bashkësia e pajisjeve
elektronike të parapara për hyrjen, përpunimin dhe paraqitjen e të dhënave.
Sistemi kompjuterik përbëhet nga dy komponentë: hardueri dhe softueri. Hardueri
kompjuterik paraqet aparatet fizike (elektronike dhe mekanike) të sistemit kompjuterik,
gjegjësisht të gjitha ato pjesë që shihen dhe mund të ndihen fizikisht. Softueri kompjuterik
është bashkësia e programeve në bazë të të cilave hardueri i përpunon të dhënat.
Softueri kompjuterik ndahet më shpesh në tri grupet e mëposhtme: ▪ Softueri i sistemit; ▪
Softueri aplikativ; ▪ Gjuhët programuese.
Programi është një bashkësi e instruksioneve të shkruara për zgjidhjen e një problemi.
Programimi paraqet procesin e shënimit të instruksioneve.
Gjuha e programimit paraqet bashkësinë e simboleve, fjalëve kyç dhe rregullave për
shënimin e programit, me të cilën kompjuterit i paraqiten instruksionet dhe i përshkruhen
të dhëna
Gramatika e gjuhës, sintaksa, dhe semantika
16. Klasifikimi i gjuhëve programuese
Klasifikimi i gjuhëve të programimit (programuese) kryhet në
bazë të disa kritereve sipas qëllimit të caktuar, mënyrës së
ekzekutimit (kryerjes), strukturimit dhe gjeneratës së
kompjuterëve për të cilët është paraparë.
1. Sipas namjeni, dallojmë këtë gjuhë programuese: – gjuhët
programuese për probleme numerike, – gjuhët programuese
për probleme biznesi, – gjuhët programuese të bazuara në lista
dhe vargje, – gjuhët programuese me interesa të ndryshme.
2. Sipas mënyrës së ekzekutimit, dallojnë këto gjuhë të
programimit: – gjuhët programuese imperative, – gjuhët
programuese funksionale, – gjuhët programuese të orientuara
në një qëllim, – gjuhët programuese të orientuara në objekte, –
gjuhët hibride.
3. Sipas strukturimit, dallojmë këto gjuhë programimit: – gjuhët
programuese procedurale, – gjuhët programuese jo-procedural
17. Gjuhet programuese sipas gjenerates
Një nga kategorizimet më të përgjithshme të gjuhëve programuese është
kategorizimi në bazë të gjeneratave. Ekzistojnë pesë gjenerata të gjuhëve
programuese: –
1. Gjenerata e parë karakterizohet me përdorimin e gjuhës së makinës.
Programet janë të shkruara me anë të shënimit binar, që është drejtpërdrejt i
kuptueshëm për procesorin në të cilin ekzekutohet.
2. Gjeneratën e dytë e karakterizon zbatimi i gjuhëve simbolike të ashtuquajturve
asemblerëve. Nga gjuhët e gjeneratës së parë i dallon përdorimi i simboleve në
vend të shënimit binar.
3. Gjenerata e tretë karakterizohet me përdorimin e paradigmës procedurale, e
cila nënkupton që programet ekzekutohen duke thirrur procedurën (Pascal, C,
C++, Java,Visual Basic, C#).
4. Gjenerata e katërt karakterizohet me zbatimin e gjuhëve programuese
joprocedurale (gjuhët programuese deklarative të nivelit të lartë: Prolog, SQL,
gjeneratorët e kodit dhe mjedisit të përdoruesit). Këto gjuhë kombinojnë
mjete të ndryshme me qëllim thjeshtëzimi të procesit të programimit.
5. Gjenerata e pestë përfshin zbatimin e gjuhëve ngushtë të specializuara:
inteligjencës artificiale dhe gjuhët e programimit të bazuara në gjuhën
natyrore
18. Gjuhët e programimit të nivelit të ulët
dhe të lartë
Në mënyrë identike si te komunikimi i njerëzve, ku
përdoret një numër i madh gjuhësh (anglisht,
gjermanisht, frëngjisht...), për komunikimin me
kompjuter sot përdoret edhe një numër i madh
gjuhësh, madje edhe për një tip të njëjtë
kompjuterësh. Sa më e ngjashme që të jetë gjuha
programuese me gjuhën natyrore, niveli i saj do të
jetë më i lartë.
Në nivelin më të ulët është gjuha e makinës që
përbëhet nga vargu i kodeve të shënuara me numra
binarë (me zero dhe njëshe).
. Programi që bën përkthimin nga gjuha simbolike në
atë të makinës quhet asembler.
19. Paradigmat e programit
Paradigma e programit përcakton stilin e programimit, gjegjësisht këndvështrimin që programuesi ka në
program dhe ekzekutimin e tij.
Paradigma imperative ose procedurale paraqet qasjen tradicionale të procesit të programimit. Në
paradigmën imperative themelohen programet e shkruara në gjuhët simbolike dhe gjuhët e makinës.
Paradigma deklarative nga programuesi kërkon që problemin ta përshkruaj në mënyrë përkatëse. Mënyra
e përshkrimit të problemit është e diktuar nga algoritmi paraprakisht i përkufizuar.
Paradigma funksionale përkufizon procesin e zhvillimit të programit si mënyrë
lidhjeje të moduleve programuese të pavarura në mënyrë funksionale.
Paradigma e orientuar në objekte (POO) është një prej paradigmave programore që përdor
objekte si bazë për projektimin e programeve dhe softuerëve me qëllime të ndryshme
20. Përkthyesit e programit
Programi i shkruar në një gjuhë programimi
të nivelit të lartë quhet kodi burimor
(origjinal)
Kodi i përkthyer burimor i programit në
gjuhën e makinës quhet kodi ekzekutiv.
Kompajleri është program që përkthen kodin
burimor (origjinal) komplet të programit të
shkruar në një gjuhë të programimit të nivelit
të lartë në gjuhën e makinës, duke krijuar
kodin unik ekzekutiv.
21. Interpreter është përkthyesi që përkthen dhe
kryen instruksione në bazë të instruksioneve
të programit burimor në kodin ekzekutiv
Përkthyesit hibridë duke kombinuar teknikat e kompajlerave dhe
interpreterëve përkthejnë programet e shënuara në kodin burimor në
ndërkodin, i cili mundëson interpretim më të lehtë.
22. Java
Java (sqt. Xhàva) është gjuhë programuese e cila
fillimisht u zhvillua nga James Gosling dhe inxhinierë
të tjerë të kompanisë Sun Microsystems. Java si
komponentë thelbësore e Java platformës u lëshua
në publik më vitin 1995
Java filloi me një projekt të quajtur "Oak" nga James
Gosling. Qëllimet e Gosling-ut ishin të vinte në jetë
në makinë virtuale dhe një gjuhë që të ishte familjare
me stilin e C dhe C++.
Njëra nga karakteristikat e Java-së është
portativiteti, ku kjo d.t.th që programet kompjuterike
që janë të shkruara në Java duhet të funksionojnë në
mënyrë të ngjashme në cilëndo nga pajisjet ose/edhe
sistemet operative që janë të përkrahura.
Programeri duhet të ketë mundësinë që ta shkruaj
programin një herë, ta përpilon një herë, dhe ta
ekzekutoj çdokund, ku kjo është në përputhshmëri
me parullën "ë rite once, run anyë here" (sq. "Shkruaj
një herë, ekzekuto kudo") të Sun për Java.