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

3-lekciya

.pdf
Скачиваний:
0
Добавлен:
27.11.2023
Размер:
375.37 Кб
Скачать

3-Lekciya. C++ te ózgeriwshiler

Lekciya jobası:

3.1.Ózgeriwshiler

3.2.Konstantalar

3.3.Tipler menen islew

Gilt sózler: bad(), iostream, kiritiw ámeli, buffer, istream, shıǵarıw ámeli, clear(), ofstream, kiritiw juwmaqlanǵanlıǵı belgisi, close(), open(), eof() aǵımnıń jaǵdayi, ostream, kiritiw qurılması, fail(), unget(), shıǵarıw qurılması, good(), qurılma drayveri, fayl, ifstream.

3.1. Ózgeriwshiler

Ózgeriwshiler obyekt sıpatında. C tiliniń tiykarǵı túsiniklerinen biri atalǵan yad bólimi – obyekt túsinigi esaplanadı. Obyekttiń jeke jaǵdayı bul ózgeriwshi bolıp tabıladı. Ózgeriwshige mánis berilgende oǵan ajıratılǵan yad bólimine usı mánis kodı jazıladı. Ózgeriwshi mánisine atı arqalı múráját etiw múmkin, yad bólimine bolsa tek adresi arqalı múráját qılınadı. Ózgeriwshi atı bul erkin kiritiletuǵın identifikator. Ózgeriwshi atı sıpatında xızmetshi sózlerdi isletiw múmkin emes.

Ózgeriwshilerdiń anıqlaması. C tilinde ózgeriwshini anıqlaw ushın kompyuterge onıń túri (máselen, int, char yamasa float) hámde atı haqqında maǵlıwmat beriledi. Bul informaciya tiykarında kompilyator, ózgeriwshi ushın qansha orın ajıratıw lazım hám bul ózgeriwshide qanday tiptegi mánis saqlanıwı múmkinligi haqqında maǵlıwmatlardı anıqlastırıp aladı. Ózgeriwshi atı identifikator bolıp, xızmetshi sózlerden parqlı bolıwı kerek.

Hár bir yacheyka bir bayt ólshemge iye. Eger ózgeriwshi ushın kórsetilgen tip 4 bayttı talap etse, onıń ushın tórt yacheyka ajıratıladı. Ózgeriwshiniń tipine muwapıq ráwishte kompilyator bul ózgeriwshi ushın qansha orın ajıratıw kerekligin anıqlaydı.

Kompyuterde mánislerdi ańlatıw ushın bitler hám baytlar qollanıladı hám yad baytlarda esaplanadı.

Ózgeriwshiler tipleri. Ózgeriwshilerdiń tómendegi tipleri bar: char – bir simvol;

long char –uzın simvol; int – pútin san;

short yamasa short int – qısqa pútin san; long yamasa long int – uzın pútin san; float – haqıyqıy san;

long float yamasa double – ekilengen haqıyqıy san; long double – uzın ekilengen haqıyqıy san.

Pútin sanlar járiyalanǵanda kórilgen tipler aldına unsigned (belgisiz) anıqlalması qosılıwı múmkin. Bul anıqlama qosılǵan pútin sanlar ústinde ámeller mod 2n arifmetikasına tiykarlanǵan. Bul jerde n sanı int tipi yadda iyelewshi razryadlar sanı. Eger belgisiz k sanı uzınlıǵı int sanı razryadlar sanınan uzın bolsa, bul san mánisi k mod 2n ge teń boladı. Belgisiz k san ushında –k ámeli 2n–k formula tiykarında esaplanadı. Belgili, yaǵnıy signed tipindegi sanlardıń eń úlken razryadı san belgisin kórsetiw ushın isletilse unsigned (belgisiz) tiptegi sanlarda bul razryad sandı súwretlew ushın isletiledi.

Ózgeriwshilerdi programmanıń qálegen bóliminde járiyalaw yamasa qayta járiyalaw múmkin.

Mısal ushın:

int a, b1, ac; yamasa int a;

int b1; int ac;

Ózgeriwshiler járiyalanǵanda olardıń mánisleri anıqlanbaǵan boladı. Biraq ózgeriwshilerdi járiyalawda inicializaciya yaǵnıy baslanǵısh mánislerin kórsetiw múmkin.

Mısal ushın: int i = 0; char c = ’k’;

Typedef járiyalawshısı jańa tiplerdi kiritiwge imkán beredi.

Mısal ushın jańa COD tipin kiritiw: typedef unsigned char COD; COD simvol;

Pútin tipler ólshemi. Birdey tiptegi ózgeriwshiler ushın túrli kompyuterlerde yadtan túrli kólemdegi orın ajıratılıwı múmkin. Biraq bir kompyuterde birdey tiptegi eki ózgeriwshi birdey muǵdarda orın iyeleydi.

Máselen, char tipli ózgeriwshi bir bayt kólemdi iyeleydi. Kóplep kompyuterlerde short int (qısqa pútin) tipi eki bayt, long int tipi bolsa 4 bayt orın iyeleydi. Pútin mánisler ólshemin kompyuter sisteması hám isletiletuǵın kompilyator anıqlaydı. 32 –razryadlı kompyuterlerde pútin ózgeriwshiler 4 bayt orın iyeleydi.

3.2. Konstantalar

Konstantalar tipleri. Konstanta bul ózgertiw múmkin bolmaǵan mánis. C tilinde bes tiptegi konstantalar isletiliwi múmkin: simvollar, pútin sanlar, haqıyqıy sanlar, sanawshı konstantalar hám null kórsetkish.

Belgili konstantalar. Belgili konstantalar ádette bir bayt orındı iyeleydi hám bul 256 túrli belgini saqlaw ushın jeterli. Char tipi mánislerin 0..255 sanlar toplamına yamasa ASCII belgiler toplamına interpretaciya etiw múmkin.

ASCII belgileri degende kompyuterlerde qollanılatuǵın standart belgiler toplamı túsiniledi. ASCII - bul American Standard Code for Information Interchange (Amerikanıń informaciya almasınıwı ushın standart kodı) degen mánisti bildiredi.

Mısal ushın ‘x’, ‘*’, ‘\012’, ‘\0’, ‘\n’ - bir simvollı konstanta; ‘dd’, ‘\n\t’, ‘\x07\x07’ eki simvollı konstantalar.

C kompilyatorında tekstlerdi formatlawshı bir neshe arnawlı belgilerden paydalanıladı. (Olardan eń kóp tarqalǵanları tablicada keltirilgen).

Arnawlı belgiler informaciyalardı ekranǵa, faylǵa hám basqa shıǵarıw qurılmalarına shıǵarıwda formatlaw ushın qollanıladı.

Arnawlı '\' simvolınan baslanǵan simvollar ESC (eskeyp) simvollar delinedi.

Simvollı konstanta mánisi simvoldıń kompyuterde qabıl etilgen sanli kodına teń. ESC (eskeyp) simvollar tablicası:

Jazılıwı

Ishki kodı

Simvolı (atı)

Mánisi

\a

0x07

bel (audible bell)

Dawıs signalı

\b

0x08

bs (backspace)

Bir adım qaytıw

\f

0x0C

ff (form feed)

Betti ótkeriw

\n

0x0A

lf (line feed)

Qatardı ótkeriw

\r

0x0D

cr (carriage return)

Karetkanı qaytarıw

\t

0x09

ht (horizontal tab)

Gorizontal tabulyaciya

\v

0x0B

vt (vertical tab)

Vertikal tabulyaciya

\\

0x5C

\ (backslash)

Keri sızıq

\'

0x27

‘ (single out)

Apostraf (ápiwayı

tırnaqsha)

 

 

 

\''

0x22

" (double quote)

Ekilik tırnaqsha

\?

0x3F

? (question mark)

Soraw belgisi

\000

000

qálegen (octal

Simvol segizlik kodı

number)

 

 

 

\xhh

0xhh

qálegen (hex

Simvol on altılıq kodı

number)

 

 

 

Maǵlıwmatlardıń pútin san tipi. Pútin sanlar onlıq, segizlik yamasa on altılıq sanaq sistemalarında beriliwi múmkin.

Onlıq sanaq sistemesında pútin sanlar 0-9 cifrları izbe-izliginen ibarat bolıp, birinshi cifrı 0 bolıwı kerek emes. Biraq jalǵız 0 bolıwı múmkin.

Segizlik sanaq sistemesında pútin sanlar 0 menen baslanıwshı 0-7 cifrlarınan ibarat izbe-izlik esaplanadı.

On altılıq sanaq sistemesında pútin san 0x yamasa 0X penen baslanıwshı 0-9 cifrları hám a-f yamasa A-F háriplerinen ibarat izbe-izlik esaplanadı.

Máselen, 15 hám 22 onlıq sanları segizlikte 017 hám 026, on altılıqta 0xF hám

0x16 formada súwretlenedi.

Maǵlıwmatlardıń uzın pútin san tipi: Aqırına l yamasa L háripleri qoyılǵan onlıq, segizlik yamasa on altılıq pútin san.

Maǵlıwmatlardıń belgisiz (unsigned) pútin san tipi: Aqırına u yamasa U háripleri qoyılǵan onlıq, segizlik yamasa on altılıq ápiwayı yamasa uzın pútin san.

Maǵlıwmatlardıń haqıyqıy san tipi. Maǵlıwmatlardıń haqıyqıy san tipi altı bólimnen ibarat bolıwı múmkin: pútin bólim, noqat, bólshek bólim, e yamasa E belgisi, onlıq dáreje hám F yamasa f suffiksleri. Máselen : 66., .0, .12, 3.14F, 1.12e12.

Maǵlıwmatlardıń uzın haqıyqıy san tipi: Aqırına L yamasa l suffiksleri qoyılǵan haqıyqıy san. Máselen: 2E+6L;

Sanawshı konstanta. Sanawshı konstantalar enum xızmetshi sózi járdeminde kiritilip, int tipindegi sanlarǵa qolay sózlerdi sáykes qoyıw ushın isletiledi. Mısal ushın: enum {one = 1, two = 2, three = 3};

Eger san mánisleri kórsetilmegen bolsa eń sheptegi sózge 0 mánisi berilip qalǵanlarına tártip boyınsha ósiwshi sanlar sáykes qoyıladı: enum{zero, one, two};

Bul mısalda avtomatik ráwishte konstantalar tómendegi mánislerdi qabıl etedi: zero = 0, one = 1, two = 2;

Konstantalar aralas kóriniste kiritiliwi de múmkin: enum (zero, one, four = 4, five, six}.

Bu mısalda avtomatik ráwishte konstantalar tómendegi mánislerdi qabıl kiladi: zero = 0, one = 1, four = 4, five = 5, six = 6;

Jáne bir mısal: Enum BOOLEAN {NO, YES};

Konstantalar mánisleri: NO = 0, YES = 1;

Null kórsetkish. NULL-kórsetkish jalǵız arifmetikalıq bolmaǵan konstanta. Konkret realizaciyalarda null kórsetkish 0 yamasa 0L yamasa atalǵan konstanta NULL arqalı súwretleniwi múmkin. Sonı aytıw lazım, bul konstanta mánisi 0 bolıwı yamasa ‘0’ simvolı kodına sáykes keliwi shárt emes.

Logikalıq konstanta. Logikalıq konstantalar true (ras) hám false (jalǵan) mánislerden ibarat. C tilinde pútin sanlar hám ańlatpalar logikalıq konstantalar sıpatında qaraladı. Ishki kórinisi false - 0, qálegen basqa mánis true dep qaraladı.

Qatarlı konstanta. Qatarlı konstantalar C tili konstantalarına kirmeydi, balki leksemaları óz aldına tip esaplanadı. Sonıń ushın ádebiyatlarda qatarlı konstantalar qatarlı leksemalar dep te ataladı.

Qatarlı konstanta bul ekilik qawıslarǵa (tırnaqshalarǵa) alınǵan qálegen simvollar izbe-izligidur. Mısal ushın: "Men qatarlı konstantaman".

Qatarlar arasına ESC (eskeyp) simvollar da kiriwi múmkin. Bul simvollar aldına \ belgisi qoyıladı. Mısal ushın: "\n bul qatar \n úsh qatarǵa \n jaylasadı".

Qatar simvolları yadta izbe-iz jaylastırıladı hám hár bir qatarlı konstanta aqırına avtomatik ráwishte kompilyator tárepinen '\0' simvolı qosıladı. Usınday qatardıń yadtaǵı kólemi simvollar sanı+1 baytqa teń.

Izbe-iz kelgen hám boslıq, tabulyaciya yamasa qatar aqırı belgisi menen ajıratılǵan qatarlar kompilyaciya dáwirinde bir qatarǵa aylandırıladı. Mısal ushın:

"Sálem""Tashkent" qatarları bir qatar dep qaraladı. "Sálem Tashkent".

Bul qaǵıydaǵa bir neshe qatarǵa jazılǵan qatarlar da boysınadı. Mısal ushın:

"Ózbekistanǵa", "báhár", "keldi" qatarları bir qatarǵa sáykes: "Ózbekistanǵa báhár keldi".

Eger qatarda '\' belgisi ushırasa hám bul belgiden soń '\n' qatar aqırı belgisine shekem boslıq belgisi kelse bul boslıq belgileri '\' hám '\n' belgisi menen birge qatardan óshiriledi. Qatardıń ózi keyingi qatarda kelgen qatar menen qosıladı.

"Ózbekistanǵa \ báhár \ keldi" qatarları bir qatarǵa sáykes:

"Ózbekistanǵa báhár keldi".

Atalǵan konstantalar. C tilinde ózgeriwshilerden tısqarı atalǵan konstantalar da kiritiliwi múmkin. Bul konstantalar mánislerin programmada ózgertiw múmkin emes. Konstantalar atları programmist tárepinen kiritilgen hám xızmetshi sózlerden parqlı bolǵan identifikatorlar bolıwı múmkin. Ádette at sıpatında úlken latın háripleri hám astına sızıw belgileri kombinaciyasınan ibarat identifikatorlar isletiledi. Atalǵan konstantalar tómendegi formada kiritiledi:

const tip konstanta_atı = konstanta_mánisi. Mısal ushın:

const double EULER = 2.718282; const long M = 99999999;

3.3. Tipler menen islew

Tiplerdi keltiriw. Tiplerdi keltiriw (type casting) belgili tiptegi ózgeriwshi basqa tiptegi mánisti qabıl etkende paydalanıladı. Ayrım tipler ushın keltiriw avtomatik ráwishte orınlanadı. Avtomatik tiplerdi keltiriw ózgeriwshi tipi kólemi mánisti saqlawǵa jeterli bolǵanda orınlanadı. Bul process keńeytiriw (widening) yamasa joqarılatıw (promotion) dep ataladı, sebebi, kishi razryadlı tip úlken razryadlı tipke keńeytiriledi. Bul jaǵdayda tiplerdi avtomatik keltiriw qáwipsiz dep ataladı. Máselen int tipi char tipindegi mánisti saqlawǵa jeterli, sonıń ushın tiplerdi keltiriw talap etilmeydi. Keri process taraytırıw (kishireytiw) (narrowing) dep ataladı, sebebi mánisti ózgertiw talap etiledi. Bul jaǵdayda tiplerdi avtomatik keltiriw qáwipli dep ataladı. Máselen haqıyqıy tipti pútin tipke keltirilgende bólshek bólegi taslap jiberiledi.

Ámellerde tiplerdi avtomatik keltiriw. Binar arifmetikalıq ámeller orınlanǵanda tiplerdi keltiriw tómendegi qaǵıydalar tiykarında ámelge asırıladı:

short hám char tipleri int tipine keltiriledi;

eger operandlardan biri long tipine tiyisli bolsa ekinshi operand ta long tipine keltiriledi hám nátiyje de long tipine tiyisli boladı;

eger operandlardan biri float tipine tiyisli bolsa ekinshi operand ta float tipine keltiriledi hám nátiyje de float tipine tiyisli boladı;

eger operandlardan biri double tipine tiyisli bolsa ekinshi operand ta double tipine keltiriledi hám nátiyje de double tipine tiyisli boladı;

eger operandlardan biri long double tipine tiyisli bolsa ekinshi operand ta long double tipine keltiriledi hám nátiyje de long double tipine tiyisli boladı;

Ańlatpalarda tiplerdi avtomatik keltiriw. Eger ańlatpada short hám int tipindegi ózgeriwshiler isletilse, pútin ańlatpa tipi int ke kóteriledi. Eger ańlatpada qandayda bir ózgeriwshi tipi - long bolsa, pútin ańlatpa tipi long tipke kóteriledi. Kózde tutılǵanınday hámme pútin konstantalar int tipine iye dep qaraladı. Hámme pútin konstantalar aqırında L yamasa l simvolı turǵan bolsa, long tipine iye.

Eger ańlatpa float tipindegi operandqa iye bolsa, pútin ańlatpa float tipine kóteriledi. Eger qandayda bir operand double tipine iye bolsa, pútin ańlatpa tipi double tipine kóteriledi.

Tipler menen islewshi ámeller. Tiplerdi ózgertiw ámeli tómendegi kóriniske

iye:

(tip_atı)operand;

Bul ámel operandlar mánisin kórsetilgen tipke keltiriw ushın isletiledi. Operand sıpatında konstanta, ózgeriwshi yamasa qawıslarǵa (tırnaqshalarǵa) alınǵan ańlatpa keliwi múmkin. Mısal ushın (long)6 ámeli konstanta mánisin ózgertpegen jaǵdayda operativ yadta iyelegen baytlar sanın asıradı. Bul mısalda konstanta tipi ózgermegen bolsa, (double)6 yamasa (float)6 ámeli konstanta ishki kórinisin de ózgertedi. Úlken pútin sanlar haqıyqıy tipke keltirilgende sannıń anıqlıǵı joǵalıwı múmkin.

Máselen:

int x = 1.7+1.8;

int y = (int)1.7+(int)1.8;

Bu ámeller orınlanıwı nátiyjesinde x ózgeriwshi mánisi 3 ke y ózgeriwshi mánisi 2 ge teń boladı.

sizeof ámeli operand sıpatında kórsetilgen obyekttiń baytlarda yadtaǵı kólemin esaplaw ushın isletiledi. Bul ámeldiń eki kórinisi bar:

sizeof ańlatpa sizeof (tip)

Sonı aytıp ótiw lazım sizeof funkciyası preprocessor qayta islew processinde orınlanadı, sonıń ushın programma orınlanıw processinde waqıt talap etpeydi.

Mısal ushın: sizeof 3.14 = 8 sizeof 3.14f = 4 sizeof 3.14L = 10 sizeof(char) = 1 sizeof(double) = 8.

Baqlaw sorawları

1.Zamanagóy kompyuterlerdıń kiritiw hám shıǵarıw quralları qanshalıq túrlishe bolıwı múmkin?

2.istream aǵımı ne qıladı?

3.ostream aǵımı ne qıladı?

4.Fayl ne?

5.Fayl formati ne?

6.Programmaǵa maǵlıwmatlar kiritiw hám shıǵarıw ushın isletiletuǵın 4 túrli tiptegi qurılmalardı aytıń.

7.Fayldı oqıwdıń 4 basqıshın aytıp beriń.

8.Faylǵa jazıwdıń 4 basqıshın aytıp beriń.

9.Aǵımlardıń 4 túrli jaǵdayın aytıń hám anıqlań.

10.Tómendegi kiritiwge tiyisli máselelerdi sheshiw usılları haqqında aytıń.

10.1.Paydalanıwshı múmkin bolǵan diapazonnan artıp ketiwshi mánis kiritti.

10.2.Maǵlıwmatlar tawsıldı (fayl aqırı).

10.3.Paydalanıwshı nadurıs tiptegi mánis kiritti.

11.Kiritiwdiń shıǵarıwǵa qaraǵanda qıyınlıǵı nede?

12.Shıǵarıwdıń kiritiwge qaraǵanda qıyınlıǵı nede?

Paydalanılǵan ádebiyatlar

1.Bjarne Stroustrup. Programming: Principles and Practice Using C++ (2nd Edition). Persan Education, Inc. 2014. second printing, January 2015.

2.Harry Hariom Choudhary, Bjarne M Stroustrup. C++ Programming Professional.: Sixth Best Selling Edition for Beginner's & Expert's 2014.

3.http://www.stroustrup.com/4th.html

4.http://www.cplusplus.com/

Соседние файлы в предмете Программирование на C++