Лекция: 30 саѓат Лаборатория: 15 саѓат С¤Ж: 45 саѓат обс¤Ж: 45 саѓат Барлыќ саѓат саны: 135 саѓат


Лекция 17. Тақырыбы: Функция аргументтері



бет13/24
Дата14.06.2016
өлшемі1.16 Mb.
#135127
түріЛекция
1   ...   9   10   11   12   13   14   15   16   ...   24

Лекция 17.

Тақырыбы: Функция аргументтері


(1 сағат)
1. Фактілі жєне формальді аргумент.

2. Аргумент берілу єдістері.

3. Фйнымалылар ќолданылуыныњ ережесі.

4. Void типті аргументтер.


Пайдаланылатын әдебиеттер:

а) негізгі

1. К.Паппас, У.Мюррей “Программирование на С и С++”, Киев, 2000

2. А.Кетков, Ю.Кетков “Практика программирования Бейсик,

Си, Паскаль”, М.: 2001



б) қосымша

3. Шилдт Г. “Теория и практика С++”, Санкт-Петербург, 1996

4. Березин Б.И., Березин С.Б. “Начальный курс С и С++”, М.:1999
1. Фактілі жєне формальді аргумент.

Кез келген функцияда формальді аргументтер тізімі бар болады жєне ол функцияныњ аныќтамасында жазылады. Функцияны шаќыру кезінде оѓан берілетін, аргумент-фактілі аргумент деп аталады. Егер функция ешќандай фактілі аргументтер тізімін ќабылдап алмайтын болса, онда формальді аргументтер де жазылмайды. С++ тіліндегі функция прототипіне мысал: int функция аты ( int i; float u=4,2, int v=10)

Егер функцияны шаќырѓан уаќытта u жєне v аргументтерініњ мєні берілмеген болса онда ‰нсіз келісім бойынша u=4,2 v=10 мєні меншіктеледі. С++ стандарты мєні жазылѓан аргументтерді басќалардыњ соњынан сипаттауды талап етеді. Біздіњ мысалымызда функцияны шаќырудыњ мына ‰ш т‰рі де ќолданыла алады:

функция аты (10)

функция аты (10, 15.2)

функция аты (10, 15.2, 8)

Егер u аргументі берілмесе v аргументініњ де берілуі м‰мкін болмайды.


  1. Аргумент берілу єдістері.

Функцияѓа фактілі аргументтіњ мєні берілген уаќытта, аргумент аты мен локал айнымалы (формальды аргумент) мєні µзгеруі м‰мкін, біраќ аргументтіњ мєні емес.

Егер функцияѓа фактілі-аргумент сілтеме бойынша берілсе, онда функция аргументтіњ мєнін емес адресін алады. Б±л кезде ќ±рылатын локал-айнымалы(формальды аргумент) кµрсеткіш болып табылады. М±ндай жолмен жадыны экономдауѓа болады. Єрине функция орындалу барысында аргументтіњ мєні µзгеруі м‰мкін. Б±л єдістіњ ерекшелігі функция бірдей бірнеше мєндерді ќай процесстен шаќырылѓан болса, сол жерге ќайтара алады: аргумент сілтемелер арќылы, return инструкциясы арќылы да.

Мысал:

# include



int sum(int *pix, int *pig);

int main()

{

int ia=23;



int ib=13;

int ic;


ic=sum (& ia, & ib);

printf(“ќосынды:%d\n”, ic);

return (0);

}

int sum(int *pix, int *pig)



{

int iz;


iz=*pix+*pig;

return(iz);

}
3.Айнымалылар ќолданылуыныњ ережесі.

Айнымалылардыњ ќолданылу облысы функциямен,файл не класс пен шектелуі м‰мкін. Локал айнымалылар функція ішінде аныќталады,олар функція ішінде ѓана ќолданылады.

Ќолданылуы бойынша барлыќ файлды ќамтитын айнымалылар барлыќ функциялар мен класстардыњ сыртында аныќталады. Б±л айнымалыларды глобал деп атайды, сол файлдыњ кез келген жерінде он ќолдана беруге болады.

Бір айнымалы глобал т‰рде аныќталып, одан соњ бір функцияныњ ішінде (локал) аныќталуы м‰мкін. Б±л жаѓдайда локал функцияныњ ішінде глобал айнымалыны “жауып ќояды”. Біраќ осы функцияныњ ішінде т±рып локал айнымалы мен аттас глобал айнымалыны да ќолдануѓа болады.

Оныњ синтаксисі мынадай:

: :айнымалы.



4.Void типтегі аргументтер.
ANSIІ стандартына сєйкес void кілттік сµзі функция аргументтерініњ жоќ екендігін кµрсетеді. Aл C++-те void сµзін кµрсету міндетті емес.

Мысал:

#include

#include
void voutput (void);

int main( )

{

printf(“Б±л программа санныњ квадрат т‰бірін есептейді.\n\n”);



voutput( );

return(0);

}

void voutput (void)



{

int it=12345;

double du;

du=sqrt(it);

printf(“%d саныныњ квадрат т‰бірі %f-ке тењ \n”, it, du);

}
voutput ( ) функциясында sqrt( ) стандартты библиотекалыќ функциясы шаќырылады. Ол math.h файлында аныќталѓан. Voutput() функциясы µзініњ аргументініњ квадрат т‰бірін double типті мєн ретінде ќаитарады.

Функцияныњ аргументтері бар болса онда олар int , float, char, double т.б. типтерде жєне массив т‰рінде де беріле алады.

Лекция 18.

Тақырыбы: Командалыќ ќатар аргументтері.


(1 сағат)
1.Командалыќ ќатар аргументтері: argc, argv

2.Тексттік аргументтер

3.Сандыќ аргументтер.
Пайдаланылатын әдебиеттер:

а) негізгі

1. К.Паппас, У.Мюррей “Программирование на С и С++”, Киев, 2000

2. А.Кетков, Ю.Кетков “Практика программирования Бейсик,

Си, Паскаль”, М.: 2001



б) қосымша

3. Шилдт Г. “Теория и практика С++”, Санкт-Петербург, 1996

4. Березин Б.И., Березин С.Б. “Начальный курс С и С++”, М.:1999
1.Командалыќ ќатар аргументтері: argc, argv

С/С++ тілдерінде командалыќ ќатар арќылы берілгендерді ендіруге болады. Командалыќ ќатардыњ аргументтері деп, командалыќ ќатарѓа жазылѓан приложения (программа) атынан соњ кµрсетілетін сандыќ не ќатарлыќ мєндерді айтамыз.

Командалыќ ќатардыњ синтаксисі:
Программа аты аргумент 1, аргумент 2 ...
Командалыќ ќатардыњ аргументтері main ( ) функциясында µњделеді. Main ( ) функциясы 2 параметр ќабылдай алады: argc жєне argv [ ]. Аrgc б‰тін санды параметрде командалыќ ќатардыњ аргументерініњ саны плюс 1- принцип бойынша аргумент болып саналатын программа атауы да, ќосылып, жазылады. Екінші параметр – б±л ќатар кµрсеткіштерініњ массивіне кµрсеткіш болып табылады. Барлыќ аргументтер ќатар болып табылады, сондыќтан argv [ ] массиві char * типті болады. Параметрлер атауы – argc жєне аrgv тілдіњ стандарт элементі болып табылмайды, біраќ оларды осылайша атау жалпыѓа бірдей келісілген.
2. Тексттік аргументтер.

Командалыќ ќатарда берілген аргументтер єрдайым символдар жиыны ретінде ќабылданады.



Мысал. Тµмендегі программада пайдаланушыдан командалыќ ќатарѓа ќатар аргументтерді ендіру к‰тіледі. Программаны іске т‰сіргенде argc параметрініњ мєні тексеріледі. Егер ол 2-ден кіші болса, онда пайдаланушыѓа программаны ќайта ж‰ктеу ±сынылады.
# include

# include


int main (int argc, char * argv [ ] )

{ int t;

if (argc<2)

{ print f (“ Командалыќ ќатарѓа (біреу емес) бірнеше аргументтер енгізу ќажет \n”)).

print f (“ Программаны ќайта ж‰ктењіз \n”)

exit (1);

}

for (t=1;t
print f (“ Аргумент № % d-% S\n”,t, argv[ t] );

exit (0);

}

командалыќ ќатарѓа ендірілген барлыќ аргументтер сол тізбекпен ќайта экранѓа шыѓарылады. Егер сандыќ мєндер енгізілген болса (argv[]-ѓа), бєрібір олар ASCII символдары ретінде ќарастырылады.



3. Сандыќ аргументтер.

Егер командалыќ ќатарда сандыќ мєндерді де беруге тура келсе, онда символдар ќатарын санѓа айналдыру ќажет. Ол ‰шін символдар ќатарын б‰тін санѓа айналдыратын стандарт функция atoi( ), жєне наќты санѓа айналдыратын стандарт функция atof ( ) ќолданылады.



Мысал: С++ те жазылѓан мына программада командалыќ ќатардан оќылѓан символдыќ аргумент atoi( ) функциясы арќылы б‰тін санѓа айналдырылып, val айнымалысында саќталады жєне vbinary ( ) функциясына беріледі. Б±л функция оныњ екілік эквиваленттіне айнадырады.
# include

# include < stdio.h >

voіd vbinary (int, idigits);

int main (int argc, char * argv [ ] )

{ int val;

if (argc!=2)

{

cout «“Командалыќ ќатарѓа б‰тін сан ендіріњіз.\n”;



cout «“ Б±л сан екілік т‰ріне µзгертіледі, \n”;

cout « “ Жєне сегіздік, оналтылыќ форматтарда кµрсетіліді. \n”;

return (0);

}

val=atoi (argv [1] );



vbinary (val);

  1. cout «“ 8-к форматта: “« oct« val« ” \ n”;

в) cout «“ 16-ќ форматта: “« hex« val« ” \ n”;

return(0);

}

void vbinary (int idigits)



{

int t=0;


int iarray [50];

while (idigits !=0)

{ iarray [t]=(idigits % 2);

idigits /=2;

t++;

}

t - -



cout « “ 2-лік форматта:” ;

for (; t >=0; t- -)

cout « dec «iarray [t];

cout « ” \ n ”;

}

Б±л жерде а) в) деп белгіленген ќатарлар 8-дік жєне 16-ќ форматтарда экранѓа шыѓарылады. Oct-жалауша 8-к форматта, hex-16-ќ форматта шыѓару дегенді білдіреді.





Достарыңызбен бөлісу:
1   ...   9   10   11   12   13   14   15   16   ...   24




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

    Басты бет