Programming
Programming
MATERIAL MESIMOR
NR.
Ky material mësimor i referohet:
Lëndës profesionale: “Bazat e programimit”, kl.10 dhe 11 (L-26-427-19).
Temave mësimore:
1. Hyrje në programim.
2. Sistemet e numerike. Këmbimi midis sistemeve.
3. Veprimetnësisteminbinar.
4. Operatorët dhe llojet e veprimeve.
5. HyrjenëAlgoritmikë.
6. Ndërtimi i Algoritmave bazë me anë të bllokskemavee pseudokodit.
7. Struktura e të dhënave.
8. Editorët bazë të programimit.
9. Hyrje në programim në gjuhën C.
10. Struktura e të dhënave në gjuhën C.
11. Algoritmatlineare, tëkushtëzuardheciklikenë gjuhën C.
12. Pointeratdheskedarëtnë gjuhën C.
13. Proceduratdhefunksionetnë gjuhën C.
14. Elementët bazë të programimit në gjuhën C++.
15. Platformat e gatshme në ndihmë të programimit.
16. Siguria e programeve.
1. Hyrje në gjuhën e programimit PYTHON.
2. Mjedisi i punës për të zhvilluar programe duke përdorur PYTHON.
3. Strukturat e të dhënave.
4. Deklarimi dhe inicializimi i variablave.
5. Operatorët dhe veprimet me to.
6. Strukturat e kontrollit. Ciklet.
7. Metodat dhe funksionet.
8. Vargjet e karaktereve dhe veprimet me to.
9. Listat, N-shet (Tuples), Fjalorët dhe Skedarët.
10. Paketat dhe modulet.
11. Programimi i orientuar ndaj objekteve.
12. Hyrje në Bazat e të Dhënave. Bazat e SQL.
13. Ndërveprimi i programit me bazën e të dhënave.
14. Siguria e të dhënave.
Përgatiti:
Elida Mesi
Loreta Polaj
Ina Hoxha
Lumturie Pelivani
Tiranë, 2021
1. Hyrje në programim
Pavarësisht asaj çfarë keni dëgjuar, të programosh një kompjuter nuk është e vështirë. Programimi
është një aftësi që mund ta fitojë kushdo, kërkon praktikë, durim dhe shumë përqëndrim.
Natyrshëm lind pyëtja: “Pse duhet të shqetësohemi për të programuar një kompjuter?” Përgjigja
varet nga nga synimet e gjithsecilit, si për shembull: Për qejf, për punë, nga detyrimi, etj.
Në mënyrë të ngjashme, programimi i një kompjuteri mund të jetë argëtues sepse mund të krijoni
programe të thjeshta që shfaqin fytyrën e shëmtuar të shefit tuaj në kompjuter. Programet më
komplekse mund t'ju bëjnë një milion dollarë në mënyrë që të mos keni më nevojë të punoni për një
shef me një fytyrë të shëmtuar. Shumë njerëz mësojnë programim pa qëllim të bëhen një programues
me kohë të plotë, profesionale. Ata thjesht duan një program që zgjidh një problem të veçantë, por
ata nuk mund të gjejnë një program që e bën atë, kështu që ata e shkruajnë vetë programin. Cilido
qoftë interesi juaj, ju mund të shkruani një program për të zgjidhur një problem specifik që të tjerët
mund ta shohin gjithashtu të dobishëm. Për një karrierë të re ose të dytë. Me kompjuterët që kanë
pushtuar botën, nuk do jeni kurrë të papunë për një kohë të gjatë nëse dini si të programoni një
kompjuter. Nuk është për t'u habitur, kompjuterat kanë tendencë të tërheqin njerëz me inteligjencë
mbi mesataren që kënaqen kur programojnë një kompjuter për t'u futur në proceset e mendimit të
mendjeve të tyre. Për të ndihmuar në kthimin e një kompjuteri në një mjet mendimi, një programues
krijoi skriptin, nënjë gjuhë programimi të përdorur për hulumtimin e inteligjencës artificiale. Qëllimi
ishte krijimi i një programi për të ndihmuar njerëzit të manipulojnë idetë, konceptet dhe faktet në
mënyrë që ata të mund të krijojnë një larmi zgjidhjesh të mundshme duke kuptuar më mirë mënyrën
e tyre të të menduarit gjatë procesit. Nëse përdorimi i një kompjuteri normalisht duket i mërzitshëm,
provoni të shkruani programin tuaj për t'ju ndihmuar të përdorni trurin tuaj në mënyrë më efektive.
Programimi është zgjidhës problemesh
Në thelb, një program i tregon kompjuterit se si të zgjidhë një problem specifik. Për shkak se bota
është plot me probleme, numri dhe shumëllojshmëria e programeve që njerëzit mund të shkruajnë
për kompjuterë është praktikisht e pafund. Por, për t'i treguar një kompjuteri se si të zgjidhë një
problem të madh, zakonisht duhet t'i thuash kompjuterit se si të zgjidhë një mori problemesh të vogla
që përbëjnë problemin më të madh. Nëse dëshironi të bëni vetë lojën tuaj video, për shembull, duhet
të zgjidhni disa nga problemet e mëposhtme: Përcaktoni sa larg mund të lëvizni një figurë vizatimore
(të tilla si një makinë, një anije kozmike ose një njeri) në ekran si përdorues lëviz një levë. Zbuloni
nëse figura e karikaturës përplaset në një mur, bie nga një shkëmb, ose përplaset në një figurë tjetër
vizatimore në ekran. Sigurohuni që figura e karikaturës të mos bëjë lëvizje të paligjshme, të tilla si
ecja nëpër një mur. Vizatoni terrenin që rrethon figurën e karikaturës dhe sigurohuni që nëse figura e
karikaturës ecën prapa një objekti të tillë si një pemë, pema bllokon realisht figurën nga sytë.
Përcaktoni nëse plumbat që qëllon një figurë tjetër karikaturë po godasin figurën e karikaturës së
lojtarit. Nëse është kështu, përcaktoni sasinë e dëmit, si ndikon ajo në lëvizjen e figurës së dëmtuar
të karikaturës dhe sesi dëmtimi shfaqet në ekran. Sa më i thjeshtë është problemi që ju duhet të
zgjidhni, aq më lehtë mund të shkruani një program që i tregon kompjuterit se si të punojë.
Programimi nuk është I vështirë por thjeshtë të merr kohë.
Programimi nuk është asgjë më shumë sesa shkrimi i udhëzimeve hap pas hapi duke i thënë
kompjuterit saktësisht se çfarë dëshiron të bëjë. Për shkak se kompjuterët janë “budallenj”, ata
kërkojnë udhëzime të sakta dhe kjo bën që programuesi të shpenzojë shumë kohë. Kompjuterët nuk
kuptojnë anglisht (ose frëngjisht, gjuhën kineze, arabe, indiane ose ndonjë gjuhë tjetër që përdorin
qeniet njerëzore). Për shkak se kompjuterët janë funksionalisht të vdekur nga truri, njerëzit duhet të
shkruajnë udhëzime për një kompjuter duke përdorur një gjuhë të veçantë, pra, termin gjuhë
programimi. Një koleksion udhëzimesh që i tregojnë kompjuterit se çfarë të bëjë njihet si program.
Udhëzimet, të shkruara në një gjuhë specifike programimi, njihen si kodi burimor.
Pse kaq shumë gjuhë të ndryshme programimi?
Kemi shumë gjuhë programimi për të zgjedhur sepse secila gjuhë shërben për një qëllim të veçantë,
dhe njerëzit gjithmonë krijojnë gjuhë të reja për të zgjidhur lloje të ndryshme të problemeve. Në të
vërtetë, kompjuterat kuptojnë vetëm një gjuhë, e cila përbëhet nga zero dhe njish, e njohur gjithashtu
si gjuhë makine. Një program tipik që mund të shkruani në gjuhën e makinës mund të duket si
shembulli i mëposhtëm:
0010 1010 0001 1101
0011 1100 1010 1111
0101 0110 1101 0101
1101 1111 0010 1001
Gjuha e makinës kërkon një kohë të gjatë për t’u shkruar (dhe një kohë edhe më të gjatë për t’u
kuptuar). Për shkak të këtyre dy problemeve të mëdha, pak njerëz shkruajnë programe në gjuhën e
makinës. Për ta bërë më të lehtë shkrimin e një programi, programuesit shpikën shpejt një gjuhë më
të thjeshtë programimi të njohur si gjuha e asambler. I gjithë qëllimi i gjuhës asambler është që t'ju
mundësojë të shkruani programe më shpejt dhe më lehtë sesa të përdorni gjuhën e makinës.
Për të luftuar të metat e gjuhës asambler, programuesit krijuan një larmi të gjerë gjuhësh të dryshme
programimi me emra të tillë si COBOL dhe FORTRAN. Vazhduan me familjen e gjuhëve C.
Gjuhët e programimit si C ++, BASIC dhe Pascal u krijuan si gjuhë të përdorimit të përgjithshëm, që
do të thotë që mund t'i përdorni për të shkruar një simulator fluturimi, një program kontabiliteti, një
program njohje zëri ose një përpunues teksti. Sidoqoftë, një nga përdorimet më të njohura për
kompjuterat është ruajtja dhe rikuperimi i informacionit, të tilla si emrat, adresat, numrat e telefonit,
historia e kreditit dhe përvoja e kaluar në punë. Kompjuterat ruajnë informacione të tilla në një bazë
të dhënash. Për t'i bërë bazat e të dhënave më të lehta për t'u përdorur, në shumicën e tyre përfshihet
një gjuhë programimi.
Sistemi dhjetor ose sistemi me bazë dhjetë, si më I përdoruri në përditshmërinë tonë, ka si bazë
numrin 10. Shifrat që të gjithë jemi mësuar të shikojmë janë:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9
Çdo shifër e një numri të plotë në sistemin dhjetor duke filluar nga e djathta në tëmajtë, paraqet
njëshet (100), qindëshet (102), mijëshet (103), etj.
Marrim si shembull numrin 345610 ku indeksi përcakton se cilit sistem I përket. Sipas matematikës
që kemi mësuar që në shkollen fillore, ky numër do të ndahej në:
3 mijëshet 3 4 5 6
4 qindëshet 6 x 100 = 6
5 dhjetëshet 5 x 101 = 50
6 njëshet 4 x 102 = 400
3 x 103 = 3000
345610
Sistemi binar ose sistemi me bazë dy përbëhet nga bashkësia e shifrave (0, 1). Meqënëse këto shifra
përfaqësojnë dy gjëndje të elementeve elektronike me të cilat ndërtohen pjesët përbërëse të
kompjuterave, ky është edhe sistemi që kupton kompjuteri. Numrat në systemin binar paraqiten
vetëm me anë të ketyre dy shifrave. Pra nga e majta në të djathtë numrat paraqiten si fuqi e numrit 2.
1 0 1 1
1 x 20 = 1
1 x 21 = 2
0 x 22 = 0
1 x 23 = 8
11
Sistemi oktal ose ndryshe sistemi me bazë tetë përbëhet nga shifrat:
0, 1, 2, 3, 4, 5, 6, 7
Nëse marrim si shëmbull numrin 156 ne systemin me bazë 8 në systemin binar paraqitet si 110
1 5 6
6 x 80 = 6
5 x 81 = 40
1 x 82 = 64
110
Sistemi hekzadecimal merr këtë emërtim për shkak të bazës së tij me vlërë 16:
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F
Duke marre si shëmbull numrin 1D7F në sistemin hekzadecimal paraqitja e tij në sistemin dhjetor
është 7551
1 D 7 F
F x 160 = 15
7 x 161 = 112
D x 162 = 3328
1 x 163 = 4096
7551
000 0
001 1
010 2
011 3
100 4
101 5
110 6
111 7
0+0=0 1010
0+1=1 +110
1+0=1 10000
1 + 1 = 0 dhe mbartet 1
Zbritja
0–0=0 11001
0 – 1 = 0 dhe merret hua 1 - 111
1–0=1 10010
1–1=0
Shumëzimi
0x0=0 101
0x1=0 x11
1x0=0 101
1x1=1 101
1111
Pjesëtimi
0 : 0 = Nuk përcaktohet kur pjesëtuesi është zero 110 10
0:1=0 10 11
1 : 0 = Nuk përcaktohet kur pjesëtuesi është zero 10
1:1=1 10
==
Operatorët aritmetikë:
Operatori i inkrementimit
Operatori i inkrementimit ka për funksion që të rrisë vlerën me një të një variabli. Ajo përkatësisht
shënohet (++). Figura e mposhtmë tregon përdorimin e operatorit të inkrementimit.
Operatori i dekrementimit
Operatori i dekrementimit ka për funksion që të zbres vlerën me një të një
variabli. Ajo përkatësisht shënohet (--). Figura e mposhtmë tregon përdorimin
e operatorit të dekrementimit.
Operatorët logjikë
Operatorët logjikë përdoren për të përcaktuar logjikën midis variablave ose
vlerave. Në këtë grup operatorësh do të përfshijmë tre operator:
AND (&&)
OR (||)
NOT (!)
Operatori AND
Me operatorin AND, rezultati del e vërtetë vetëm nëse të dyja shprehjen janë të vërteta. Në të
kundërt nëse njëra nga shprehjet del e gabuar, rezultati do të jetë i gabuar. Tabela e mëposhtme
tregon se si kryhet llogaritja e rezultatit.
A B REZ
0 0 0
1 0 0
0 1 0
1 1 1
Operatori OR
Në operatorin OR rezultati del e rreme kur të dyja shprehjet janë të rreme. Në të kundërt shprehja do
të jetë e vërtetë. Tabela e mëposhtme tregon se si kryhet llogaritja e rezultatit.
A B REZ
0 0 0
1 0 1
0 1 1
1 1 1
Operatori NOT
Operatori NOT (!) ka për funksion të përmbysi vlerën e shfaqur. Nëse vlera është e vërtetë ajo e
nxjerr si të gabuar dhe anasjelltas. Tabela e mëposhtme tregon se si kryhet llogaritja e rezultatit.
Operatorët e krahasimit
Operatorët e krahasimit përdoren për të krijuar shprehje booleane të cilat kanë vetëm dy vlera. Nëse
vlera është e vërtetë, ajo do të kthejë vlerën TRUE në të kundërt, ajo do të kthejë vlerë FALSE. Ajo
krahason shprehjen në anën e majtë me atë të anës së djathtë. Tek operatorët e krahasimit do të
përfshijmë këto operatorë:
Më i madh (>)
Më i vogël (<)
Më i madh se (>=)
Më i vogël se (<=)
E barabartë me (==)
E ndryshme nga (!=)
Le të shohim disa veprimet të këtyre operatorëve dhe të shohim se çfarë vlere do të nxjerri.
KUJDES: Mos ngatërroni operatorin (=) me operatorin (==). Të dy këta operator janë të ndryshëm.
Operatori (=) quhet operatori i vlerë dhënies ose i barazimit dhe jep vlerën nga e djathta në të majtë
ndërsa operatori (==) është operatori që krahason shprehjen e majtë me atë të djathtë dhe kurrë
anasjelltas.
4. Hyrje në algoritmike
Sikurse thamë në mësimet e para, ne krijojmë programe për të zgjidhur probleme. Zgjidhja e një
problem me ndihmën e kompjuterit ka të automatizuar vetëm ekzekutimin e programit që duhet të
konceptohet nga programuesi. Kjo është ndër arsyet kryesore përse njerëzit mësojnë gjuhë
programimi. Procesi I zgjidhjes së problemit me anë të një kompjuteri kalon nëpër disa faza:
Pasi kemi specifikuar problemin, bëhet përshkrimi I detajuar I veprimeve që do kryhen për zgjidhjen
e tij. Ky përshkrim quhet algoritëm. Ndërtimi I algoritmit përbën fazën më kyç të zgjidhjes së
problemit. Algoritmi është një bashkësi veprimesh të përcaktuara që përshkruan zgjidhjen e
problemit. Ekzekutimi I algoritmit krijon një zinxhir veprimesh që kanë një fillim dhe një fund.
Sipas mënyrës së organizimit të veprimeve, algoritmet janë:
- Linearë – veprimet renditen njëri pas tjetrit dhe çdo veprim kryhet vetëm nji herë.
- Të degëzuar – sipas kushteve logjike, kryhet një varg veprimesh apo një varg tjetër.
- Ciklik – nji ose më shumë veprime kryhen në mënyrë të përsëritur.
Algoritmet shkruhen në gjuhë të ngjashme me gjuhët e programimit të quajtura ndryshe pseudokode.
Pseudokodi ndryshe nga gjuha e programimit nuk ka rregulla të caktuara dhe ndryshon në varësi të
programuesit.
Për shembull: Ndërtoni algoritmin që gjen dhe afishon shumën dhe prodhimin e dy numrave me
pseudokod
Një mënyrë tjetër është paraqitja grafike me anë të bllokskemës e cila ndërtohet me figura
gjeometrike, ku secila prej tyre paraqet një veprim specifik.
Për shembull: Ndërtoni bllokskemën për llogaritjen e shumës dhe prodhimit të dy numrave.
Hapi I tretë I përdorimit të kompjuterit për zgjidhjen e njëproblem është përkthimi I algoritmit në
gjuhë të kuptueshme nga kompjuteri. Në shkrimin e programit duhet zbatuar rregulli I shkrimit të
sintaksës së gjuhës.
Procedura e ekzekutimit të një program në kompjuter ndryshon nga një system tek tjetri. Pasi
regjistrohet program, kompilohet dhe ekzekutohet me komandat përkatëse. Gjatë shkrimit të
programit, vendosjes së të dhënave apo ekzekutimit, mund të bëhen gabime të ndryshme të cilat
ndërpresin procesin. Disa gabime të tilla janë:
- Gabime sintaksore – kjo ndodh kur harrohen pikëpresjet, variabli deklarohet më shumë se nji
herë, nuk shkruhen saktë fjalët kyç, etj.
- Gabimet e ekzekutimit – gabime si pjesëtimi me zero nuk kapet nga kompilatori, ai detektohet vetëm
në ekzekutim. Në raste të tilla program modifikohet lehtësisht.
- Gabimet logjike – këto lloj gabimesh identifikohen me vështirësi. Nëse një formulëështë shkruar
gabim nuk jep problem në ekzekutim apo kompilim por do të nxjerrë rezultat të gabuar.
Shembull:
Algoritmi Bllokskema
Hapi-1 Fillim Fillim
Hapi-4 Shfaq SI F
SI = (P x N x R) / 100.0L
Hapi-5 Ndalo
Siperfaqja = L x L
Printo SI
Ndalo
Megjithëse pseudokodi është një përshkrim pa sintaksë i një algoritmi, ai duhet të sigurojë një
përshkrim të plotë të logjikës së algoritmit në mënyrë që kalimi prej tij në zbatim të jetë thjesht një
detyrë e përkthimit të secilit rresht në kod duke përdorur sintaksën e çdo gjuhe programimi.
Pse të përdoret pseudokodi?
- Lexueshmëri më e mirë.
Shpesh, programuesit punojnë së bashku me njerëz nga fusha të tjera, të tilla si matematikanë,
partnerë biznesi, menaxherë, etj. Përdorimi i pseudokodit për të shpjeguar mekanikën e kodit do ta
bëjë komunikimin ndërmjet sfondeve të ndryshme më të lehtë dhe më efikas.
- Lehtësoni ndërtimin e kodit.
Kur programuesi kalon procesin e zhvillimit dhe gjenerimit të pseudokodit, procesi i shndërrimit të
tij në kod real të shkruar në çdo gjuhë programimi do të bëhet shumë më i lehtë dhe më i shpejtë
gjithashtu.
Një pikë e ndërmjetme midis diagramës dhe kodit.
- Të veprojë si një pikë fillestare për dokumentacionin.
Dokumentacioni është një aspekt thelbësor i ndërtimit të një projekti të mirë. Shpesh, fillimi I
dokumentacionit është pjesa më e vështirë. Sidoqoftë, pseudokodi mund të përfaqësojë një pikë të
mirë fillestare për atë që duhet të përfshijë dokumentacioni.
- Zbulimi dhe rregullimi më i lehtë i defekteve në kod.
Meqenëse pseudokodi është i shkruar në një format të lexueshëm nga njerëzit, është më lehtë të
redaktoni dhe zbuloni problemet para se të shkruani në të vërtetë një rresht të vetëm kodi. Redaktimi
i pseudokodit mund të bëhet në mënyrë më efikase sesa testimi, korrigjimi i gabimeve dhe rregullimi
i kodit aktual.
Ndërtimet kryesore të pseudokodit
Thelbi i pseudokodit është aftësia për të përfaqësuar 6 struktura programimi (të shkruara gjithmonë
me shkronja të mëdha): SEQUENCE, WHILE, REPEAT-UNTIL, FOR, CASE dhe IF-THEN-
ELSE. Këto struktura - të quajtura edhe fjalë kyçe - përdoren për të përshkruar rrjedhën e kontrollit
të algoritmit.
SEKUENCA - paraqet detyra lineare të kryera në mënyrë sekuenciale njëra pas tjetrës.
WHILE- një cikël me një kusht në fillim të tij.
REPEAT-UNTIL një cikël me një gjendje në fund.
FOR një mënyrë tjetër cikli.
IF-THEN-ELSE një deklaratë e kushtëzuar që ndryshon rrjedhën e algoritmit.
CASE forma e përgjithësimit të IF-THEN-ELSE.
- Rregullat e shkrimit të pseudokodit
Kur shkruan pseudokod, çdo programues ka stilin e tij të paraqitjes së gjërave pasi që është lexuar
nga njerëzit dhe jo nga një kompjuter; rregullat e saj janë më pak rigoroze se sa ato të një gjuhe
programimi. Sidoqoftë, ekzistojnë disa rregulla të thjeshta që ndihmojnë që pseudokodi të kuptohet
nga të gjithë.
- Gjithmonë shkruani me germë fjalën fillestare (shpesh një nga 6 konstruktet kryesore).
- Keni vetëm një pohim për rresht.
- Synon për të treguar hierarkinë, për të përmirësuar lexueshmërinë dhe për të treguar
konstruksionet e vendosura.
- Gjithmonë mbaroni seksionet multiline duke përdorur ndonjë nga fjalët kyçe END (END-IF,
END-WHILE, etj.).
- Mbani gjuhën e programimit të deklaratave tuaja të pavarura.
- Përdorni domenin e emërtimit të problemit, jo atë të implementimit. P.sh., "Shtoni mbiemrin
në emër" në vend të "emër = i parë + i fundit".
- Mbajeni të thjeshtë, konçiz dhe të lexueshëm.
Ndjekja e këtyre rregullave ju ndihmon të gjeneroni pseudokod të lexueshëm dhe të jeni në gjendje
të njihni një jo të shkruar mirë.
Shembull:
7. Struktura e të dhënave
Një program kompjuterik është një bashkësi udhëzimesh për të kryer një detyrë specifike. Për këtë,
një program kompjuterik mund të ketë nevojë të ruajë të dhëna, të marrë të dhëna dhe të kryejë
llogaritjet mbi të dhënat.
Një strukturë e të dhënave është një vendndodhje e emëruar që mund të përdoret për të ruajtur dhe
organizuar të dhënat. Dhe, një algoritëm është një koleksion hapash për të zgjidhur një problem të
veçantë. Strukturat dhe algoritmet e të dhënave na lejojnë të shkruajmë programe kompjuterike
efikase dhe të optimizuara.
Një strukturë e të dhënave është një format i specializuar për organizimin, përpunimin, marrjen dhe
ruajtjen e të dhënave. Ekzistojnë disa lloje themelore dhe të përparuara të strukturave të të dhënave,
të gjitha të dizajnuara për të rregulluar të dhënat që i përshtaten një qëllimi specifik. Strukturat e të
dhënave ua lehtësojnë përdoruesve qasjen dhe punën me të dhënat që u nevojiten në mënyra të
përshtatshme. Më e rëndësishmja, strukturat e të dhënave krijojnë organizimin e informacionit në
mënyrë që makinat dhe njerëzit ta kuptojnë më mirë atë.
Në shkencën kompjuterike dhe programet kompjuterik, një strukturë e të dhënave mund të zgjidhet
ose të projektohet për të ruajtur të dhëna me qëllim të përdorimit të tyre me algoritme të ndryshme.
Në disa raste, veprimet themelore të algoritmit janë bashkuar fort me modelin e strukturës së të
dhënave. Çdo strukturë e të dhënave përmban informacion në lidhje me vlerat e të dhënave,
marrëdhëniet midis të dhënave dhe - në disa raste - funksionet që mund të zbatohen në të dhëna.
Për shembull, në një gjuhë programimi të orientuar drejt objektit, struktura e të dhënave dhe metodat
e saj janë të lidhura së bashku si pjesë e një përkufizimi të klasës. Në gjuhët jo të orientuara nga
objektet, mund të ketë funksione të përcaktuara për të punuar me strukturën e të dhënave, por ato
nuk janë teknikisht pjesë e strukturës së të dhënave.
Llojet e të dhënave
Nëse strukturat e të dhënave janë blloqet ndërtimore të algoritmeve dhe programeve kompjuterikë,
llojet e të dhënave primitive - ose bazë - janë blloqet ndërtuese të strukturave të të dhënave. Llojet
tipike të të dhënave bazë përfshijnë sa vijon:
- Boolean, i cili ruan vlerat logjike që janë ose të vërteta ose të gabuara.
- Integer, i cili ruan një gamë në numrat e plotë matematikorë - ose numërimin e numrave.
- Numrat me pikë notuese, të cilat ruajnë një paraqitje formulore të numrave realë.
- Numrat me pikë fikse, të cilat përdoren në disa gjuhë programimi dhe mbajnë vlera reale, por
menaxhohen si shifra në të majtë dhe në të djathtë të pikës dhjetore.
- Karakter, i cili përdor simbole nga një hartë e përcaktuar e vlerave të plota në simbole.
- Treguesit, të cilat janë vlera referuese që tregojnë vlera të tjera.
- String, i cili është një varg karakteresh i ndjekur nga një kod ndalimi - zakonisht një vlerë "0"
ose menaxhohet duke përdorur një fushë gjatësi që është një vlerë e plotë.
8. Editorët e Programimit
Një editor ështënjë mjedisiintegruarpërzhvillim iquaturndryshe: integrated development
environment (shkurt IDE). IDE
ështënjë aplikacionsoftuerik qëioforn programerëvetëkompjuterit njëmjedistëplotë me
mjetepër zhvillimin e softuerëve. Zakonishtnjë IDE përbëhetngaeditoriikoditburimor,
mjetetpërndërtimin e automatizuardhe debugger.
Gjuhët e programimit C dhe C++ janëgjuhëprogramimiqë duan njëmjediszhvillimiparaprak
(IDE- Integrated Development Environment) icililuanrolin e editorit,
kompilatoritdheekzekutuesit/interpretuesittëkodit.Ekzistojnëllojetëndryshme IDE me ose pa pagesë,
përsistemetëndryshme operative apo tëpavarurngaplatforma, tëbazuaranë web
etj.Mëposhtëparaqitendisamjedisetëzhvillimittëkodit (IDE) përgjuhëneprogramimit C dhe C++, me
burimetëhapura (pa pagesë) dhetëpavarurangaplatforma(pavaarsishtsistemitoperativ).
1. CodeLite
2. Code::Blocks
3. Bloodshed
4. Zinjal
5. ATOM
Mjedisetëzhvillimittëkodit Java
Mëposhtëlistohendisa IDE pa pagesëqëmundtëpërdorenpër java. Këto IDE
ofrojnëdisakarakteristikasi: ndërtimiiaplikacioneve java, debugging, inspektimkodi, asistencëkodi,
testimi, ndërtimin e ndërfaqevevizuale GUI editor, modelimtëdhënash, ndërtim query-shetj.
NetBeans
NetBeans ështënjë IDE opensource e shkruajturnë Java. NetBeans IDE suportonzhvillimin e
tëgjithaaplikacioneve java (Java SE, JavaFX, Java ME, web, EJB dheaplikacionet mobile). NetBeans
është modular nëdizenjimqë do tëthotëmundtëzgjerohet me pjesëtëtretasi plugin-e
tëndryshmetëzhvilluarpërNetBeans.NetBeansështë e
pavarurngaplatformapraekzekutohetnëtëgjithasistemet operative sinë Microsoft Windows, Mac OS
X, Linux, Solaris dheplatformatëtjeraqëjanëkompatibël me JVM.
Eclipse
Eclipse ështënjëtjetër Java IDE përzhvilluesitdheprogramuesit e shkruajturnë Java. Eclipse
julejontëshkruaniaplikacionetëndryshme Java tëpavarurangaplatformasiaplikacione, web, desktop
etj. Eclipse zotëronliçencën e Eclipse Public License dheështë e vlefshmenë Windows, Mac OS X
dhe Linux.
Android Studio
Android Studio java IDE nga Google ështëzhvilluarkryesishtpërndërtimin e aplikacioneve Android.
Android Studio është pa pagesë, nën e liçencën e Apache License 2.0 dhemundtëshkarkohetpër
Windows, Mac OS X dhe Linux.
lueJ
BlueJështënjëtjetër (IDE) përgjuhën e programimit java,
zhvilluardhedizenjuarkryesishtpërarsyeedukimiosetëmësimittëgjuhëvetëprogramimittëorientuaranga
objektet. BlueJështëfalasdhenënliçencën e GNU GPL.
jEdit
jEditështënjëtekst editor ishkruajturnë java, ekzekutohetnësistemet operative Mac OS X, OS/2, Unix,
VMS dhe Windows. Ky editor është pa pagesënënliçencën e 2.0.
Në Linuxkemimjetetëndryshmeqëmundtënandihmojnënëkrijimindhezhvillimin e
aplikacioneve. Linux ështëpadyshimnjëngasistemet e rekomanduarapërtëkryerzhvillimin e
aplikacioneve.Disangamjedisetmëtëmiratëzhvillimittëintegruar (IDE) qëmundtëpërdorimnë
Linux.
NetBeans është një IDE popullorendër-platformë C / C ++ me mbështetjepërgjuhët e
tjeratëprogramimit. Ai përfshinllojetëndryshmetëshabllonevetëprojektitpër C / C ++
dheaplikacionetmundtëndërtohen duke përdorurbibliotekatstatikedhedinamike.
Përmëtepër, jumundtëripërdornikodintuajekzistuespërtëndërtuarprojektettuaja,
dhegjithashtupërdornizvarritjedherëniepërtëimportuarskedarëbinarënëtëpërtëndërtuaraplikacionengaf
illimi.
Nëkarakteristikatkryesoretëtijmundtëtheksohen:
- Redaktuesi C / C ++ ështëiintegruarmirë me seancatëshumta, mjetedhekorrigjuesin e GNU
GDB.
- Mbështetjepërndihmën e kodit
- Krijonidheekzekutoni teste C / C ++ ngabrenda
- Mbështetjepërformatet e kompresimit .tar, .zip dheshumëskedarëtëtjerëarkivi
- Mbështetjepërpërpiluesit e shumtësi GNU, Clang / LLVM, Cygwin, Oracle Solaris Studio
dhe MinGW
- Shfletimiiskedarit
Kodi :: Blocks
Ky ështënjëmjedisizhvillimit me burimtëhapurilicencuarnënlicencën e përgjithshmepublike
GNU. Ka mbështetjepërpërpiluesit e shumtë, ndërtëcilëtmundtëgjejmë MinGW / GCC, Digital Mars,
Microsoft Visual C ++, Borland C ++, LLVM Clang, Watcom, LCC dhe Intel C ++ Compiler.
Ka njësistemtëpersonalizuarndërtimidhembështetjeopsionaletëndërtimit.
Kjo IDE ështëkrijuarpërtëqenëshumëizgjerueshëmdheplotësishtikonfigurueshëm.
- Hapësirapunepërtëkombinuarshumëprojekte.
- Hapësira e punës adaptive
- Shfletuesiiprojektit; pamje e skedarëve, simboleve (tëtrashëguara, etj.), klasave, burimeve.
- Redaktues me skedarë, skedarëtëshumtë.
- Ngjyrosja e sintaksës
- Automompletimiikodit.
- Lista zbritëse.
- Kërkimet e avancuarapërvargjetbrendaskedarëve: aktual, ihapur, projekt, hapësirë pune,
nëdosje).
- Mbështetjepërpërpiliminparalel (duke përdorurshumëprocesorë / bërthama).
Klion
Përdoretpërzhvillimin e gjuhëveprogramuese C dhe C ++, CLionështënjë IDE ndër-
platformekështuqëmundtëpërdoretnë Linux, macOS dhe Windows tëintegruar me sistemin e
ndërtimitCMake.
Versionifillestar ështëipajtueshëm me përpiluesit e GNU Compiler Collection (GCC) dhe Clang dhe
GDB Debugger, LLDB dhe Google Test. Përveç C dhe C ++,
CLion mbështetgjuhëtëtjeradirektosepërmesshtojcave: Kotlin, Python, Rust, Swift dhetëtjera.
CLion, sishumë IDE, ka funksionin e plotësimittëkoditlehtë, me
tëcilinCLionmundt'jundihmojëtëkursenishumëkohënëplotësimin e sintaksëssëkodittuajqë po
shkruaninëtë.
Dhe jo vetëmkaq, CLiongjithashtu ka shabllonetësintaksëssëkodittë para-formatuar me
tëcilatjutregonisintaksëndhe ajo do tëgjenerojëkodin, gjithashtu duke jutreguarsintaksat e
mundshmedhekështutëpërmirësonishpejtësinë e shkrimit.
PyCharm
Një IDE ndër-platformë e përdorurnëfushën e programimit, Pycharmvjen me njëtastierë python
kumundtëshkruashskriptetkuriekzekuton. Dritaretmundtëkalohennëmodalitetin e lidhjes,
modalitetinlundrues, modalitetin e dritaresosendarjennëvarësitëpreferencëssuaj.
Karakteristikatkryesoretëtijmundtëtheksohen:
- Ndihmadheanaliza e kodimit, me plotësimin e kodit, sintaksëndhetheksimin e gabimeve.
- Navigimiiprojektitdhekodit, pamjet e specializuaratëprojektit, pamjet e
strukturëssëskedarëvedhehedhjet e shpejta midis skedarëve, klasave,
metodavedhepërdorimeve
- Refactoring Python: përfshinriemërtimin, metodën e nxjerrjes, futjen e ndryshores, futjen e
konstante, tërheqjenlart, shtytjenposhtëdhetëtjerët
- Mbështetjepërkornizatnë internet: Django, web2py dhe Flask
- Ndërprerësiikorrigjuari Python
- Testimiintegruarinjësisë, me mbulimkodirresht pas rreshti
- Zhvillimiimotorittëaplikacioneve Google Python
- Integrimiikontrollittëversionit: Ndërfaqja e unifikuar e përdoruesitpër Mercurial, Git, Subversion,
Perforce dhe CVS me listat e ndryshimevedhebashkohen.
KDevelop
Ështënjëmjedisiintegruarzhvillimi përsistemet GNU / Linux-Unix, sidhepër Windows, gjithashtu
duke planifikuar ta lëshojnëatënëversionin Mac OS, KDevelop ështëbotuarnënlicencën GPL dhe e
destinuarpërpërdorimnëmjedisingrafik KDE, megjithësepunonedhe me mjedisetëtjera, të tilla si
Gnome.
Ndryshengashumëndërfaqetëtjeratëzhvillimit, KDevelopnuk ka përpiluesin e vet,
prandajmbështetettegccpërtëprodhuarkodbinar. Versioniitijifunditështëaktualishtnëzhvillim e
sipër punon me gjuhëtëndryshmeprogramimi.
Prejtyremundtënxjerrimnëpahdisasi C, C ++, PHP dhe Python. Gjuhët e tjeratë tilla si Java, Ada,
SQL, Perl dhe Pascal, sidheskriptetpër Bash nukjanëtransferuarendenë KDevelop4,
megjithëseatomundtëmbështetennëtëardhmen.
Karakteristikat e përmenduramëposhtëjanëspecifikepërmjedisin e zhvillimit:
Redaktuesikoditburimor me theksimin e sintaksësdhedhëmbëziminautomatik (Kate).
Menaxhimiillojevetëndryshmetëprojekteve, të tilla siCMake, Automake, qmake
(përprojektetëbazuaranëbibliotekën Qt dhe Ant (përprojektetëbazuaranë Java).
Shfletuesi midis klasavetëaplikacionit.
Front-end përgcc, grupiipërpiluesit GNU.
Front-end përkorrigjuesin e GNU.
Përfundimiautomatikikoditnë C dhe C ++.
Lejonkontrollin e versionit.
9. Hyrjenëprogramimnëgjuhën C.
2.Planifikimiindërtimittëprogramitireferohetetapavetëmëposhtëm:
- Përcaktimiiproblemit
- Përcaktimiirezultatevetëpritshme
- Copëzimiiprogramitnëhapalogjike
- Përcaktimiitëdhënavehyrëse
- Shkrimiiprogramitnë editor
- Kompilimiiprogramit
- Testimiiprogramit
- Mëshumë se 40 fjalëkyce, numërimadhoperatorësh
Procesiikompilimitrealizohetsinëskemën e paraqiturmëposhtë:
Ekzekutimiiprogramit
/* Filename: C1FIRST.C
Kërkon një emër, afishon emrin 5 herë, bie sinjali */
#include <stdio.h>
#define BELL '\a'
main()
{
int ctr=0; /* Variabl Integer për të numëruar në cikël */
char fname[20]; /* Përcakton vektor karakteresh për të ruajtur emrin */
printf("Si quheni? "); /* Pyet përdoruesin */
scanf(" %s", fname); /* Merret emri nga tastiera */
while (ctr < 5) /* Cikël për të afishuar emrin */
{ /*5herë */
printf("%s\n", fname);
ctr++;
}
printf("%c", BELL); /* Bie sinjali */
return 0;
}
Karakteret.
‘ “
() , {}, []
/* */
#
%
Identifikuesit
Koha5
distanca_mes_rreshtave
TemperaturaDitore
_Fillimi
a234b35
P8
Nuklejohetqësimboliiparënëidentifikimtëjetënumër, oseidentifikuesitëpërmbajësimbolespeciale
(simboleqënukjanëshkronjaosenumra), p.sh., siçjanë: !, $, %, +, >etj. Kështu, p.sh. do
tëishtegabimnësezgjedhimsiidentifikueskombinimet e simboleve: 4muaj, nata+dita, ab jeta, US$,
Libri#Rend, %fitimi.
Shkronjat e alfabetitshqipë, Ë, çdheÇnukmundtëpërdorengjatëformimittëidentifikatorëve.
Operatorët
Gjatëshkruarjessëshprehjevepëroperim me tëdhëna, nëgjuhën C shfrytëzohenoperatorëtëndryshëm.
Mëkryesorëtmestyrejanë: operatoriishoqërimit, operatorëtaritmetik,
operatorëtrelacionalëdheoperatorëtlogjikë.
Operatoriishoqërimit
Përmesoperatorittëshoqërimit= (barazimit), variablëssëshkruarnëanën
emajtëtëoperatoritishoqërohetvlera e cilagjendetnëanën e djathtëtëkëtijoperatori.Kështu, p.sh.,
përmesshprehjeve:
z=5;
a=2.384;
beta=-37.4;
variablave z, a dhe beta u shoqërohenvlerat e shënuaranëanët e djathtatëbarazimevepërkatëse. Para se
tëshkruhennë program shprehjet e dhënamësipër, përvariablatqëfigurojnënëanën e
majtëtëbarazimitduhetpatjetërtëdeklarohentipetvarësishtngavleratqë u shoqërohenatyre.
Vleraqëiështëshoqëruarnjë variable ngel e pandryshuarderisanukishoqërohetnjëvlerë e re.
Operatorëtaritmetik
Operatori Operacioni
+ Mbledhja
- Zbritja
* Shumëzimi
/ Pjesëtimi
% Moduli
Operatorëtlogjikë
Përkrahasimin e mëshumëshprehjevenjëkohësishtpërdorenoperatorëtlogjikëtëdhënënëtabelë:
Operatori Operacioni Shembull Rezultati
Operatoriikushtëzuar
NëgjuhënCpërdoretnjë operator iveçantëdypjesësh?:,përllogaritjetëkushtëzuar.
y = k ? a : b;
Kompjuteri, saherëqëitakonshprehjet e kësajforme, nësekushtikështëisaktë,
variablësyiandanvlerën e shprehjesa, përndrysheiandanvlerën e shprehjesb.
Klasifikimidherregullimiigabimeve
- Gabimesintakse
- Kompilatorijepgabim
- Gabimelogjike
- Programiekzekutohetsaktë
- Rezultatiigabuar
Studimiinjëprogrami
/* Filename: C2FIRST.C
Program në C që paraqet komentet dhe tregon variablat dhe deklarimet e tyre */
#include <stdio.h>
main()
{
int i, j; /* Këto 3 rreshta deklarojnë 4 variabla */
char c;
float x;
i = 4; /* i dhe j marrin numra të plotë */
j = i + 7;
c = 'A'; /* karakteret vendosen nv thonjëza */
x = 9.087;
x = x * 4.5; /* Ndryshon vlerën e x */
/* Dërgon vleren e variablave në ekran */
printf("%d %d %c %f", i, j, c, x);
return 0; /* Mbaron programin */ Rezultati: 4 11 A 40.891499
Formatimiiprogramitpërfshin:
Përdorimiihapësirave
Gërmat e mëdhadhetëvogla
Përdorimiihapësiravekoleksionfunksionesh
Funksioninkryesor: main
Blloku: pjesabrendakllapave
Cdoinstruksionmbaron me;
/* pjesabrendaështëkoment */
// komentderinë fund tërreshtit
#include <stdio.h>
#include <conio.h>
int main(){
int x=2;
int y=3;
printf("%d",x);//afishimi nr 1
printf("\n");
printf("%d",x);//afishimi nr 2
printf("\n");
printf("%s%d","x=",x);//afishimi nr 3
printf("\n");
printf("%d%d",x,y);//afishimi nr 4
printf("\n");
printf("%s%d%s%d","x=",x,"y=",y);//afishimi nr 5
printf("\n");
printf("\n");//afishimi nr 6 --- nukafishohetasgje
printf("\n");
scanf("%d%d",&x,&y);//afishimi nr 7 --- nukafishohetasgje
getch();
return 0;
}
Variablat (Ndryshoret)
- Atributet
o Variablatkanëemër
o Variablatkanë tip
o Variablatkanëvlerë
- Deklarimi
o Brenda njëfunksioni
o Përparaemrittënëefunksioni
main()
{
int i, j; // 2 rreshta deklarojne 3 variabla
char c;
Tipet e variablave
Deklarimiivariablave:
tipi emri;
psh.
int numri;
int shuma;
ose int numri, shuma;
Inicializimiivariablave:
Konstantet
Karakteret ndihmës Kuptimi
\a Alarm (the terminal's bell)
\b Backspace
\f Form feed (for the printer)
\n Newline (carriage return and line feed)
\r Carriage return
\t Tab
\v Vertical tab
\\ Backslash (\)
\? Question mark
\' Single quotation mark
\" Double quotation mark
\ooo Octal number
\xhh Hexadecimal number
\0 Null zero (or binary zero)
10.Struktura e tëdhënavenëgjuhën C.
Rekursioni
Funksioni që e thërret veten e tij quhet rekursiv.
Rekursivitetiështënjëteknikëepërgjithshmeprogramimiezbatueshmenëprobleme të cilët mund të
definohen në marrëdhënie me veten. Marrim problemin efaktorialit,përrastin më poshtë:
Faktorialii0është 1. Faktorialiinumritpozitivn ështën –herëfaktorialii n-1.
intFactorial(unsignedintn)
{
returnn== 0?1: n*Factorial(n-1);
}
Për n e barabartë me 3, Tabela në vazhdim jep gjurmëte thirrjes sëfunksionitFaktorial.
Njëshembullithjeshtëidemostrimittërekursivitetitështëfaktoriali:
n! = n*(n-1)*(n-2)* . . . * 1
psh: 5! = 5*4*3*2*1
= 5*(4*3*2*1)
= 5*4!
Nërastin e përgjithshëm:
n! = n * (n-1)!
Prarastibazë: 0! = 1! = 1
dherastirekursiv n! = n * (n-1)!
Prafunksionithërretvetveten me njënumërmëpakderisatëarrihetnërastinbazë.
Pra 5! = 5 * 4!
= 5 * 4 * 3!
= 5 * 4 * 3 * 2!
= 5 * 4 * 3 * 2 * 1!
= 5 * 4 * 3 *2 * 1
Shembuj:
1. Gjenifaktorialin e njënumri n.
int faktorial (int n){
if(n==1) return 1;
else
return n*faktorial(n-1);
}
Ushtrime:
- Stivat
Stivaështënjëstrukturëtëdhënashnëtëcilënshtohendhehiqentëdhënatsipasmodelit last in first
out(LIFO)
- AplikimetëStivës
Sistemikompjuterik e përdorstivëngjatëekzekutimittëprogramitpërtëruajturadresat e kthimittëfunksioneve,
variablatlokale,etj. Disakompjuteraipërdorinstivatpërtëkryerveprimematematike.
Ekzekutimiinjëfunksionirekursivparashikonqëtëdhënat me tëcilat po punohetnëmomentin
ethirrjesrekursivetëruhen. Këtotëdhëna/thirrjefshihenkurpërfundojnëveprimete brendshme
(mekanizmiLIFO).
Nëstivëruhenparametratdhevariablat locale.
Duke përdorurstivën, ështëgjithmonë e mundurqënjëprogram rekursivtëkthehetnëiterativ.
Shembull
Termipasardhësnëvargunfibonaccijepetsi:
fib (1) =1 fib (2) =1 niveliaksiomeosebazë
fib (k) = fib (k-1) + fib(k-2) përk > 2
Sekuenca e fibonacitmundtëkrijohetnëpërmjetnjëfunksionirekursivqëllogarittermin e k-tëtëvargut.
intfib(intk)
if (k=1) or (k=2) then f =1
else
f=fib(k-1)+fib(k-2)
return f
Stivatstatikedhedinamike
Stivatstatikekanëkëtocilësi:
- Madhësifikse
- Mundtëimplementohen mevector
Stivatdinamikekanëkëtocilësi:
- Ndryshojnëpërmasatsipasnevojës
- Mundtëimplementohen me anëtëlistavetëlidhura.
Veprimetnëstivë
Pop
Push
push(10);
push(15);
- Push
Gjendja e stivesh pas ekzekutimittëcdoveprimi push
Kthendheheqnjevlerengastiva
- Pop
Supozojmëqëekzekutojmëtreveprime pop tënjëpasnjeshmenëtënjëjtënstivë.
- isFull:njëveprimqëkthennjëvlerëbooleane.
Dy veprimetbazënëradhëjanëenqueueand dequeue.
enqueuedo tëthotëtështoshnë fund tëradhës
dequeuedo tethotëtëheqëshnjë element ngafillimiiradhës
11.Algoritmatlinearë, tëkushtëzuardhecikliknëgjuhën C.
Nëoperatorëtkushtëzuesbënpjesëinstruksioniificilipërdoretpërekzekutimin e
njëkodinësenjëkushtështëivërtetë.
Sintaksa:
If (kushti)
{
//instruksionet
}
Kushtispecifikon se cilashprehje do tëvlerësohet. Nësekushtiështëivërtetë, do
tëekzekutoheninstruksionetbrendakllapavegjarpërueshe. Nësekushtinukështëivërtetë,
instruksionetthjeshtinjorohen, dhevazhdohetekzekutimiiprogramimitqëgjendet pas kushtitif.
Kushtetkontrollohenngaopratorëtoperacional.
Shembull:
/*teshkruhetnje program qe lexonnjenumerteplote n dhe
paraqet ne ekrannjenjoftimkutetregoj se kynumerplotepjestohet me 5*/
#include <stdio.h>
#include <conio.h>
int main ()
{
int numri;
printf ("Futninjenumerteplote:\n");
scanf ("%d", &numri);
if(numri%5==0)
printf ("Numriplotepjestohet me 5!");
else
printf ("Numrinukplotepjestohet me 5!");
getch ();
return 0;
}
Instruksioni else
Instruksioni if mundtëndiqetngainstruksioni else, iciliekzekutohetkur if është false.
Sintaksa:
If (kushti)
{
//instruksionet
}
Else
{
//instruksionet
Kompilatori do tëtestojëkushtet:
shembull:
/* lexoningatastjera 3 numrateploteshfaqni ne ekrannjemesazhnese midis tyre ka 2 numrapozitivose
jo */
#include <stdio.h>
#include <conio.h>
int main()
{
int a,b,c;
int count=0;
printf("Jepninumrin a : \n");
scanf("%d",&a);
printf("Jepninumrin b : \n");
scanf("%d",&b);
printf("Jepninumrin c : \n");
scanf("%d",&c);
if(a>0)
count++;
if(b>0)
count++;
if(c>0)
count++;
if(count>=2)
printf("Midis tyre ka 2 numrapozitiv!");
else
printf("Midis tyrenuk ka 2 numrapozitiv!");
getch();
return 0;
}
Ushtrim:
Gjenimaximumin e 3 numraveqëlexohenngatastjera.
Strukturapërpërsëritje(cikli) mundësojnëbllok-
komandattërealizohenderisatëplotësohetnjënjëkushticatuar. Përsëritje e ciklitquhetiteracion.
Algoritmatlinearë,
tëkushtëzuardhecikliknëgjuhënC,përdorenpërpërseritjenenjëveprimiosebashkësiveprimesh.
Strukturatciklikekryesore :
For
While
Do …While
StrukturatciklikeFor
Kjokomendëjulejontëshkruaninjëcikëliciliekzekutohetprejnjënumërspecifikherësh.
Sintaksa:
Shembull
while (kushti)
{
instruksioni (et);
}
Shembull
Sintaksa:
do
{
intruksioni(et);
}
while (kushti);
Shembull
Ushtrime:
Llogarisnishumatpërvargjet e mëposhtme:
1. S=1+2+3+…………….+n (n>0)
Zgjidhje
#include <stdio.h>
#include <conio.h>
int main () {
int i, n, k, shuma=0;
printf ("Jepninumrin n:");
scanf ("%d", &n);
for (i=1; i<=n; i++)
{
k=i;
shuma=shuma+k;
}
Printf ("Shuma e %d kufizavetevarguteshte %d", n, shuma);
Getch ();
return 0;
}
2. S= 1+3+5+…………+(2n-1)
Zgjidhje:
#include <stdio.h>
#include <conio.h>
int main () {
#include <iostream> using namespace std;
int main()
{
int a = 5; int *b;
/*
double *k; k = &a;
*/ //GABIM: tip igabuaripointerit (double)
}
int i, n, k, shuma=0;
printf ("Jepninumrin n:");
scanf ("%d", &n);
for (i=1; i<=n; i++)
{
k=2*i-1;
shuma=shuma+k;
}
Printf ("Shuma e %d kufizavetevarguteshte %d", n, shuma);
Getch ();
return 0;
}
Madhësia e njëpointerivaretngaarkitektura e
sistemitkompjuterikteiciliekzekutohetprogramisidhengasistemioperativ: sistemikompjuterikprej 32 bitëve do
tëshfrytëzojëadresamemorikeprej 32 bitëve, dhepointerat do tëzënëhapësirëadresueseprej 4 bajtëve,
kursetesistemetkompjuterike me 64 bite, pointeri do tëzëhapësirëadresueseprej 8 bajtëve. Mëposhtë e
#include <iostream> using namespace std;
struct typeX
{
int t1, t2, t3, t4; double t5, t6, t7, t8;
};
int main()
{
ilustrojmëkëtë me njëshembull.
Konceptiiskedarit
Skedarëtpërkufizohennëmenyrëabstractesikoleksionbyteshtëcilëtruhennënjëpajisjeruajtesedytësore e
cilazakonishtështënjë disk injë tipi cfarëdo. Kjobashkësibyteshmundtëinterpretohet psh.si karaktere, fjalë,
rreshta, paragrafe apo faqenganjëdokumentteksti,
fushadherekordepërnjëbazëtëdhënashosepikselanganjëimazhgrafik. Përmbajtja e
njëskedaripërcaktohetplotësishtngastruktura e
tëdhënavedheveprimetqëpërdorenngaprogramipërtëprocesuaratëskedar. Vet
skedariështënjëvargregjistrimeshosenjëbashkësitëdhënashtëtënjëjtit tip tëvendosuranëtë. Çdoskedar ka
njëemërdhekjoi ben tëditursistemit ta dallojkëtëskedarngatëtjerët. Përdoruesitiinteresonpërmbajtja e
skedaritpërtëkryeroperacionemenaxhuesesishtim, modifikim, lexim, afishimtëtij.
Skedarëtjanëtëdytipevekryesore: skedartëvijueshëm(tekst) dhe skedar me hyrjetëdrejtëpërdrejtë
(skedarebinar). Nërastin e parëregjistrimetvendosennjëri pas tjetrit. Përtëlexuarpërmbajtjen e
njëskedaritëtillëleximi nis përherëngafillimiiskedarit, bredhjabëhetregjistrim pas regjistrimi,
derisatëarrijmënëregjistriminqëjemitëinteresuar. Pranjëkerkimitillëështëshumëingadaltë. Nëskedarët e
tipittëdytë, me hyrjetëdrejtëpërdrejtëçdoregjistrimështëipajisur me njënumërregjistrimi (ID)
qëimundësonprogramittëhyjnëmenyrëdirekteteregjistrimiqëduampaqenë e
nevojshmebredhjangafillimiskedarit. Por qëtëbëhetnjëteknikë e tillë e mundurrealishtduhettënjohim ID
mëparë. Nënjëskedartëtillëkërkimiështëshumë heremëishpejtë.
Skedarëttekstpërdorenmëtepërnëpaijsjetruajtësesekondarendërkohëskedarët me
hyrjetëdrejtëpërdrejtëpërdorennëkujtesatmasivesi HDD. Njëtjetërdallim midis
këtyredytipeveështëformatiipërdorurpërruajtjennë disk.
Skedarettekstiruajnënumratsistringjeosevektorkaraktereshndërkohëskedarëtbinarnumratiruajnëashtusijanënëm
emorie, pra tipi integer 2 byte, float 4 byte etj. Hapja e skedareve me njërënngakëto 2
mënyrapërcaktondhemënyrënsesipërmbajtja do trajtohet: si do përcaktohetkarakteriifunditirreshtit,
ifunditiskedaritetj. Fillimisht do tënjohimmënyrënsesipunohet me skedarëttekst e më pas me skedarëtbinar.
Veprimet me skedarët:
1. Krijiminjëskedaritëri
2. Hapja e njëskedariekzistues
3. Leximidheshkrimiiinformacionitnëskedare
4. Mbyllja e njëskedari
- Hapja e skedarit
Përpara se tëshkruajmë apo tëlexojmënjëskedarduhettë ta hapimatë. Hapja e
skedaritsiguronlidhjenndërmjetprogramitdhesistemittëshfrytëzimitpraibëntënjohursistemittëshfrytëzimit se
ciliështëskedaridheçfarë do tëbejmë me të (do shkruajmë apo do lexojmë). Elementiigjuhës C
qëmbankëtotëdhënaështëstruktura FILE. Kur bëhetkërkesapërhapjen e skedarit ajo qëkthehetështënjë pointer
nëstrukturën FILE. Çdoskedarihapur ka strukturën FILE qëshënjonnëtë. Struktura FILE
mbaninformacionetëndryshmepërskdarinmbitëcilin do punojmë, simadhësia, vendodhjen e
buferittëtëdhënaveetj. Kjostrukturështë e deklaruarëebibliotekënstdion.h. Deklarimiinjëvariablitëtipit FILE
icilishënjonmbinjëskedartëcaktuarështësimëposhtë:
FILE *fptr;
Instruksioni
fptr = fopen("sk.txt","w");
ikërkonsistemittëshfrytëzimittë hap skedarin sk.txt (mundtëspecifikohetdhe path iplotëabsolut). Simboli w
itregonsistemitqëskedari do tëhapetpërshkrim.
Mënyrat e hapjessëskedarit:
Mënyra Kuptimi
r Hapetpërlexim
w Hapetpërshkrim
a Hapetpërshtim, shkruajmënë fund tëskedarit
r+ Hapetpërleximdheshkrim
w+ Hapetpërleximdheshkrim
a+ Hapetpërshtim, shkruajmënë fund tëskedarit
Leximidheshkrimiinformacionitnënjëskedar:
Paketa e funksionevestandartevetëtrajtimittëskedarëveofron 4
mënyratëndryshmepërshkrimdheleximtëdhënash. E para:
tëdhënatmundtëlexohendheshkruhennëskedarkarakter pas karakteri me anëtëfunksionevegetc ()
dheputc (). E dyta: tëdhënatlexohendheshkruhennëskedarsistringje me anëtëfunksionevefgets ()
dhefputs () nëtënjëjtënmënyrësijanë gets () dhe puts (). E treta:
tëdhënatlexohendheshkruhennëskedarnënjë format plotësishttëpërcakturar(numratëplotë, me presje,
karaktere, stringjeetj.) me anëtëfunksionevefscanf () dhefprintf () sikemiparëscanf () dheprintf (). E
katërta: tëdhënatgjithashtumundtëlexohendheshkruhennënjëskedardhenjë format tëritëquajtur record
apo bllok. Një record ështënjëblloktëdhënash me
madhësitëpërcakturardhenëpërgjithsipërdoretpërtëruajturnjëvargtëdhënashtëngjashmeashtusikemipa
rëvektorët apo strukturat. Funksionet e përdorurpërkëtorastejanëfread () dhefwrite ().
Shkriminëskedar:
#include <stdio.h>
int main(){
int n;
FILE *fptr;
fptr=fopen("C:\\sk.txt","w");
if(fptr==NULL)
printf("Gabim!");
printf("Jepnivleren e n: ");
scanf("%d",&n);
fprintf(fptr,"%d",n);
fclose(fptr);
return 0;
}
Leximingaskedari:
#include <stdio.h>
int main(){
int n;
FILE *fptr;
fptr=fopen("C:\\sk.txt","r");
if(fptr==NULL)
printf("Gabim!");
fscanf(fptr,"%d",&n);
printf("%d",n);
fclose(fptr);
return 0;
}
Mbyllja e skedarit:
Pasimbarohetsëshkruari, skedariduhetmbyllur. Kjobëhet e mundur me instruksionin:
Fclose (fptr);
Pra, përsëri me ndihmën e pointerititregohetkompilatorit se adresa e skedaritduhettëmbyllet. Mbyllja e
skedarit ka disaefekte. Sëparidetyronkarakteret e mbeturanë buffer tëshkruhennë disk.
Megjithësebufferiështëipadukshëmështëshumëinevojshëm. Kjopërfaktin se do tëduhejnjëkohëqëkoka e
leximittëdiskuttëpozicionohetnëpistëndhesektorin e duhur. Përkëtëarsyelindnevoja e buferit.
Gjatëekzekutimittëfunksionitputc () icililexonnjëkarakterngatastjeradheduhet ta shkruajnëskedarkarakteret e
lexuaranukshkruhendirektnë disk po atovendosennë buffer nënjëzonëtë memories. Kur ky buffer është plot
përmbajtja e tij do tëregjistrohetnjëherëshnë disk. Nëmomentinqë ka përfunduar puna me
këtëskedartëgjithatëdhënat e mbeturanë buffer do tëshkruhennëskedar.
Pratëdhënatkalojnëngabufferinëskedarkurbuferiështëplotë,skedarimbyllet apo program perfundon.
Ushtrime:
2. Shtoni në fund të skedarit students.txt nota për m studente të tjerë të cilat do i lexoni nga
përdoruesi.
13.Proçeduratdhefunksionetnëgjuhën C.
Njëfunksionështënjëgrupipohimeveqësëbashkukryejnënjëdetyrë. Çdo program në C ka tëpaktënnjëfunksion,
iciliështë main (), dhetëgjithëprogrametmëtëparëndësishmemundtëpërcaktojnëfunksioneshtesë.
Një deklaratë e funksioniti tregonpërpiluesitpëremrin e njëfunksioni, llojin e
kthimitdheparametrat. Një përkufizimi funksionit sigurontrupinaktualtëfunksionit. Bibliotekastandardenë C
ofronfunksionetëshumtatëintegruaraqëprogramimundt'ithërras. Përshembull, strcat
() përtëbashkuardyvargje, memcpy () përtëkopjuarnjëvendndodhjetëkujtesësnënjë vend tjetër,
dheshumëfunksionetëtjera.
Njëfunksionmundtëreferohetgjithashtusinjëmetodëosenjënënrutinëosenjëprocedurë, etj.
Forma e përgjithshme e njëpërkufizimitëfunksionitnëgjuhënprogramuese C ështësimëposhtë:
return_typefunction_name (parameter list) {
Njëpërkufizimifunksionitnëprogramimin C
përbëhetnganjë kokëfunksioni dhenjë trupfunksioni. Këtujanëtëgjithapjesët e njëfunksioni.
Return Type-
Njëfunksionmundtëkthejënjëvlerë. Return_type ështëllojiivlerëssëfunksionittëkthimit. Disafunksione
kryejnëoperacionet e dëshiruara pa kthyernjëvlerë. Nëkëtërast, kthimi_llojështëfjalakyçe
e pavlefshme.
Emriifunksionit - Ky ështëemriaktualifunksionit. Emriifunksionitdhelista e
parametravesëbashkupërbëjnënënshkrimin e funksionit.
Parametrat - Njëparametërështësinjëmbajtësvendesh. Kur thirretnjëfunksion,
juikaloninjëvlerëparametrit. Kjovlerëreferohetsiparametërose argument aktual. Lista e
parametraveireferohetllojit,
renditjesdhenumrittëparametravetënjëfunksioni. Parametratjanëopsionalë, domethënënjëfunksionnuk
mundtëpërmbajëasnjëparametër.
FunksioniTrupi - Trupi ifunksionitpërmbannjëkoleksiontëpohimeveqëpërcaktojnë se
çfarëbënfunksioni.
Shembull:
Mëposhtëjepetkodiburimorpërnjëfunksiontëquajtur max (). Ky funksionmerrdyparametra num1 dhe num2
dhekthenvlerënmaksimale midis tyre.
/* function returning the max between two numbers */
int result;
result = num1;
else
result = num2;
return result;
Deklaratat e funksionit
Një deklaratë e funksioniti tregonpërpiluesitpërnjëemërfunksionidhemënyrën e
thirrjessëfunksionit. Trupiaktualifunksionitmundtëpërcaktohetveçmas.
Njëdeklaratëfunksioni ka pjesët e mëposhtme:
return_typefunction_name (parameter list);
Përfunksionin e përcaktuarmëlart max (), deklarimiifunksionitështësimëposhtë:
int max (int num1, int num2);
Emrat e parametravenukjanëtërëndësishëmnëdeklarimin e funksionit, kërkohetvetëmllojiityre,
kështuqësamëposhtëështëgjithashtunjëdeklaratë e vlefshme:
int max (int, int);
Deklarimiifunksionitkërkohetkurpërcaktoninjëfunksionnënjëskedarburimordhe e
quaniatëfunksionnënjëskedartjetër. Nënjërasttëtillë,
juduhettëdeklaronifunksioninnëkryetëskedaritqëthërretfunksionin.
Thirrja e njëfunksioni
Kur krijojmënjëfunksion C, përcaktojmënjëpërkufizimtëasajqëfunksioni ka
tëbëjë. Përtëpërdorurnjëfunksion, do tëduhettëthërrasimatëfunksionpërtëkryerdetyrën e përcaktuar.
Kur një program thërretnjëfunksion, kontrolliiprogramittransferohetnëfunksionin e
thirrur. Njëfunksionithirrurkryennjëdetyrëtëpërcaktuardhekurdeklarata e tij e
kthimitekzekutohetosekurarrihetmbajtësiitijimbylljessëfunksionit, ai e kthenkontrollin e
programitpërsërinëprograminkryesor.
Përtëthirrurnjëfunksion, thjeshtduhettëkaloniparametrat e kërkuarsëbashku me emrin e funksionit,
dhenësefunksionikthennjëvlerë, atëherëmundtëruanivlerën e kthyer.
Përshembull:
#include <stdio.h>
/* function declaration */
int main () {
int a = 100;
int b = 200;
int ret;
return 0;
int result;
result = num1;
else
result = num2;
return result;
1 Thirrjesipasvlerës
Kjometodëkopjonvlerënaktualetënjëargumentinëparametrinzyrtartëfunksionit. Nëkëtë
rast, ndryshimet e bëranëparametrinbrendafunksionitnukkanëasnjëefektnë argument.
2 Thirrje me referencë
Kjometodëkopjonadresën e njëargumentinëparametrinzyrtar. Brenda funksionit,
adresapërdoretpërtëhyrënëargumentinaktualtëpërdorurnëthirrje. Kjo do
tëthotëqëndryshimet e bëranëparametërndikojnënë argument.
Si parazgjedhje, C përdor thirrje me vlerë përtëkaluarargumente. Nëpërgjithësi, do
tëthotëqëkodibrendanjëfunksioninukmundtëndryshojëargumentet e përdorurapërtëthirrurfunksionin.
Objektivat
Lista e objektivave:
- Ushtrim 1
Shkruani një funksion që njëhson sipërfaqen dhe perimetrin e një katrori me brinjë a.
Zgjidhje
#include <stdio.h>
#include <conio.h>
void sipPerimetri(int); //prototipiifunksionit
int main () {
int a;
printf ("Jepnibrinjen a: \n");
scanf ("%d", &a);
sipPerimetri(a); //thërritja e funksionitnëprograminkryesor main
getch ();
return 0;
}
//deklarimiinjëfunksioniqëmerrparametradhenukkthenvlerë
void sip Perimetri (int brinja) {
printf ("Siperfaqja e katrorit: %d \n", brinja*brinja);
printf ("Perimetrikatrorit: %d \n",4*brinja);
}
Ushtrim 2
Shkruani një funksion që llogarit sipërfaqen e një trekëndshi kënddrejtë ma katete a,b.
Në programim një funksion është një grup instruksionesh të ekzekutueshme që i jep zgjidhje një
problemi apo një detyre. Çdo program në C ka të paktën një funksion main(), i cili egzekutohet i pari
kur thërritet programi.
Kemi dy tipe funksionesh në programimin me gjuhën C:
Funksione nga libraritë e funksioneve.
Funksione të përcaktuar nga përdoruesi
Funksione nga librarite e funksioneve ofrohen nga gjuha c dhe i vinë në ndihmë përdoruesit për të
zgjidhur problemeve të ndyshme.
Funksionet e krijuara nga përdoruesi.
Gjuha C i lejon përdoruesit të përcaktojnë funksione dhe ti shkruajne ato sipas kërkesave të
tyre. Këto tipe funksionesh quhen funksione të përcaktuar nga përdoruesi. Çdo program
nëgjuhën C ka tëpaktënnjëfunksion, funksionin main()
dhefunksionetqëpërcaktohenpërtëzgjidhurproblemetëndryshmengapërdoruesijashtëfunksionitkryesor
ë. Kemi dymënyrapërpërcaktimin e funksionevetëkrijuarngapërdoruesi :
Deklarim funksioni, thërritje funksioni dhe më pas përcaktim funksioni
Përcaktimi i njëfunksioni
Tipi_i_kthimitemri_funksionit(listaparametrave )
{
trupi i funksionit
}
tipi kthimit: Tipi itëdhënaveqëkthenfunksioni.
emrifunksionit: Emërtimifunksionit.
parametrat: Për kalimin e vlerave tek parametrat. Lista e parametrave i referohet tipit, radhës, dhe
numrit të parametrave në funksion.
trupi i funksionit: Një ose disa instruksione që përcaktojnë se çfarë do të bëj funksioni. Parametrat
janë opsional; pra mund të përcaktoni funksione pa parametra
Nëseështë e nevojshmemundtëbëhenndryshimebrendanjëfunksionipandryshuarstrukturën
e tëgjithëkodit.
injëjtifunksionmundtëpërdoretpërinputetëndryshme.
Ndërtimi i funksionit pa parametra i cili nuk kthen asnjë vlerë, thjesht printon një mesazh në ekran
“Funksioni i pare i ndertuar ne gjuhen c”:
#include <stdio.h>
void funksioni_pare()
{
printf(" Funksioni i pare i ndertuar ne gjuhen c");
}
int main()
{
funksioni_pare();
return 0;
}
#include <stdio.h>
int mbledhja(int a, int b);
int main()
{
int num1,num2,shuma;
printf("Shkruani dy numra për ti mbledhur\n");
scanf("%d %d",&num1,&num2);
shuma=mbledhja(num1,num2);
printf("shuma=%d",shuma);
return 0;
}
int mbledhja(int a,int b)
{
int mbledhja;
mbledhja=a+b;
return mbledhja;
}
14.Elementëtbazëtëprogramimitnëgjuhën C++.
Elementet e gjuhësc++:
C++ është një gjuhë programimi me qëllime të përgjithshme.
C++ përdoret për krijimin e lojrave kompjuterike, aplikacione etj.
C++ është derivuar nga gjuha e programimit C dhe në pjesën më të madhe bazohet në të.
Kodi C++ mund të ekzekutohet, ruhet, dhe shpërndahet pa instaluar softëare shtesë. Për të instaluar
softëare shtësë në kompjuter, duhen dy komponentët:
Integrated Development Environment (IDE): i cili siguron mjete për përshkrimin e kodit.
Çdo tekst editor mund të përdoret si IDE.
Kompilatori: Kompilon kodin burim në program të ekzekutueshëm. Janë disa kompilator
në C++ që mund të përdoren si: Code:Blocks, i cili përfshin edhe IDE dhe kompilatorin të
vlefshëm për sistemet operative Ëindoës, Linux dhe MacOS.
#include <iostream>
using namespace std;
int main()
{
cout << "Përshëndetje!";
return 0;
}
- #include <iostream>
C++ ofron header të ndryshmë, të cilat nevojiten për mirëfunksionimin e programit. Programi i
mësipërm kontrollon për header-in <iostream>. Simboli thurje (#) në fillim të rreshtit tregon
kompiler-it pre-processor-et. Në këtë rast, #include tregon pre-processorit për<iostream>.
<iostream> përcakton standartin të objekteve stream për të dhënat input dhe output.
- using namespace std;
Rreshti using namespace std; i tregon kompilatorit të përdorë standartin std (standard)namespace,
std namespace përfshin karakteristika të C++ Standard Library.
Funksioni Main
Programi fillon ekzekutimin me funksionin, main().
Kllapat tregojnë { } fillimin dhe mbarimin e funksionit, i cili quhet ndryshe edhe trupi i funksionit.
Informacioni brenda kllapave, tregon çfarë realizon funksioni kur ekzekutohet.
- Cout<<
Në shumë mjedise programimi, standarti apriori për afishimin e rezulateve është ekrani. Në C++,
cout është objekti stream që akseson ekranin.
cout përdoret në kombinim me operatorin e daljes së të dhënave ( << ) për insertimin e të dhënave që
vijnë pas tij në ekran. Operatori i insertimit mund të përdoret disa herepas cout.
Në C++, pikëpresja përdoret për të treguar fundin e një instruksioni, ndaj çdo instruksion duhet të
mbarojë me pikëpresje.
- Cin>>
shërben për tëinicializuarvariablat. Atojanë tëshoqëruaragjithëmonëngahyrjet>>.
Inicializimiivariablavemund tëndodhë nënjëinstruksion të vetëm ose nëdisainstruksionesi mëposhtë:
Cin>> a >> b;
Cin>>a;
Cin>> b;
Një bllok kodi është një bashkësi logjike instruksionesh, rreshuar nga kllapa hapëse dhe
mbyllëse.Gjithashtu mund të përdoren shumë instruksione në një rresht të vetëm, mjafton të jenë të
ndara me pikëpresje, përndryshe do të marrim një error. Operatori cout nuk inserton një rresht të ri
në fund të instruksionit.Një mënyrë për printimin në dy rreshta është endl, i cili vendoset aty ku
duhet thyerja e rreshtit.
Komentetshpjegojnëarsyen e
përdorimittësecilitprejkodeve .Kompilatorëtinjorojnëçdogjëqëështëbrendakomenteve,
prandajkomentetnukshfaqennërezultate. Njëkomentqëfillon me (//) quhet ‘single-line’ koment,
komentnënjëreshttëvetëm. Simbolet // itregojnëkompilatorittëinjorojëçdogjëqëndodhet pas derinë
fund tërreshtit. Komentetqëshkruhennëshumërreshtafillojnë me simbolin /* dhembarojnë me
simbolin */ duke u shkruarkomentenënjërreshttëvetëmosenëshumërreshta.
Variablat. Krijimi i një variable, zë një një hapsirë të caktuar në memorje për të ruajtur vlerat.
Kompilatori, kërkon që të përcaktoni edhe tipin e të dhënave të çdo variable që deklaroni.Për tipin e
të dhënave numra të plotë përdoret fjala kyçe int.Gjuha e programimit C++ është case-sensitive, që
do të thotë‘variabla’ dhe ‘Variabla’ janë dy identifikues të ndryeshëm.Të gjitha variablat
identifikohen me emrin dhe tipin e të dhënës para se të përdoren në program. Mund të përcaktohen
disa variabla të të njëjtit tip njëherësh por të ndara me presje.
Deklarimi i variablave
Variablave mund t’u jepen vlerat në momentin e deklarimit ose më vonë. Gjithashtu, mund të
ndryshohen vlerat e një variable gjatë programit.
Rregullatqëduhettëzbatojmëkurpërcaktojmëvariablatjanë:
duhet të kenëlidhje me problemin
nukmund tëfilloj me shenjatekstuale
duhet tëdeklarohen para përdorimit
tipi i të dhënave specifikohet në varësi tëvlerave qëvariablatmarrin
Tipetthemeloretëtëdhënave
Kur programojmëduhettëvendosimoserezervojmëvariablatnëkujtesën e kompjuterit, por
kompjuteriduhettëdijëçfarëllojtëdhënash ne do tëvendosim, mbasinukijepet e
njëjtahapësirëkujtesenjënumritëplotë, osenjënumridhjetor, osenjëkarakteri.
Kujtesa e kompjuteritorganizohetnë byte. Një byte ështëminimumiisasisësëkujtesësqë C++
mundtëmenaxhojë. Një byte lejonrezervimin e njësasietëvogëltëdhënash: njëkaraktertëvetëm,
osenjënumurtëplotëtëvogël (nëpërgjithësinjëtëplotë midis 0 dhe 255). Përveçkësaj,
kompjuterimundtëmanipulojëtëdhënamëkomplekseqëkërkojnëdisa byte përtirezervuar, të tilla
sinumrat e gjatëosenumrat jo tëplotë. Nëshembullin e mësipërmtëllogaritjessësipërfaqes ne do
tëmjaftoheshim me numrat e plotëdhenëkëtërast do tëduhejqë para përdorimittëvariablave,
tideklaronimata, pratëpërcaktonimtipet e tyresinumrateplotë. Tipevetëndryshëmtëtëdhenavenë C++,
sidheintervaliivleraveqëmundtëpërdoretpërsecilënprejtyre. Këtatipequhendhetipeprimitivë:
Ndërtimiikodevenëgjuhënc++:
// afishimiinjëmesazhi
#include <iostream>
using namespace std;
int main()
{
cout<< "Përshëndetjengagjuha C++"
<<endl;
return 0;
}
// afishimiinjënumri
#include <iostream>
using namespace std;
int main()
{
int a;
cout<< "Ju lutemshkruaninjenumer: ";
cin>> a; // leximiivaiablave
cout<< "Kenidhenenumrin: "
<< a
<<"\n";
return 0;
}
//Mbledhja e dynumrave
#include <iostream>
using namespace std;
int main()
{
int a, b, c; // deklarimiivaiablave
a = 23;
b = 7;
c = a + b;
cout<< "Shuma e numrave "
<< a
<<" dhe "
<< b
// assignment operator
#include <iostream>
using namespace std;
int main ()
{
int a, b; // a:?, b:?
a = 10; // a:10, b:?
b = 4; // a:10, b:4
a = b; // a:4, b:4
b = 7; // a:4, b:7
cout<< "a:";
cout<< a;
cout<< " b:";
cout<< b;
return 0;
Operatorëtnëgjuhënc++:
Operatorëtarithmetikë(+, -, *, /, %)Veprimetsimbledhja, zbritja, shemëzimi,
pjestimiikorrespondojnëveprimevearithmetike. Ndërsa modulo ështëveprimiqëjepmbetjen e
pjestimittëdyvleravetëplota. Operatoriitijështëshenja e përqindjes (%).
Operatorët e përbërëtëdhënjessëvlerës (+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=) Kur
duamtëmodifikojmëvlerën e njëvariabli duke
kryernjëveprimnëvlerënaktualishttërezervuarnëkëtëvariabël, ne mundtëperdorimoperatorët e
përbërëtëdhënjessëvlerës.
Operatorët e krahasimit (==, !=, >, <, >=, <= ) Me qëllimqëtëvlerësojmëkrahasimin midis
dyshprehjeve ne mundtëpërdorimoperatorëtrelacionalëdhetëbarazisë.
Operatorëtlogjikë(!,&&, || )Operatori ! ështëoperatorii C++ qërealizonvepriminlogjik JO, dhe ka
vetëmnjë operand boolean, tëvendosurnëtëdjathtë, dhe ajo qëbënështëgjetja e inversittëvlerëssëtij,
pra false në se operandi është true dhe true në se operandi është false. Pra, ai kthenvlerën e
kundërtbooleanetëoperandittëtij. Operatorëtlogjikë&&dhe ||
përdorenkurvlerësohendyshprehjepërtëmarrënjërezultattëvetëmrelacional.
Operatori&&ikorrespondonveprimitlogjikboolean DHE. Ky veprimrezulton true në se
tëdyoperandëtjanë true, dhe false përndryshe. Operatori || ikorrespondonveprimitlogjikboolean OSE.
Ky veprimrezulton true në se tëpaktënnjëngaoperandëtështë true, dhe false kurtëdyoperandëtjanë
false.
Ushtrime me operator:
// operatorëtarithmetikë
#include <iostream>
using namespace std;
int main() {
int sum1 = 100 + 50; // 150 (100 + 50)
int sum2 = sum1 + 250; // 400 (150 + 250)
int sum3 = sum2 + sum2; // 800 (400 + 400)
cout<< sum1 << "\n";
cout<< sum2 << "\n";
cout<< sum3;
return 0;
}
// Operatorët e krahasimit
#include <iostream>
using namespace std;
int main() {
int x = 5;
int y = 3;
cout<< (x > y); // kthenvlerën 1
return 0;
}
// Operatorëtlogjikë
#include <iostream>
using namespace std;
int main() {
int x = 5;
int y = 3;
cout<< (x > 3 && x < 10); // returns true (1)
return 0;
}
Disangaplatformat e gatshmeqëpërdorennëndihmëtëprogramimitjanë:
СоdеВlосkѕ
Eclipse përndërtimin e gjuhëve C, C++, Java etj
GNAT Programming Studio
Visual Studio Code
CodeLite
Netbeans
Dev C++
C++Builder
CLion
MonoDevelop
KDevelop
Notepad++
Aplikacionetmëtëpërdorurapërtëmësuarprogramimjanë:
SoloLearn
SoloLearnnukështëthjeshtnjëaplikacion, por
njëseriaplikacioneshdizenjuarpërdisagjuhëprogramimispecifike. Seritë e aplikacionevejanëdizenjuar
me ndërfaqetëthjeshtapërtëmësuarprogramimin me anëtëdisakuiceve. Pas
kompletimittënjëseksionipërnjëllojtëcaktuarprogramimipërdoruesivlerësohet me pike dhenë fund me
çertifikatëkompletimi. Aplikacionirendittëgjithëpërdoruesitnëvarësitëpikëvetëmarra. Ky
aplikacionështëpapagesë.
Programming Hub
Ky aplikacionështëpërtëmësuarrrethgjuhëvetëprogramimitnëçdokohëdhe kudo. Aplikacioni ka
njëkoleksiontëmadhshembujshdhenjëkurstëplotëtëpasur me materialenëmbi 17 gjuhë.
Proçesiitëmësuaritështëshumëithjeshtë, me anëtëgrupimevetëvoglatëmësimeve. Ky
aplikacionështëpapagesë.
Udacity
Udacity ështëaplikaciondhenjë program icilikrahasuar me aplikacionet e
tjeratëprogramimitofronnjëmënyrëmë intensive tëtëmësuarittëprogramimit.
Nëpërmjetkëtijaplikacionimundtëzgjidhninjëgjuhëprogramimisi HTML, JavaScript, CSS, Python etj.
Kursetnë Udacity instruktohenngaekspertëtëindustriesësi Google, Facebook, MongoDB, dhe
Cloudera. Vëtëmdisangakursetjanëpapagesë.
Code Pen
Code Pen ështënjëplatformë online mbidizenjimindhezhvillimin frontend web.
Atymundtëekzekutonimodifikoni apo tëshkruanikode HTML, CSS, JavaScript
sidhetëshikonirezultatinnëkohëreale. Dizenjuesdhezhvilluestëndryshëmnga e gjithë bota,
ngarkojnënëkëtëplatformëprojektetmëkreativetëtyre, përtëndarëeksperiencë inspirueseedhe me
zhvilluesit e tjerë.
16.Siguria e programeve.
Koncepetdheparimet e menaxhimittësigurisëjanëelementetmëtërëndësishmenëpolitikën e
sigurisëdhevendosjen e njëzgjidhjeje.
Atopërcaktojnëparametratthemeloretënevojshmenënjëmjedistësigurtëpune,
gjishtashtuqëllimetdheobjektivatqëdydizenjuestëpolitikavedhezbatuestësistemitduhettëarrijnëpërtëkrijuarn
jëzgjidhjetësigurtë. Ekzistojnëtreparimekryesoretësigurisë: 1. Konfidencialiteti 2. Integriteti 3.
DisponueshmëriaKontrollet e
sigurisëjanëvlerësuarnëmënyrëtipikenëseatatrajtojnëinformatabazëtëpranimevetësigurisë.
Nëpërgjithësinjëzgjidhje e plotë e sigurisëduhettëadresohetnëmënyrëadekuatenësecilinprejkëtyreparimeve.
Këtotreparimejanëkonsideruarmëtërëndësishmenësferën e sigurisë. Por është e
rëndësishmetëtheksojmëqëçdokompani e caktuarvaretngamasat e sigurisëqë ajo ndërmerr.
Konceptetdheparimet e
menaxhimittësigurisëjanëelementetërëndësishmenënjëpolitikëtësigurtëdhenëvendosjen e
njëzgjidhjeje. Atopërcaktojnëparametratthemeloretënevojshmepërnjëmjedistësigurtë. Ata
gjithashtupërcaktojnëqëllimetdheobjektivat e
politikavedheimplementuesvetësistemitqëduhettëarrihenpërtërealizuarnjëzgjidhjetësigurtë.
Qëllimetkryesoredheobjektivat e sigurisëjanëtëpërfshiranëkuadërtë CIA Triad: konfidencialiteti,
integritetidhedisponueshmëria (Vlefshmëria). Këtotreparimejanëkonsideruarmëtërëndësishmetnësferën e
sigurisë. Kontrollidhemenaxhimiindryshimitështënjëaspektirëndësishëmimenaxhimittëpraktikavetësigurisë.
Ruajtja e sigurisëkërkonndryshimsistematikmenaxhimi. Nëkëtëaspektpërfshimëauditimin, monitorimin e
aktivitetevenëlidhje me kontrollet e sigurisëdhe mekanizmavetëtyre.
Konfidencialiteti
Parimiiparëi Triad CIA-s ështëkonfidencialiteti.
Nëseofronnjëmekanizëmtësigurisësëkonfidencialitetit, ofronnjëniveltëlartësigurietëtëdhënave,
objektit apo burimevetëcilatjanëtëkufizuarangasubjektetëpaautorizuaranëpërgjithësipërruajtjen e
fshehtësisëqëmundtëmbahetnënjërrjet, tëdhënatduhettëmbrohenngaaksesiipaatorizuar, përdorimi apo
zbuliminganjëpalë e tretë me qëllimdekompozimin e informacionit. Sulmet e
shumtapërqëndrohennëshkelljen e konfidencialitetit. Këtopërfshijnëtrafikun e rrjetit apo
vjedhjetënjëfjalëkalimietj. Por shkeljet e konfidencialitetitnukkufizohenvetëmngasulmet e qëllimshme.
Shumërastetëzbulimittëpaautorizuartëinformacionitjanëpërshkaktëgabimitnjerëzor. Shkeljet e
konfidencialitetitmundtëndodhinpërshkaktëveprimevetënjëpërdoruesi apo administratorisistemi. Marrja
e masavesiguronkonfidencialitetkundrejtkërcënimevetëmundshme.
Integriteti
Qëintegritetitëmirëmbahet, objektetduhettëmbesinnëvertetësinë e
tyredheqëllimishttëmodifikohenngasubjektetëautorizuara. Nësenjëmekanizëmsigurieofronintegritet,
atëherëofronnjëniveltëlartësigurietëtëdhënave, objektevedheburimeveqëkanëmbeturnëgjendjen e
tyreorigjinale. Kjopërfshinalternimetqëmundtëndodhingjatëkohësqëobjektiështënëgjendjen e
depozituar, nënjëtransferimosenënjëproçestëcaktuar.
Integritetimundekzaminohetkundrejttreperspektivave:
Subjektetëpaatorizuaraduhettëkenëaksesnëmodifikimin e tëdhënave.
Subjektet e autorizuaraduhettëndalohenqëtëbëjnëmodifikimtëpaautorizuarsigabime.
Objektetduhettëjenëtëkonsistentesingabrendaashtuedhengajashtëkështuqëtëdhënat e
tyrejanëtëvërtetadhereflektive.
Qëintegritetitëmirëmbahetnënjësistem, duhettëkontrollojmënëmënyrëstrikteaksesin e tëdhënave,
objektevedheburimeve. Larmishmërisulmeshjanëfikusuarnëdhunimin e tëdhënave.
Këtupërfshihenviruset, bombatlogjike, aksesiipaatorizuar, gabimenëkodedheaplikacione,
zëvendësimetëqëllimshmedhesistemi back doors.
Vlefshmëria
Do tëthotëqësubjektet e autorizuarajanëtëgarantuarapërkohësishtdhe me aksestekobjektet.
Nësenjëmekanizëmsigurieofronqëndrueshmëri, atëherëofronnjëniveltëlartëtësigurimittëtëdhënave,
objekteve, burimet e tëcilavejanëtëaksesueshmenëautorizimin e njëobjekti.
Vlefshmërianukpërfshinndërprerjetëaksesittëobjekteve por
shumësulmetëcilatidrejtohenqëndrueshmërisë.
1. Hyrje në gjuhën e programimit PYTHON.
E pavarurngaplatforma
E interpretueshme
Gjuhëskriptive e nivelittëlartë
Me burimetëhapura – Open Source
Suportonprogramimin e orientuarngaobjekti
Python mundtëpërdoretpër:
Web Aplikacionetdhe Web Frameëork-et siDJangodhe Pyramid
ProgramimLojërash
Aplikacione Desktop
Micro Frameëork-et si Bottle dhe Flask
Python është me burimetëhapura. Ai suportohetngasistemet operative Windows, Mac OS, versionet
Linux si Ubuntu, OpenSuse, etj. Mënyrat e instalimittëtijnëplatformatëndryshmejanë:
Nësistemet operative windows, përprogramimin python, mundtëpërdorni IDE ose Command
Line. Është pa pagesë.
Nësisteminoperativ Linux, veçanërishtversioni Ubuntu, interpretuesin Python e ka
tëinstaluar, pramundtëpërdoret Command Line. Përtëkontrolluarnëseversionilinuxqëpërdorni
ka interpretuesin python tëinstaluar, hapniterminalindheshkruanikomandën e
mëposhtme:python –version. Megjithatëedhenësistemet operative Linux
jumundtëshkarkoninjë IDE për python. Njëshembull IDE është JetBrains p\r
sisteminoperativlinux.
Nësisteminoperativ Mac OS, përtëpërdorurpython, juduhettëshkarkonidhetëinstaloninjë IDE.
Njëshembull IDE është JetBrains përsisteminoperativ Mac OS X
3. Strukturat e tëdhënave.
Mëposhtë po ndërtojmëdisashembujkupavarsishtëngavleratinicializuesetëvariablitnukështë e
nevojshmetëspecifikojmëtipin e tëdhënave:
x = "Python" # str
x = 20 # int
x = 20.5 # float
x = ["web", "python", "c++"] # list
x = True # bool
Variablat janë emra që rezervohen në memorin e kompjuterit për të organizuar të dhënat. Ato nuk
kan nevojë të deklarohen pasi janë të tipeve dinamike. Variablat në python janë case-sensitive, që
do të thotë‘variabla’ dhe ‘Variabla’ janë dy identifikues të ndryeshëm. Rregulat që duhet zbatojmë
në përcaktimin e tyre janë:
duhettëfillojë me njëshkronjë
nukmundtëfillojë me njënumër
nukmundtëpërmbajëvetëmkaraktere alfa-numerikedhenënvizime (A-z, 0-9 dhe _)
janë case-sensitive
emertimi i variablave këshillohet të ketë lidhje me problemin
Më poshtë po pasqyrojmë disa shembuj të përcaktimit dhe inicializimi të variablave:
# afishonProgramiiparënë Python
x = "Python"
print("Programiiparënë " + x)
5. Operatorët dhe veprimet me to.
x=2
y=5
print(x ** y) #veprimi 2*2*2*2*2 dhe output është 32
x=5
y=2
print(x % y)# output 1
Operatorët e krahasimit (==, !=, >, <, >=, <= ) Me qëllimqëtëvlerësojmëkrahasimin midis
dyshprehjeve ne mundtëpërdorimoperatorëtrelacionalëdhetëbarazisë.
x=5
y=3
print(x == y) # output false
x=9
y=7
print(x != y) #output true
Operatorët e përbërëtëdhënjessëvlerës (+=, -=, *=, /=, %=, >>=, <<=, &=, ^=, |=) Kur
duamtëmodifikojmëvlerën e njëvariabli duke
kryernjëveprimnëvlerënaktualishttërezervuarnëkëtëvariabël, ne mundtëperdorimoperatorët e
përbërëtëdhënjessëvlerës.
x=5
x *= 3
print(x) # output 15
x=5
x%=3
print(x) # output 2
x=5
x **= 3
print(x) # output 125
x=5
print(x > 3 or x < 4) # output true
x=5
print(not(x > 3 and x < 10)) # output false
if konditë:
statement
a = 33
b = 200
if b > a:
print("b më e madhe se a") # output b më e madhe se a
x = 200
y = 33
if y > x:
print("y mëimadh se x")
elif x == y:
print("x ibarabartë me y")
else:
print("x mëimadh se y") # output x mëimadh se y
numr1 = 200
numr2 = 33
if numr2 > numr1:
print("numr2 mëimadh se numr1")
else:
print("numr1 mëimadh se numr2") # output numr1 mëimadh se numr2
for i in range(9):
if i == 3:
continue
print(i)
# output
0
1
2
4
5
6
7
8
Ciklet
Strukturatciklike
Njëtjetërpjesë e gjuhëvetëprogramimitjanëedhekushtet apo siçnjihen, strukturat e kontrollit.
Strukturat e kontrollitijapinmëshumëforcëshprehësegjuhës, duke thjeshtuarshumëpunë.
Siç do ta shikojme, atojanëshumëtëlehtapërtumesuar, përarsyen se janë me tepërformulimegjuhësore.
Struktura if
If ngaanglishtja do tëpërkthehejnëse, praështënjëkusht. If ka kuptimin se nësekushtiështëivërtetë,
zbatohetbllokuiformulimevetëmëposhtme. Kodi istruktures if është:
ifkushtiqëduhetplotësuar:
Bllokuosenjëformulimivetëm
Siç e shikoniformulimiidytë pas fjalëskyçe if nukndodhet ne tënjejtënshtyllë, por ështëizhvendosur.
Duhettëkeniparasysht'irespektonihapesiratqëjanëshumëtërëndësishmenë python. IDLE që po
perdorimështëvetë e kujdesshmepërhapesirat.
Kodi:
a = 33
b = 200
if b > a:
print("b është me imadh se a")
Paraqitja :
Struktura if-else
Paraqitja:
Ka rastekurduhettëkontrollojmëmëshumëkushtepërtëzgjidhurproblematëndryshme.
Nëkëtërastnavjennëndihmëstrukturaelif. Strukturaelifndryshonngastruktura else pasi ajo
përmbantëpaktennjëkushtpërtuzbatuar. Elifështëshkurtimi else if. Formulimiështë:
ifkushtiqëduhetplotësuar:
Bllokuosenjëformulimivetëm
elifkushtiqëduhetplotësuar:
Bllokuosenjëformulimivetëm
elifkushtiqëduhetplotësuar:
Bllokuosenjëformulimivetëm
else:
Bllokuosenjëformulimivetëm
Shembull:
viti=1789
ifviti<1600:
print'deri ne shekullin XVI'
elifviti<1700:
print'shekulli XVII'
elifviti<1800:
print'shekulli XVIII'
elifviti<1900:
print'shekulli XIX'
else:
print'shekujt e pythonit'
Ne shembullin e mësipërmkontrollohetpërvitetqë u përkasinshekujve XVI deri XIX.
Nësevitetjanëtëndryshëmngavitet 0 deri 1899 atëherëzbatohetformulimiifundit. Mos
harronit'ijepnivlerëndryshoresvitinëmënyrëqëkoditëzbatohet.
Cikli for
Ky cikëlpërsëritetpërnjëvargshenjashdhepërllojetëdhënashtëtjeraqë do t'imësojmëmëvonë, duke
shëtiturnëpërkëtotëdhënapërmesnjëndryshorejeindeksuese. Mundtëthemi se cikli for mundtëpërdoret
ne rastetkurduamqënjëpjesëkoditëpërsëritetnjënumërtëcaktuarherësh.
Sintaksa:
forindeksinvargshenjashoselistë:
Kodi
Shembull:
frutat = ["molle", "banane", "qershi"]
for x in frutat:
print(x)
Paraqitja:
Cikli while
Funksionetdhekrijimiityre
- Shembull:
def shuma():
Ky instruksionitregoninterpretuesittë python se shuma() ështënjëfunksion.
Sintaksa e thërritjessënjëfunksionipaparametra
Emri_funksionit()
- Shembull:
shuma()
Nësenukdonitëkaloniasnjëvlerënëfunksioninqëthërrisni, mjaftonitëshkruanivetëmemrin e tij.
Sintaksa e thërritjessënjëfunksioni me parametra
emri_funksionit(Parameter 1.., Parameter n)
- Shembull:
shuma(var1,var2)
Thërritja e njëfunskioni me parametratëcaktauaramundtërealizohet duke
vendosurbrendakllapaveparametrat e funksionittëndarë me presje.
- Shembull:
#Përcaktimi ifunksionit
def shuma(var1,var2):
var3=var1+var2
print("Rezultatiifunksionittëshumës:")
print(var3)
var1=5
var2=4
#Thërritja e funksionit
shuma(var1,var2)
- Paraqitja:
Rezultatiifunksionittëshumës:
9
- Shembull:
sekuencë1 + sekuencë2 bashkimiidysekuencave
sekuencë * n n-numriiherëveqëpërsëritetsekuenca
Krijimiivargjevetëkaraktereve
Vargjet e karakterevejanëkoleksionekaraktereshtërenditura.
Përt'itreguarpythonit se duamtëkrijojmënjëvargkarakteresh, mjaftontëvendosimthonjëzat.
>>> 'python'
>>> "python123"
>>> """python"""
Siçduketedhengashembulli, thonjzatqëmundtëperdorimpërtëkrijuarvargjet e karakterevejanë: njëshe,
dyshedhetreshe.
Thonjzatnjëshedhedyshenukkanëdallimnëperdorimnganjeratjetra, atopërdorenpërtëmundësuarkrijimin e
fjalëve me apostrof. Psh.: "S'paske", nukmundtëshkruhetmesthonjzashnjëshepasiapostrofi do
tëkuptohejsimbyllje e varguttëkaraktereve. Kështuqënëkëtërastnandihmojnëthonjezatdyshe.
Ndërsathonjzattresheose, siçnjihenndryshe: blloqet e vargjevetëkaraktereve, perdorenpërtëshkruardisarreshta.
>>> """Shembull
vargukarakteresh me thonjza
treshe"""
'Shembull \nvargukarakteresh me thonjza\ntreshe'
Nga ajo qënashfaqetnëekranshohim se janëshfaqurtëtrerreshtattonënënjërreshttëvetëm, sidheçdo fund
rreshtiështëzëvendësuar me njëkarakter \n. Ky karakterpërdoretpërrreshttëri. Pak mëvonë do
tëflasimpërkëtokaraktere.
Nëseduamtëmarrimtekstinnëformënsiç e shkruajtëm, mundtëperdorimkomandën print.
>>>teksti = """Shembull
vargukarakteresh me thonjza
treshe"""
>>> print teksti
Paraqitja:
Shembull
vargukarakteresh me thonjza
treshe
Metodat e vargjevetëkaraktereve
Listatdhekrijimiityre
Nësenaduhettëgrupojmëtëdhënatëllojevetëndryshme, do tënaduhetnjëllojtjetër e
dhëneqëkryenkëtëdetyrë. Pra, një e dhënëqëmbantëdhënatëllojevetëndryshme. Vargjet e
karaktereveashtusiçedheipamënëkapitullin e mëparshëm, janëstrukturahomogjene,
listatjanëheterogjene.
Listatjanëkoleksionevlerashtërendituratëndryshueshme.
Këtovleraquhenelementedhemundtëjenëtëllojevetëndryshme. Listatmundtëindeksohen,
mundtëveçohendisaelementetëtyre, mundtëbashkohenpërmesoperatorit +,
tëpërsëritenpërmesoperatorit * njësojsivargjet e karaktereve.
Ndryshengakëtotëfunditqëjanëhomogjene, listatjanëheterogjene. Elemenetetdhemadhësia e
listavejanëtëndryshueshme.
Sintaksapërkrijimin e listaveështë
[elementet e listëstëndarënganjëritjetri me prejse]
Shembull:
>>>kengetari = ['serj', 'tankian', 1967]
Lista jonëkengetari, ështënjëlistëheterogjene: përmbandyvargjedhenjënumër.
Indeksimi, ndarjanëpjesëdhematricat
Njësojsistringjetedhelistatmundtëindeksohendhetëveçohendisaelemente. Numërimifillonnga zero.
>>>lista = ['vargjet', 'listat']
>>>lista[1]
'listat'
>>>muzike = ['pop', 'r&b', 'rock', 'soul']
>>>muzike[1:2]
'r&b'
>>>muzike[-1]
'soul'
Matricatjanëparaqitje e tëdhënavenëtabelë. Përtëshëtiturnëelementet e tabelësnevojitendyindekse,
njëripërrreshtindhetjetripërshtyllën.
Shembull: Tëkrijojmënjëmatricë me përmasa 3x3.
>>>matrica = [
[1,2,3],
[4,5,6],
[7,8,9]
]
>>>matrica[0][2] # rreshtii pare elementiitrete
3
>>>matrica[2][1] # rreshtiitreteelementiidyte
8
Shtimiielementevetëlistës
Gjatëpunës me listatnanevojitettështojmëelementetërinj. Meqenëselistatjanëtëndryshueshme,
atomodifikohen pa qenënevojatëkrijohetnjëlistë e re.
Njëmënyrëpërshtimin e elementenënjëlistëështëpërdorimiioperatorittëbashkimit +.
Shembull: Listëstonë me anetëoperatorit + do t'ishtojmënjëlistëtë re. Lista
qëkemikrijuarpërmbanvargje, numrasiedhenjëlistë me vargje.
>>> x = ['abc', 123, ['liste', 'tjeter']]
>>> x + ['d','ef']
['abc', 123, ['liste', 'tjeter'], 'd', 'ef']
Duhettëkemiparasysh se nukmundtëbashkojmësekuencatëllojevetëndryshme, kështu p.sh
nukmundtëbashkojmënjëlistë me njëvarg. Perndryshemundtëmarrimgabimsintakse. Me
parëduhettëkujdesemiqët'ikthejme ty dyjasekuencattënjëlloji.
- Shembull:
>>>str([1, 2, 3]) + 'abc'
- Paraqitja:
'[1, 2, 3]abc'
Tëdhënatikemikthyernëvarg me anëtëfunksionittëgatshëmtëpythonitstr(). Ky
funksionkthenlistëntonë me numranënjëvarg. Nëkëtërastbashkimiështëimundur. Tani do
tëperdorimfunksioninlist(), icilikthentëdhënat ( kryesishtvargjet) nëlistë.
>>>list('123') + [4,5,6]
- Paraqitja:
['1', '2', '3', 4, 5, 6]
Njëtjetërmënyrëpërtështuarelementenënjëlistëështëpërdorimiimetodave:
append()
extend(listë)
insert(indeksi, e dhëna)
Metodaappend() merrnjë argument qëmundtëjetëiçdollojidheishtonelementetnë fund tëlistës.
Metodaextend() është e ngjashme me metoden append(), por ndryshonngaargumentiqëmerr:
merrvetëmlistë. Metodainsert() shtonvetëmnjë argument nëlistë para indeksitqë ne përcaktojmë.
>>>fjale = ['libra', 'kompjuter']
>>>fjale.append('muzike')
>>>fjale
['libra', 'kompjuter', 'muzike']
>>>fjale.extend(['programimi', 'python'])
>>>fjale
['libra', 'kompjuter', 'muzike', 'programimi', 'python']
>>>fjale.insert(2, 'gjuhashqipe')
>>>fjale
['libra', 'kompjuter', 'gjuhashqipe', 'muzike', 'programimi ne python']
Lista jonëquhetfjaledhepërmbanfjalët: libra dhekompjuter. Me metodenappend() ne
kemishtuarnjëfjalëtë re në fund tëkësajliste. Kjometodë, ashtusiç e thamëedhe me lartmerr
argumenta tëçdolloji, ne rastintonë ka njëvarg. Më pas ne ishtuamlistëssonëdyfjalëtëtjera duke
përdorurmetodenextend(). Kjometode, ndryshengametodaappend(), merrsi argument vetëmlistë. Po
tëprovonitëjepnisi argument njëvarg do tëshikoni se kjometodë do ta kthejëatënëliste duke
ndarënëkarakteremëveteçdogërmëtëvargut.
Ne fund listësishtuamedhevargun 'gjuhashqipe', tëcilin e vendosëmnëpozicionin me indeks 2
tëlistësekzistuese.
- Heqja e elementevetëlistës
Kur flasimpërshtimelementeshnënjëlistë, menjëherëmendojme se
duhettëkëtëmenyraedhepërt'ifshirëkëtaelementeoseedhevetëlistën.
Metodatjanë:
remove()
pop()
Komanda del bëntëmundurgjithashtuheqjen e elementevetëlistës.
Metodaremove() heqatë element ngalistaqë ne iakalojmësi argument. Metodapop() heqelementin e
fundittëlistësdhena e kthenatë. Komanda del fshinnjë element sipasindeksitoseedhetëgjithëlistën.
>>>fjale = ['lule', 'qiell', 'stine', 'toke']
>>>fjale.remove('stine')
>>>fjale
['lule', 'qiell', 'toke']
>>>fjale.pop()
'toke'
>>>fjale
['lule', 'qiell']
>>> del fjale[1]
>>>fjale
['lule']
>>> del fjale #fshinlistënngamemoria
- Veprimet me listat
Bashkimi me operatorin +
Listatashtusiedhevargjetmundtëbashkohenmestyre, nëpërmjetoperatorittëbashkimit +.
>>> l1 = ['elementii pare', 'elementiidyte']
>>> L2 = ['ELEMENTI I PARE', 'ELEMENTI I DYTE']
>>> l1+L2
['elementii pare', 'elementiidyte', 'ELEMENTI I PARE','ELEMENTI I DYTE']
Gjithashtumundtëkrijojmënjëlistëtë re duke ihedhurvlerënpërmesbashkimittënjëlisteekzistuese me
njëlistëtë re:
>>> L = l1 + ['elemente']
>>> L
['elementii pare', 'elementiidyte', 'elemente']
Nukmundtëbashkojmënjëlistë me njëvarg. Praduhettëjenësekuencatënjëllojisiçështëshpjeguarlartnë
"Shtimiielementevetëlistës".
- Modifikimiilistave
Modifikimiilistave, bënndryshimetëelementevepakrijuarnjëlistëtë re siçndodhte me vargjet e
shenjave. Listatmundtëndryshohen me indeksimdhe me ndarjenëpjesë. Përtëbërëkëtondryshime ne
hedhimvleratnëindeksinosegrupet e indeksuara.
>>> l =['funksion','lista','varg']
>>>l[1]='program'
>>> l
['funksion','program','varg']
>>>l[0:2]=['python','modul','metode']
>>> l
['python','modul','metode','varg']
Funksionet e gatshmetëpythonitpërlistat
Nëlidhje me listatpythoni ka disafunksionetëgatshme. Ndër to mundtëpërmendim:
len()
max()
min()
list()
Funksioni len, ipërdorurgjatëlibritnëshembujt e dhënë, jepsirezultatnumrin e
elementeveqëpërmbannjëlistë.
>>>emra=['Guido von Rossum',['Mark Lutz','pitonista']]
>>>len(emra)
2
Numriielementevetëlistëssonëemraështëdypasielementiidytëështëvetënjëlistë,
pavarsishtnumrittëelementeveqëpërmbankjolistë.
Funksioni max jepsirezulatvlerënmëtëmadhenënjëlistë.
>>>lista=['fjale','televizion','pc']
>>> max(lista)
'televizion'
Kur elementet e listësjanëvargjesinëshembullin e mësipërm, krahasimibëhetsipasrenditjesalfabetike.
Funksioni min jepsirezultatvlerënminimalenënjëlistë.
>>>lista=['fjale','televizion','pc']
>>> min(lista)
'pc'
Funksioni list kthennjësekuencëtjetër( deritaningasekuencat e tjera ne kemimësuarvargjet) nënjëlistë.
>>>varg='123'
>>> list(varg)
['1','2','3']
- Metodat e gatshmetëpythonitpërlistat
Deri tani ne kemishpjeguardisametodaqëperdorenpërlistatsi:
append()
extend(listë)
insert(indeksi,edhëna)
pop()
remove()
Nëtabelën e mëposhtmeshpjegohenshkurtimishtkëtodhedisametodatëtjera
Metoda Shpjegimi
insert(indeksi, e
Vendostëdhënatnëlistë para indeksittëpërcaktuar
dhëna)
Heqelementinsipasindeksitdhe e kthenatësishprehje;
pop(i)
nësenukpërcaktohetindeksiheqelementin e fundit
- Shembull:
>>> x = ['a', 'ab', 'aaa', 'a']
>>>x.count('a')
2
>>>x.sort()
>>> x
['a', 'a', 'aaa', 'ab']
>>>x.reverse()
>>> x
['ab', 'aaa', 'a', 'a']
>>>x.index('a')
2
- Funksionetdhemetodat e n-sheve
Mëlart u përmendfunksionituple(). Tani po japimshembuj me funksionetmax(), min() dhelen()
tëcilatikemiparëedheteksekuencat e tjera.
>>> n =('element',2011,['liste'])
>>> max(n)
'element'
>>> min(n)
2011
>>>len(n)
3
N-shetnukkanëmetoda. Atojanësekuencatëpandryshueshmedhe duke qenetë tilla
nukmundtëperdorenmetodatqëderitaniikemiparëtëbëjnëndryshimetësekuencave.
N-shetjanëmbajtësetëdhënashtëllojevetëndryshme. Atojanësekuencatëpandryshueshme.
Faktiqëjanësekuencatëpandryshueshmenukibëntëpadobishmepasiperdorimet e tyrejanëtëndryshme.
Nësenanevojitenrastekurduamqëtëdhënattëmosndryshohen n-shetnavijnenëndihmë.
Shpeshherëkemitëbëjmë me tëdhënatë tilla tëcilatnuk do tëndryshohen, dhenëkëtoraste n-
shetjanëllojimëipërshtatshëmdhepraktikpërtupërdorur.
Fjalorët
Krijimiifjalorëve
Rrugë:
Udhë
Sintaksapërkrijimin e njëfjaloriështëkjo:
emri_fjalorit={'celes': 'vlere', 'celesitjeter': 'vleratjeter'}
Shembull:
>>>fjalor = {'gjuha': 'perl', 'gjuha': 'python'}
>>>fjalor
{'gjuha': 'python'}
Siç e shohimkemidyçelësa me tënjëjtinemërdhekanëdyvleratëndryshme,
nëkëtërastmbahetvetëmvlera e fundit.
Çelësat e fjalorëvejanëtëpandryshueshëm. Kjo do tëthotë se mundtëjenëtëllojit: numra, vargjedhe n-
she qëpërmbajnënumra, stringjeosevetë n-she por jo lista,
pasikëtotëfunditsiçikemiparëjanëstrukturatëndryshueshme.
Pythonijepgabimsintaksenësetentohetnjëlistëpërçelës. Nëseçelesat do
tëishinstrukturatëndryshueshme ne
momentetëcaktuaramundtëndryshonindhetëreferonindikutjetërngavleraqë ne ikemidhënë.
Shtimiielementevedheheqja e tyre
Sintaksapërtështuarelementet e njëfjaloriështë:
emri_fjalorit['celesi'] = 'vlera'
- Shembull:
>>> f = {'libra': 'programim', 5: 'pese'}
>>> f['printer'] = 'hp'
>>> f
{'libra': 'programim', 5: 'pese', 'printer': 'hp'}
Thamë se fjalorëtjanëtëndryshueshëm. Përtëmodifikuarvlerat e elementevetënjëfjaloripërdoret e
njëjtasintaksësipërtështuarelementetërinj.
>>> f['libra'] = 'python'
>>> f
{'libra': 'python', 5: 'pese', 'printer': 'hp'}
Nëkëtëshembullkemindryshuarvlerën e çelësit libra ngaprogramimnë python.
Përtëhequrelementetnënjëfjalorpërdoretkomanda del dhemetoda clear. Me anëtëkomandës del
mundtëheqimnjë element tëfjaloritosemund ta fshijmëkompletatë.
>>> del f[5]
>>> f
{'libra': 'pyton', 'printer': 'hp'}
>>> del f #fshintegjithefjalorin
Metodaclear() fshintëgjithëelementet e njëfjalori por jo vetëfjalorin, prambetetnjëfjalor bosh.
Fjalorët bosh nukkanëelementeataparaqiten me dykllapa {}.
>>> f = {'numer': 5, 'muaj': 'shtator'}
>>>f.clear()
>>> f
{}
- Shembull: Regjistrimiipopullsisë
Ne mënyrëqëtëshpjegojmëmëqartëfjalorët do
tëjapimnjëshembullicilipërmbledhedhedisanganjohuritë e deritanishme.
Programiështëpërregjistrimin e popullsisëdhesipaskërkesavetonanajeptëdhënat e
njëosemëshumëindividi. Le ta shohim hap pas hapi. Hapninjëdritaretë re dhe le tëshkruajmëkodin.
Fillimishtduhettëkemitëqartë se çdoindividduhettëketë: emrin, mbiemrin, atësinë, ditëlindjen, kodin
zip, kombësinëdheshtetësinë. Këtotëdhëna do tëruhennënjë n-she me fjalorë. N-
shetjanëtëpandryshueshmedheshumëpraktikepërtupërdorurnëkëtërast.
njerezit = (
{
'emri': 'ana',
'mbiemri': 'prifti',
'atesia': 'genci',
'ditelindja': '29 06 1983',
'kodizip': '3000',
'shtetesia': 'shqiperi',
'kombesia': 'shqiperi'
},
{
'emri': 'alma',
'mbiemri': 'hoxha',
'atesia': 'astrit',
'ditelindja': '06 08 1993',
'kodizip': '1000',
'shtetesia': 'itali',
'kombesia': 'shqiperi'
}
)
Ne duamqëky program tëjapëtëgjitharezultatet e njëfjalorisipasfushëssëkërkimitqëzgjedhpërdoruesi.
P.sh përdoruesimundtëdojët'ishfaqennëekrantëgjithëatanjerëz me tëgjithatëdhënatperkatësetëtyre,
sipasmbiemrit. Nëse do tëdonimtënashfaqeshintëgjithëindividët me emëraltin, do
tëmerrnimkëtëpergjigjengaprogrami:
{'emri': 'ana', 'mbiemri': 'prifti', 'atesia': 'genci', 'ditelindja': '29 06 1986', 'kodizip': '3000', 'shtetesia':
'shqiperi', 'kombesia': 'shqiperi'}
{'emri': 'alma', 'mbiemri': 'hoxha', 'atesia': 'astrit', 'ditelindja': '06 08 1993', 'kodizip': '1000', 'shtetesia':
'itali', 'kombesia': 'shqiperi'}
Taninaduhettëkrijojmënjëfunksionqëruantëdhënatngakërkesatqëjeppërdoruesi, kërkonpërekzistencën
e këtyrekërkesavetek n-shjanjerëzitdhe fund shtondheruannënjëlistërezultatin.
def kerko_sipas(kriteri, kerkimi, db):
rezultatet = []
for rekord in db:
if rekord[kriteri] == kerkimi:
rezultatet.append(rekord)
return rezultatet
Funksionikerkosipas ka treparametra: kriteri, kerkimidhe db. Parametrikriteri do
tëpërdoretpërtëpërcaktuarfushën e kërkimittëcilatjanë: emer, mbiemer, atesia, ditelindja, zipkodi,
shtetesiadhekombesia. Nëkëtë moment naduhettëkrijojmënjëlistëkriteret e
ciladuhettëpërmbajëkëtoelemente.
kriteret = ('emri', 'mbiemri', 'atesia', 'ditelindja', 'kodizip', 'shtetesia', 'kombesia')
Parametriidytëifunksionitkerko_sipasështëkerkimi. Ky parametërështëinputiipërdoruesit,
icilimerretpasipërdoruesi ka përcaktuarkriterinsipastëcilit do tëshfaqenrezultatet. Psh. nëse ka
zgjedhurt'ishfaqenrezultatetsipaskombësisë, ikërkohetngaprogramitëshkruajënjëkomb.
Parametriitretëqëndodhettëfunksionikerko_sipasështë db.
Sipasparimittëpërgjithësimittëkodittëshpjeguartekapitulliifunksioneve, funksioninkerko_sipas e
krijojmënëmënyrëtëtillëqëtëjetësamëipërgjithshëm. Nëprogramintonëparametritdb do
t'ikalojmësivlerë n-shennjerezittek e cila do tëbëhenkëtokërkime.
Funksionikërkontekelementet e n-shes, nësenjëngafushatgjendetatëherë e
shtonatënëlistëpërmesmetodësappend() dhe e ruanteklistaqëfillimishtështëpërcaktuartëjetë bosh.
Taninaduhettëmarrimtëdhënatngapërdoruesidhetëthërrasimfunksioninqëkrijuam.
kerkimi = ''
while kerkimi == '':
try:
kerkimi = int(raw_input('Do tekerkonisipasemrit(0), mbiemrit(1), atesise(2), ditelindjes(3), kodit
zip(4), shtetit(5) apo kombit(6)? '))
except ValueError:
print "Zgjidhnjenumer"
kriteri = kriteret[kerkimi]
termi = raw_input('Shkruaj ' + kriteri + ': ')
rekordet = kerko_sipas(kriteri, termi, njerezit)
if rekordet:
for rekordi in rekordet:
print rekordi, "\n"
else:
print kriteri, 'nuk u gjet'
Moduletjanënjëgrupfunksionesh e ndryshoreshqëndodhennënjëskedar.
Nësegjatëkodit do
tënaduhetvetëmnjëfunksionosendryshorenganjëmodulivetëmmundtëperdorimkëtësintaksë:
from emrimodulit import emrifunksionit
Shembullipërdorimittëfunksionittërrënjëskatrorenga moduli math:
>>> from math import sqrt
>>>sqrt(9)
3.0
Nësetentojmëtëperdorimnjëfunksiontjetërtëmodulit math do tëhasimnjëgabimsintakse, pasinga
moduli math ështëthirrurvetëmfunksioniirrenjeskatrore, dmthnukjanëtëgatshmetëgjithafunksionet
apo ndryshoret e këtij moduli.
>>> from math import sqrt
>>>sqrt(9)
3.0
>>>sqrt(4)
2.0
>>>sin(30)
Krijimiimoduleve
11.Programimiiorientuarnëobjekte
Nëkapitullin e mëparshëm u shpjeguankonceptetkryesoretëprogramimittëorientuarnëobjekte.
Klasatdheinstancat e saj, atributet e klasavedhetëinstancave,
janëkonceptetërëndësishmetëprogramimittëorientuarnëobjekte. Disangapërparësitë e
këtijllojprogramimi, ndryshenga ai qëkemibërë para se tëflisnimpërkapitullinObjektetdheklasat,
qëishteprogramimifunksionalpasibazohettekfunksionet, janë: polimorfizmi,
trashëgimiadheenkapsulimi( njëpërshtatjekjongaanglishtja encapsulation
qëmundtëshpjegohetsinjëfoljeqëpërshkruanmbylljen e diçkajesikur e fusimnënjëkapsulë).
Python ështënjëgjuhë e krijuarqënëfillimpërtëqenëgjuhë e orientuarnëobjekte. Në python
çdogjëështëobjektmadjeedheklasatvetëjanëobjekte. Nëkëtodydekadat e funditsidomos,
iështëdhënëshumëpërparësikësajmënyreprogramimi,
gjithsesimbetetendeihapurdebatisicilametodologjiprogramimiështëmë e mira.
Programimiiorientuarnëobjekteofronmëshumëavantazhenëprogramet e mëdha, kurreshtat e
koditnukmundtëshkruhennganjëprogramuesivetëm. Mbitëgjitha tri
janëparimetqëofrojnëpërparësitëmëtëmëdhatëprogramimittëorientuarnëobjekte:
Polimorfizmi
Trashëgimia
Enkapsulimi (Fshehja e informacionit)
Se cilaështëmë e rëndësishmjaprejtyrenukështë e vendosurrigorozisht.
Programuestëndryshëmkonsiderojnëpolimorfizminosetrashëgiminëtëparëgjithashtunukpërjashtohete
nkapsulimisimëirendesishmingaprogramuestëtjerë.
Polimorfizmi
Polimorfizmiështënjëteknikëqëpërdoretnëprogramimin e
orientuarnëobjektedheofronpërparësimbiprogramiminfunksional. Deri tani ne
kemiparëshembujkodeshvetëm me njëklasë, por
gjatëprogramimittëorientuarnëobjektezakonishtkemitëbëjmë me shumëklasa.
Përtëshpjeguarpolimorfizmin para se ta përkufizojmësikoncept le tëmarrimnjëshembulltëthjeshtë: Le
tëkemidyklasatëndryshme: klasaKatrordheklasaTrekendesh. Nësekeminjëmetodëvizato, me
anëtëpolimorfizmit ajo veprontektëdyjaklasatdhevizatongjëratëndryshme.
Prakuptimiimetodësvaretngaklasa. Kur vepronmbiinstancatëklasësKatror, metodavizato,
jepnjëkatror, ndërsa me instancat e klasësTrenkendeshvizatonnjëtrekëndësh.
Polimorfizmimundësonpërdorimin e njëmetodetekobjektetëklasavetëndryshme.
Le tëshikojmenjëshembulltëthjeshtëtëpërdorimittëpolimorfizmit:
>>> class Katror(object):
def vizato(self):
print 'Katror'
>>> class Trekendesh(object):
def vizato(self):
print 'Trekendesh'
>>> def vizato_forme(forma):
forma.vizato()
>>>katror = Katror()
>>>trekendesh = Trekendesh()
>>>vizato_forme(katror)
Katror
>>>vizato_forme(trekendesh)
Trekendesh
TëdyjaklasatKatrordheTrekendeshkanënganjëmetodëvizato, e cilashfaqnëekransipasklasësnjërresht:
KatroroseTrekendesh. Metodatjetërvizato_forme()
qëmerrsiparametërnjëinstancëtënjërësprejklasavetona,
thërretmetodenvizatoqëgjendettektëdyjaklasat.
Falëpolimorfizmitmundtërealizojmekëtëmetodeqëpunonsipasobjektittëklasësqëipërket. Nërastin e
mësipërmmetodavizato_forme() merrnjëherëinstancën e klasësKatrordheshfaq ne ekran “Katror”
dhemë pas instancën e klasësTrekendeshqëshfaq ne ekran “Trekendesh”.
Prametodavizato_formethërritinëtëdyjarastetmetodënvizatotëinstancave, por
kjometodëveproindryshenëvaresitëinstancëssëklasësqëipërket.
Trashëgimia
Trashëgimiaashtusipolimorfizmiështënjëtjetërpërparësi e programimittëorientuarnëobjekte.
Trashëgimiangavetëemrinabëntëkuptojmë se kemitëbëjmë me
trashëgimidhenëfakttrashëgimianëprogramimpërdoret ne rastetkurduamtështojmëklasa me
karakteristikatëpërgjithshmetëngjashme (metodadhendryshore) me atoekzistuese.
Kështushmangimshkrimin e koditnga e para.
Shembullimëklasikqëjepetpërtëshpjeguartrashëgiminënëprogramimështëkrahasimi me sistemin e
klasifikimittëkafshëvedhebimëve. PshkemiklasënmëmëKafshëdheklasatbijaGjitarë, Zvarranikëetj,
tëcilatkanëpërkatësishtklasatbijaKetër, Kangur, etj. dheGjarpër, Breshkëetj.
Njëtjetërshembullklasikjanëpersonazhet e njëlojekompjuterike. Mendoninjëlojë me jashëtokësorë. Si
klasëkryesoremundtëkishimklasën Alien. Ndërsaklasaqë do derivoheshinngakjoklasëmundtëishin:
Marsian, Plutonian etj.
Alien
o Marsian
Komandant
Ushtar
o Plutonian
def detajet(self):
print "Emri: %s" % self.emri
print "Mosha: %d" % self.mosha
def printo_kursin(self):
print "Kursi: %d" % self.kursi
Trashëgimia e shumëfishtë
def shuma(self):
self.shuma = self.x + self.y
print "Shumaeshte %d" % self.shuma
>>>objekt = Femije(2,5)
>>>objekt.shuma()
Shumaeshte 7
>>>objekt.produkti()
Produktieshte 10
Kemi krijuar tri klasa: dyklasaqë do t'ipërdorimsiprindërdhenjëfëmijë. NëklasënFemijenukkemishkruarasgjëtë
re, por ajo trashegonkonstruktorindhemetodënshumangaklasa Prind1 sidhemetodënproduktingaklasa Prind2.
Siç e shohimgjatëtestimittëprogramitmetodat e përkufizuaratekprindëritekzekutohennormalisht, pavarsisht se
ithërrasimsikurtëishinpjesë e objektittëklasësFemije.
Nga parimet e programimittëorientuarnëobjekte, trashëgimia, dhesidomostrashëgimia e
shumëfishtëjanëatoqëkritikohenmëshpesh. Këtojanëkonceptemjafttëfuqishme, qësiç e
pamëmundtënalehtësojnëgoxhapunësidomospërtëshmangurpërsëritjen e kodit; por gjithashtuduhetpaturkujdes
me përdorimin e trashëgimisëpasindonjëherënjëgjë e tillëmund ta komplikojëkodinnëmënyrëtëpanevojshme.
Mëposhtëdo tëshikojmënjëshembullqëpërdornëmënyrëtëthjeshtëtrashëgiminë.
- Shembull
Nëkapitullin e Modulevekrijuamshembullinpërpeshënideale. Struktura try except nuk ka
përjashtimetëgatshmepërçdorast. Kështunëkëtë moment
qëkemimësuarobjektetdheklasatjeminëgjendjetëkrijojmënjëperjashtimtoninpërrastin e
përzgjedhjessëgjinisëdhellojittëkockës.
Siç e kemiparë, nësebëjmënjëgabimsintaksesipshtëpjesëtojmë me zero, "shkaktohet"
automatikishtnjëgabimillojitZeroDivisionError;
kjonalejonqëkurkeminjëkodqëmundtërezultojënënjëgabimtëtillë ta përfshijmënëstrukturën try catch
nëkëtëmënyrë:
try:
8/0
except ZeroDivisionError:
print 'nukmundtepjesetohet me zero'
Nëprogramintonë, nësepërgjigjapërgjininënukështë as 'f' as 'm', kjopërbënnjë problem përllogjikën e
programittonë; por nëkëtërastasnjëgabimindonjëllojitëgatshëmnuk do tëshkaktohetnga python.
Përsaipërketsintaksës, hedhja e njëvleretëndryshmenga 'f' dhe 'm' nënjëndryshore me
emringjinianukpërbënasnjë problem. Përkëtëarsyenaduhettëkrijojmënjë "gabim" toninpërkëtërast:
class GabimGjinie(Exception):
pass
KlasaGabimGjinietrashëgonngaklasa e gatshme Exception. Këtëklasëmund ta
përdorimtaninëkëtëmënyrë:
def merr_gjinine():
rezult = raw_input('Zgjidhgjininefemer(f) osemashkull(m) ')
if rezult != 'f' and rezult != 'm':
raise GabimGjinie
return rezult
Raise (angl.ngre) përdoretpërtë "shkaktuar" njëgabim. Pranëseinputinukështë as 'f' as 'm'
atëherëngrejmëkëtëpërjashtimtëkrijuarnga ne. Më pas kypërjashtimmundtëpërdoretnëstrukturën try
except njësojsipërjashtimet e gatshmesiZeroDivisionError.
while True:
try:
gjinia = merr_gjinine()
except GabimGjinie:
print 'Gjiniaduhette jete f ose m'
else:
break
Nëmënyrëtëngjashmeveprohetedhe me përjashtiminpërllojin e kockës. Shembullin e plotë me
ndryshimet e bëramund ta shkarkoni këtu.
Prezantim me gjuhënSQL
Çfarëështë SQL
Nëqoftësekuptoniçfarëështëdatabaza, SQL është e thjeshtë.
SQL ështëakronimifjalëvenëgjuhënanglezeStructured Query Language.
SQL përdoretpëraksesimindhemanipulimin e databazave.
MySQL ështënjë program qëkupton SQL.
SQL mundet:
- insertojë, updatojë, osefshijërekordenënjëdatabazë.
- krijojëdatabazat, tabelat, tëruajëproçedurat.
- të marri tëdhënatnganjëdatabazëetj.
Tabelat
Njëtabelëruandheshfaqtëdhënatnënjë format tëstrukturuarqëkonsistonnëkolonadherreshta.
Databazatzakonishtpërmbajnëshumëtabela, secila e projektuarpërnjëqëllimspecifik. Përshembull,
imagjinoninjëtabelëdatabazëqëmbantëdhënat e id, lenda, nota. Sëpari, ndërtohenkolonat me emrat e
tyre: id, lenda, nota. Çdotabelë ka fushën e vet tëpërcaktimittëtëdhënave, nëvarësitëtëdhënaveqë do
tëruhen.
Çelësatprimarë
- Tabelatkanëvetëmnganjë çelësprimarësecila.
- Vlera e çelësitprimarëduhettëjetëtëndryshmepërsecilinrast.
Çelësatprimarëmundtëpërcaktohengjatëkrijimittëtabelës, duke përdorurfjalënkyçe PRIMARY
KEYdhe duke vendosurbrendakolonaveemrin e kolonësqë do tëjetëçelësiprimar.
CREATE TABLE klasa
(
id int,
lendavarchar(100),
nota int(2),
PRIMARY KEY(id)
);
Komandatbazë SQL
Mënyramë e thjeshtëpërtëpërdorur MySQL dhePHPMyAdminështëtëinstaloni program
si XAMPP oseWAMP. Këtomjetejanëtëthjeshtadhepakosto.
Komanda SQL SHOW shfaqtëdhënatqëndodhennëdatabazëdhenëtabela.
Përshembull, komanda SHOW DATABASES listondatabazat e menaxhuarangaserveri.
HapniPHPMyAdmin, dheklikoninëtabin SQL përtëhapurnjëdritaretëthjeshtëkutëshkruanikomandat
SQL.
Shkruani SHOW DATABASES dheklikoni "Go". Programi do t’junjoftojë se SQL-ja
juajështëekzekutuar me sukses( Your SQL query has been executed successfully). Do
tëlistohentëgjithëdatabazate PHPMyAdminsinëfigurënmëposhtë:
Komanda SHOW TABLES përdoretpërshfaqen e tëgjithëtabelavenëdatatabazën MySQL
tëselektuar.
Rezultati:
Field: emrikolonës
Type: tipi itëdhënëssëkolonës
Key: tregon se kuështëindeksuarkolona
Default: vlera default shenjuarkolonës
Extra: informacioneshtesë
Komanda SELECT përdoretpërselektimin e tëdhënavenganjëdatabazë.
Rezultatiruhetnënjëtabelë, e cilaquhet result-set.Përpërdorimin e komandës SELECT,
specifikojmëedheemrat e kolonaveprejtëcilaveduamtëmarriminformacion.
Sintaksa e komandësSELECT:
SELECT lista_kolonave
FROMemri_tabelës
- lista_kolonavepërfshinnjëosemëshumëkolona
- emri_tabelësemriitabelëssëcilësipërkasinkolonat
Mëposhtëparaqitentëdhënatngatabelaklasa:
Queri-t e shumëfishta
SQL lejonshumë query oseshumëkomandanëtënjëjtënkohë.
Komandat e mëposhtme SQL lejojnëselektiminnga kolonatemridhembiemri ngatabela:
SELECT lenda FROM klasa;
SELECT nota FROM klasa;
Mos harronitëndanikomandatnganjëra-tjetra me pikëpresje.
Case Sensitivity
SQL është case insensitivedmth e njëjtakomandë SQL mundtëshkruhetsi me
shkronjatëmëdhaashtuedhe me tëvogla.
Përshembullkodet e mëposhtme do tëprodhojnëtënjëjtinrezultat:
Select emri from nxenes;
SELECT Emri FROM nxenes;
select Emri FROM nxenes;
Megjithatësirekomandimpraktikështëmirëqëkomandat SQL tëshkruhenmëshkronjatëmëdha.
Rregullat e sintaksës
Njëkomandë SQL e vetmemundtëshkruhetnënjëosemëshumërreshta. Përmëtepër,
komandatshumëfishe SQL mundtëkombinohennënjërreshttëvetëm.
Hapsiratboshedherreshtatshumëfisheinjorohennë SQL.
Përshembull, query-a emëposhtmeështë e saktë .
SELECT lenda
FROM klasa;
Megjithatë, rekomandoheteliminimiihapsiravedherreshtavetëpanevojshme.
Selektimiidisakolonave
Siç u përmendedhemëlart, komanda SQL SELECT merrrekordetngatabelangadatabaza SQL.
Mundtëselektohendisakolonanjëherësh
Thjeshtlistohenemrat e kolonave ,tëndaranga presje:
SELECT emri, mbiemri, mosha
FROM nxenes;
Rezultati:
Fjalakyçe LIMIT
Apriori, tëgjitharezultatetqëplotësojnëkushtet e vendosuarnë SQL do tëkthehen. Megjithatë,
ndonjëherëduhettëkthehetnjënumëricaktuarrekordesh. Në MySQL, kjorealizohet duke
përdorurfjalënkyçe LIMIT.
Sintaksa:
SELECT listakolonave
FROM emri_tabeles
LIMIT [numri_rekordeve];
Gjithashtumundtëzgjidhendisarekordenganjëpjesë e caktuar.
Nëshembullin e mëposhtëm, zgjidhenkatërrekorde, duke filluarngapozicioniitëtretit:
SELECT ID , emri, mbiemri, mosha
FROM nxenesLIMIT 3, 4;
Rezultati:
Rezultati:
Rezultati:
Operatorëtlogjikë
Operatorëtlogjikëpërdorenpërkombinimin e dyvleraveBooleanedhekthimin erezultatit True/False (e
vertetëosegabuar). Mundtëpërdorenoperatorët e mëposhtëm:
Operatori NOT IN
Operatori NOT IN përdoretpërtëpërjashtuarnjëlistëvlerashspecifikengarezultatet.
Përshembull:
SELECT * FROM përdorues
WHERE qyteti NOT IN ('Tirana', 'Durres', 'Elbasani');
Funksioni CONCAT
Funksioni CONCAT përdoretpërtëbashkuardyosemëshumëvlerateksteshdhepërtërikthyerstringun e
bashkuar.
Funksioni UPPER
Funksioni UPPER konvertontëgjithashkronjatnëshkronjatëmëdha.
Funksioni LOWER konvertontëgjithashkronjatnëshkronjatëvogla.
SQL query-a e mëposhtmeselektontëgjithëmbiemratsi uppercase:
SELECT emri, UPPER(mbiemri) AS mbiemri
FROM perdorues;
- Python MySQL
Python mundtëpërdoretnëaplikimet e databazave. Njëngadatabazëtmëtënjohuraështë MySQL. Baza e
tëdhënave MySQL
Përtëqenënëgjendjetëeksperimentosh me shembujt e koditnëkëtë tutorial, duhettëkeni MySQL
tëinstaluarnëkompjuterintuaj.
Ju mundtëshkarkoninjëbazëtëdhënashfalas MySQL nëhttps://www.mysql.com/downloads/.
- Instalimii MySQL
Python ka nevojëpër driver MySQL përtëhyrënëbazën e tëdhënave MySQL.
Nëkëtë tutorial do tëpërdorimdriverin "MySQL Connector". Ju rekomandojmëtëpërdorni PIP
përtëinstaluar "MySQL Connector". PIP ka shumëmundësiqëtashmëtëinstalohetnëmjedisintuaj
Python.
- Shkarkimidheinstalimii "MySQL Connector": C:\
Users\Your Name\AppData\Local\Programs\Python\Python36-32\Scripts>python -m pip
install mysql-connector-python
- Testimii "MySQL Connector":
Përtëtestuarnëseinstalimiështëisuksesshëm, osenësetashmëkenitëinstaluar "MySQL Connector",
krijoninjëfaqe Python me përmbajtjen e mëposhtme:
demo_mysql_test.py:
import mysql.connector
Paraqitjae koditnësekemilidhejn e sakte, nëtëkundertnashfaqet errors (gabime)
- Krijimiilidhjes
Fillojmë duke krijuarnjëlidhje me bazën e tëdhënave. Përdorimemrin e
përdoruesitdhefjalëkaliminngadatabazajonë MySQL:
Kodi:
demo_mysql_connection.py:
import mysql.connector
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword"
)
print(mydb)
Ekzekutimi:
mydb = mysql.connector.connect(
host="localhost",
user="yourusername",
password="yourpassword",
database="mydatabase"
)
mycursor = mydb.cursor()
mycursor.execute("ALTER TABLE customers ADD COLUMN id INT AUTO_INCREMENT
PRIMARY KEY")
kodimesipermkrijoçelësinprimarkurtabelaekziston , pjesatjeter e koditështë e njëjtë.
Sigurohuniqëtëpërcaktoniemrin e bazëssëtëdhënavekurkrijonilidhjen
- Sigutia e email-eve
Protat e email-eve janë numëri një i kërcenimeve për shkelje të sigurisë. Sulmet përdorin
informacione personale dhe rrjete sociale për të ndërtuar mënyra të sofistikuara të sulmeve
phishing. Për të mashturar përdoruesit dhe për ti derguar ato nëpwrmjet faqes së web-it drejt
malware-ve . Njw aplikacion per sigurine e email-eve bllokon sulmet qw vjnw dhe kontrollon
mesazhet e derguara në rrete të jashtme për të paranadaluar humbjen e të dhënave të rëndwsishme.
- Firewall
Firewall-et vendosin barriera ndermjet rrejtit të brëndshëm të besueshem dhe rrjetit të jashtëm jo të
besueshëm, siç është interneti . Ato përdorin një grup rregullash të përcaktuara, për të lejuar apo
bllokuar trafikun.
- Sistemet e parandalimit të ndërhyrjeve
Një sistem parandalimi i ndërhyrjeve (IPS Intrusion Prevention System) është një paisje ose
aplikacon software që monitoron një rrjet ose sistem për veprimtari të dëmshme ose shkepje të
rregullave . Ky sistem skanon trafikun e rrejtit për të bllokuar në mënyre aktive sulmet që mund të
ndodhin .
- Siguria e paisjeve elektornike
“Keqbëresit” kibernetikë po rrisin sulmet ndaj aplikacioneve dhe paisjeve të komunikimit duke
kontrolluar cilat paisje mund të hynë në rrejt si dhe nevoitet konfigurimi i lidhjeve të tyre për të
mbajtur trfikun e rrjetit privat.
- Rrjet virtual privat
Një rrjet virtual privat ( VPN Virual Private Network) kodon lidhjen nga një paisje fundore në
një rrjet, shpesh në internet . Në menyrë tipike një VPN e aksesueshme në distance përdor
element sigurie për të vertetuar komunikimin ndermjet paisjes dhe rrjetit.
- Siguria e Web-it
Siguria në web kontrollon përdorimin e web-eve , bllokon sulmet dhe dhe ndalon hyrjet në website
të dëmshme . “Siguria e rrejtit ” gjithashtu i referohet hapave që duhet ndjekur për të mbrojtur
website-in
- Siguria në Wireless
Rrjetet Wireless nuk jane aq të sigurta sa ato të lidhura me kabëll. Pa masa të rrepta të sigurisë,
instalimi i një rrjeti LAN wireless mund të jetë njësoj si vendosja gjithandej e portave Ethernet. Për
të parandaluar dëmtime nga hacker-at , nevojiten programe specifike të ndertuara për mbrojtjen e
rrejteve wireless.
- Hardwerike, dheproblemeSoftwerikeShpeshherëgjatkohëssajemi duke
punuarnëkompjuterndodhëqë ai tërestartohetautomatikisht, gjithashtugjatpunësshkonshumëngadal,
mirpokjogjënukshkaktohetsipasoj e kompjuteritmirpofajtorijemi ne dhe jo
tekkompjuteriqëshkonngadalpasiqënuk e trajtojmashtusiqduhet. Por shkaktarët e
kësajmundtëjenëtëndryshëmsi: Viruset, probleme. Sistemet Operative dhendarja e tyre
Siç e dimë se ka shumëllojetëndryshmetësistemeve operative, nëtëcilëtndahënsinga: Popullariteti,
Siguria, dhefunksionalitetiityre. Kemi
shumëllojetëVirusëvetëndryshmengatëcilëtjanëtëkërcënuarSistemet Operative qëipërdorim ne
nëditëtsotme.
Virusetdhellojet e tyre
Virusëtndahennë 4 llojefillestaresi: Virus tethjeshtë, Trojan ,Virus e- mail dhe ne Worms (Krimba)
Malweret
Malware, software me qëllimtëkeq, ështëçdo software
qëpërdorenpërtëndërprerëoperacionetkompjuterike, përtëmbledhurinformatatëndjeshme,
përtëfituarqasjenësistemetkompjuterike private, oseshfaqinreklamatëpadëshiruara.
Fragmentimundtëjetëkodimakinëqëinfektondisaprogrameaplikative, program ekzistuesetësistemit,
apo edhekodin e përdorurpërtëstartuarnjë Malware
- Viruset Trojan
Një Trojan Horse apo njëKalë-Trojan ështënjëllojiMalwar-it qëështëmaskuarshpeshsi software
iligjshëm. Trojanëtmundtëpunësohennga cyber-kriminelëtdhehakerat duke u
përpjekurpërtëfituarqasjenësistemet e përdoruesve.
Përdoruesitjanëtëmashtruarnëmënyrëtipikenganjëformë e
inxhinierisësocialenëngarkimindheekzekutimin e trojanëvenësistemet e tyre. Pasiaktivizohet,
Trojanimundtëjumundësojë cyber-kriminelëvepërtëspiunuarmbiju, vjedhintëdhënattuajatëndryshme,
dhepërtëfituarqasjenësistemintuaj. Këtoveprimemundtëpërfshijnë: Fshirja e
tëdhënavebllokimidhënavemodifikimidhënavetëdhënat e kopjimi Trojan Horse.
- Worms - Krimbat
Njëkrimbkompjuterikështënjë program ipavarur malware
kompjuterikqëreplikonvetenpërtëpërhapurnëkompjuterëtëtjerë. Shpesh, ai
përdornjërrjetkompjuterikpërtëpërhapurveten, duke u mbështeturnëdështimet e
sigurisënëkompjutersynuarpërtëhyrënëtë.
Ndryshenganjë virus kompjuterik, nuk ka nevojëpërtëbashkëngjiturvetennënjë program ekzistues.
Krimbatjanëpothuajsegjithmonë, bëjnëdisadëmetërrjetit, edhenëqoftë se vetëm duke
konsumuarBandwidth, ndërsavirusetpothuajsegjithmonëmundtëkorruptojnëosetëmodifikojnëfajlla
personal nënjëkompjuterqëështënëshënjestër.
- Enkriptimi (Encryption)
Enkriptimiështëmbrojtjamë e sigurt e tëdhënavenënjëkodsekret. Përtëlexuar, apo
shikuarnjëtëdhënëtëenkriptuarduhet ta kemiçelësin e atijdokumentiqëështë I enkriptuar.
Enkriptimindahetnëshumëlloje por ai qëtaninjihetsimë I sigurtiështë me 256-bit.
Ransomware Ndryshenga Malware-t kylloj (Virusi) ështënjërindërmëtërrëzikshmit. Arsyejapseështë
I rrëzikshemsepsesiç e përmendëmmëparëEnkriptiminky virus
përdoretpërqëllimetëkëqijangakriminelët e ndryshëmsepsenëatë moment
qëfutetnësisteminoperativInfektontëgjithatëdhënattonadhe e mbyllkompjuterin me njekodsekret
(Enkriptues) qëështë e vështirë ta largojmëngakompjuteringanjëher. Ransomwar-e ka
përqëllimqënëtëgjithëkompjuterëtqëfutettidetyrojëpërdoruesittëpaguajnëshumatëcaktuaraparashpërd
ërgimin e kodittëfshehtëpërteç’bllokuarkompjuterindhetëshpetojmtedhënattona.
Dekriptimi(Decryption) PasiqëpërmendemEnkriptiminduhettëmosharrojm pa
përmenduredheDekriptimin. Me Dekriptimkuptojmëkodinsekretqënaofrohet pas
proceduraveqëduhetbërë me njëllojtjetërtëenkriptimittëdhënave. Dekriptimiështënjefazë e
vështirësepseduhetnjëprocedurë e gjatëndoshtaedhe me vitepërtëgjeturkodinsekretdhe ta përdorimatë
per kthimin e tëdhënave.
- Peshkimi (Phishing)
Shumëherëndoshtajemiprovuarngakëtollojemashtrimesh. Peshkimi apo Phishing sinjihet ne
gjuhënanglezeështënjëraprejmetodaveqëmundtëpërdoretpërqëllimetëmashtrojnëpërdoruesit. Sot
kemishumëmënyrakomunikimisi: Facebook, Twitter, Instagram, Gmail etj.
SulmuesitsynojnëqëtemarrintëdhënattonapërmesklonimittëWebFaqeveorigjinale me
atotëvetëshkruara (Koduara). Përtumbrojturngakyllojmashtrimipasi ta
hapimduhettëshikojmnëhapsirënkushkruajmënë browser kumundtëjetëadresandryshenga ajo
qëështëorigjinale.