Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Joqari darejeli programmalastiriwda C++ Last

.pdf
Скачиваний:
9
Добавлен:
03.12.2023
Размер:
2.03 Mб
Скачать

identifikatordıń birinshi belgisi sıpatında isletpegen maqul. Identifikator belgiler arasında probel isletiw múmkin emes, zárúr bolǵanda onıń órnına ‘_’ isletiw múmkin: Cilindr_radiusı, sheńber_diametri.

11

II Bap. C++ tilinde berilgenler hám olardıń tipleri

2.1. Turaqlılar

Turaqlı (literal) - bul fiksirlengen sandı, qatardı hám belgini ańlatıwshı leksema bolıp esaplanadı.

Turaqlılar bes toparǵa bólinedi - pútin, haqıyqıy (jıljıwshı noqatlı), sanap

ótiliwshi, belgi hám qatar.

Kompilyator turaqlını leksema sıpatında anıqlaydı, oǵan yadtan orın ajıratadı, kórinisi hám mánisine (tipine) qarap sáykes toparlarǵa bóledi.

Pútin turaqlılar. Pútin turaqlılar tómendegi formatlarda boladı:

-onlıq san;

-segizlik san;

-on altılıq san.

Onlıq turaqlı 0 cifrınan parıqlı cifrdan baslanıwshı cifrlar izbe-izligi hám

0 esaplanadı: 0; 123; 7987; 11.

Teris turaqlı - bul belgisiz turaqlı bolıp, oǵan tek ǵana belgini ózgertiw ámeli qollanılǵan dep esaplanadı.

Segizlik turaqlı 0 cifrınan baslanıwshı segizlik sanaq sisteması (0,1,..,7) cifrlarınan quralǵan cifrlar izbe-izligi:

023; 0777; 0.

On altılıq turaqlı 0х yamasa 0Х belgilerinen baslanatuǵın on altılıq sanaq sisteması cifrlarınan ibarat izbe-izlik esaplanadı:

0х1A; 0X9F2D; 0x23.

Hárip belgiler qálegen registrlarda beriliwi múmkin.

Kompilyator sannıń mánisine qarap oǵan sáykes tipti belgileydi. Eger tilde belgilengen tipler programma dúziwshini qanaatlandırmasa, ol áshıq túrde tipti kórsetiwi múmkin. Bunıń ushın pútin turaqlı cifrlarınıń aqırına, probelsiz l yamasa

L (long), u yamasa U (unsigned) jazıladı. Zárúr jaǵdaylarda bir ǵana turaqlı ushın bul belgilerdiń ekewin de isletiw múmkin:

45lu, 012Ul, 0xA2L.

12

Haqıyqıy turaqlılar. Haqıyqıy turaqlılar - jıljıwshı noqatlı san bolıp, ol eki túrli formatta beriliwi múmkin:

- onlıq fiksirlengen noqatlı formatta. Bul kóriniste san noqat arqalı ajıratılǵan pútin hám bólshek bólekler kórinisinde boladı. Sannıń pútin yamasa bólshek bólegi bolmawı múmkin, biraq noqat álbette bolıwı kerek. Fiksirlengen noqatlı turaqlılarǵa

mısallar: 24.56; 13.0; 66.; .87;

-eksponencial formada haqıyqıy turaqlı 6 bólekten ibarat boladı:

1)pútin bólegi (onlıq pútin san);

2)onlıq bólshek noqat belgisi;

3)bólshek bólegi (onlıq belgisiz turaqlı);

4)eksponenta belgisi ‘e’ yamasa ‘E’;

5)on dárejesi kórsetkishi (onlıq pútin san);

6)qosımsha belgisi ( ‘F’ yamasa ‘f’ , ‘L’ yamasa ‘l’ ).

Eksponencial formadaǵı turaqlı sanlarǵa mısallar: 1e2; 5e+3; .25e4;

31.4e-1.

Belgi turaqlılar. Belgi turaqlılar qostırnaq (‘,’-apostroflar) ishine alınǵan óz aldına belgilerden quraladı hám ol char gilt sózi menen anıqlanadı. Belgi turaqlı ushın yadta bir bayt orın ajıratıladı hám onda pútin san kórinisindegi belginiń ASCII kodı jaylasadı. Tómendegiler belgi turaqlılarǵa mısal boladı: ‘e’, ‘@’, ‘49’,

‘z’, ‘W’, ‘+’, ‘ш’, ‘*’, ‘a’, ’s’.

2.1-tablica. C++ tilinde escape -belgiler tablicası

Escape

Ishki

 

 

kod

Atı

Ámel

belgileri

(16 san)

 

 

 

 

 

 

 

 

 

\\

0х5C

\

Keri qıya sızıqtı shıǵarıw

 

 

 

 

\’

0х27

Apostroftı shıǵarıw

 

 

 

 

\”

0х22

Qostırnaqtı shıǵarıw

 

 

 

 

\?

0x3F

?

Soraw belgisi

 

 

 

 

\a

0x07

bel

Dawıs signalın beriw

 

 

 

 

 

 

 

13

\b

0x08

bs

Kursordı 1 belgi ornına izge qaytarıw

 

 

 

 

\f

0x0C

ff

Betti ótkeriw

 

 

 

 

\n

0x0A

lf

Qatardı ótkeriw

 

 

 

 

\r

0x0D

cr

Kursordı usı qatardıń basına qaytarıw

 

 

 

 

\t

0x09

ht

Náwbettegi tabulyaciya orınına ótiw

 

 

 

 

\v

0x0D

vt

Vertikal tabulyaciya (tómenge)

 

 

 

 

\000

000

 

Segizlik kodı

 

 

 

 

\хNN

0xNN

 

Belgi on altılıq kodı menen berilgen

 

 

 

 

Ayrım belgi turaqlılar ‘\’ belgisinen baslanadı, bul belgi birinshiden, grafikalıq kóriniske iye bolmaǵan turaqlılardı belgileydi, ekinshiden, arnawlı wazıypalar júklengen belgiler - apostrof belgisi (‘), soraw belgisin (‘?’), keri qıya sızıq belgisin (‘\’) hám eki qostırnaq belgisin (“ ”) shıǵarıw ushın isletiledi. Onnan tısqarı, bul belgi arqalı belginiń kórinisin emes, bálki áshkar túrde onıń ASCII kodın segizlik yamasa on altılıq formada jazıw múmkin. Bunday belgiden baslanǵan belgiler escape izbe-izlikler delinedi (2.1-tablica).

C++ tilinde qosımsha túrde wide háripli turaqlılar hám kóp belgili turaqlılar anıqlanǵan.

wide háripli turaqlılar tipi milliy kodlardı belgilew ushın kiritilgen bolıp, ol wchar_t gilt sózi menen beriledi, hámde yadta 2 bayt orın iyeleydi. Bul turaqlı

L belgisinen baslanadı:

L ‘\013\022’, L ‘cc’

Kóp belgili turaqlı tipi int bolıp, ol tórt belgiden ibarat bolıwı múmkin:

‘abc’, ‘\001\002\003\004’.

Qatar turaqlılar. Eki qostırnaq (“ ”) ishine alınǵan belgiler izbe-izligi qatar

turaqlı delinedi:

“Bul qatar turaqlı hám onıń atı string\n”

Qatar ishinde escape izbe-izligi de isletiliwi múmkin, tek ǵana bul izbe-izlik apostrofsız jazıladı.

Probel menen ajıratıp jazılǵan qatarlar kompilyator tárepinen jalǵız qatarǵa jalǵanadı (konkantenaciya):

14

“Qatar - bul belgiler massivi” /* bul qatar keyingi qatarǵa qosıladı */ ”, onıń tipi char[]”;

Bul jazıw

“Qatar - bul belgiler massivi, onıń tipi char[]”;

jazıwı menen ekvivalent esaplanadı.

Uzın qatardı bir neshe qatarǵa jazıw múmkin hám bunıń ushın qatar aqırında ‘\’ belgisi qoyıladı:

“Kompilyator hár bir qatar ushın kompyuter yadında\ qatar uzınlıǵına teń sandaǵı baytlardaǵı óz aldına\ yad ajıratadı hám bir dana - 0 mánisli bayt qosadı”;

Joqarıdaǵı úsh qatarda jazılǵan qatar keltirilgen. Keri qıya sızıq (‘\’) belgisi keyingi qatarda jazılǵan belgiler izbe-izligin joqarıdaǵı qatarǵa qosıw kerekligin bildiredi. Eger qosılatuǵın qatar baslanıwında probeller bolsa, olar da qatar quramına kiredi.

Qatar yadta jaylasqanda onıń aqırına ‘\0’ (0 kodlı belgi) qosıladı hám bul belgi qatar juwmaqlanǵanlıǵın bildiredi. Sol sebepli qatar uzınlıǵı, onıń «haqıyqıy» mánisinen birewge kóp boladı.

2.2. Berilgenler tipleri hám ózgeriwshiler

Programma orınlanıwı waqtında qandayda bir berilgenlerdi saqlap turıw ushın ózgeriwshiler hám turaqlılardan paydalanadı. Ózgeriwshi - programma obyekti bolıp, yadtaǵı bir neshe yacheykalardı iyeleydi hám berilgenlerdi saqlaw ushın xızmet etedi. Ózgeriwshi atqa, ólshemge hám basqa atributlarǵa - kóriniw aymaǵı, ámel qılıw waqtı hám basqa qásiyetlerge iye boladı. Ózgeriwshilerdi isletiw ushın olar álbette járiyalanıwı kerek. Járiyalaw nátiyjesinde ózgeriwshi ushın yadtan qandayda bir aymaq rezervlenedi, aymaq ólshemi bolsa ózgeriwshiniń konkret tipine baylanıslı boladı. Sonı belgilep ótiw kerek, bir tipke túrli apparat platformalarda hár túrli orın ajıratılıwı múmkin.

Ózgeriwshi járiyalanıwı onıń tipin anıqlawshı gilt sózi menen baslanadı hám ‘=’ belgisi arqalı baslanǵısh mánis beriledi (shártli túrde emes). Bir gilt sóz benen

15

bir neshe ózgeriwshilerdi járiyalaw múmkin. Bunıń ushın ózgeriwshiler bir-birinen

‘,’ belgisi menen ajıratıladı. Járiyalawlar ‘;’ belgisi menen juwmaqlanadı. Ózgeriwshi atı 255 belgiden asıp ketpewi kerek.

2.3. C++ tiliniń tayanısh tipleri

C++ tiliniń tayanısh tipleri, olardıń baytlardaǵı ólshemleri hám mánisleriniń shegaraları 2.2-tablicada keltirilgen.

Pútin san tipleri. Pútin san mánislerin qabıl etetuǵın ózgeriwshiler int

(pútin), short (qısqa) hám long (uzın) gilt sózler menen anıqlanadı. Ózgeriwshi mánisleri belgili bolıwı yamasa unsigned gilt sózi menen belgisiz san sıpatında qaralıwı múmkin (1-qosımshaǵa qarań).

Belgi tipi. Belgi tipindegi ózgeriwshiler char gilt sózi menen beriledi hám olar ózinde belginiń ASCII kodın saqlaydı. Belgi tipindegi mánisler salıstırmalı quramalı bolǵan dúzilmeler - qatarlar, belgiler massivleri hám basqalardı jaratıwda isletiledi (2-qosımshaǵa qarań).

2.2-tablica. C++ tiliniń tayanısh tipleri

Tip atı

Baytlardaǵı

Mánis shegarası

 

ólshemi

 

 

 

 

Bool

1

true yamasa false

 

 

 

unsigned short int

2

0..65535

 

 

 

short int

2

-32768..32767

 

 

 

unsigned long int

4

0..42949667295

 

 

 

long int

4

-2147483648..2147483647

 

 

 

int (16 razryadlı)

2

-32768..32767

 

 

 

int (32 razryadlı)

4

-2147483648..2147483647

 

 

 

unsigned int (16 razryadlı)

2

0..65535

 

 

 

unsigned int (32 razryadlı)

4

0..42949667295

 

 

 

unsigned char

1

0..255

 

 

 

char

1

-128..127

 

 

 

 

16

 

float

4

1.2E-38..3.4E38

 

 

 

double

8

2.2E-308..1.8E308

 

 

 

long double (32 razryadlı)

10

3.4e-4932..-3.4e4932

 

 

 

void

2 yamasa 4

-

 

 

 

Haqıyqıy san tipi. Haqıyqıy sanlar float gilt sózi menen járiyalanadı. Bul tiptegi ózgeriwshi ushın yadta 4 bayt orın ajıratıladı hám <belgi><tártip><mantissa> qálibinde sandı saqlaydı (1-qosımshaǵa qarań). Eger bólshekli san júdá úlken (kishi) mánislerdi qabıl etetuǵın bolsa, ol yadtı 8 yamasa 10 baytta ekilengen anıqlıq kórinisinde saqlanadı hám sáykes túrde double hám long double gilt sózleri menen járiyalanadı. Aqırǵı jaǵday 32-razryadlı platformalar ushın orınlı.

Logikalıq tip. Bul tiptegi ózgeriwshi bool gilt sózi menen járiyalanadı. Ol tiptegi ózgeriwshi 1 bayt orın iyeleydi hám 0 (false, jalǵan) yamasa 0 mánisinen parıqlı mánis (true, shın) qabıl etedi. Logikalıq tiptegi ózgeriwshiler mánisler ortasındaǵı múnásibetlerdi ańlatatuǵın pikirlewlerdiń shın yamasa jalǵan ekenligin sáwlelendiriwde qollanıladı hám olar qabıl etetuǵın mánisler matematikalıq logika nızamlıqlarına tiykarlanadı.

Matematikalıq logika - pikirlewdiń forması hám nızamlıqları haqqındaǵı ilim. Onıń tiykarın pikirlewler esabı quraydı. Pikirlew - bul qálegen gáp bolıp, oǵan salıstırmalı shın yamasa jalǵan pikirdi bildiriw múmkin. Máselen «3>2», «5 - jup san», «Moskva-Ukraina paytaxtı» hám taǵı basqa. Biraq «0.000001 kishi san» gápi pikirlew esaplanbaydı, sebebi «kishi san» túsinigi júdá salıstırmalı, yaǵnıy kishi san degende qanday sandı túsiniw kerekligi anıq emes. Sonıń ushın joqarıdaǵı gáptiń shın yamasa jalǵanlıǵı haqqında pikir bildiriw qıyın.

Pikirlewlerdiń shınlıǵı jaǵdaylarǵa baylanıslı túrde ózgeriwi múmkin. Máselen «búgin - sárshembi» gápiniń shın yamasa jalǵanlıǵı usı qaralıp atırǵan kúnge baylanıslı. Tap sonday «х<0» gápi х ózgeriwshisiniń usı momenttegi mánisine sáykes túrde shın yamasa jalǵan boladı.

C++ tilinde logikalıq tip atı Angliyalıq matematik Jorj Bul húrmetine bool sózi menen ańlatılǵan. Logikalıq ámeller «Bul algebrası» delinedi.

Logikalıq pikirlewler ústinde úsh ámel anıqlanǵan:

17

1)biykarlaw - A pikirlewdiń biykarlawı degende A shın bolǵanda jalǵan hám jalǵan bolǵanda shın mánis qabıl etiwshi pikirlewge aytıladı. C++ tilinde biykarlaw

-‘!’ belgisi menen beriledi. Máselen, A pikirlew biykarlawı «!A» kórinisinde jazıladı;

2)konyunkciya - eki A hám B pikirlewler konyunkciyası yamasa logikalıq kóbeymesi «A && B» kóriniske iye. Bul pikirlew tek ǵana A hám B pikirlewler shın bolǵanda ǵana shın boladı, keri jaǵdayda jalǵan boladı (ádette «&&» ámeli «hám» dep oqıladı). Máselen «búgin aydıń 5 kúni hám búgin sárshembi» pikiri anıq 5 kúni sárshembi bolǵan kúnler ushın ǵana shın boladı;

3)dizyunkciya - eki A hám B pikirlewler dizyunkciyası yamasa logikalıq qosındısı «A || B» kóriniste jazıladı. Bul pikirlew shın bolıwı ushın A yamasa B

pikirlewlerden birewi shın bolıwı jeterli. Ádette «||» ámeli «yamasa» dep oqıladı. Joqarıda keltirilgen pikirler tiykarında logikalıq ámeller ushın shınlıq tablicası

anıqlanǵan (2.3-tablica).

2.3-tablica. Logikalıq ámeller ushın shınlıq tablicası

 

Pikirlewler

Pikirlewler ústinde ámeller

 

 

 

 

 

 

A

 

B

!A

A && B

A || B

 

 

 

 

 

 

false

 

false

true

false

false

 

 

 

 

 

 

false

 

true

true

false

true

 

 

 

 

 

 

true

 

false

false

false

true

 

 

 

 

 

 

true

 

true

false

true

true

 

 

 

 

 

 

Logikalıq tip mánisleri ústinde logikalıq kóbeytiw, qosıw hám biykarlaw ámellerin qollanıw arqalı quramalı logikalıq ańlatpalardı qurıw múmkin. Mısal ushın, «x-oń hám y mánisi [1..3] sanlar aralıǵına tiyisli emes» pikirlewiniń logikalıq ańlatpa kórinisi tómendegishe boladı:

(x > 0) && (y < 1 || y > 3)

void tipi. void tipindegi programma obyekti hesh qanday mániske iye bolmaydı hám bul tipten qurılmanıń til sintaksisine sáykes keliwin támiynlew ushın isletiledi. Máselen, C++ tili sintaksisi funkciya mánis qaytarıwın talap etedi. Eger funkciya mánis qaytarmaytuǵın bolsa, ol void gilt sózi menen járiyalanadı.

18

Mısallar.

int a = 0, A = 1; float abc = 17.5; double sheshim; bool Ok = true; char LETTER = ‘z’;

void Meniń_Funkciyam(); /*funkciya qaytaratuǵın mánis esapqa alınbaydı*/

2.4. Túrlengen turaqlılar

Túrlengen turaqlılar tap ózgeriwshilerdey bolıp isletiledi hám inicializaciya qılınǵannan (baslanǵısh mánis berilgennen) keyin olardıń mánisin ózgertiwge bolmaydı.

Túrlengen turaqlı járiyalawında const gilt sózi, onnan keyin turaqlı tipi hám atı, hámde inicializaciya bólegi boladı.

Mısal sıpatında túrlengen hám literal turaqlılardan paydalanǵan jaǵdayda radius berilgende sheńber maydanın esaplaytuǵın programmanı keltiremiz.

#include <iostream.h> using namespace std; int main()

{

const double pi = 3.1415; const int Radius = 3; double Square = 0;

Square = pi * Radius * Radius; cout << Square << ‘\n’;

return 0;

}

Programma bas funkciyasınıń baslanıwında eki - pi hám radius turaqlıları járiyalanǵan. Sheńber maydanın anıqlawshı Square turaqlı dep járiyalanbaǵan, sebebi, ol programma orınlanıwında ózgeredi. Sheńber radiusın programma islewinde ózgertiw kózde tutılmaǵan, sol sebepli ol turaqlı sıpatında járiyalanǵan.

19

2.5. Sanap ótiliwshi tip

Kóp muǵdardaǵı, logikalıq tárepten bir-birine baylanıslı turaqlılardan paydalanılǵanda, sanap ótiliwshi tipten paydalanǵanı maqul. Sanap ótiliwshi turaqlılar enum gilt sózi menen anıqlanadı. Mazmunı boyınsha bul turaqlılar ápiwayı pútin sanlar esaplanadı. Sanap ótiliwshi turaqlılar C++ standartı boyınsha pútin tiptegi turaqlılar esaplanadı. Hár bir turaqlıǵa (sanǵa) mazmunlı at beriledi hám bul identifikatordı programmanıń basqa orınlarında at qoyıw ushın isletiliwi múmkin emes. Sanap ótiliwshi tip tómendegi kóriniske iye:

enum <sanap ótiletuǵın tip atı> { <at1> =<mánis1>, <at2> =<mánis2>, … <atn> =<mánisn> };

Bul jerde, enum - gilt sóz (inglisshe enumerate - sanaw); <sanap ótiletuǵın tip atı>- turaqlılar diziminiń atı; <atı> - pútin mánisli konstantalardıń atları; <mánis1>- shárt bolmaǵan inicializaciya mánisi (ańlatpa).

Mısal ushın hápte kúnleri menen baylanıslı másele sheshiwde hápte kúnlerin dú (dúyshembi), si (siyshembi), sá (sárshembi), pi (piyshembi), ju (juma), sh (shembi), ek (ekshembi) turaqlıların isletiw múmkin hám olar sanap ótiliwshi tip járdeminde bir qatarda jazıladı:

enum Hápte {dú, si, sá, pi, ju, sh, ek};

Sanap ótiliwshi turaqlılar tómendegi qásiyetke iye: eger turaqlı mánisi kórsetilmegen bolsa, ol aldınǵı turaqlı mánisinen birewge artıq boladı. Kelisim boyınsha birinshi turaqlı mánisi 0 boladı.

Inicializaciya járdeminde turaqlı mánisin ózgertiw múmkin:

enum Hápte {dú=8, si, sá=12, pi=13, ju=16, sh, ek=20};

Bul járiyalawda si mánisi 9, sh bolsa 17 ge teń boladı.

Sanap ótiliwshi turaqlılardıń atları hár túrli bolıwı kerek, biraq olardıń mánisleri bir túrde bolıwı múmkin:

enum Sanlar1 {nol=0, taza=0, bir, eki, jup=2, úsh};

Turaqlınıń mánisi ańlatpa kóriniste beriliwi múmkin, tek ǵana ańlatpadaǵı atlardıń mánisleri sol adımǵa shekem anıqlanǵan bolıwı kerek:

20