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



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

 
130 
Мini функциясын келесі тҥрде де жазуға болады: 
mini(int x, int y) 

   return (x

Екі бҥтін санның ішіндегі ҥлкенін анықтайтын функцияның мысалы: 
int  maxi(int x, int y) 

 if (x>y) 
 return (x); 
 else  
 return (y); 

Егер қайтарылатын мәннің типі кӛрсетілмесе, ол int типті болып есептеледі. 
С  тіліндегі  мәнді  қайтаратын  барлық  функциялар  ӛрнектердің  оң  жағында 
жазылуы  тиіс,  ӛйтпеген  жағдайда  ешқандай  да  нәтиже  қайтарылмайды.  Бірақ 
функция нәтижесінің адресі қайтарылатын жағдайда, ол сол жақта болуы керек.  
Егер  функция  ешқандай  мән  қайтармайтын  болса,  онда  ол  void  (бос)  типті 
функция ретінде сипатталуы тиіс. Мысалы, дисплей экранына бір толық жолды 
шығару ҥшін келесі функцияны жазамыз: 
void lin(char a)  
{  
int k; 
for(k=0; k<80; k++) 
printf(“%c”, a); 

Егер  функцияда  ешқандай  параметр  болмаса,  онда  функцияны  декларациялау 
барысында  жай  жақша  ішіне  void  сӛзін  жазған  дҧрыс.  Мысалы,  негізгі 
функция тақырыбының кӛбінесе былай жазылуы мҥмкін:  
void main(void) 
С  тілінде  әрбір  функция  –  программаның  жеке  бӛлігі,  оны  орындау  ҥшін  осы 
функцияны  шақыру  керек.  Мысалы,  goto  операторы  арқылы  басқаруды  кез 
келген функцияның тҧлғасына беруге болмайды. 
Функция келесі тҥрде шақырылады: 
<функция_аты>(аргументтер_тізімі); 
мҧндағы  аргументтер  ретінде  тҧрақтыларды,  айнымалыларды,  ӛрнектерді 
(олардың  мәндері  функцияны  шақырудан  бҧрын  программада  анықталады) 
қолдануға болады. Функцияны шақыру тізімінің аргументтері сол функцияның 
анықталу  параметрлерінің  тізімімен  саны  жағынан,  орналасу  ретімен,  сәйкес 
параметрлері  типтерімен  толықтай  ҥйлесуі  тиіс.  Аргументтер  жоқ  болған 
жағдайда  да, функция атынан кейінгі жай жақшалардың болуы міндетті. 


 
131 
8.1 Айнымалылардың әрекет ету аймағы 
Айнымалылардың  әрекет  ету  аймағы  –  программаның  ағымдағы  әрекетте-
ріне  қандай  мәліметтердің  қатынасуға  болатынын  анықтайтын  қағида. 
Айнымалылардың  ҥш  типі  болады:  ауқымды,  локальді  (жергілікті)  және  фор-
мальды.  Жергілікті  айнымалылардың  әрекет  ету  аймағы  –  олар  сипатталған 
программа  бӛлігі,  яғни  олар  сол  функция  тҧлғасында  ғана  белгілі  болып 
табылады.  Программаның  осы бӛлігінен  шыққан  соң, жергілікті айнымалылар 
мен олардың мәндері жоғалады. 
Формальды айнымалылар – тҧтынушы функциясының тақырыбында кӛрсе-
тілген  параметрлер.  Формальды  параметрлер  функция  тҧлғасында  жергілікті 
айнымалылар  сияқты  қолданылады.  Формальды  параметрлердің  әрекет  ету 
аймағы – функция тҧлғасы болып табылатын блок. 
Ауқымды айнымалылар программадағы функциядан тыс сипатталады. Олар 
программаның  кез  келген  жерінде  қолданылуы  мҥмкін,  сондықтан  ауқымды 
айнымалыларды алдын ала сипаттау және бастапқы мәндерді меншіктеу керек. 
Ауқымды  айнымалылардың  әрекет  ету  аймағы  –  олар  сипатталғаннан  бастап, 
программа соңына дейін болып саналады.  
Айнымалыны сипаттау операторының жалпы тҥрі: 
[жады класы][const]типі аты [инициализатор]; 
С тілінде әрбір айнымалы компьютер жадының тӛрт класының біріне жатуы 
тиіс.  Жады  класы  автоматты  (auto),  сыртқы  (extern),  статикалық 
(static), регистрлік (register) мәндердің бірін қабылдай алады. Мысалы,  
register int a;  
Жады  класы  айнымалының  қолданылу  мерзімі  мен  кӛріну  аймағын  анық-
тайды. Егер жады класы тікелей кӛрсетілмесе, онда  компилятор айнымалының 
программадағы сипатталуына қарай оны ӛзі анықтайды. Айнымалының қолда-
нылу  мерзімі  тҧрақты  болса,  онда  ол  программа  орындалуының  басынан 
аяғына дейін белгілі болып саналады немесе уақытша болса, онда ол блоктың 
жҧмыс  істеу  мерзіміне  ғана  байланысты  болады.  Ал  айнымалының  кӛріну 
аймағы  –  сол  айнымалыға  қол  жеткізуге  (пайдалануға)  болатын  программа 
мәтінінің  бӛлігі.  Әдетте  кӛріну  аймағы  айнымалының  әрекет  ету  аймағына 
сәйкес  келеді.  Бірақ  кейде  программаның  ішкі  блогында  да  оның  сыртында 
пайдаланылған аты кездессе, онда оның кӛріну аймағы ҧлғаяды.  
Айнымалы ҥшін жады класы нақты кӛрсетілмеген жағдайда, ол auto класы-
на жатқызылады. 
С  тілінде  функцияны  шақыру  барысында  аргументтер  ӛздерінің  осы 
программадағы  мәндеріне  сәйкес  әрекеттер  атқарады,  яғни  функцияға 
аргументтердің  нақты  мәндері  емес  олардың  кӛшірмелері  жіберіледі. 
Компьютер жадында (стекте) функцияның формальды параметрлері ҥшін орын 
бӛлінеді  және  функцияны  шақыру  кезінде  сол  бӛлінген  орындарға  нақты 
аргументтер  мәндері  орналастырылады.  Содан  кейін  функция  осы  мәндерді 
пайдаланады, бірақ функциядан шыққан кезде олар жоғалып кетеді. 
Қажет  болған  жағдайда,  функцияны  оған  берілген  аргументтерді  ӛзгерту 
ҥшін  қолдануға  болады.  Ол  ҥшін  шақырылатын  функцияға    аргумент  ретінде 


 
132 
айнымалы мәнінің орнына оның адресін жіберсе болғаны. Ал  аргумент негізгі 
(оригинал) мәнді пайдалануы ҥшін ―*‖ нҧсқауыш операциясын қолдану қажет.  
1-мысал.  x  және  y  мәндерінің  орындарын  ауыстыратын  функцияның 
анықталуы: 
void z1(int *x, int *y) 
{ int t; 
  t=*x; 
  *x=*y; 
  *y=t; 

Осы функцияны пайдаланатын (шақыру) программа бӛлігі: 
int a=2, b=3; 
void z1(int*, int*); 
… 
printf(“\n a=%d, b=%d”, a, b); 
z1(&a, &b); 
printf(“\n a=%d, b=%d”, a, b); 
… 
Мҧнда  функцияны  шақыру  кезінде,  мәндер  ӛзгеріске  ҧшырайды,  яғни 
экранға тӛмендегі мәндер шығарылады: 
a=2, b=3 
a=3, b=2 
2-мысал. unsigned char типті r параметрімен шақырылатын rus функциясы 
анықталған. Егер функцияның параметрі орыс  әліпбиінің әрпі болса, бірге тең 
бҥтін мәнді, ал кері жағдайда 0 мәнін шығарады.  
int rus (unsigned char r) 
{if (r>='А' && c<=' ') 
 return 1; 
 else 
 return 0; 

Функциялар ӛздерін ӛздері рекурсивті тҥрде шақыруы да мҥмкін.  
3-мысал:  n!=1*2*3*…*n  санының  факториалын  есептейтін  рекурсивті 
функцияны қарастырайық: 
fac(int n)  

 
int b; 
 if (n==1) return 1; 
 b=fac(n-1)*n; 
 return n; 

Функцияны  рекурсивті  шақыру  кезінде  ол  функцияның  жаңа  кӛшірмесі 
қҧрылмайды,  бҧл  шақыру  жергілікті  айнымалылар  мен  параметрлердің  жаңа 
кӛшірмелерін  қҧрады.  Рекурсивті  функциядан  шығудың  дҧрыс  жолдарын  қа-
растыру қажет, ӛйтпеген жағдайда мҧндай функциямен жҧмыс істеу барысында 
біраз уақыттан кейін  ол ―тоқтап қалуы‖ мҥмкін. 


жүктеу 2,9 Mb.

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




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

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