440 likes | 845 Views
Universiteti Shtet ëror i Tetovës Fakulteti i Shkencave Matematike-Natyrore Departamenti i Informatikës PROGRAMIM I Ligjerata 3 fisnik.dalipi @ unite.edu.mk fisnikd.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 3fisnik.dalipi@unite.edu.mkfisnikd.wordpress.com
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 Mr. Fisnik Dalipi
GJUHËT E LARTA PROGRAMORE • Parashtrohet pyetje: “Si mund të përafrohen kompjuterët tek njerëzit me qëllim të shfrytëzimit të tyre edhe nga ana e njerëzve që nuk e njohin teknologjinë e programimit me gjuhë të makinës?” • Ideja themelore në përgjigjen e këtij problemi ka qenë që programuesit të shkruajnë/programojnë në një gjuhë të ngjashme me atë të njeriut. • Edhe pse gjuhët e larta programore janë artificiale, ata janë të ndërtuara në mënyrë të njëjtë si dhe ato natyrale. Mr. Fisnik Dalipi
Ndarja e gjuhëve programore • Ndarja e tyre, në të shumtën e rasteve, bëhetsipas fushës së zbatimit/aplikimit. Kështu, gjuhët programore mund ti ndajmë sivijon: • a) Gjuhë për përdorim të gjerë (për zgjidhjen e problemeve teknologjikoshkencore,ekonomike), siç janë: PASCAL, C, FORTRAN, BASIC, COBOL,PL/1 etj. • b) Gjuhë për inteligjencë artificiale (zgjidhja e detyrave logjike nga fusha einteligjencës artificiale, konludimit logjik, robotikës dhe sistemeveeksperte), siç janë: PROLOG, LISP, FORT, COMIT etj. Mr. Fisnik Dalipi
Ndarja e gjuhëve programore • c) Guhë për programim sistemor dhe paralel (për programimin e softverëvesistemore edhe për programe që ekzekutohen njëkohësisht (paralelisht) nëmë shumë procesorë), siç janë: ADA, MODULA-2, OCCAM etj. • d) Gjuhë speciale (në të cilat bëjnë pjesë gjuhët për përshkrimin ealgoritmeve që udhëheqin procese teknike, për simulimin e sistemeve, përkontrollin e sistemit operativ etj) siç janë: JCL, APT, GPSS etj. • e) Gjuhë të orientuara në objekte (gjuhë programore ku objektetshfrytëzohen si tip i posaçëm i të dhënave) siç janë: C++, Delphi, Java,Visual Basic etj. Mr. Fisnik Dalipi
TIPET DHE STRUKTURAT E TË DHËNAVE • Sipas operacioneve që mund të ekzekutohen mbi një bashkësi të caktuar tëdhënash, dallojmë tipe të ndryshme të të dhënave. Me termin tip i të dhënavenenkuptojmë bashkësinë e të dhënave T={t1,t2,...,tn} mbi të cilat mund tëzbatohen operacione të çardoshme nga bashkësia e operacioneveO={o1,o2,...,on}. • Për shembull, në gjuhën programore Pascal, bashkësia e numrave të plotëështë • T={-32768, -32767, -32765, . . . , -1, 0, 2, . . . , 32767} dhe mbi të mund tëekzekutohen operacione nga bashkësia O={+, -, *, /, DIV, MOD}. Mr. Fisnik Dalipi
Ndarja e të dhënave Mr. Fisnik Dalipi
Tipet statike – linearisht të radhitura • Tipet statike të të dhënave janë me madhësi paraprakisht të definuar. Atovendosen në lokacione fikse të memorjes dhe për këtë qasja ndaj tyre ështëshumë e shpejtë. Ato ndahen në të pastrukturuara dhe të strukturuara. • Tipe linearisht të radhitura të të dhënave janë: • Tipet kardinale (ang. Cardinal) janë numra të plotë pozitiv dhe zeroja,dmth. 0,1,2,3,...,124,...,856,... • Numra të plotë (ang. Integer) janë numrat e plotë, dmth: ...,-100,-99,...,-1,0,1,...258,259,... • Karakterët (ang. Character) janë të dhënat tekstuale brenda të cilave mundtë ketë shkronja, shifra numerike dhe simbole tjera speciale. Psh. ‘!’,’%’,’/’,’1’,’A’,’@’,… • Logjike (ang. Logical) janë dy vlera të ,mundshme logjike, TRUE (e vërtetë) dhe FALSE (e pavërtetë) Mr. Fisnik Dalipi
Tipet statike – linearisht të radhitura • Të numëruara (ang. Enumerated) janë të dhëna që i definon shfrytëzuesipër numërim, si: (molla, dardha, kumbulla), ose (tresh, katërsh, pesë) etj. • Me intervale (ang. Subrange) janë të dhëna nga një interval të të dhënash,që shënohen me të dhënën e parë dhe të fundit, të ndarë me dy pika nëmes tyre. Psh. 1..31, janar..dhjetor, ‘A’,’Z’ etj. Mr. Fisnik Dalipi
Tipet statike–linearisht të paradhitura • Tipet reale (ang. Real) tipe, gjegjësisht bashkësi e numrave real, sipsh:5.27, +0.0345, -127.083 etj. dhe • Tipet komplekse (ang. Complex) janë tipe që fitojnë vlera të numravekompleks Mr. Fisnik Dalipi
Tipet statike-të strukturuara • Tipet statike të strukturuara janë tipe të komplikuara/përbëra të të dhënave, tëcilat përbëhen prej njësive elementare dhe/ose të dhënave të pastrukturuara, tëndërlidhura në strukturë te definuar saktësisht. • Vargu i bitave (ang. bit string), janë vargje bitesh, dhe vendosen nëapostrofë. Psh: ‘0011010’,’111010001110’ etj. • Vargu i karakterëve (ang. character string) janë vargje prej karakterëvedhe vendosen në apostrofë, Psh: ‘A05MXY7’,’INFORMATIKA’ etj. • Vargjet (ang. array) janë vargje të të njëjtit tip të dhënash, dhe vendosennë kllapa të vogla, si: (-2,5,7,3), (‘a’,’b’,’c’). • Bashkësitë (ang. set) tip i të dhënave prej bashkësive, dhe vendosen nëkllapa të mesme, si: [A,B,C], [2,y,5] etj., Mr. Fisnik Dalipi
Tipet statike-të strukturuara • Strukturat apo rekordet (ang. Struct apo record) janë tipe të dhënash që përmbajnë të dhëna prejtipeve të ndryshme të pastrukturuara. Mr. Fisnik Dalipi
Tipet dinamike • Tipet dinamike të të dhënave mund të jenë me madhësi të ndryshueshme dhestrukturë të pandryshueshme. • Tipet dinamike me madhësi të ndryshueshme kanë strukturë fikse, ndërsa madhësiaiu ndryshohet gjatë përpunimit. • Psh. Struktura e bashkësisë M={a,r,g,l,w,q}mbetet e njëjtë (përsëri është bashkësi) me shtimin e elementeve t, u, dhe v, kursemadhësia e saj ndryshon dhe do të jetë M={a,r,g,l,w,q,t,u,v}. • Në këto tipe bëjnë pjesë tipet statike të strukturuara: vargu i bitave, vargu Ikarakterëve, vargjet dhe bashkësitë, të cilat mund të jenë ose statike osedinamike, varësisht se si definohen. Mr. Fisnik Dalipi
Tipet dinamike me strukturë të pandryshueshme • Kanë mënyrë të ndërtimit të strukturës paraprakisht të definuar, kurse vet struktura konkrete dhe madhësia e saj ndryshojnë gjatë përpunimit, psh. Nëse në drurin binar në figurën 2.a I shtojmë edhe një degë, do të ndryshojë struktura dhe madhësia e tij si në figurën 2.b, por mënyra e ndërtimit të strukturës është paraprakisht e definuar: prej secilës nyje mund të dalin më së shumti dy degë. Mr. Fisnik Dalipi
Tipet dinamike me strukturë të pandryshueshme Mr. Fisnik Dalipi
Gjuha Programore C++ • Programi në C++ paraqet një koleksion nënprogramesh, të quajtura funksione. • Nënprogrami apo funksioni është një koleksion urdhërash të cilat, kur aktivizohen (ekzekutohen), zgjedhin diçka. • Secili program në C++ e ka funksionin main. • Njësia më e vogël individuale e një programi e shkruar në një gjuhë quhet token. Mr. Fisnik Dalipi
Simbolet • Simbolet speciale • + • - • * • / • . • ; • ? • , • <= • != • == • >= Mr. Fisnik Dalipi
Simbolet • Simbolet me fjalë: • Fjalët e rezervuara, ose keywords (fjalë kyçe) • Ato janë: • int • gloat • double • char • void • return Mr. Fisnik Dalipi
Identifikuesit • Përbëhen nga shkronja, shifra, dhe karakteri underscore apo nënvizues (_) • Duhet të fillojnë me shkronjë apo underscore • C++ është case sensitive • Disa identifikues të paradefinuar janë cout dhe cin • Përkundër fjalëve të rezervuara, identifikuesit e paradefinuar mund të redefinohen, por kjo nuk është ide e qëlluar Mr. Fisnik Dalipi
Identifikuesit e lejuar dhe jotë lejuar • Identifikues të lejuar (legal) në C++ janë: • first • conversion • payRate Mr. Fisnik Dalipi
Tipet e të dhënave në C++ • Në C++ tipet e të dhënave mund të klasifikohe në tre kategori: • Tipe të thjeshta të dhënave • Tipe strukturore të dhënave • Pointerët Mr. Fisnik Dalipi
Tipe të thjeshta të dhënave • Tre kategori të tipeve të thjeshta të dhënave • Integrale: numrat e plote (integer) • Me presje dhjetore • Tipi i numërimit (Enumeration): tipe të dhënash të definuara nga vetë shfrytëzuesi Mr. Fisnik Dalipi
Tipet e të dhënave int • Shembuj • -3419 • 0 • 78 • Numrat e plotë pozitiv nuk duhet ta kenë shenjën + përpara • Asnjë presje nuk përdoret për numrat e plotë • Presjet përdoren për ndarjen e gjërave(antarëve) nëpër lista Mr. Fisnik Dalipi
Tipet e të dhënave bool • Tipet bool • Kanë dy vlera: true dhe false • Manipulojnë me shprehjet logjike (Boolean) • true dhe false janë vlera logjike • bool, true, dhe false janë fjalë të rezervuara Mr. Fisnik Dalipi
Tipet e të dhënave char • Tipet më të vogla të dhënave integrale • Përdoren për karakteret: shkronjat, shifrat, dhe simbolet speciale • Secili karakter është i mbyllur me apostrof • Disa nga vlerat që u përkasin tipit të dhënave char janë: 'A', 'a', '0', '*', '+', '$', '&' • Hapësira e zbrazët është po ashtu karakter dhe shënohet si ' ', duke lënë një hapësirë ndërmjet dy apostrofëve Mr. Fisnik Dalipi
Tipet e të dhënave me presje dhjetore • C++ përdor notacion shkencor për ti paraqitur numrat real (floating-point notation) Mr. Fisnik Dalipi
Tipet e të dhënave me presje dhjetore • float: paraqet çdo numër real • Intervali: -3.4E+38 to 3.4E+38 • Alokimi në memorie për tipin float është 4 bajt • double: paraqet çdo numër real • Intervali: -1.7E+308 to 1.7E+308 • Alokimi në memorie për tipin float është 8 bajt • Në shumicën e kompilatorëve (compilers), tipet e të dhënave double dhe long double janë të njëjta Mr. Fisnik Dalipi
Tipet e të dhënave me presje dhjetore • Numri maksimal i shifrave signifikante (vende decimale) për vlerat float është 6 apo 7 • Vlerat float quhen single precision • Numri maksimal i shifrave signifikante (vende decimale) për vlerat double është 6 apo 7 • Vlerat double quhen double precision • Precision = numri maksimal i shifrave signifikante Mr. Fisnik Dalipi
Operatorët aritmetikor • Operatorët në C++ • + mbledhja • - zbritja • * shumëzimi • / pjesëtimi • % mbetja nga pjesëtimi • +, -, *, dhe/mund të përdoren me tipet e të dhënave integrale dhe me presje dhjetore • Operator unar – ka një operand • Operator binar- me dy operand Mr. Fisnik Dalipi
Prioriteti i operacioneve • Të gjitha operacionet që janë brenda () trajtohen (ekzekutohen) të parët • *,/, dhe % janë në nivelin e njëjtë të prioritetit dhe trajtohen pastaj pas operacionit në () • + dhe – kanë nivelin e njëjtë të prioritetit dhe trajtohen në fund • Kur operatorët janë të nivelit të njëjtë atëherë ekzekutohen (trajtohen) nga ana e majtë te ana e djathtë Mr. Fisnik Dalipi
Shprehjet • Nëse të gjithë operandët janë numra të plotë • Shprehja quhet një shprehje integrale • Nëse të gjithë operandët janë numra me presje • Shprehja quhet shprehje me presje dhjetore • Shpreshja integrale jep rezultat integral • Shprehja me numra me presje jep rezultat me presje dhjetore (floating-point result) Mr. Fisnik Dalipi
Shprehjet e përziera • Shprehja e përziera: • Ka operandë të tipit të ndryshëm të dhënave • Përmban integer (numra të plotë) dhe floating-point (numra me presje dhjetore) • Shembuj me shprehje të përziera • 2+4.9 • 6/4+3.5 • 5.4*2-13.6+18/6 Mr. Fisnik Dalipi
Ekzekutimi i shprehjeve të përziera • Nëse operatori ka tipin e njëjtë të operandëve • Bëhet ekzekutimi sipas tipit të operandëve • Nëse operatori i ka të dy tipet e operandëve • Integer ndryshohet në floating-point • Ekzekutohet operatori • Rezultati është floating-point Mr. Fisnik Dalipi
Ekzekutimi i shprehjeve të përziera • E tërë shprehja ekzekutohet sipas rregullës së prioritetit: • Shumëzimi, pjesëtimi dhe mbetja ekzekutohen përpara mbledhjes dhe zbritjes • Operatorët që kanë nivelin e njëjtë të prioritetit ekzekutohen nga ana e majtë deri te e djathta • Për sqarim më të mirë lejohet edhe grupimi Mr. Fisnik Dalipi
Konvertimi i tipit (Casting) • Sforcimi implicit i tipit: kur vlera e një tipi automatikisht konvertohet në një tip tjetër • Operatorët cast japin konvertim të tipit eksplicit • Përdorni formën vijuese: • static_cast<dataTypeName>(expression) Mr. Fisnik Dalipi
Tipi i të dhënave string • Tip i definuar nga programuesi e që ndodhet në librari standarde • Është sekuencë e zeros dhe disa karakterëve • Vlera e string futet në thonjëza • Null=string me asnjë karakter • Secili karakter ka pozitë relative në string • Pozita e karakterit të parë është 0, pozita e të dytit është 1, etj. • Gjatësia=numri i karakterëve në string Mr. Fisnik Dalipi
Input (Hyrja) • Të dhënat së pari ngarkohen në memorien kryesore përpara se të manipulohen • Vendosja e të dhënave në memorie është proces me dy hapa: • I jepet urdhër kompjuterit të alokoj (ndaj) memorie • Jepen urdhërat për vendosjen e të dhënave në memorien e alokuar (ndarë) Mr. Fisnik Dalipi
Alokimi i memories • Konstanta e emëruar: lokacion në memorie përmbajtja e të cilit nuk mund të ndryshoj gjatë ekzekutimit • Sintaksa për deklarimin e konstantës së emëruar: • Në C++ const është fjalë e rezervuar Mr. Fisnik Dalipi
Variablat (ndryshoret) • Variabla=lokacion në memorie përmbajtja e të cilit mund të ndryshoj gjatë ekzekutimit. • Sintaksa për deklarimin e një apo më shumë variablave është: • Shembull: tipi_i_të_dhënave identifikues, identifikues, ... ; Mr. Fisnik Dalipi
Urdhëresa për shoqërim • Urdhëresa për shoqërim e ka formën: variabla=shprehja; • Shprehja ekzekutohet dhe vlera e saj i shoqërohet variablës së shënuar në anën e majtë. • Në C++ operatori për shoqërim është = Mr. Fisnik Dalipi
Urdhëresa për shoqërim • Në C++ formulimi i mëposhtëm: i = i + 2; • E ekzekuton çka është në i, ia rrit vlerën për 2, dhe e shoqëron vlerën e re në lokacionin e memories i. Mr. Fisnik Dalipi