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?