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



жүктеу 5,01 Kb.
Pdf просмотр
бет49/82
Дата16.05.2018
өлшемі5,01 Kb.
#14051
түріПрограмма
1   ...   45   46   47   48   49   50   51   52   ...   82

 
133 
Кез  келген  басқа  объектілер  сияқты  функцияларда  да  нҧсқауышты  пайда-
лануға  болады,  мысалы,    type t,  type z  параметрлі  type  типін  қайтаратын 
функциядағы р нҧсқауышын келесі тҥрде сипаттауға болады: 
 
type (*p)(type1 t1, type2 t2);  
 
Айтылғандарды  тҧжырымдай  келе  функцияда  бір  және  екі  ӛлшемді  жиым-
дарды (массивтерді) пайдалануды қарастырайық. 
Функцияға  нақты  параметр  ретінде  бір  ӛлшемді  жиымды  жіберуге  болады, 
ол ҥшін жиымның бастапқы (нӛлінші) элементінің орнын кӛрсетсек жеткілікті. 
Бір ӛлшемді жиымды пайдалану мысалы: 
int min_index(int sp[], int ras) 
{ int i, mindx, m; 
mindx=0;m=sp[mindx]; 
for(i=0; i
      if(sp[i]
      { m=sp[i]; mindx=i; }; 
return(mindx); 

Бҧл  жерде  С  тілінің  артықшылығын  айта  кеткен  жӛн.  Жоғарыда 
қарастырылған  мысалдан  кӛріп  отырғанымыздай,  компиляторға  ӛңделіп 
отырған  жиым  мӛлшерін  анық  кӛрсетудің  қажеті  жоқ.  Функция  тҧлғасында 
жиымның  бастапқы  элементінің  адресін  кӛрсету  жеткілікті.  Бір  ӛлшемді 
жиымды  кездейсоқ  бҥтін  сандармен  толтыру  ҥшін  келесі  тҥрдегі  функцияны 
пайдалануға болады: 
void init(int mas[ ],int ras); //функцияны сипаттау 
{  
  int k; 
  for(k=0; k
  mas[k]=rand(); 

Программаның  қандай  да  бір  бӛлігінде  жоғарыда  аталған  функцияны 
init(spisok,  dlina)  тҥрінде  шақырсақ,  бір  ӛлшемді  ҧзындығы  dlina 
болатын  spisok  жиымының  элементтері  кездейсоқ  мәндерге  ие  болады.  Енді  
min_index функциясын пайдаланатын программаны қарастырайық: 
#include  
#include  
#define dlina 150 
main() 
{int k, list[dlina]; 
 for(k=0; k
 list[k]=rand(); 
 k= min_index(list, dlina); 
 printf("list[%3d]=%6d\n",k, list[k]); 
}  


 
134 
Функцияның  нақты  параметрі  ретінде  екі  немесе  одан  да  кӛп  ӛлшемді 
жиымдарды да пайдалануға болады.  
Екі ӛлшемді жиымды пайдалану мысалы: 
void minit(int matrix[][KO],int str);  

 int i,j; 
 for(i=0; i
 for(j=0; j
     matrix[i][j]= rand(); 

Жоғарыда қарастырылған функцияда екі ӛлшемді жиымның бағаналарының 
саны тҧрақты және ол ауқымды KO айнымалысымен анықталған.  
4- мысал. NxN  ӛлшемді бҥтін сандар жиымын (50-ден кӛп емес) енгізіп, функ-
ция арқылы оның оң мәндерінің қосындысын табу керек.  
#include  
#include  
void summa(int,int a1[ ][50]);  // функцияны сипаттау 
 
void main(void) 

int a[50][50]; 
int i,j,N; 
clrscr(); 
puts("\n Жиым өлшемін N(<50) енгізіңіз \n"); 
scanf(“%d”,&N); 
printf("\n Мәліметтерді енгізіңіз \n"); 
for(i=0; i
for(j=0; j
  { 
   printf("\n a[%d][%d]=", i+1, j+1); 
   scanf("%d", &a[i][j]); 
  } 
 summa(N,a); 

void summa(int n,int a1[ ][50])//функцияны анықтау 

  int i, j, s; 
/* Жиымның оң элементтерінің қосындысын есептеу*/ 
for(s=0,i=0; i

printf("\n"); 
for(j=0;j
if (a1[i][j]>0) s+=a1[i][j]; 



 
135 
printf("\a Қосынды = %d, Press any key... ",s); 
getch(); 

5- мысал. Берілген s1 символдар тізбегінен k-сыншы символдан бастап 
ҧзындығы L болатындай  бағыныңқы s2 тізбегін  бӛліп алатын substr 
функциясын программа ішінде қарастырайық: 
#include  
#include  
substr(s1, s2, L, k, m) 
char s1[], s2[];  int L,k,m; 
{  
  int i,j; 
  if (L+k>=m) k=m-L-1; 
for(i=1, j=0; i
s2[j] = s1[i]; 

 
void main(void) 

 char str1[80], str2[80];  int L, k, m=0; 
clrscr(); 
puts("\n сөз тізбегін енгізіңіз \n:"); 
while((str1[m++] = getchar())!=‟\n‟) 

printf("\n"); 
/* m өз мәнін сақтап қалады */ 
printf("\n L және k мәндерін енгізіңіз:\n"); 
scanf(“%d %d”,&L,&k); 
 substr(str1,str2,L,k,m); 
 printf("%s\n",str2); 

 6-мысал.  Берілген  s1  символдар  тізбегінің  қҧрамында  бағыныңқы  s2 
тізбегінің бар жоқтығын анықтайтын index функциясын қарастырайық. Егер s2 
тізбегі s1 символдар тізбегінің қҧрамында бар болса, онда index функциясы s2 
тізбегінің s1-дегі орнын (индексін) анықтайды: 
index(s1, s2) 
char s1[], s2[];  
{ int i,j,k; 
for(i=0,s[1]!=‟\0‟;i++) 

for(j=i,k=0;s2[k]!=‟\0‟&& s1[j]==s2[k];j++,k++) 
  ; 
  if(s2[k]==‟\0‟) 
  return(i); 


 
136 
  } 
  return(-1); 

char str1[ ]= “информатика”; 
char str2[ ]= “форма”; 
#include  
#include  
void main(void) 
{clrscr(); 
 printf("%d\n", index(str1,str2)); 

7-мысал. Функцияның параметрі ретінде оған нҧсқауышты пайдалану мысалын 
қарастырайық. Функция cos(x)-тің туындысын есептейді.  
double  proiz(double x,double dx,double(*f)(double x)); 
double  fun(double z); 
int main() 

 double x; /*туынды есептелетін нүкте*/ 
 double dx; /*ығысу*/ 
 double z;  /*туындының мәні*/ 
 scanf("%f,%f",&x,&dx); 
 z=proiz(x,dx,fun); /* функцияны шақыру */ 
 printf("%f",z); 
 return 0; 

double  proiz(double x, double dx, double(*f)(double z)) 
{  
 double xk,xk1,pr; 
 xk=fun(x); 
 xk1=fun(x+dx); 
 pr=(xk1/xk-1e0)*xk/dx; 
 return pr; 
 } 
 double fun( double z) 
 {   
  return (cos(z)); 
 } 
Жоғарыда қарастырылған fun функциясын кез келген функцияның туындысын 
табу ҥшін қолдануға болады. Ол ҥшін анықталған fun функциясының 
тҧлғасын ӛзгерту керек немесе proiz функциясын шақырған кезде туындысы 
қарастырылып отырған функцияның атымен шақырса болғаны. Мысалы, sin(x) 
функциясының туындысын табу ҥшін жоғарыда қарастырылған proiz 
функциясын z=proiz(x,dx,sin); тҥрінде шақыру жеткілікті болып 
саналады. 


жүктеу 5,01 Kb.

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




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

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