Ligjerata 3 - Dr. Fisnik Dalipi
Download
Report
Transcript Ligjerata 3 - Dr. Fisnik Dalipi
Universiteti Shtetëror i Tetovës
Fakulteti i Shkencave Matematike-Natyrore
Departamenti i Informatikës
PROGRAMIM I
Ligjerata 3
[email protected]
fisnikd.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ëhet sipas fushës së
zbatimit/aplikimit. Kështu, gjuhët programore mund ti ndajmë
si vijon:
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 e inteligjencës artificiale, konludimit logjik,
robotikës dhe sistemeve eksperte), 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ëve sistemore 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 e algoritmeve që udhëheqin procese teknike, për
simulimin e sistemeve, për kontrollin e sistemit operativ etj) siç
janë: JCL, APT, GPSS etj.
e) Gjuhë të orientuara në objekte (gjuhë programore ku
objektet shfrytë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ënave nenkuptojmë bashkësinë e
të dhënave T={t1,t2,...,tn} mbi të cilat mund të zbatohen
operacione të çardoshme nga bashkësia e operacioneve
O={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. Ato vendosen 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 mund të 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ëzuesi pë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, si psh: 5.27, +0.0345, -127.083 etj.
dhe
Tipet komplekse (ang. Complex) janë tipe që fitojnë
vlera të numrave kompleks
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ëve dhe vendosen në apostrofë, Psh:
‘A05MXY7’,’INFORMATIKA’ etj.
Vargjet (ang. array) janë vargje të të njëjtit tip të dhënash,
dhe vendosen në 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 prej
tipeve të ndryshme të pastrukturuara.
Mr. Fisnik Dalipi
Tipet dinamike
Tipet dinamike të të dhënave mund të jenë me madhësi të
ndryshueshme dhe strukturë të pandryshueshme.
Tipet dinamike me madhësi të ndryshueshme kanë strukturë fikse,
ndërsa madhësia iu 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,
kurse madhë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 I karakterëve, vargjet dhe bashkësitë, të cilat
mund të jenë ose statike ose dinamike, 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:
Alokimi në memorie për tipin float është 4 bajt
double: paraqet çdo numër real
Intervali:
-3.4E+38 to 3.4E+38
-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
Nëse të gjithë operandët janë numra me presje
Shprehja
quhet një shprehje integrale
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
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:
1.
2.
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ë:
tipi_i_të_dhënave identifikues, identifikues, ... ;
Shembull:
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
PYETJE?