270 likes | 607 Views
Universiteti Shtet ëror i Tetovës Fakulteti i Shkencave Matematike-Natyrore Departamenti i Informatikës PROGRAMIM I Ligjerata 2 gazmend.usht@gmail.com gazmendxh.wordpress.com. Përmbajtja . Hyrje në algoritme Koncepti i algoritmit Shembuj të algoritmeve Përshkrimi i algoritmit
E N D
UniversitetiShtetëror i TetovësFakulteti i Shkencave Matematike-NatyroreDepartamenti i InformatikësPROGRAMIM ILigjerata 2gazmend.usht@gmail.comgazmendxh.wordpress.com Gazmend Xhaferi
Përmbajtja • Hyrje në algoritme • Koncepti i algoritmit • Shembuj të algoritmeve • Përshkrimi i algoritmit • Karakteristikat themelore të algoritmit • Principet e punës së kompjuterit • Çka është kompjuteri? • Pjesët kryesore të kompjuterit – hyrje, dalje, memoria • Pjesa ekzekutive e kompjuterit – procesori • Modeli i Von-Neumannit për kompjuterin
Hyrje në algoritme Çka është algoritmi? • Algoritmi = metodë, procedurë, rregullore për zgjidhjen e një problemi apo arritjen e një qëllimi. Ky nuk është definicion preciz në kuptimin matematikor. • Procedura asocon me një varg hapash të fundshëm të cilët duhet të kryhen për zgjedhjen e një problemi. • Metoda shpesh përdoret në matematikë, por zakonisht e përfshin edhe “procedurën” e pafund – e cila jep zgjidhje vetëm te limitet (analiza matematikore, matematika numerike).
Hyrje në algoritme (vazhdim) • Përse është e nevojshme ta dimë çka është algoritmi? • Detyra kryesore: zhvillimi i algoritmeve të saktë dhe efikas • Intuitivisht është e qartë se efikas d.m.th i shpejtë, kurse i saktë d.m.th zgjidhja (rezultati) të jetë afër zgjidhjes së vërtetë. • Ekziston edhe definicion i saktë matematikor për algoritmin, por ai nuk është aq i thjeshtë – kjo iu duhet atyre që merren me vetitë e algoritmeve.
Shembuj të algoritmeve • Shembuj standard të algoritmeve • Receptët e gatimit (përgatitja e ushqimeve), • Receptët për përgatitjen e pijeve dhe koktejeve, • Udhëzuesi i përdorimit të secilit aparat, • Zgjidhja e detyrave matematikore.
Përshkrimi i algoritmeve • Në përgjithësi, si duhet të duken instruksionet dhe nga se përbëhen? • Paraqitja e përgjithshme e tyre është: hapi 1 hapi 2 ... hapi n (i fundit) • Me fjalë të tjera algoritmi përbëhet nga një varg hapash, të cilat janë të fundme, e të cilat po ashtu duhet të ekzekutohen me qëllim të arritjes së qëllimit, respektivisht, të zgjidhet problemi. • Secili hap i veçantë i algoritmit paraqet instruksion apo urdhëresë (komandë) e cila duhet të ekzekutohet.
Paraqitja dhe ekzekutimi i algoritmit • Zakonisht, instruksionet • Shënohen njëri pas tjetrit, • Ekzekutohen sipas asaj radhitjeje. • Por, ekzistojnë edhe instruksione që e ndryshojnë radhitjen standarde të ekzekutimit. Shembuj: • Nëse kemi një kusht “a dhe b” atëherë kalo tek hapi “x dhe y” • Përsëriti “disa hapa” deri sa të plotësohet kushti “x dhe y” • Përsëriti “disa hapa” për disa herë.
Llojet e instruksioneve • Instruksionet kanë formë të njëjtë, dhe përbëhen nga dy pjesë: • Çka duhet të bëjë = operacioni • Ku duhet të ekzekutohet = objekti mbi të cilin kryhet operacioni • Siç e mësuam, kemi katër lloje të instruksioneve për kontrollimin e ekzekutimit të operacioneve: • të sekuencës • të selektimit • të përsëritjes • të nënprogrameve • Sekuencës – një seri urdhërash që ekzekutohen njëra pas tjetrës • Selektimit - strukturë kontrolluese me kusht, ekzekuton urdhëra të ndryshëm mvarësisht nga kushti • Përsëritjes – ekzekutimi përsëritet derisa plotësohen kushtet e parapara. • Nënprogramet – shërbejnë për struktuimin e kodit duke e ndarë në njësi më të vogla.
Përshkrimi i algoritmit • Algoritmi duhet të punojë mbi të dhënat e përgjithshme, me rëndësi është që të punojë sipas procedurës së njëjtë. • Për shembull, më lehtë është që shkruhet algoritmi i cili e gjen zgjidhjen për barazimet e përgjithshme katrore ax2 + bx + c = 0 Për a, b, c ∈ R, ku a≠0, se sa algoritmi që e gjen zgjidhjen e barazimit konkret x2 − 3x + 2 = 0. Zgjidhja për barazimin katror arrihet me formulën Kush janë këtu instruksionet?
Karakteristikat e algoritmeve • Pra, te algoritmet kemi disa operacione që aplikohen mbi disa të dhëna në formë të disa hapave e që japin ndonjë rezultat (zgjidhje). • Figurativisht: • Karakteristikat e algoritmit: • Ka (ose nuk ka) të dhëna hyrëse • Ka të dhëna dalëse • Mbaron për një kohë të fundme • Gjithmonë është i definuar të mos jetë i paqartë • Duhet të jetë efikas (të mbaroj në një kohë të arsyeshme) HYRJE DALJE ALGORITËM
Hyrje/Dalje Hyrje: • Secili algoritëm ka 0 ose më shumë, por përfundimisht shumë të dhëna hyrëse. • Ato duhet ti zgjedhim nga një klasë e objekteve hyrëse • Algoritmet me 0 hyrje nuk janë të shpeshtë, por ekzistojnë. Këto provojnë (testojnë) ndonjë procedurë fikse. Psh: provo nëse 327 është numër i thjesht, ose zgjidhe barazimin katror konkret. • Nëse algoritmi ka më shumë objekte të ndryshme në hyrje, themi se është i përgjithshëm, pasi e zgjidh të gjithë klasën e problemit. Psh. Barazimi katror me parametrat a, b, dhe c.
Hyrje/Dalje (vazhdim) Dalje: • Secili algoritëm duhet të ketë së paku një dalje, ndryshe do të duket se nuk ka zgjidhur ndonjë problem të caktuar • Pra, deri më tani flasim për objekte që ndodhen në hyrje dhe dalje, por nuk dihet se kalohet nga njëri te tjetri. HYRJE DALJE ALGORITËM
Mbarimi (Fundshmëria) • Mbarimi • Secili algoritëm duhet të mbarojë pas disa hapave të fundme për çdo hyrje. • Tek programet çdoherë duhet të shihet nëse hyrja është dhënë pa gabim. Psh, te barazimi katror koeficienti a mund të jetë 0, kurse nga formula e zgjidhjes del se kemi pjesëtim me 0. • Në praktikë duhet të parashihen të gjitha kufizimet reale dhe duhet që atyre tu largohemi. Psh, te programi i cili lexon temperaturën T të ujit, duhet të kemi kufizimin 0 ≤ T ≤ 100.
Përcaktueshmëria & Qartësia • Kur projektojmë një algoritëm, nuk e dimë menjëherë në fillim se prej cilave hapa përbëhet procedura e zgjidhjes së problemit. • Zakonisht problemi ndahet në disa tërësi më të mëdha, të cilat i zgjedhim duke pasur parasysh varshmërinë e tyre reciproke. Nëse tërësitë janë të mëdha, atëherë bëjmë ndarjen e tyre në njësi më të vogla. Kjo metodë quhet rafinimi hap pas hapi (eng. Stepwise refinement). • Deri kur duhet të zbatohet rafinimi hap pas hapi? Varet nga ekzekutimi i algoritmit (cilat instruksione ai i njeh dhe cilat mund ti ekzekutojë). • Algoritmi përbëhet nga një varg me instruksione themelore (elementare, primitive) dhe duhet të jetë qartë i definuar për ekzekutuesin e algoritmit.
Efikasiteti • Algoritmi duhet që të mbarojë për një kohë të arsyeshme, që është më me rëndësi sesa fundshmëria e tij. • Të themi, 500 vjet nuk është kohë e arsyeshme! • A ka algoritme të tillë? Ka! • Për problemet e klasës së kompleksitetit NP-komplete nuk ekzistojnë algoritme efikase. Psh. Udhëtari tregtar. • Ekzistojnë probleme për të cilët nuk ekzistojnë algoritme për zgjidhjen e tyre – ato quhen probleme algoritmikisht të pazgjidhshme. (kërko në Google: List of unsolved problems in computer science)
Ndërtimi dhe funksionimi Ikompjuterit • 1.Çka është kompjuteri? • Kompjuteri = makinë për ekzekutimin e algoritmeve • Ashtu si ka çdo algoritëm hyrje dhe dalje, ashtu edhe kompjuteri duhet të ketë pjesët hyrëse dhe dalëse. • Pjesa hyrëse: i lexon të dhënat nga një medium • Pjesa dalëse: mekanizëm që i shkruan të dhënat në ndonjë medium. • Që të mundet një algoritëm të ekzekutoj ndonjë instruksion në kompjuter, na duhet memorie ku duhet të shënohen dhe lexohen ato. Na duhet edhe procesor që të ekzekutohen këto instruksione.
Modeli logjik i një kompjutori modern • Njësitëhyrëse • Njësitëdalëse • Memorja operative apokryesore • Procesori • Kanaletkomunikuese • Memorjetexterneaposekundare
Modeli logjik=Modeli i Von Neumannit • Njësiaqendrorenëprincippërbëhetnganjëmemorikryesoredhenjëprocesor, kurse • Procesoringaanatjetërpërbëhetnganjënjësiaritmetiko-logjikepërkryerjen e detyravetëparashtruaradhenjënjësiekontrolluesepërkoordinimin e rrjedhavendërmjettgjithaelementeve e sistemitkompjuteriksëbashku
Procesori • Cpu- central processing unit, miroprocesor –aponjësiaqëndrore-milionatranzistormikroskopiktëndërlidhurmesvetinëdisanjësifunksionaledhetëpaketuaranënjëçip. • realizonpërpunimin e tëdhënavenëkuptimtëngushttëfjalësrespektivishtdetyrakryesore e CPUështëtirealizonurdhërat (instrukcionet) me qëllimtëpërpunimttëtëdhënave
Faktorët që ndikojnë në performansat e procesorit • Frekufencapunuese(taktipunues) iprocesorit • Numriibiteve me tëcilëtprocesorimundetnjëkohësishttëmanipulon – gjatësia e fjalës (word length:32,64) • Gjërësia e magjistralës e cilailidhëprocesorindhememorjen (bus width) • LargësiamestranzistorëvenëÇip (line width;0.18,0.13mikron)
Memoria • Sasiadhellojiimemorjesqë e shfrytëzonkompjuteri, nësasitëmadhevaretngadedikimiitij • Dykategorikryesoretëmemorieve: • a) memoria primare - shërbenpërruajtjen e njënumrirelativishttëvogëltëtëdhënavetëcilatishfrytëzonprocesori • - e përfshirënëmëshumëÇipe, fizikishttëvendosurasamëafërProcesorit • b) memoria sekundare – shërbenpërruajtjenë e sasivemëtëmëdhatëtëdhënavedheinformatavenëperiudhëmëtëgjatëkohore
Memoria • Fjala (word) është tërësia themelore për një të dhënë. Thënë më thjesht, fjala është sasia e bitëve e paramenduar për paraqitjen e numrave të plotë, ose më saktë, fjala është sasia e bitëve e nevojshme për paraqitjen e instruksionit dhe adresës së makinës. Sot, në përgjithësi, fjala është një tërësi bitësh e paramenduar për paraqitjen e një simboli (shenje), pra fjala = 1 Byte. • Memoria është një varg linear me fjalë, dhe secila fjalë e ka adresën e vet, dmth pozitën apo vendin në varg. • Shikuar matematikisht, vargu me n anëtarë paraqitet si x1, x2, . . . , xn. Por te memoriet numërimi fillon nga pozita 0.
Memoria Skica e memories me n fjalë duket kështu: Themi se fjalak ndodhet në pozitën k ose ndodhet në adresën k.
Memoria – hapësira adresuese • Adresa e të dhënave është pjesa kyçe e instruksionit e cila bën diçka me të dhënat. • Madhësia e hapësirës adresuese = numri i biteve i paramenduar për adresë. • Nëse kemi m bite për të rezervuar adresë, atëherë mund të paraqiten saktësisht 2m adresa të ndryshme: prej në 0 deri në 2m – 1. • Kjo e përcakton edhe sasinë maksimale të memories (më shumë nuk mund të adresohet). • Adresat si zakonisht shënohen në formën heksadecimale. Mr. Fisnik Dalipi
Memoria primare • LlojetëmemorjesPrimare - Regjistrat– pjestëprocesorit; posedojnëkapacitetmëtëvogëldheshërbejnëpërruajtjen e njësasieshumëtëkufizuartëinstrukcionevedhetëdhënave, dheatëvetëmdirekt(atypëraty) paradhe pas përpunimit. • Memorja me qasjetëdrejpërdrejtë (randomaccess memory – RAM) • Kesh-memorja (cache memory) –ndërmjetëson ndërmjet procesorit dhe memorjes primare. Aty vendosen instruksionet përkohësisht. Memorjanga e cilavetëmmundettëlexohet (read only memory – ROM)