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


  ҚОЛДАНУШЫ АНЫҚТАЙТЫН МӘЛІМЕТТЕР ТИПТЕРІ



жүктеу 2,9 Mb.
Pdf просмотр
бет51/82
Дата19.11.2018
өлшемі2,9 Mb.
#20460
түріПрограмма
1   ...   47   48   49   50   51   52   53   54   ...   82

 
139 
 
9  ҚОЛДАНУШЫ АНЫҚТАЙТЫН МӘЛІМЕТТЕР ТИПТЕРІ  
МЕН  ҚҰРЫЛЫМДАРДЫ ПАЙДАЛАНУ 
Практикалық  есептерде  ӛңделуге  тиіс  мәліметтердің  қҧрылымы  кҥрделі  де 
болуы  мҥмкін.  Соларды  айқын,  әрі  анық  бейнелеу  ҥшін  қарапайым  типтер, 
жиымдар  және  нҧсқауыштар    негізінде  жасалған  мәліметтер  типтері 
қолданылады. C++ тілі программалаушыға ӛз типін анықтап, солармен жҧмыс 
істеу  ережелерін  де  анықтауға  мҥмкіндік  береді.  Бҧлар  қолданушы  немесе 
программалаушы анықтайтын типтер деп аталып жҥр.  
9.1 Типтердің атын ӛзгерту (typedef) 
Программа  жҧмысын  тҥсінуді  жеңілдету  ҥшін,  typedef  тҥйінді  сӛзі 
арқылы типке жаңа ат беріледі:  
typedef тип жаңа_ат [ өлшемі ]; 
typedef 
сӛзі тип спецификаторын анықтайды. Мҧндай сипаттама (хабарлау) 
қолданушы  анықтаған  типтерге  қысқа  және  мағыналы  аттар  беру  ҥшін 
қолданылады. Мысалы: 
typedef char name [100];  
мҧндағы тік жақша синтаксис элементі болып табылады. Ӛлшемі кӛрсетілмеуі 
де мҥмкін. Мысалдар: 
typedef unsigned int UINT;  
typedef char sg[10];  
Осылай енгізілген атаулар стандарттық типтердің аттары сияқты қолданылады: 
UINT i, j; 
// unsigned int типті 2 айнымалы 
sg a; 
  // символдардан тұратын a[10] жиымы 
Тағы бір мысал: 
typedef char Massiv[20];  
typedef struct { 
char fio[30]; 
int date, code; 
double zarplata;} Worker; 
Осылай енгізілген тип атын кейіннен пайдалануға болады: 
Massiv str[10]; /* әрқайсысы 20 символдан тұратын 10 жолы 
бар массив */  
Worker sotrudniki[50]; /* 50 құрылымнан тұратын массив */ 
9.2 Тізбелер (перечисления – enum) 
Программа  жазу  кезінде  бір  типтегі    әр  тҥрлі  мәндер  қабылдай  алатын 
шамаларды  анықтау  да  кездесіп  жатады.  Ол  ҥшін  тізім  тҥріндегі  мәліметтер 
типін – тізбелерді қолданған жӛн. Enum тҥйінді сӛзі арқылы жасалған тізбелер 
программаны оқып тҥсінуді жеңілдетеді.  Тізбелерге кіретін константалар int 
типінде  болады.  Келісім  бойынша  бірінші  константа  0-ге  тең,  келесісі  –  1-ге, 


 
140 
сонан  соң  –  2-ге,  т.с.с.  бола  береді.  Бір  тізбедегі  барлық  константалардың 
аттары әр тҥрлі болуы тиіс. Тізбенің жазылу форматы: 
  enum [тип_аты] {константалар_тізімі};  
Тип  аты  программада  осы  типтегі  айнымалыларды  анықтау  керек  болған 
жағдайда  беріледі.  Компилятор  осындай  айнымалылардың  константалар 
тізіміндегі  мәндерді  ғана  қабылдауын  қамтамасыз  етеді.  Константалар  бҥтін 
санды  типте  болуы  тиіс  және  олар  алғашқы  мәндерді  кәдімгідей  тҥрде 
қабылдауы  (инициалдануы)  керек.  Инициалдану  болмаса,  бірінші  константа 
нӛл  болып  саналады  да,  келесісі  алдыңғысынан  бірге  артық  мән  қабылдайды. 
Мысалы: 
enum {two = 2,three,four,ten = 10,eleven,fifty = ten + 40}; 
мҧнда three және four константаларына 3 және 4 мәндері, ал eleven 
константасына – 11 мәні меншіктеледі. 
enum color {r,g,b}; // r=0, g=1, b=2 
enum color {r=2,g=4,b=6}; // типті жариялау және инициалдау 
enum color {r,g=3,b}; // r=0, g=3, b=4 
Компилятор  int  және  enum  типтерінің  арасында  айырмашылық  бар  деп 
есептемейді,  сондықтан  тізбе  типіндегі  айнымалыларға  программада  бҥтін 
санды  мәндер  меншіктеле  береді.  Бірақ  C++  тілінде  мҧндай  меншіктеу  типті 
нақты  тҥрде  келтіру  арқылы  орындалады,  әйтпесе  компилятор  ескертпе 
жасайды. Мысалы: 
enum weekdays { /* жұмыс күндер: */ Monday, Tuesday, 
Wednesday, Thursday, Friday};  
  /* Monday – 0 , Tuesday – 1, т.с.с. */ 
weekdays today; today = (weekdays)1; 
Тізбедегі константалар аттары бірегей (қайталанбайтын) болуы тиіс, ал мәндері 
бірдей де бола береді. Тізбелерді қолданудың жай константаларды және #define 
директивасын  пайдаланудан      артықшылығы  байланысқан  константалардың 
кӛрнекілігінде жатыр және компилятор константаларға бастапқы мән бергенде 
олардың типін тексере алады.  
Келесі программада С тілінде тізбемен жҧмыс істеу мысалы кӛрсетілген. 
#include  
enum Months { /* айлар */ 
January = 1, February, March, April, May, June, July, 
August, September, October, November, December } months; 
/*  мұнда  тізбе  түрінде  1-ден  12-ге  дейінгі  сан  тізбегі 
алынған, өйткені January айнымалысына  1 меншіктелген */ 
void main () 
{int present_month; 
int  diff; 
/* үстіміздегі ай нөмірін (1 ... 12) енгізу */ 
printf ("Input the present month number (1-12): "); 
 
scanf ("%d",&present_month); 


 
141 
months = December; 
diff  = (int) months - presentjnonth; 
 
/* жыл соңына дейін ... ай қалды */ 
printf ("There are  %d months till the end of the year\n", 
diff); 

Программаны орындау нәтижесі: 
Input the present month number (1-12):   5  
There are  7 months till the end of the year 
Press any key to continue 
 9.3 Құрылымдарды пайдалану 
С тіліндегі жиымдар бір типтегі мәліметтерді сақтайтын болса, қҧрылымдар 
ӛзара логикалық байланысқан әртҥрлі типті мәліметтерді байланыстырады.  
Мысалы, бір жиымда 50 қызметкердің жалақысын сақтай аламыз. Егер сол-
армен  байланыстыра  отырып,  қызметкерлердің  аты-жӛнін,  жасын,  реттік 
(табельдік)  нӛмірін  сақтайтын  болсақ,  мынадай  мәліметтер  типтерін  жазуға 
тура келеді: 
char name; 
 
 
 
// фамилияcы 
int age; 
     
 
// жасы 
float salary; 
      
 
// жалақысы 
unsigned employee_number;  
// реттік нөмірі 
Мҧндайда  байланысқан  әртҥрлі  мәліметтерді  бір  атаумен  сақтау  мҥмкін-
дігін беретін қҧрылымды пайдаланады. Мысалы: 
struct Employee { 
char name[64];   
 
 
 
// фамилиясы 
int age; 
 
 
 
 
// жасы 
float salary; 
 
 
 
 
// жалақысы 
unsigned employee_number;  
// реттік нөмірі 
}; 
Бҧл  қҧрылымның  аты  Employee  идентификаторы  болып  табылады.  Оны 
қҧрылымның  тәгі  деп,  ал  оның  ішкі  элементтерін  қҧрылым  ӛрістері    деп  те 
атайды. Ӛрістер кез келген типте немесе соларға нҧсқауыш тҥріндегі  қҧрылым-
ның адресі арқылы қатынасу амалы ретінде де бола береді.  
9.4 Құрылымдарды сипаттау 
Мәліметтердің қҧрылымдық типтері келесі сипаттаумен анықталады: 
struct құрылым_аты 
{ элементтерді сипаттау; }; 
Қҧрылымның атауын, яғни тәгті жазу міндетті емес. Егер қҧрылым атаусыз 
болса, онда оны сипаттау кезінде осы типке кіретін бірнеше айнымалылардың 
аты бірден кӛрсетіледі: 
// Құрылымдар жиымын және құрылымға нұсқауышты анықтау 
struct { 
char name[64]; 
 
 
 // фамилиясы 


жүктеу 2,9 Mb.

Достарыңызбен бөлісу:
1   ...   47   48   49   50   51   52   53   54   ...   82




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

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