C++/Kapitulli I
Në shumë raste, gjatë mësmit të gjuhëve të reja duhet menduar në thënjen "Ec, vetë, po mos u ndal ec, se koha e sjellë vetë"
Komentet
[redakto]Terme nga programimi |
Komentimi i një loje nga komentatori bëhet sipas disa rregullave. Po ashtu edhe në gjuhët programuese, bëhet komentimi i kodit burues të programit. Komentohen rradhët, skenat apo akte të tëra të programit. Në C++ komentet shkruhen duke filluar me viza të pjerrta //
, fundi i rreshtit është fundi i komentit. Po ashtu është i mundëshem edhe shënimi me rregullen e yllit. Shembuj të komenteve janë dhënë në rreshtat. Komente futen diku në mbetje të rreshtit të kodit. Shpeshë duke gjetur emra të përshtatëshem për variablat, metodat e elemetet tjera, komenimi bëhet i panevojshëm.
11 12 13 14 15 16 17 |
const int START = 3; // Vlera e START-it nuk mund të dryshohet const int STOP = 9; // Vlera e STOP-it nuk mund të ndryshohet volatile int MES = 6; /* Vlera e MES-it mund të ndryshohet nga diçka që është jashtë këtij Programi. */ int index; /* Një variabël normale në C */ |
Fjalët const dhe volatile
[redakto]Terme nga programimi |
Fjala const
përdoret si para fjalë për përkufizimin e një fjale tjeter me vlerë konstante, nga ana e programuesit. Në rreshtin 9 kjo konstante është e tipit int
, emri i saj është START
dhe inicializohet me vleren 3. Makina përkthyese në gjuhen e makinës nga programuesit e quajtur kompajler, nuk lejon ndryshimin e vlerës së kësaj konstante, pa marr parasyshë është ndryshim me apo pa qëllim. Sepse fjala START
është përkufizuar si konstante d.m.th e pa ndryshueshme. Po të jetë emërtuar në program ndonjë variabël/ndryshore me STARTS
nuk do të ishte e mundshme të ngatrrohet me konstantet START
, pasi që kompiluesi ngatërrimin e bërë do ta lajmëronte si gabim. Për këtë duhet mbajtur mend se konstantet duhet të incializohen me vlera kuptimplota. Përmisimi i më vonëshem në program i vlerave të konstanteve nuk pranohet.
9 |
const int START = 3; // Vlera e START-it nuk mund të ndryshohet |
Me siguri e ke vërejtur se fjala const
përdoret edhe më poshtë në rreshtin 23, në krye të funksionit. Aty është plasuar me qëllim që të tregohet se vlera formale e parametrit brenda fumksionit është konstante. Çdo tentim që kësaj variable të i japim vlera të reja do të shkaktojë përgjegje për gabim në kod nga ana makines. Gabimet e lajmëruara nga makina të ndihmojnë dukshëm për përmirësimin e njohurive.
23 |
void shtype(const int Vlera) |
Fjala volatile
përdoret si parafjalë për përkufizimin e një fjale tjeter që mund të merr vlera të ndryshme, pra parafjalë për përkufizimin e variablave. Variablat e përkufizuara me këtë parafjalë kanë veti të tillë që vlerat e tyre mund të ndryshohen në dy mënyra: nga jashtë dhe brenda. Kjo do të thotë se vlerat e tyre mund të ndryshohen në kodin e programit nga programuesi (nga breda) apo nga ndonjë burim tjetër p.sh pas nxitimit të programit nga përdoruesi (nga jashtë). Përdorimi i kësaj parafjale për përkufizimin e variablave bëhet me qëllim përsoshmërie të kodit ashtu që kompiluesi të njoftohet se variabla e tillë mund të pësoj ndryshimet në dy mënyrat e përmendura. Studimi i rrjedhës së kodit në kompilues është tejet interesant, mirëpo e kalonë qëllimin tonë këtu. Me këtë parafjalë mund të përufizohet edhe një konstante, çka d.m.th se ti nuk mund të ndryshoshë vleren e një variable, mirëpo mund të ndryshoshë funksionin e pjesëve mekanike (Hardware). Si do që të jetë për fillim mjaftonë kufizimi i kuptimit si më lartë.
Fjalë komanda për dalje (shpalosje në skenë) në rreshtin 25 në këtë moment për ne nuk është interesante. Kësaj fjalë komande do t'i kushtojmë më tepër kohë më vonë.
25 |
std::cout << "Vlera e Index-it " << Vlera << "\n";; |
Nëse ke përvojë me programim atëher do të bie në sy rreshti 5 dhe 23. Aty është paraqitur përdorimi i prototipeve dhe përkufizimi i ri i funksioneve. Përdorimi i prototipeve në C nuk është domosdo i paraparë (mirëpo i mirëseardhur) ndërsa në C++, përdorimi i tyre nuk mund të tejkalohet. Për më shumë rreth prototipeve kemi në kapitullin e katërt.
5 : 23 |
void shtype(const int Vlera); : void shtype(const int Vlera) |
Është e udhës që kodin e shkruar nga ky shembull ta dorzoshë tek kompiluesi dhe të nxitosh kompilimin e tij në program të mirëfillt. Në këtë mënyrë mund krahasonë rezulltatet e programit me rezulltatet e paraqitura në komentet e shembullit. Një nga shkaqet kryesore të kompilimit është nxjerrja e vlersimit se punon si duhet kompiluesi yt.
Operatori për zona të vlershmërisë
[redakto]Shprehje të shfrytëzuara |
Në këtë shembull me ndihmen e një operatorit mundësohet ndërhyrja në variablat globale dhe ato lokale (të përkufizuara për një zonë të caktuar). Në rastin tonë është japur e drejta mbi variablen globale të emërtuar IndexIm
edhe për kundër asaj që ekziston një variabel lokale me të njëjtin emër brenda funksionit main()
. Për të marr të drejten mbi variablen globale IndexIm
, me ndihmen e dypikave të dyfishta (::
) në rreshtat 11, 13, dhe 16 kemi lajmëruar sistemin që dojmë të përdorim variablen globale të përkufizuar në rreshtin 4 dhe jo atë lokale që kemi përkufizuar në rreshtin 8.
Kjo teknik mundsonë marrjen e së drejtes mbi variablat globale kudo në kod. Këto variabla mund të përdoren më tutje për logaritje, si parametra të funksioneve apo edhe për qllime tjera. Mirëpo keqpërdorimi i till për variablat që ndryshe janë të mshefura, nuk lë përshtypje për një programim të pastërt, sepse në këtë mënyrë kodi bëhet i pakuptueshëm. Në këto raste është mirë zgjedhja e emrave vetjak për variablat, duke pasur parasyshë që mundësia e emertimit me të njëjtin emër ekziston, nëse të duhet.
Para se të kalojmë në shembullin tjetër, do të ishte e udhës që kodin nga ky shembull t'a kompiloshë. Shembulli i ardhëshem do t'i kushtohet operatorit cout
në rreshtat 10, 11, 15 dhe 16.
Program i orientuar në objekte
[redakto]Shprehje të shfrytëzuara |
Ky shembull është shembulli i parë i programimit të orientuar në objekte, në të vërtet shumë i thjeshtë. Në këtë program përkufizojmë disa variabla dhe po aty ju japim edhe vlera. Në pjesen e daljeve të zakonshme, në rreshtat 17 deri 20 dhe 23 deri 26, i përdorim këto variabla. Parafjala cout
shkruhet me qëllim që nëpërjet daljes së zakonshme (Ekrani) të shpallosen të dhënat. Për këtë qëllim në versionet e vjetra është përdorur funksioni printf()
. Në mes këtyre dyjave ekziston dallimi. Për deri sa me printf()
duhet që të lajmërohet sistemi për tipin e të dhënave për dalje, me cout
kjo nuk është e nevojshme. Këtu duhet pasur parasyshë që cout
drejtëpërdrejt nuk është funksion për dalje. Mirëpo ne mund të përdorim si të till, për deri sa nuk e japim përkufizimin e saktë në mësimet pasuese. Deri atëher na mjaftonë të dimë se cout
është objekt, dhe ne jemi duke e përdorur vetin e tij për dalje të të dhënave d.m.th shpallosjen e tyre në ekran.
17 18 19 20 : 23 24 25 26 |
std::cout << "Vlera per 'IndexIm' eshte : " << IndexIm << "\n"; std::cout << "Vlera per 'Distanca' eshte : " << Distanca << "\n"; std::cout << "Vlera per 'Shkronja' eshte : " << Shkronja << "\n"; std::cout << "Vlera per 'Emri' eshte : " << Emri << "\n"; : std::cout << "Vlera decimale per 'IndexIm' eshte : " << std::dec << IndexIm << "\n"; std::cout << "Vlera oktale per 'IndexIm' eshte : " << std::oct << IndexIm << "\n"; std::cout << "Vlera heksadecimale per 'IndexIm' eshte : " << std::hex << IndexIm << "\n"; std::cout << "Vlera e shkruar per 'Shkronja' eshte : " << (char)Shkronja << "\n"; |
Në C++ si dhe në versionet e vjetra të C-së, nuk ka pjesë përbërse të tyre për funksion të daljes, por përdoret bibloteka për dalje e quajtur Biblioteka Stream. Në këtë mënyrë mundësohet futja elegante e funksioneve hyrse dhe dalëse. Lidhja e kësaj bibloteke në shembullin tonë bëhet në rreshtin 2.
2 |
#include <string> |
Operatori <<
shkaktonë që varaiablat apo konstantet që pasojnë menjëherë pas tij të jepen për dalje, mirëpo se si duhet të ndodhë kjo, ja lë sistemit të vendosë. Në rreshtin 17, së pari udhëzojmë sistemn që të shpalosë zinxhirin e të dhënave. Kjo ndodhë pasi që fillon kopjimi i secilës germë në ekranë. Pastaj sistemi duhet të shpalosë vleren për IndexIm
. Këtu duhet të kemi parasyshë që ne nuk e kemi njoftuar sistemin se çfar lloji është IndexIm
, ashtu që të jepë vlerën përkatëse. Pasi që nuk e kemi njoftuar sistemin, atëher ai e merr përsipër të vendosë për IndexIm
, është variabël apo konstant. Pasi që sistemi të ketë gjetur tipin, ja lëmë që ai të përdorë vlerat standarte dhe se sa simbole duhet të shpalose. Në këto raste, sistemi zgjehë saktësisht numrin e simboleve sa duhet për shalosje, pa ndonjë fushë të zbrazë para apo pas, pra atë çka ne dojmë për këtë shpalosje. Si përfundim, kalimi në kryerresht jipet me një shenjë dhe mbyllet me pikë-presje.
Gjatë ftesës së funksionit për dalje cout
, në rreshtin 17, kemi bërë ftesen e dy funksioneve të ndryshme, pasi që si për dy hallkat e zinxhirit të shenjave kemi përdorur funksion edhe për variablat e tipit int
. Këto janë shenjat e para të programit të orientuar në objekte, ne e ftojmë sistemin thjeshtë që të shpalosë vlerat dhe i lëmë dorë të lirë për gjetjen e funksionit përkatës. Nuk është e nevojshme që saktësisht të informojmë sistemin, se si të shpalos të dhëat, por vetëm, që të dhënat janë për t'u shpalosur. Ky shembull ishte i ligësht për gjuhë programuese të orientuar në objekte dhe në mësimet e mëtejshme me siguri që do të thellohemi më shumë.
Në rreshtin 18, udhëzojmë që sisemi të na shpalosë një zinxhir tjetër të shenjave, të përcjellur me numër me presje dhe një zixhir tjetër që përbëhet nga shenjat. Në këtë rastë kemi udhëzuar sistemin të shpalosë një numër me presje pa shkruar ndonjë paralajmrim konkret mbi tipin e variables dhe prap i lejomë sistemit të vendosë për dalje duke u orientuar në llojin e variablës. Me këtë proce kemi humbur paksa kontrollin, pasi që ne nuk mund të vendosim p.sh se sa hapsira boshe duhet të jenë para apo pas zinxhirit të shenjave, para apo pas presjes. Me këtë proces ne kemi vendosur që sistemi të vendos se si do të pasojë shpalosja në ekran.
Variabla e emërtuar me emrin Shkronja
është përkufizuar si e tipit char
dhe në rreshtin 14 i është dhënë vlera X
. Ndërsa kjo variabel në rreshtin 19 shpaloset si shkronjë, pasi që objekti cout
e dinë që ka të bëjë me shkronja dhe e jepë përkatësish variablen.
Pasi që C++ mbanë operator dhe funksione të gatëshme për zinxhir të shenjave, funksionet për shpalosjen e zinxhirve të shenjave janë shumë të përshtatëshëm. Është e udhës që të shfletosh dokumentimet e dhëna të kompiluesit tëndë. Në do gjenë imtësira mbi formatimet e mundëshme. cout
dhe printf()
mund të përdoren njëra pas tjetrës.
Biblioteka 'stream'
[redakto]Shprehje të shfrytëzuara |
Biblioteka e quajtur stream
është përkufizuar për përdorim me C++, me qëllim të ngritjes së efektivitetit të gjuhës. Funksioni printf()
është krijuar në të kaluare e largët të C-së dhe duhej të shërbente për gjitha mundësit e programimit. Kështu që u shëndrrua në një funksion të 'trashë' me ngarkesa të shumta, të cila vetëm nga një pjesë e vogël e programuesve përdorej. Përkufizimi i biblotekës së hollë stream
i mundëson programuesve të drejten mbi gjitha formatimet e mundëshme, mirëpo duke ngarkua vetë copa të kërkuara për momentin. Ne këtu, nuk po thellohemi që të shikojmë mundësit që ofron biblioteka stream
C++. Në dokumetimet që ke marrur së bashku me kompiluesin janë të rreshtuara në një listë, komplet, gjitha mundësitë që ofron kjo bibliotek.
Në rreshtat nga 23 deri 26 ilustrohen disa funksione plotësuese të bibliotekës stream
. Këto funksione, ti mund të i përdorë për të shpalosur të dhënat nduardurshëm dhe pa humbur kontrollin mbi to. Vlera për Index
shpaloset duke u shënuar në formë decimale, okatle dhe heksadecimale. Menjëhet pasi që të shënohet ndonjëri nga operatoret special për zinxhirt të shenjave, dec
, oct
apo hex
pas tij pason shpalosja e zinxhirit sipas formës përkatëse të operatorit. Kështu bie fjala në rreshtin 30, vlera për Index
shpaloset duke u shprehur në shira heksadecimale. Kjo ndodhë pasqi që në rreshtin 25 është zgjedhur kjo formë. Po në rastë se nuk zgjidhet ndonjëri nga këta operator special, sistemi do të merr vendimin për formen standarte d.m.th decimale.
Operatori 'cin'
[redakto]Shprehje të shfrytëzuara |
Përanashë operatorëve që përkujdesen për rrjedhen e të dhënave si operatori cout
ëshë edhe operatori cin
. Operatori cin
është një vegël e cila përdoret për leximin e të dhënave të futura nga hyrja standarte (zakonisht prektorja e kompjuterit). cin stream
shfrytëzonë operatorin >>
. Pjesa më e madhe e veprimeve të operatorit cout
, paraqite edhe tek cin
. Një shembull të shkurt mbi përdorimin e cin
-it, mund ta shohësh në rreshtat 28 deri 30. Operatorët special për rrymim të të dhënave, dec
, oct
dhe hex
, edhe këtu vendosin për cin
, pavarsisht nga cout
. Forma standarte edhe këtu është ajo decimale.
Përpos objekteve cout
dhe cin
, që përkujdesen për rrymim të të dhënave, është edhe një tjetër operator që paraqite si fjalë cerr
. Nëpërjetë këtij zakonisht shpalosen gabimet. Për dallim nga cout
-it nuk mund të ridrejtohet në regjistëra. Për përdoruesit e versioneve C është mirë të thuhet se tre objektet për rrymimin e të dhënave, cout
, cin
dhe cerr
i përgjegjen treguesve për rrymim të të dhënave stdout
, stdin
dhe stderr
të gjuhës së vjetër C.
Biblioteka stream
ka në vete po ashtu për rrymim (hyrje/dalje) të regjistrave. Këtë do ta shikojmë më thellë në shembullin e ardhëshem.
Do të ishte e udhës që tani të kompiloshë këtë shembull para se të kalosh në tjetrin. Ke parasyshë që sistemi kërkon futjen e të dhënës si numër i plotë, i cili do të shpaloset prapë në ekran me ndryshim që kjo shpalosje do të jetë në formë heksadecimale.
Hyrje-Dalje e Regjistrave
[redakto]Shprehje të shfrytëzuara |
Programi RRYM.CPP, është shembull i rrymimit të të dhënave nga regjistrat e ndryshë. Në këtë program përdoren disa objekte të C++ të cilat deri më tani nuk i kemi përdorur dhe ndoshta duhet të kënaqemi me kuptimin e kufizuar të tyre.
Në këtë program hapim një regjistër dhe e lexojmë. Të dhënat e marruna nga regjistri në daljen e parë i kopjojmë në një regjistër që e krijojmë dhe e ruajmë, ndërsa në një dalje tjetër e pregatitim makinen shtypse për pranimin dhe shtypjen e të dhënave të lexuara nga regjistri i hapur. Në gjuhën C, regjistrat kanë pasur si për hyrje dhe për dalje tipin FILE
, mirëpo ifstream
përdoret për leximin nga regjistrat e përdorur dhe ofstream
për shkrim të të dhënave. Kjo demostrohet në rreshtat 7 deri 9 të shembullit tonë. Si do të shohim më vonë, ifstream
është një klasë e C++ dhe RegjistriIm
një objekt i kësaj klase.
I vetmi dallim në mes të rrymimit të të dhënave nga programi i mëparshëm dhe këtij shembulli qëndronë se : në programin e mëparshë hapjen e regjistrave e ka bërë sistemi vetvetiu për ne. Me siguri të ka 'ra në sy' që Makina e shtypit përdoret njëllojë si cout
në programin e mëparshëm. Natyrishtë që regjistrat që i kemi hapur duhet edhe të mbyllen, fundi i fundit dëshirojmë të praktikojmë një programim të mirëfilltë.
Në këtë program përdorim objekte, pra është programi i parë i mirëfillt ku përdorim objekte në shembujt tanë. Objektin me emrin RegjistriIm
në rreshtin 16, e udhëzojmë që të hapet vetëvetiu. Në rreshtin e 40 duhet që të lexojë germë për germë, në rreshtin 47 është udhëzimi për vetëmbyllje. 'Pikës'- shënimi për objekte përdoret ngjajshëm si për strukturat në C. Shkruhet emri i objektit, pas së cilës shkruhet 'pika' dhe pas saj shkruhet udhëzimi që duhet të zbatojë objekti. Ngjajshëm veprohet edhe me objeket RegjistriDalja
dhe Makinashkrimit
.
Në internet ka tekste të shumta mësimore mbi biblioteken stream
, në të vërtet këto janë në gjuhët e huaja. Mirëpo për fillim studimi i saj nuk është edhe aq i nevojshëm. Pasi që të kemi fituar një shprehi të shprehjeve nga gjuha C++ do të studiojmë së bashku këtë bibliotek dhe ta pregatisim edhe me shpjegime në gjuhën shqipe.
Do të ishte mirë që tani të komplimoshë këtë shembull dhe ta nxitosh programin e krijuar. Do të kërkojë nga ti një regjistër për ta kopjuar. Ti mund ti japësh një regjistër të çfardoshëm ASCII i cili gjendet në të njëjtën kartotek (punishte) në të cilen ndodhet programi.
Krijimi, përkufizimi dhe dëftimi i ndryshoreve
[redakto]Shprehje të shfrytëzuara |
Në këtë shembull ndërtë tjera janë paraqitur edhe risit rreth ndryshoreve në gjuhën C++. Në C++ flitet për ndryshoret globale dhe lokale si dhe për incicializimin e tyre. Është fjala për variabla. Këtyre variablave ju caktohet hapsira e ekzistimit/kuptimit të tyre brenda programit apo brenda një zone (funksioni etj.), ju jepet një emër dhe inicializohen me iniciale që në të njëjten kohë paraqesin vlerat fillestare të tyre. Varsisht nga hapsira e veprimit flitet për variabla të përgjithëshme/globale dhe për ato lokale. Në C++ variablat globale inicializohen automatikisht me vleren zero. Variablat IndexIm
, në rreshtin 4 dhe Luki
inicializohen me 0 automatikisht. Natyrisht që ti mund të i inicializoshë me vlera tjera, nëse donë.
Variablat që kanë domethënje vetëm brenda një funksioni d.m.th variablat e deklaruara vetem për një funksion nuk inicializohen automatikisht me vleren o, por marrin vleren e cila gjendet e gatëshme në memorie në vendin ku është përkufizuar variabla. Kjo vlerë nuk ka vleftë. Sipas kësaj, p.sh variabla në rreshtin 8 nuk ka vleftë, por vetem ndonjë vlerë e cila nuk 'mund' të përdoret për diçka të mirëfillt (?). Në rreshtin 11 kësaj i jepet një vlerë sipas inicializimit të IndexIm
. Kjo vlerë pastaj kontrrollohet në ekranë.
Përkufizimet mund të nxitohen
[redakto]Edhe për fillestarët e C-së, rreshti 16 duket pak sa i çuditëshem, mirëpo në C++ është i lejushëm. Në atë zonë ku është i lejushëm futja e urdhërit nxitues, është i lejueshëm deklarimi i variablave. Deri tek ky pohim vijem duke pas parasyshë që deklarimi i variablave në C++ merret si urdhër. Në rastin tonë, përkufizojmë variablen e re PerseriDickaTjeter
duke e inicializuar me vlerën. Kohëzgjatja e qënjes së kësaj variable fillon nga pika e përkufizimi deri te fundi i blokut/zonës në të cilën është përkufizuar. Në rastin e PerseriDickaTjeter
deri në fund të programit main()
. Variabla Luki
, përkufizohet më vonë, në rreshtin 27.
Është me rëndësi qenësore përkufizimi i variablave pranë pikës së përdorimit të tyre. Me këtë lidhëshmëri lehtësohet rishikimi se për çfarë përdoret variabla, pasi që veprimi i sajë është kufizuar brenda një zone. Gjatë gjetjes së kapgabimit është më lehtë të vije deri tek ai kur të jetë përfilluar kjo shprehi.
Referencat në C++
[redakto]Ke kujdes tek shenja ' &
' në rreshtin . E dëftonë DickaTjeter
si referencë. kjo mënyrë e referimit është mirë të përdoret me rezervë. Ky shembull i dëftimit mbi një burim na ndihmonë që të kuptojmë shprehjen referimi. Një përdorim i till nuk ka qenë i mundëshem në C. Pas inicializimit të kësaj refernce ajo shndrrohet në sinonim për variablen Dicka
. Ky sinonim mund të përdoret brenda C++ për të ndryshuar vleren e variables. Referenca duhet që të inicializohet në kohen kur bëhet deklarimi i variables, përndryshe kompiluesi na lajmronë për gabim. Për cilën variabël tregonë referenca më vonë në program nuk mund të ndryshohet. Përdorimi i references është paksa i vështirë pasi që ne dëshirojmë që ajo të jetë një variabël referuese, çka d.m.th ne e marrim si variabël por ajo nuk është e tillë pasi që nuk mund të ndryshohet. Domë apo nuk domë të na pëqenë emrërtimi variabël për referencen ajo ashtu thirret.
Nëse përdoret referenca si në shembullin tonë, kjo do të shpije deri tek një kod me dukje 'labirinthi'. Mirëpo referenca mund të përdoret edhe ndryshe, ashtu që të ndihmojë për një pasqyrë të pastër të kodit. Kësaj teme do ti kushtojmë pak më shumë kohë më vonë.
Përkufizimet mund të aplikohen
[redakto]Edhe për fillestarët e C-së, rreshti 16 duket pak sa i çuditëshem, mirëpo në C++ është i lejushëm. Në atë zonë ku është i lejushëm futja e urdhërit nxitues, është i lejueshëm deklarimi i variablave. Deri tek ky pohim vijem duke pas parasyshë që deklarimi i variablave në C++ merret si urdhër. Në rastin tonë, përkufizojmë variablen e re PerseriDickaTjeter
duke e inicializuar me vlerën. Kohëzgjatja e qënjes së kësaj variable fillon nga pika e përkufizimi deri te fundi i blokut/zonës në të cilën është përkufizuar. Në rastin e PerseriDickaTjeter
deri në fund të programit main()
. Variabla Luki
, përkufizohet më vonë, në rreshtin 27.
Është me rëndësi qenësore përkufizimi i variablave pranë pikës së përdorimit të tyre. Me këtë lidhëshmëri lehtësohet rishikimi se për çfarë përdoret variabla, pasi që veprimi i sajë është kufizuar brenda një zone. Gjatë gjetjes së kapgabimit është më lehtë të vije deri tek ai kur të jetë përfilluar kjo shprehi.
Përkufizimi dhe dëftimi i elementeve
[redakto]Përkufizimet nga programuesit në C++ përkufizohen në termin Definition
, ndërsa dëftimet përkufizohen nën shprehjen declaration
. Këto dy shprehje që në jeten e përditëshme mund të kenë kuptim të përafërt, të përkufizuara kanë dallim të madhë. Kështu deklarimi njofton kompiluesin për vetit e një tipi apo një funksioni mirëpo nuk përkufizon asnjë kod që përdoret në ndonjë program të aplikueshëm. Në anën tjetër, definicioni, përkufizon diçka që në programin e aplikueshëm me të vërtet ekziston si bie fjala, ndonjë variabël ose rresht të kodit. Secili element në program duhet të ketë saktësisht një përkufizim. Shkurt deklarimi fut një emër në program, ndërsa definicioni përkufizo një kod, e kjo kërkon hapsirë në memorie.
Kur deklarojmë një strukturë, në fakt deklarojmë një stamp (shabllon). Këtë stamp më vonë në program, kur të kemi deklaruar variablat e këtij tipi, kompiluesi i regjistronë. Po nëse e përkufizojmë variablen e këtij tipi, deklarojmë emrin e kësaj variable dhe përkufizojmë vendin hapsinorë për vlerat e saj në memorie. Për këtë gjatë përkufizimit të variablave kryejmë dy veprime: ne i definojmë dhe deklarojmë në të njjten kohë. Pra bëjmë përkufizimin dhe dëftimin e përkufizimit të variables.
Në versionet e vjetra, pra në C, janë të lejuara disa definime të një variable, për deri sa ato definime janë të njëjta dhe kanë të bëjnë ër të njëjtën variabël. C++ e ndalon një veprim të till për shkaqe të arsyeshme që do t'i shohim në mësimet e ardhëshme.
Mos u brengos rreth këtyre shprehjeve përkufizim,dëftim,deklarim dhe definim. Këto do të na përcjellin gjatë gjithë kohës dhe me siguri me kalimin e kohës do të bëhen të qarta.
Qarkorja 'for'
[redakto]Shiko qarkoren for
, të definuar në rreshtin 20. Kjo formë e krijimit të qarkut me shprehjen for
është më e pastërt se secila më parë, kjo vije pasi që indeksi i qarkullimit vetë definohet në qarkoren for
. Kohëzgjatja e qënjes së qarkores varret nga rinia e kompiluesit (i ri apo i vjetër).
Nëse ke kompilues pak sa të vjetër, kohëzgjatja e qenjës së indeksit fillon nga pika e definimit deri në fund të mbylljes së bllokut. Në këtë rastë ka vleftë deri në rreshtin 32, pasi që klapa gjarpërore mbyllëse në rreshtin 32 është edhe mbyllës e bllokut. Po pasi që variabla gjendet në gadishmëri ajo mund të përdoret për qarkore tjera apo ndënjë qëllim tjetër e për të cilin qëllim mund të vendoset variabla e tipit int
.
Po nëse kompiluesi yt është i moshës së re, fundi i qenjës së indeksit vije me fundin e qarkores. Në këtë rastë ka vleftë deri në rreshtin 25, ku mbyllet qarkorja.
Pa marr parasysh se sa i vjetër është kompiluesi, variabla me emrin Numruesi2
pas çdo qarkullim të qarkut do të definohet dhe inicializohet pasi që është definuar para bllokut të kontrolluar nga qarkorja for
. ekzistenca e saj shtrihet vetem brenda kësaj qarkore, kjo d.m.th rreshtat 23 deri 25, ashtu që pas çdo qarkullimi vendi i zënë në memorie automatikisht lëshohet.
Do të bie në sy që variablës Numruesi2
në rreshtin 23 i jepet një numër, mirëpo për dalje një shkronjë. Ky është rasti ku tregohet se C++ i jep rëndësi saktësisë dë tipit që e dërgonë në dalje. Ndodhë që me kompilues të vjetër si rezulltat të marrësh një numër.
Së fundi, në rreshtin 27 definohet variabla statike Luki
dhe inicializohet vetëvetiu me vleren o, siç e kemi theksuar edhe më parë. Kohëzgjatja e qënjes së kësaj variable fillon nga pika e definimit deri në fund të bllokut, ku ndodhë edhe inicializimi. Në rastin tonë rreshti 32.
Kompilo këtë shembull dhe nxito programin.
Përparsia e operatorëve
[redakto]Përparsia e operatorëve në C++ është identike me përparsit që kanë në C, ne nuk do t'i përkufiojmë ato këtu. Ka pak dallime tek disa operatorë, në rate kur ata të sipëngarkohen. Kjo është një teknikë të cilën do ta mësojmë më vonë. Pas siprngarkimit disa operator punojnë pak sa më ndryshe.
Pa brenga, vjen koha dhe sjellë sqarimet me veti.
Do të ishte e udhës
[redakto]- Të shkruashë një program të till që shpalosë emrin dhe ditëlindjen tëndë në ekran tri herë. Për këtë shfrytëzo ndihmen e objektit për rrymimin e të dhënave
cout
. Gjitha variabla e nevojshme provo të i definoshë afër vend shfrytëzimit të tyre. - Të shkruash një program me disa variabla me vlera të pandryshueshme (
const
) dhe me vlera të ndryshueshme (volatie
). Provo të ndryshoshë vlerat e konstantes, ashtu që të shohësh cilat kapgabime do të marrësh nga kompiluesi yt. - Të shkruash një program të till që shfrytëzonë objekt rrymimi të të dhënave ashtu që ditëlindjen tënde të pranojë me urdhëresen
cin
. Shëno ditëlinjen tënde në formë oktalare, decimale dhe heksadecimale.