Программалау тілдері жоғары оқу орындарына арналған оқулық



жүктеу 2,9 Mb.
Pdf просмотр
бет56/82
Дата19.11.2018
өлшемі2,9 Mb.
#20460
түріПрограмма
1   ...   52   53   54   55   56   57   58   59   ...   82

 
154 
{ Number znachenie; 
/* соңғы болып znachenie.y элементі мән қабылдайды */ 
znachenie.x = 100; 
znachenie.y = 50.; 
cout << "znachenie.x:  " << znachenie.x 
<< "   znachenie.y:  " << znachenie.y << endl;  
/* соңғы болып znachenie.х элементі мән қабылдайды */ 
znachenie.y = 50; 
znachenie.x = 100;  
cout << "znachenie.x:  " << znachenie.x 
  << "   znachenie.y:  " << znachenie.y << endl;  

Программа нәтижесі: 
znachenie.x:  1112014848   znachenie.у:  50 
znachenie.x:  100   znachenie.y:  1.4013e-043 
Программа орындалуы барысындағы мынадай мәліметтер  
znachenie.x:   1112014848  
znachenie.y:   50 
 соңғы элемент znachenie.у болғанын кӛрсетеді. 
Ал программадағы мынадай мәліметтер  
znachenie. x:   100    znachenie. у:  1.4013е-043  
соңғы элемент znachenie.х болғанын кӛрсетеді. 
Біріктірмелер келесі программада кӛрсетілгендей компьютер жадын ҥнемді 
пайдалану мҥмкіндігін береді. 
#include     // С++ тілі стилінде 
union many_types  

char с;        // 

байт 
int ivalue;    // 

байт 
float fvalue;  // 

байт 
  double dvalue; // 

байт 
 } my_union; 
void main() 

// дұрыс орындалатын енгізу-шығару операциялары  
my_union.c = 'b'; 
cout << my_union.c << endl; 
my_union.ivalue =1990; 
cout << my_union.ivalue << endl; 
my_union.fvalue = 19.90; 
cout << my_union.fvalue << endl; 
my_union.dvalue = 987654.32E+13;  
cout << my_union.dvalue << endl; 
// дұрыс орындалмайтын енгізу-шығару операциялары 


 
155 
cout << my_union.c << endl;  
cout << my_union.ivalue << endl;  
cout << my_union.fvalue << endl;  
cout << my_union.dvalue << endl; 
/* Программаның бірінші бөлігі дұрыс орындалды,  өйткені 
біріктірмеге әр түрлі типтегі мәліметтер бірден емес, 
біртіндеп меншіктелді. 
Ал екінші бөлікте тек double типті мән ғана дұрыс 
көрсетілді, өйткені ол соңында енгізілген болатын. */ 
/*
 
біріктірменің
 
ең
 
көлемді
 
элементіне
 
тең
 
ұзындығын
 
есептеу
 
*/ 
cout << "Size of the union = " 
  << sizeof (many_types) << "  bytes" << endl; 

Программаны орындау нәтижесі (
9.5-сурет):
  

1990 
19.9 
9.87654e+018 
Ш 
-154494568 
-2.05461е+033 
9.87б54е+018 
Size of the union = 8 bytes 
Press any key to continue 
9.9 Биттік ӛрістер 
Биттік ӛрістер – бҧл қҧрылым ӛрістерінің ерекше бір тҥрі. Олар мәліметтерді 
жинақтап,  мысалы,  «иә/жоқ»  сияқты  жалаушаларды  ықшамдап  орналастыру 
ҥшін  қажет.  Мҧндағы  компьютер  жадының  ең  кіші  адрестелетін  ҧяшығы  –  1 
байт,  ал  жалаушаны  сақтау  ҥшін  бір-ақ  бит  жеткілікті.    Биттік  ӛрістерді 
сипаттау  кезінде  оның  атынан  соң  қос  нҥкте  қойылады  да,  ӛріс  ҧзындығы 
битпен (бҥтін оң константа) кӛрсетіледі: 
struct Options{ 
bool centerX:1; 
bool centerY:1; 
unsigned int shadow:2; 
unsigned int palette:4; 
}; 
Биттік  ӛрістер  кез  келген  бҥтін  типте  бола  береді.  Ӛріс  аты  жазылмауы  да 
мҥмкін,  мҧндай  ӛрістер  аппараттық  шекараға  туралау  ҥшін  қолданылады. 
Ӛрісті  пайдалану  әдеттегідей  оның  атын  кӛрсету  арқылы  орындалады.  Ӛріс 
адресін алуға болмайды, бірақ жалпы биттік ӛрістерді кәдімгі қҧрылым ӛрістері 
сияқты  пайдалана  беруге  болады.  Жеке  биттермен  амалдар  орындау  байт  пен 
машиналық  сӛздерге  қарағанда,  онша  ҥнемді  орындалмайды,  ӛйткені  ол  ҥшін 
компилятор арнайы кодтар жасап, программа кодының кӛлемін тым арттырып 
жібереді.  Биттік ӛрістертерді компьютер жадында орналастыру  компиляторға 
және аппаратураға байланысты болады. 
9.5-сурет 


 
156 
Келесі қҧрылымды сипаттау мысалын қарастырайық: 
struct BitCard { 
/* көрсетілген цифрлар – бұл биттер саны */ 
unsigned face : 4; /*  0 – тҧз, ... ,12 – король;  4 бит  0 ... 15 сандарын сақтай  
 
алады */ 
unsigned suit : 2; /* 0 – қиық, 1 – табан, 2 – шыбын, 3 – қарға; 2 бит  0 ... 3   
 
сандарын сақтайды */ 
unsigned color : 1; /* 0 – қызыл, 1 – қара; мұнда 1 бит 
жеткілікті */ 
} ; 
Биттік ӛрістерді карта элементтерін сақтау ҥшін қолдану мысалы. 
#include  // С++ тілі стилінде 
#include   
#include   
#include  
struct BitCard { 
unsigned face: 4;   /* ағылш. face – карта;0 – туз,...,  
                       12 – король  */ 
unsigned suit: 2;   /* ағылш. suit – карта түрі;0 – қиық, 
                       1 – табан,2 – шыбын,3 – қарға */ 
unsigned color :  1; /* color – түсі; 0 – қызыл, 1 – қара */ 
}; 
void fillDeck(BitCard *); /*
 
deck
 
жиымын
 
52
 
картамен
 
толтыру
 
*/ 
void deal (BitCard *); /* deal – карта тарату;  
                          экран 52 карта шығару */ 
void main () 

BitCard deck[52];  /* 52 картадан тұратын жиым */ 
fillDeck(deck) ;  
deal(deck);  

void fillDeck(BitCard *temp_deck) 

  for ( int i = 0; i < 52; i++) 
  { 
temp_deck[i].face  =  i % 13;  
temp_deck[i].suit  =  i / 13;  
temp_deck[i].color  = i / 26; 
  }  

void deal (BitCard  *temp_deck)  
{ int l = 0; /* бөліп шығару үшін */ 
/* ықшамды болуы үшін карталарды екі бағанға бөлеміз:  


жүктеу 2,9 Mb.

Достарыңызбен бөлісу:
1   ...   52   53   54   55   56   57   58   59   ...   82




©g.engime.org 2024
әкімшілігінің қараңыз

    Басты бет
рсетілетін қызмет
халықаралық қаржы
Астана халықаралық
қызмет регламенті
бекіту туралы
туралы ережені
орталығы туралы
субсидиялау мемлекеттік
кеңес туралы
ніндегі кеңес
орталығын басқару
қаржы орталығын
қаржы орталығы
құрамын бекіту
неркәсіптік кешен
міндетті құпия
болуына ерікті
тексерілу мемлекеттік
медициналық тексерілу
құпия медициналық
ерікті анонимді
Бастауыш тәлім
қатысуға жолдамалар
қызметшілері арасындағы
академиялық демалыс
алушыларға академиялық
білім алушыларға
ұйымдарында білім
туралы хабарландыру
конкурс туралы
мемлекеттік қызметшілері
мемлекеттік әкімшілік
органдардың мемлекеттік
мемлекеттік органдардың
барлық мемлекеттік
арналған барлық
орналасуға арналған
лауазымына орналасуға
әкімшілік лауазымына
инфекцияның болуына
жәрдемдесудің белсенді
шараларына қатысуға
саласындағы дайындаушы
ленген қосылған
шегінде бюджетке
салығы шегінде
есептелген қосылған
ұйымдарға есептелген
дайындаушы ұйымдарға
кешен саласындағы
сомасын субсидиялау