Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ

A2.5.2. Konstante simbolike

Konstante

Konstante quhen madhësi të pandryshueshme. Ka konstante me numra të plotë, realë, karaktere dhe vargje. Përpiluesi, pasi ka caktuar një konstante si shenjë, e referon atë në një nga llojet sipas pamjes së tij.

Formatet e konstantave që i korrespondojnë secilit lloj janë dhënë në tabelë. 7.1.

Tabela 7.1.

Konstante në C++

Konstante Formati Shembuj
I tërë dhjetore: Një sekuencë e shifrave dhjetore që nuk fillon me zero, përveç nëse është numri zero. 8, 0, 199226
Oktale: Zero e ndjekur nga shifra oktale (0,1,2,3,4,5,6,7) 01, 020, 07155
Heksadecimal: Ox ose OX pasuar nga shifra heksadecimal (0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F) 0xA, 0x1 B8, 0x00FF
reale Numri dhjetor: [shifra], [shifra] 5.7, .001, 35.
Eksponenciale: [shifra][.][shifra](E|e)[+|-[shifra] 0.2E6, .11e-3, 5E10
simbolike Një ose dy personazhe të mbyllura në apostrofa "A", 'u', "*", 'db' '\0' '\n', '\012' "\x07\x07"
varg Një sekuencë karakteresh të mbyllura në thonjëza "Vasia ishte këtu", "\tVlera r=\0xF5\"

Nëse kërkohet të formohet një numër i plotë negativ ose konstante reale, atëherë shenja e veprimit unar të ndryshimit të shenjës (-) vendoset përpara konstantës, për shembull: -218, -022, -0x3C, -4,8, -0,1 e4.

Një konstante reale në formatin eksponencial përfaqësohet si një mantisa dhe një eksponent. Mantisa shkruhet në të majtë të shenjës së eksponentit (E ose e), renditja është në të djathtë të shenjës. Vlera e një konstante përcaktohet si prodhimi i mantisës dhe fuqia e 10 e ngritur në rendin e specifikuar. Vini re se hapësirat brenda numrit nuk lejohen dhe një pikë, jo një presje, përdoret për të ndarë pjesën e plotë nga pjesa thyesore.

Programuesi mund të vendosë vetë llojin e konstantës. Mund të hiqet ose pjesa e plotë ose pjesa thyesore, por jo të dyja. Nëse specifikohen të dyja pjesët, kërkohet karakteri i pikës.

Konstantat e karaktereve, të përbëra nga një karakter, zënë një bajt në memorie dhe kanë tipin standard char. Konstantet me dy karaktere zënë dy bajt dhe janë të tipit int, me karakterin e parë të vendosur në bajt me adresën e poshtme.

Karakteri i vijës së prapme përdoret për të përfaqësuar:

kodet që nuk kanë një imazh grafik (për shembull,
\a - sinjal zanor, \n - zhvendos kursorin në fillim të rreshtit tjetër);

apostrofë ("), vijë e prapme (\), pikëpyetje (?) dhe thonjëza (");

· çdo karakter sipas kodit heksadecimal ose oktal, për shembull, \073, \0xF5. Vlera numerike duhet të jetë midis 0 dhe 255.

Sekuencat e personazheve që fillojnë me një vijë të prapme quhen menaxherët, ose sekuencat e arratisjes. Tabela 7.2. jepen vlerat e tyre të pranueshme. Sekuenca e arratisjes interpretohet si një karakter i vetëm. Nëse një vijë e prapme pasohet menjëherë nga një karakter që nuk është specifikuar në tabelë 7.2, rezultati i interpretimit është i papërcaktuar. Nëse një karakter i pavlefshëm haset në një sekuencë shifrash, ai konsiderohet fundi i kodit numerik.


Tabela 7.2.

Escape sekuenca në C++

Sekuencat e arratisjes mund të përdoren gjithashtu në konstante vargjesh të quajtura ndryshe fjalë për fjalë vargu. Për shembull, nëse doni të shkruani një kuotë brenda një vargu, ajo paraprihet nga një vijë e pjerrët, me të cilën përpiluesi e dallon atë nga thonjëza që kufizon vargun:

"Shtëpia Botuese \"Peter\""

Të gjitha literalet e vargjeve trajtohen si objekte të dallueshme nga përpiluesi.

Konstantet e vargut, të ndara në program vetëm me karaktere të hapësirës së bardhë, kombinohen në një gjatë përpilimit. Një konstante e vargut të gjatë mund të vendoset në vija të shumta duke përdorur një vijë të prapme të ndjekur nga një vijë e re si vizë. Këto karaktere injorohen nga përpiluesi dhe rreshti tjetër trajtohet si vazhdim i atij të mëparshëm. Për shembull, linja

Deri në këtë pikë, të gjitha variablat që kemi shqyrtuar kanë qenë jo konstante. Vlerat e tyre mund të ndryshohen në çdo kohë. Për shembull:

int x (4); // inicializimi i ndryshores x me vlerë 4 x = 5; // ndryshoni vlerën e x në 5

Sidoqoftë, ndonjëherë është e dobishme të përdoren variabla, vlerat e të cilave nuk mund të ndryshohen - konstante. Për shembull, graviteti në Tokë: 9.8m/s^2. Nuk ka gjasa të ndryshojë në të ardhmen e afërt. Përdorimi i një konstante për këtë rast është alternativa më e mirë, sepse në këtë mënyrë do të parandalojmë çdo ndryshim (madje edhe aksidental) të vlerës.

Për ta bërë një ndryshore konstante - përdorni fjalën kyçe konst para ose pas llojit të ndryshores. Për shembull:

konst graviteti i dyfishtë (9.8); // preferojnë të përdorin const përpara llojit të të dhënave int const sidesInSquare (4); // ok, por jo e preferuar

Edhe pse C++ do të pranojë konst para dhe pas llojit, ju rekomandojmë që ta përdorni para lloji.

Konstantet duhet të inicializohen në shpallje. Vlerat e tyre nuk mund të ndryshohen duke përdorur operacionin e caktimit.

konst graviteti i dyfishtë (9.8); graviteti = 9,9; // nuk lejohet - gabim përpilimi

Deklarimi i një konstante pa inicializim do të shkaktojë gjithashtu një gabim përpilimi:

konstancë e gravitetit të dyfishtë; // gabim përpilimi, konstantja duhet të inicializohet

Vini re se konstantet mund të inicializohen edhe me vlera jo-konstuese:

std:: jashtë<< "Enter your age: "; int age; std::cin >> mosha; const int usersMosha(mosha); // më vonë ndryshorja userAge nuk mund të ndryshohet

const është më i përdorshmi (dhe më i përdoruri) me parametrat e funksionit:

void printInteger(const int myValue) (std::cout<< myValue; }

void printInteger (const int myValue )

std::cout<< myValue ;

Kështu, kur thirret një funksion, parametri konstant na tregon se funksioni nuk do të ndryshojë vlerën e ndryshores myValue. Së dyti, siguron që funksioni të mos ndryshojë vlerën e myValue.

Përpiloni kohën dhe kohën e ekzekutimit

Kur jeni në procesin e përpilimit të një programi, kjo është koha e përpilimit(koha e përpilimit) . Përpiluesi kontrollon programin tuaj për gabime sintaksore, më pas e konverton kodin në skedarë objektesh.

Kur jeni në procesin e nisjes së programit tuaj, ose kur programi tashmë është duke u ekzekutuar, kjo koha e ekzekutimit(koha e drejtimit). Kodi ekzekutohet rresht pas rreshti.

Constexpr

Ekzistojnë dy lloje konstantesh në C++.

Konstantet rkoha. Vlerat e tyre përcaktohen vetëm në kohën e ekzekutimit (kur programi po funksionon). Variablat si usersAge dhe myValue (në kodin e mësipërm) janë konstante të kohës së ekzekutimit sepse përpiluesi nuk mund të përcaktojë vlerat e tyre në kohën e përpilimit. mosha e përdoruesve varet nga hyrja e përdoruesit (që mund të merret vetëm në kohën e ekzekutimit), dhe myValue varet nga vlera e kaluar në funksion (i cili gjithashtu do të njihet në kohën e ekzekutimit).

c konstantepërpilimi-koha. Vlerat e tyre përcaktohen në kohën e përpilimit. Për shembull, graviteti i Tokës është një konstante e kohës së përpilimit, ne e përcaktuam atë vetë gjatë shkrimit të programit.

Në shumicën e rasteve, nuk ka rëndësi se çfarë lloj konstante është: koha e përpilimit ose koha e ekzekutimit. Megjithatë, ka ende disa situata ku C++ mund të kërkojë një konstante të kohës së përpilimit në vend të kohës së ekzekutimit (për shembull, kur përcaktoni gjatësinë e një grupi me madhësi fikse - do ta shohim më vonë). Meqenëse ekzistojnë dy lloje, përpiluesi duhet të mbajë vazhdimisht gjurmë se cili prej tyre i përket cilës variabël. Për ta bërë këtë detyrë më të lehtë, C++11 prezanton fjalën kyçe constexpr, e cila siguron që lloji i konstantës është në kohën e përpilimit:

graviteti i dyfishtë constexpr (9.8); // ok, vlera përcaktohet në kohën e përpilimit constexpr int sum = 4 + 5; // ok, vlera 4 + 5 përcaktohet në kohën e përpilimit std::cout<< "Enter your age: "; int age; std::cin >> mosha; constexpr int myAge = mosha; // nuk është në rregull, ndryshorja e moshës nuk është përcaktuar në kohën e përpilimit

Ndoshta nuk do ta përdorni, por nuk është e dëmshme të dini për të.

Rregulla: Çdo ndryshore që nuk duhet të ndryshojë vlerën e saj pas inicializimit duhet të deklarohet si const (ose si constexpr).

Emra të vazhdueshëm

Disa programues shkruajnë emra konstante me shkronja të mëdha. Të tjerët përdorin emra të rregullt, të parashtesuar vetëm me 'k'. Ne nuk do t'i veçojmë disi, pasi konstantet janë të njëjtat ndryshore të zakonshme, vetëm me vlera fikse, kjo është e gjitha. Nuk ka asnjë arsye të veçantë për t'i veçuar ato. Megjithatë, kjo varet nga secili individ.

Konstante simbolike

mësimi i mëparshëm, diskutuam "numrat magjikë" - fjalë për fjalë që përdoren si konstante në program. Meqenëse përdorimi i tyre është praktikë e keqe, atëherë çfarë duhet përdorur në vend të tyre? Përgjigje: konstante karakteresh. simbolike(ose më shumë simbolike) konstanteështë i njëjti literal (numër magjik), vetëm me një identifikues. Ka dy mënyra për të deklaruar konstante simbolike në C++. Njëri prej tyre është i mirë dhe një jo aq i mirë. Le t'i konsiderojmë të dyja.

Mënyra e keqe: Përdorimi i objekteve makro me tekst zëvendësues si konstante karakteresh

Kjo metodë është përdorur gjerësisht në të kaluarën, kështu që mund ta shihni ende në kodet e vjetra.

Mësimi 22 mbi parapërpunuesit dhe direktivat, thamë se makro objektet kanë dy forma - me dhe pa tekst zëvendësues. Merrni parasysh rastin e parë (me tekst zëvendësues). Duket kështu:

#define identifikues substitution_text

Sapo paraprocesori të ndeshet me këtë direktivë, të gjitha dukuritë e mëtejshme të 'identifikuesit' do të zëvendësohen me 'substitution_text'. Identifikuesi zakonisht shkruhet me shkronja të mëdha me nënvizime në vend të hapësirave.

Për shembull:

int max_students = numKlasa * MAX_STUDENTS_PER_CLASS;

#define MAX_STUDENTS_PER_CLASS 30

Në kohën e përpilimit, paraprocesori do të zëvendësojë të gjithë identifikuesit MAX_STUDENTS_PER_CLASS me 30.

Pajtohem, ky është një opsion shumë më i mirë sesa përdorimi i numrave magjikë, për të paktën disa arsye. MAX_STUDENTS_PER_CLASS ofron kontekstin se çfarë është kjo vlerë dhe pse është e nevojshme, edhe pa komente. Së dyti, nëse numri duhet të ndryshohet, do të mjaftojë të bëni ndryshime vetëm në direktivën #define, të gjithë identifikuesit e tjerë MAX_STUDENTS_PER_CLASS në program do të zëvendësohen automatikisht me një vlerë të re pas ripërpilimit.

Le të shohim një shembull tjetër:

#define MAX_STUDENTS_PER_CLASS 30 #define MAX_NAME_LENGTH 30 int max_students = numKlasa * MAX_STUDENTS_PER_CLASS; setMax (MAX_NAME_LENGTH);

#define MAX_STUDENTS_PER_CLASS 30

#define MAX_NAME_LENGTH 30

int max_students = numKlasa * MAX_STUDENTS_PER_CLASS ;

setMax (MAX_NAME_LENGTH) ;

Është e qartë këtu se MAX_STUDENTS_PER_CLASS dhe MAX_NAME_LENGTH janë menduar të jenë objekte të ndryshme, edhe nëse kanë të njëjtat vlera (30).

Pra, pse kjo metodë është e keqe? Ka dy arsye.

Së pari, makro përpunohen nga një paraprocesor që zëvendëson identifikuesit me vlera specifike. Këto vlera nuk do të shfaqen në korrigjuesin (i cili tregon kodin tuaj aktual). Kur përpilohet int max_students = numKlasa * 30; në korrigjues do të shihni int max_students = numKlasa * MAX_STUDENTS_PER_CLASS; . Po sikur të duhet të dish vlerën e MAX_STUDENTS_PER_CLASS? Do të duhet ta gjeni vetë në kod. Dhe kjo mund të marrë pak kohë, në varësi të madhësisë së programit.

Së dyti, këto direktiva kanë gjithmonë një shtrirje globale (do të flasim për këtë më vonë). Kjo do të thotë që vlerat #define në një pjesë të kodit mund të bien ndesh me vlerat #define në një pjesë tjetër të kodit.

Rregulli: Mos përdorni #define për të krijuar konstante karakteresh.

Mënyra e mirë: variablat konst

Mënyra më e mirë për të krijuar një konstante karakteri është të përdorni konst:

const int maxStudentsPerClass( 30 ); const int maxNameLength( 30 );

const int maxStudentsPerClass (30);

const int maxNameLength (30);

Vlerat e tilla do të shfaqen në korrigjues dhe ato ndjekin të gjitha rregullat e variablave të zakonshëm (përfshirë shtrirjen).

Rregulli: Përdornikonstpër të krijuar konstante karakteresh.

Përdorimi i konstantave simbolike në një program

Në shumë programe, një konstante karakteresh duhet të përdoret në të gjithë kodin (jo vetëm në një vend). Ato mund të jenë konstante fizike ose matematikore që nuk ndryshojnë (si numri pi ose Avogadro) ose vlera specifike në programin tuaj. Në mënyrë që të mos i shkruani sa herë që nevojiten - përcaktoni ato në një vend dhe përdorni ato kudo që të nevojitet. Kështu, nëse duhet t'i ndryshoni ato, do të mjaftojë të futeni në një skedar dhe të bëni ndryshime atje, dhe të mos pastroni të gjithë programin.

Si ta bëjmë atë? Shume e thjeshte:

  1. Krijo një skedar kokë për të ruajtur konstantet.
  2. Në një skedar me kokë, deklaroni një hapësirë ​​emri (

Laboratori numër 1

Hyrje në gjuhën e programimit C++

Objektiv:

1. Mësimi i ndërfaqes së guaskës Visual C++;

2. Përpilimi dhe krijimi i skedarëve të ekzekutueshëm.

3. Studimi i llojeve kryesore të të dhënave të gjuhës C++;

Llojet bazë të të dhënave;

Variablat dhe konstantet;

4. Operatorët e të mësuarit:

Aritmetike;

Logjike;

Krahasimet;

bitwise;

hyrje dhe dalje.

5. Përvetësimi i aftësive të punës në ISP Microsoft Visual C++ 5.0.

Pajisjet e përdorura:

Kompjuter personal i pajtueshëm me IBM PC.

Softueri i përdorur:

sistemi operativ Windows;

Microsoft Visual C++ 5.0 Integrated Programming Environment (Microsoft Visual C++ 5.0 ISP).

Caktimi i punës

1.1. Shkarko UI Microsoft Visual C++ 5.0.

1.2. Mësoni komandat COI të Microsoft Visual C++ 5.0.

1.3. Mësoni llojet bazë të të dhënave të ISP-së Microsoft Visual C++ 5.0.

1.4. Drejtoni shembullin 1, shembullin 2, shembullin 3 dhe detyrën e mësuesit.

1.5. Regjistroni protokollin e punës me mjedisin e integruar.

Rradhe pune

2.1. Hapni Microsoft Visual C++ 5.0.

2.2. Krijoni skedarin *.cpp në dosjen e punës.

2.3. Drejtoni shembullin 1, shembullin 2, shembullin 3 dhe detyrën e mësuesit.

2.4. Hartoni një diagram algoritmi dhe shkruani një program (sipas udhëzimeve të mësuesit). Regjistroni protokollin e punës me mjedisin e integruar.

2.5. Përfundoni punën me Microsoft Visual C++ 5.0 dhe ekzekutoni programin.

3.1. Emri i punës laboratorike.

3.2. Objektiv.

3.3. pjesa teorike.

3.4. Algoritmet e programeve të ekzekutuara.

3.5. Teksti i programeve të ekzekutuara.

3.6. Prodhimi.

Përshkrimi i shkurtër i punës

4.1. Nisni dhe punoni në ISP Microsoft Visual C++ 5.0.

Për të ekzekutuar ISP-në e Microsoft Visual C++ 5.0, duhet të hapni menynë Start - Microsoft Visual C++ 5.0 - Microsoft Visual C++ 5.0.

Për të filluar punën në C++, fillimisht duhet të krijoni një aplikacion të thjeshtë konsol, për këtë duhet të ndiqni këto hapa:

Ø Hapni Visual C++ (Start®Programs® Microsoft Visual C++ 5.0.® Microsoft Visual C++ 5.0 . );

Ø Zgjidhni "New" nga menyja "File". Sigurohuni që skeda "Projektet" të jetë zgjedhur në kutinë e dialogut "E re". Në listën e llojeve të projektit, zgjidhni "Win32 Console Application";

Ø Zgjidhni direktorinë për projektin 'Vendndodhja' (C:\students\'grup*) dhe emrin e projektit 'Emri i projektit', për shembull, "First" dhe klikoni butonin "OK". Ju do të keni "Klasat e para";

Ø Pas kësaj, zgjidhni përsëri "New", por me skedën "Files" dhe zgjidhni "C++ Source File". Në listën 'Emri i skedarit', vendosni një emër, për shembull, "First" Pastaj klikoni "OK" dhe skedari "First.cpp" do të krijohet.

Struktura e përgjithshme e programit.

Detyra jonë është të marrim parasysh strukturën e përgjithshme të një programi të shkruar në C / C ++, domethënë, i gjithë teksti burimor vendoset në një skedar:

Ø Fusha e direktivave të paraprocesorit (përfshi, përkufizoni..);

Ø Përshkrimi i llojeve të të dhënave me porosi;

Ø Deklarata jo të plota të funksionit;

Ø Përshkrimi i variablave globale;

Ø Deklarata e funksionit 1;

Ø Deklarata e funksionit 2;

Ø Deklarata e funksionit Main().

Kjo skemë nuk ka një rend kaq të ngurtë si në Pascal, megjithatë, ajo konsiderohet tradicionale.

Një program përbëhet nga një ose më shumë procedura, të quajtura tradicionalisht funksione. Një funksion që është i detyrueshëm në çdo program duhet të quhet kryesor. Ai shërben si pikë hyrëse në program dhe më pas thërret funksione të tjera.

Programi minimal duket si ky:

Kryesor i zbrazët (i zbrazët)

Ai përbëhet nga një funksion kryesor që merr dhe nuk kthen asnjë parametër (void). Trupi i funksionit, i mbyllur në mbajtëse kaçurrelë, gjithashtu nuk përmban asnjë operator të dobishëm.

Variablat mund të deklarohen si brenda trupit të funksionit ashtu edhe jashtë trupit. Në rastin e parë, ato mund të aksesohen vetëm nga trupi i funksionit të caktuar (deklaratat lokale), dhe në rastin e dytë, nga çdo funksion (deklaratat globale).

Ekzekutimi i programit fillon me trupin e funksionit kryesor, i cili mund të marrë një grup vlerash nga linja e komandës. Trupi kryesor përmban thirrje për funksione të tjera, si nga bibliotekat standarde ashtu edhe ato të përcaktuara nga përdoruesi në tekstin e programit.

Ekzekutimi i programit përfundon si parazgjedhje kur përfundon main, por mund të përfundojë në çdo moment në rast të një gabimi kritik, ose siç parashikohet ndryshe. Kjo zakonisht bëhet duke përdorur funksionin exit() nga biblioteka stdlib.

Printimi i një vargu në ekran

Para së gjithash, le të shkruajmë një program që printon një varg në ekran.

Programi duhet të përmbajë një funksion të quajtur main(). Ajo vlerësohet me rolin e fillimit të programit. Ky funksion nuk është i paracaktuar nga përkthyesi, nuk mund të mbingarkohet dhe lloji i tij varet nga zbatimi. Funksioni kryesor mund të përcaktohet si më poshtë:

Shembulli 1:

// Programi i parë C++

#përfshi

void main()

cout<< “Thise is my first program\n” << endl;

Për të ekzekutuar një program, së pari duhet ta ruani atë. Shkoni te menuja dosje dhe aty klikoni mbi Ruaj te gjitha. Pastaj ju duhet ta ndërtoni (përpiloni), për këtë ju duhet të kryeni hapat e mëposhtëm:

Ø Shkoni te menyja ( Build®Build*.exe) ose një shkurtore të tastierës (F7), do të fillojë ndërtimi i programit. Nëse përpiluesi nuk ka dhënë një mesazh gabimi, i cili mund të shihet në dritaren që shfaqet më poshtë, atëherë mund ta ekzekutoni me siguri programin;

Ø Tani ju vetëm duhet të ekzekutoni programin, për këtë shkoni te menyja ( Build®Execute *.exe.) ose shkurtore të tastierës (Ctrl+F5);

Ø Programi juaj po funksionon.

Linjë #përfshi i thotë kompajlerit të aktivizojë veçoritë standarde të rrjedhës hyrëse dhe dalëse që gjenden në iostream.h. Pa këto përshkrime, shprehja cout << "Ky është programi im i parë"Nuk do të kishte kuptim. Bibliotekat kryesore standarde janë renditur në Tabelën 1.

Tabela 1.

Bibliotekat standarde bazë C/C++

Operacioni<< ("поместить в") пишет свой первый аргумент во второй (в данном случае, строку "Ky është programi im i parë" në daljen standarde të cout). Një varg është një sekuencë karakteresh të mbyllura në thonjëza të dyfishta. Në një varg, një vijë e prapme \ e ndjekur nga një karakter tjetër tregon një karakter të veçantë; në këtë rast, \n është një karakter i linjës së re. Kështu, dalja personazhet përbëhen nga " Ky është programi im i parë" dhe një linjë të re, të cilat përcaktojnë një funksion të quajtur kryesore. Çdo program duhet të përmbajë një funksion të emërtuar kryesore, dhe programi fillon duke ekzekutuar këtë funksion.

Hyrja e tastierës

Programi i mëposhtëm (më tepër i shprehur) ju kërkon të futni një numër inçësh. Pasi ta bëni këtë, do të printojë numrin përkatës të centimetrave.

Shembulli 2:

#përfshi

Kryesor i pavlefshëm ()

int inç = 0; // inç - inç

cout<< "inches";

cin >> inç;

cout<< inch;

cout<< " in = ";

cout<< inch*2.54;

cout<< " cm\n";

Rreshti i parë i funksionit kryesore () përshkruan një ndryshore numër të plotë inç. Vlera e tij lexohet duke përdorur operacionin >> ("marrë nga") në rrjedhën standarde të hyrjes cin.

Në këtë shembull, ekziston një deklaratë për komandën e daljes; është shumë e gjatë. Operacioni i tërheqjes<< можно применять к ее собственному результату, так что последние четыре команды вывода можно было записать одним оператором:

cout<< inch << " in = " << inch*2.54 << " cm\n";

Komentet

Shpesh është e dobishme të futni tekst në një program që synohet si koment vetëm për personin që lexon programin dhe injorohet nga përpiluesi në program. Në C++, kjo mund të bëhet në një nga dy mënyrat.

Karakteret /* fillojnë një koment që përfundon me */. E gjithë kjo sekuencë karakteresh është ekuivalente me një karakter të hapësirës së bardhë (siç është karakteri i hapësirës). Kjo është më e dobishme për komentet me shumë rreshta dhe heqjen e pjesëve të programit gjatë redaktimit, por mbani në mend se komentet /* */ nuk mund të ndërlidhen.

Personazhet // fillojnë një koment që përfundon në fund të rreshtit në të cilin shfaqen. Përsëri, e gjithë sekuenca e personazheve është e barabartë me një boshllëk. Kjo metodë është më e dobishme për komente të shkurtra. Karakteret // mund të përdoren për të komentuar karakteret /* ose */, dhe karakteret /* mund të komentohen //.

4.6. Llojet e të dhënave në C++

Para se të shkruani një program, është e nevojshme të përcaktohen llojet e të dhënave. Ekzistojnë disa lloje të dhënash të përdorura zakonisht në C++ (jo të gjitha):

Ø Numrat e plotë me shenjë numerike (int, shkurt, char);

Ø Thyesore me shenjë numerike (float, dyfish, i gjatë (në C), i gjatë dyfish (në C);

Ø Numerike e panënshkruar - të gjitha llojet e listuara më sipër me shtimin e të panënshkruarit;

Ø Char mund të përdoret edhe si lloji i karakterit .

Llojet standarde dhe madhësitë e qelizave përkatëse janë renditur më poshtë.

Gama Madhësia (Bt)
char -128..127;
shkronja e panënshkruar 0..255;
int -32768..32767;
e panënshkruar int 0..65535;
gjate -2 147 483 648..2 147 483 647;
i panënshkruar i gjatë 0..4 294 967 295;
float 3.4e-38..3.4e+38;
dyfish 1.7e-308..1.7e+308;
dyshe e gjate 3.4e-4932..3.4e+4932.

Një variabël në C/C++ deklarohet si kjo:

int iMyVariable;

Në deklaratën e mësipërme, iMyVariable deklarohet si një ndryshore numër i plotë. Dhe këtu është deklarimi i një variabli të tipit karakter :

Char cMyChar;

Llojet e të dhënave si ndër , noton , karakter Dhe gjatë , janë pjesë përbërëse e C/C++ dhe nuk keni nevojë të shkruani ndonjë kod për t'i treguar kompajlerit se çfarë kuptimi kanë këto fjalë. C/C++ ju lejon gjithashtu të deklaroni llojet tuaja të veçanta të të dhënave.

Shembulli 3 tregon një program që do të printojë madhësinë e llojeve të të dhënave në bajt. Shembulli 3:

#përfshi

Kryesor i zbrazët (i zbrazët)

cout<< " (unsigned)int = " << sizeof(int) << endl;

cout<< " (unsigned)short = " << sizeof(short) << endl;

cout<< " (unsigned)char = " << sizeof(char) << endl;

cout<< " (unsigned)float = " << sizeof(float) << endl;

cout<< " (unsigned)double = " << sizeof(double) << endl;

cout<< " (unsigned)long = " << sizeof(long) << endl;

cout<< " (unsigned)long double = " << sizeof(long double) << endl;

Për të zbuluar madhësinë e një qelize të llojit përkatës, mjafton të shkruani në program madhësia e(lloji). Fakti është se për sisteme të ndryshme operative, madhësia e një qelize të të njëjtit lloj mund të ndryshojë (për shembull, lloji int në sistemet operative 16-bit dhe 32-bit, përkatësisht 1 bajt dhe 2 bajt).

Operatori madhësia e llogarit madhësinë e operandit të tij në bajt. Operandi duhet të jetë ose një shprehje që nuk vlerësohet ose një emër tipi në kllapa. Operatori madhësia e nuk mund të aplikohet në një funksion, fushë bit, klasë të papërcaktuar, lloj void ose grup pa kufi të specifikuar indeksi. Një bajt nuk përcaktohet nga gjuha në asnjë mënyrë, përveçse si rezultat i një operacioni. madhësia e, saktësisht madhësia e(char) është 1.

4.7. Variablat

Një variabël është emri i një lokacioni memorie që duhet të përdoret për të ruajtur vlerën që modifikohet, në mënyrë që memoria të jetë e disponueshme për programin për përdorim, duhet t'i caktohet atij. Ka shpërndarje statike dhe dinamike të memories. Alokimi statik i memories ndodh në kohën e kompilimit dhe madhësia e bllokut nuk mund të ndryshohet gjatë ekzekutimit të programit. Kujtesa dinamike shpërndahet gjatë ekzekutimit dhe madhësia e saj mund të varet nga gjendja aktuale e programit. Zona e memories e caktuar për programin përdoret për të ruajtur të dhënat.

Nëse të dhënat mund të ndryshojnë gjatë funksionimit, atëherë ata flasin për përdorimin e variablave, nëse nuk munden, atëherë konstante. Për të hyrë në një ndryshore ose konstante, duhet të përdorni emrin ose adresën.

Një variabël është një zonë e emërtuar e memories, vlera e së cilës mund të ndryshojë gjatë ekzekutimit të programit.

Të gjitha variablat duhet të deklarohen për përdorimin e tyre në mënyrë që kompajleri të ndajë memorie statike, kështu që duhet të dijë madhësinë e saktë të saj. Për të deklaruar një variabël, duhet të specifikoni: emri, adresa, madhësia(përcaktuar sipas llojit), kuptimi.

Nëse deklarimi ndodhet brenda një çifti kllapash kaçurrelë (për shembull, brenda trupit të një funksioni), atëherë ndryshoret e deklaruara konsiderohen lokale dhe memoria për to ndahet në zonën e pirgut të programit, dhe fillestari vlera është e papërcaktuar.

Nëse një variabël deklarohet jashtë trupave të funksionit, atëherë ai konsiderohet global dhe vendoset në segmentin e të dhënave dhe vlera fillestare e tij është zero. Deklarimi i një variabli me një vlerë fillestare të caktuar për të quhet inicializimi.

Nëse funksioni ka një argument, duhet të deklaroni variabla që do të marrin vlerat e tyre, këto ndryshore quhen cilësimet formale.

Ekzistojnë dy klasifikues në C++ që kontrollojnë aksesin dhe modifikimin: konst Dhe i paqëndrueshëm.

Një konstante është një zonë e emërtuar e memories, vlera e së cilës nuk mund të ndryshohet gjatë ekzekutimit të programit. Konstanteve u caktohet gjithmonë një vlerë kur deklarohen dhe nuk mund të ndryshohen më vonë. Lloji variablat konst nuk mund të ndryshohen, por ato mund të inicializohen.

kualifikues i paqëndrueshëm i tregon kompajlerit se vlera e një variabli mund të ndryshohet në mënyrë implicite. Për shembull, kaloni adresën e ndryshores globale në kohëmatësin e sistemit operativ dhe përdorni atë për të numëruar kohën reale. Në këtë rast, përmbajtja e ndryshores ndryshohet pa ekzekutuar në mënyrë eksplicite ndonjë deklaratë caktimi.

Gjuha C/C++ ofron kontrolloni konstantet e karaktereve, të cilat janë paraqitur në tabelën 2.

Tabela 2.

Kontrolloni konstantet e karaktereve

Karakteret më të famshme të shërbimit janë furnizimi i linjës (kodi 13), kthimi i karrocës (kodi 10), tabelimi (kodi 9). Për t'i vendosur ato në program si konstante simbolike, përdoret një kombinim i dy karaktereve të dukshme, përkatësisht "\n", "\r", "\t". Ndërtimi "\\" përdoret për të përfaqësuar karakterin "slash".

Ekzistojnë katër specifikues të ruajtjes në C: e jashtme, statike, regjistër, auto.

Këta specifikues i tregojnë përpiluesit se si të ruajë variablin e deklaruar. Forma e përgjithshme e një deklarate duke përdorur këta specifikues është:


Informacione të ngjashme.


Konstante të tipit real

Konstante me numra të plotë

Konstante në programe

Konstantet janë objekte që nuk duhet të përdoren në anën e majtë të një operatori caktimi, sepse një konstante është një vlerë jo e adresueshme dhe, megjithëse ruhet në memorien e kompjuterit, zakonisht nuk ka asnjë mënyrë për të gjetur adresën e saj. Në gjuhën C, konstantet janë:

Të dhëna aritmetike, karakteresh dhe vargjesh të vetëpërcaktuara;

Identifikuesit e grupeve dhe funksioneve;

Enum elementet.

Konstantet aritmetike mund të jenë tipe të plota ose reale.

Formati i përgjithshëm: ± n(+ zakonisht hiqet).

Konstantet dhjetore- një sekuencë shifrash 0...9, e para prej të cilave nuk duhet të jetë 0. Për shembull, 22 dhe 273 janë konstante të zakonshme të numrave të plotë, nëse duhet të futni një konstante numër të plotë të gjatë, atëherë shenja tregohet L(l) - 273L (273l). Për një konstante të tillë, do të ndahen 4 bajt. Konstanta e thjeshtë e numrit të plotë që është shumë e gjatë për llojin ndër, trajtohet si një lloj më i gjatë ( gjatë ose e gjatë e gjatë).

Ekziston një shënim për konstantet oktale dhe heksadecimal.

Konstante oktale- një sekuencë shifrash nga 0 në 7, e para prej të cilave duhet të jetë 0, për shembull: 020 = 16 dhjetore.

Konstante heksadecimal- një sekuencë numrash nga 0 në 9 dhe shkronja nga A në F (a...f), duke filluar me karakteret 0X (0x), për shembull: 0X1F (0x1f) = 31 dhjetore.

Konstantat oktale dhe heksadecimal mund të përfundojnë gjithashtu me shkronjën L(l) - të gjatë, si 020L ose 0X20L.

Shembuj të konstantave të numrave të plotë:

1992 13 1000L - dhjetore;

0777 00033 01l - oktal;

0x123 0X00ff 0xb8000l - heksadecimal.

Këto konstante shpërndahen në memorie në formatin e dyfishtë, dhe në paraqitjen e jashtme ato mund të kenë dy forma:

1) me presje dhjetore fikse, formati i shënimit: ± n.m, ku n, m- pjesët e plota dhe thyesore të numrit;

2) presje dhjetore lundruese (forma eksponenciale): ± n.mfq, ku n, m- pjesët e plota dhe thyesore të numrit, R- rendi, për shembull, 1.25×10 -8 shkruhet si 1.25E-8.

Shembuj të konstanteve me pikë fikse dhe të lëvizshme:

1.0 -3.125100e-10 0.12537e+13

Një konstante karakteri është një karakter i mbyllur në thonjëza të vetme: "A", "x" (zë 1 bajt).

Në gjuhën C dhe përdoren. special (kontroll ) karakteret që nuk shfaqen në ekran; qëllimi i tyre është të ndikojnë në rendin në të cilin shfaqen karakteret e tjera. Meqenëse ato nuk shfaqen në ekran, një palë karakteresh përdoren për t'i caktuar ato në tekstin e programit, i pari prej të cilëve është gjithmonë një vijë e prapme ( kthesë e prapme) ("\"). Ato kryesore janë:

Vija e pasme në konstantet e karakterit dhe vargut (shih më poshtë) përfaqëson gjithashtu disa karaktere të zakonshme, drejtshkrimi i të cilëve mund të çojë në paqartësi:

Kur i caktohen një ndryshoreje karakteresh, këto sekuenca duhet të mbyllen në apostrofa. Konstanta e karakterit "\0" (të mos ngatërrohet me karakterin - figura"0" !) shkruhet shpesh në vend të konstantës së numrit të plotë 0 për të theksuar natyrën simbolike të disa shprehjeve (shih temën "Strings").

Shembuj të konstantave të karaktereve: "A", "9", "$", "\n", "\"".

Një konstante është një sekuencë e kufizuar simbolesh të alfabetit të gjuhës, e cila është një imazh i një objekti fiks (të pandryshueshëm).

Konstantet janë numerike, karaktere dhe vargje. Konstantet numerike ndahen në numër të plotë dhe real.

Konstante me numra të plotë

Të dhënat e plota në C mund të përfaqësohen në një nga sistemet e numrave të mëposhtëm:


Sistemi i paraqitjes binar të të dhënave nuk mbështetet drejtpërdrejt në gjuhën C. Megjithatë, mund të përdorni skedarin binary.h, i cili përcakton konstantet binare brenda një bajt.

Një shembull i përdorimit të sistemit binar të numrave në gjuhën C:

1
2
3
4
5
6
7
8
9

#përfshi
#include "binary.h"
int main()
{
shkronja e panënshkruar p = b10001001 | b00001010; // p=b10001011=139
printf("p = %dd = %xh" , p, p);
getchar (); getchar ();
kthimi 0;
}

Rezultati i ekzekutimit

Në varësi të vlerës së një konstante të plotë, përpiluesi i cakton atij një lloj ose një tjetër (char , int , long int ).

Duke përdorur prapashtesën U (ose u ), ju mund të përfaqësoni një konstante të plotë si një numër të plotë të panënshkruar.

Për shembull, Constant 200U ndahet 1 bajt, dhe biti më domethënës përdoret për të përfaqësuar një nga shifrat e kodit të numrave dhe diapazoni i vlerave bëhet nga 0 në 255. Prapashtesa L (ose l ) ju lejon të ndani 8 bajt në një konstante numër të plotë (int të gjatë).

Përdorimi i prapashtesave U (ose u ) dhe L (ose l ) në çfarëdo radhe lejon që një konstante e plotë të jetë e tipit të gjatë int të panënshkruar dhe të zërë 64 bit memorie, me bitin e shenjës që përdoret për të përfaqësuar bitin e kodit (jo bitin e shenjës ).

Konstante reale

Një konstante me pikë lundruese (një konstante reale) përfaqësohet gjithmonë si një numër me pikë lundruese me precizion të dyfishtë, domethënë si i tipit double, dhe përbëhet nga pjesët e mëposhtme:

  • pjesë e plotë - një sekuencë numrash;
  • pika - ndarësi i pjesëve të plota dhe të pjesshme;
  • pjesë thyesore - një sekuencë numrash;
  • karakteri eksponent e ose E;
  • eksponenti si një konstante numër i plotë (mund të jetë i nënshkruar).

Çdo pjesë (por jo të dyja) e çifteve të mëposhtme mund të hiqet:

  • pjesë e plotë ose e pjesshme;
  • pika ose simboli e (E ) dhe eksponenti si një konstante numër i plotë.

Shembuj të konstantave reale

  • 3.14159
  • 2.1E5
  • .123ЕЗ
  • 4037e-5

Si parazgjedhje, përpiluesi cakton tipin e dyfishtë në një numër real. Nëse programuesi nuk është i kënaqur me llojin që përpiluesi i cakton një konstante, atëherë lloji mund të specifikohet në mënyrë eksplicite në shënimin konstant duke përdorur prapashtesat e mëposhtme:

  • F (ose f ) - noton për konstante reale të thjeshta,
  • L (ose l ) është një dyshe e gjatë për konstante reale të zgjeruara me precizion të dyfishtë.

Shembuj:

  • 3.14159F - konstante e tipit float, zë 4 bajt;
  • 3.14L është një konstante e tipit long double , e cila zë 10 bajt.

Konstante simbolike

Një konstante karakteri është një karakter i vetëm, për shembull: 'z' . Kodet e kontrollit që nuk kanë një paraqitje grafike mund të përdoren gjithashtu si konstante simbolike. Në këtë rast, kodi i karakterit të kontrollit fillon me karakterin '\' (pjesë e prapme).

Në mënyrë tipike, duke shtypur një tast Hyni gjeneron dy karaktere kontrolli njëherësh - furnizimi i linjës (0x0A) dhe kthimi i transportit (0x0D).

Të gjitha konstantet e karaktereve janë të tipit char dhe zënë 1 bajt në memorie. Vlera e një konstante simbolike është vlera numerike e kodit të saj të brendshëm.

Konstantet e vargut

Një konstante vargu është një sekuencë karakteresh të mbyllura në thonjëza, për shembull:

"Kjo është një konstante e vargut"

Kuotat nuk përfshihen në varg, por vetëm e kufizojnë atë. Teknikisht, një konstante e vargut është një grup karakteresh, dhe mbi këtë bazë mund të klasifikohet si një objekt kompleks i gjuhës C.

Në fund të çdo konstante të vargut, përpiluesi vendos një '\0' (karakter null) në mënyrë që programi të mund të përcaktojë fundin e vargut. Ky paraqitje do të thotë se madhësia e një konstante vargu nuk kufizohet me asnjë kufi, por për të përcaktuar gjatësinë e një konstante vargu, ajo duhet të skanohet plotësisht.

Për shkak se një konstante vargu përbëhet nga karaktere, ajo është e tipit char . Numri i qelizave të memories që kërkohen për të ruajtur një konstante vargu është 1 më shumë se numri i karaktereve në të (1 bajt përdoret për të ruajtur një karakter null).

Konstanta e karakterit 'x' dhe vargu i karakterit të vetëm 'x' nuk janë e njëjta gjë. Konstanta e karakterit është karakteri që përdoret për të përfaqësuar shkronjën x numerikisht, ndërsa konstanta e vargut "x" përmban karakterin 'x' dhe karakterin null '\0' dhe zë 2 bajt në memorie. Nëse në vargun e programit konstantet shkruhen njëra pas tjetrës përmes ndarësve, atëherë kur programi të ekzekutohet, ato do të vendosen në qelizat e njëpasnjëshme të memories.

Artikujt kryesorë të lidhur