Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

і. Оны~ айма~ына программалар файлдарыны~ к~рсетімін орналастырады.

Работа добавлена на сайт samzan.net:


                                                 Функцияны жариялау және оны шақыру

       Функцияларды жариялау (функциялар прототипі) функцияларға мәлімет алуға мүмкіндік береді. Оның аймағына программалар файлдарының кәрсетімін орналастырады. Қәрылған функциялар прототиптерін анықтау үшін, оларды препроцессор директивтері кәмегімен бас файлдарды қосу керек. Мысалы: #include<stdio.h>. Функцияларды жариялау сыртқы файлдарда немесе ішкі файлдарда орналасуы мүмкін, сол сияқты шақырылатын функцияның тексттерінің басында операторлардың орындалуына дейін орналасуы мүмкін. Жариялаудың әрекет ету аймағы функциялардың блоктарымен анықталады.

Функцияны жариялау формасы:

[extern] функция тақырыбы.

Функцияларды жариялау – символдан кейін тәратын функциялар тақырыбы. Сондықтан кезекті функцияларды жәндеу процесінде бүтін ұлгіде алдымен жазу керек және оны тексті трансляциялау, содан соң функциялар тақырыбын функцияларды жариялау үшін көшіру керек.

Функцияны жариялауға мысал:

void p (STUD*str);   // - функция шешімді қайтармайды

void obr (float a[m][n], float b[m]);  

int add (int i, int j);    // - int типтегі нәтиже

double cube (double x);  // - double типті нәтиже

char-str (char*c);  // - char типке көрсеткіш нәтиже

// параметрсіз функция нәтижені қайтармайды

void draw (void);

int ptr (void*c);   // - кез-келген типке көрсеткіш-параметр

int (*fptr) (i int, j int);  //* fptr- int типті нәтижені функцияға қайтаратын айнымалы-көрсеткіш

FILE*funf ();   // - файлға қайтатын нәтиже-көрсеткіш

Ff (int i);   // - int типті қайтатын нәтиже

Eгер шақыру функциясының тексті берілген файлда орналасса шақыру функциясының жариялануы міндетті түрде шақыратын функция болу керек. Бастапқы функцияның жариялануы формальды және нақтылы параметрлер қатынасын тексеруге компиляторға рұқсат береді.

Функцияны шақыру функцияны активизациялайды, яғни оған және нақтылы параметрге бағыт береді. Функцияны шақыру формасы: Функцияның аты ([нақтылы параметрлер тізімі]).

Return операторының орындалуы және барлық операторлардың аяқталуы басқаруды және шешім мәнін қайтарады. Егер функцияда нәтиже жоқ болса   оны өрнектен шақыруға болмайды. Егер бар болса, дәлелденген болса, онда өрнектен шақыруға болады. Функция орындалғаннан кейін операторлар орындалады.

Функцияны шақыру мысалы:

Printf (“ параметр мәні \n”); // - шақыру

I=printf (“ бұл да \n”);  // - өрнектен шақыру

Return операторы

Функциялар денесінде return түріндегі бір немесе бірнеше оператор болуы мүмкін, функциялардың орындалу нәтижелері бір кез-келген скалярлы өрнектің түрлері операторлар кәмегімен қәрылады.

Return операторының формалары:

Return(өрнек), мәндағы өрнекбастапқы қалпына келтіру нәтижелерінің өрнектерін анықтайды, өрнектер есептеледі, қайтымды өрнектер типіне түрленетін және функция шақыру нүктесіне беріледі, өрнектер түрлерінің нәтижелерінің қайтуы функция өрнектерімен сәйкес келу керек.

Айнымалылар облысының әрекеті  және формальды параметрлерді жариялау.

Функция денесінде пайдаланылған әрбір айнымалы функцияның ішінде немесе сыртында жариялануы керек.  Функция денесінде пайдаланылған айнымалылар тәмендегідей болуы мүмкін:

глобальды (сыртқы); олар файлда сыртқы болып жариялануы керек;

локальды (ішкі); олар жарияланған, енгізілген және функция денесінде ғана пайдаланылады.

Формальды; формальды параметрлер тізімінде жарияланған және тек функция денесінде енгізілген.

Функциялар параметрмен және параметрсіз болуы мүмкін. Параметрсіз  функцияны шақыру мысалы:

Printf (); clrscr ();

Параметрсіз функцияларда глобальды және локальды айнымалыларды қолдануға болады. Параметрлі функцияларда формальды параметрлер тізімінде айнымалыларды шақыру функциясын қосады.

Функция параметрлері формальды параметрлер тізімімен анықталады. Олар функцияны шақыру кезінде шақыру нүктесінде анықталған берілгендермен жәмыс істеуге мүмкіндік береді. Формальды параметрлер тізімі функция тақырыбының әлементі болып табылады. Формальды параметрлер облысының әрекеті – функция блогы (денесі).

Формальды және нақтылы параметрлер берілгендер бойынша функциялардың байланысуы арқылы пайдаланылады. Формальды  параметрді нақтылы параметрге ауыстыра отырып нақтылы параметр берілгендерін өңдеу үшін, функцияны орындау процесінде нақтылы параметрлер функцияға оны шақыру кезінде беріледі.

Тек қана идентификаторлар формальды параметр болуы мүмкін. Формальды және нақтылы параметрлер арасында бір-біріне сәйкес қатынас болу керек,  дәлірек айтсақ:

формальды және нақтылы параметрлер саны бірдей болу керек;

тізбектелген формальды және  нақтылы параметрлер сәйкес болу керек: бірінші формальды параметрге бірінші нақтылы параметр, екіншіге – екінші, тағы сол сияқты.

Формальды және нақтылы параметрлер типтері бірдей және сәйкес болу керек.

Формальды параметрлер тізімі үтірмен бұлінген ноль және одан да көп айнымалылардан тәруы мүмкін. Әр формальды параметрді жариялау формасы былай болады:

тип идентификатор;

бұл жерде тип – стандартты және пайдаланушымен қалыптасқан мәндердің мүмкін болатын типтерінің аты;

идентификатор – формальды параметр аты, яғни скалярлы айнымалының, массивтің, қәрылымның, қәрылым массивінің, көрсеткіштің, массив көрсеткішінің аты.

Формальды параметрлер тізімінде параметр тип атының болмауы синтаксистік қате болып табылады. Функция тақырыбына мысал:

int   fun (int a, float b[], int *p )

бұл жерде жарияланған формальды параметрлер:

a – скалярлы айнымалының бүтін типінің аты;

b – бір өлшемді массив мәнінің  аты;

p – айнымалы көрсеткішінің аты.

Функция атының алдында және формальды параметрлер тізімінде void (пусто, бос) типінің аты болуы мүмкін:

функция атының алдында: функция return операторының кәмегімен нәтижені қайтармайды;

формальды параметрлер тізімінде: параметрлер тізімі арқылы берілетін функция параметрі болмайды.

Егер формальды параметрлер тізімінде  «void» сөзі болса, онда бұл формальды параметрлер тізімі бос екенін кәрсетеді, яғни формальды  және нақтылы параметрлер болмайды. Онда формальды параметрлер тізімінде жай жақша қойып, «void» сөзін қолданбауға болады.  Си тілінде алдын ала белгісіз параметрлер саны функция айнымалыларын пайдаланғанда жіберіледі. Параметрлер тізімінің соңында үтір немесе көп нүкте болуы мүмкін: бұл функция параметрінің саны айнымалы екенін білдіреді. Егер параметр тізімі тек көп нүктеден тәрса, онда параметр саны айнымалы болып табылады және нәлге тең болуы мүмкін. Мысалы,  printf функциясының прототипі:

int printf (char * format, … );

Формальды параметрлер тізімі функция тақырыбының атын анықтайды. Параметрлер тізімінің әлементтері үтірмен бұлінеді. Формальды параметрді жариялау кезінде айнымалыларды қарапайым жариялау үшін, бірақ әрбір әлемент атын жариялайды және тек бір параметрдің типі жарияланады.

Функция параметрлері мен нәтижелерінің классификациясы

Си  тілінің функциясын пайдаланғанда оның параметрлерінің әртүрлі детальды типтерін қарастырамыз: скалярлар, скаляр көрсеткіші, массивтер, массив көрсеткіші, құрылымдар, қәрылым көрсеткіші,  функция көрсеткіші, функцияның массив көрсеткіші. Суретте функция параметрлері мен нәтижелерінің орындалуының классификациясы кәрсетілген.

Функция орындалуындағы параметрлер мен нәтижелер

Негізгі параметр

main функциясы

Көрсеткіш

Қайтымды көрсеткіш нәтиже

Айнымалы көрсеткішінің көмегімен функцияны шақыру

Функция көрсеткіші – функция параметрі

Функцияның массив көрсеткіштері

Функцияға көрсеткіш – орындалу нәтижесі

Скаляр және скаляр көрсеткіші

массивтер

құрылым, массив құрылымы және құрылымдар  көрсеткіші

Return көмегімен

Параметр көмегімен

Үш  өлшемді

Бір өлшемді

Екі өлшемді

құрылымды

скалярлы, массив элементі, стек, кезек, тізім, ағаш

массив

Скаляр мән

Суреттегі классификацияға сәйкес функция параметрлері мен нәтижелерінің орындалуын пайдалану үшін мәселелердің кейбір типтерін қарастырамыз.

Формальды параметрлер – бір мәнді функциияға беру үшін пайдаланатын скаляр аты. Нақтылы параметрлер формальді параметрдің тілімен сәйкес өрнек типі болуы мүмкін.

Скаляр мәнінің анықталған типіне скаляр көрсеткіштерін қайтымды нәтижелерге  қолданылады. Формальды  парақтар мәнда айнымалы көрсеткіші болады, ал нақтылы – айнымалының мәнінің адресі: скалярлы, массив немесе  қәрылым әлементі.

Параметрлі массив кәмегімен  функция масссивін өңдеуге  беруге және нәтижесін алуға  берілгендер массив түрінде  кез-келген типінің  нәтижесін алуға болады. Формальды және нақтылы параметрлер  массивті кәрсетуге болады.

Формальды параметр- қәрылым мәнін функцияға беру үшін пайдаланатын қәрылым аты. Нақтылы параметр бұл кезде тек қәрылым аты болуы мүмкін.  Формальды параметр – қәрылым көрсеткіші  адрес қәрылымын  немесе массив қәрылымын  функцияға беру үшін  қолданылады. Бұл кезде нақтылы параметр шақыру функцияның қәрылым адресі болуы мүмкін.

Нәтижелерінің қайтуы – скаляр мәнінің  көрсеткішін – Return операторының немесе параметр кәмегімен орындауға болады. Көрсеткіш мәнінің қайтуы үшін формальды  параметрлер  мен бірге параметр кәмегімен  орындауға болады. Көрсеткіш мәнінің қайтуы  үшін  формальді параметрлер  кәмегімен көрсеткішке  көрсеткіш  болуы  керек, ал нақтылы анықталған типінің  берілгендеріне көрсеткіш адресі.

Функция орындау нәтижесі массивке көрсеткіш мәні түрінде  пайдаланылады, мысалы , функция  кәмегімен  массивті  қалыптастыру үшін  операциялық жадыны  динамикалық ерекшелеу кезінде.

Функция орындалудың нәтижесі  көрсеткіші ретінде массив қолданылады мысалы,  функция кәмегімен  операциялық жадыны  динамикалық ерекшеліктердің  ұлкен  немесе бос берілгендер массивінің  кез-келген типін пайдаланады.

Функцияның скалярлы  көрсеткіштері әртүрлі функцияны  шақыру үшін  бір немесе сол айнымалыны  көрсеткіш кәмегімен пайдаланылады.

Функция көрсеткіші –функция параметрі –(функция аттарын ) нақтылы  параметрлер сапасында беру үшін қолдануға болады, мысалы:

- таблица нәтижелерін   қалыптастыру үшін, әртүрлі  философия кәмегімен  алынған;

- әртүрлі интеграл астындағы философиямен интегралды есептеу үшін;

- туындыны есептеу  үшін әр түрлі  теңдеулерді  пайдалану арқылы  тапсырылған әдіспен  дифференциялды  түрде шешу  үшін.

Функцияда көрсеткіш массивтерді пайдалануға болады, мысалы, программада жәмыс істеу үшін меню кәмегімен басқару. Көрсеткіш - атаудың қайтуы үшін қайтымды мән немесе функцияның талап етілген көрсеткіші.

Функцияның негізгі параметрлері

Формальды және нақтылы параметрлер

Формальды параметр – скаляр және скаляр көрсеткіші.

Нақтылы параметр – скаляр және скаляр адресі.

Функцияның скаляр параметрін мәні бойынша беруге болады. Мәндайда скалярдың формальды параметрінің санында тек айнымалы идентификаторын пайдалануға болады.

Функция орындалғанда скаляр нәтижесін шақыру функциясында,

return операторының көмегімен;

формальды параметр тізіміндегі көрсеткіш кәмегімен қайтаруға болады.

Формальды параметр – скаляр айнымалының идентификаторы.

Егер формальды параметр тізімінде скаляр айнымалының идентификаторы тәрса, онда бұл мән параметрі, немесе «мәні бойынша параметрді беру». Нақтылы параметр мән параметріне сәйкес өрнек болуы мүмкін. Басқа жағынан, егер нақтылы параметрде өрнек немесе тәрақты болса, онда формальды параметрде анықталған типтің скаляр айнымалының аты болуы керек, яғни мән-параметр. Функцияны шақыру кезінде әр нақтылы мән параметрі үшін оның әрнегінің  мәні есептеледі, содан соң алынған нәтиже формальды параметр типін түзеді. Өрнек нәтижелерінің типі формальды параметр типімен сәйкес келу керек. Олай болса, шақыру функциясында мән-параметрі локальды шақырылған функция нақтылы мән-параметр кәшірмесімен жәмыс істейді.

Формальды параметр – скаляр айнымалының көрсеткіші.

Егер формальды параметр тізімінде скаляр айнымалының көрсеткіші тәрса, онда бұл нақтылы параметр берілуін анықтайды. Бәндай жағдайда тек нақтылы параметрдің көрсеткіш адресі айнымалының  мүмкін болатын типін орналастыруы мүмкін.

Егер функция кез-келген типтің бір скаляр мәнін қайтарса, онда return операторының кәмегімен мәннің қайтуы пайдаланылады,  ал егер скаляр айнымалының қайту саны бірден көп болса, онда айнымалыны пайдалану керек.Формальды көрсеткіш параметрмен функцияны жариялауға мысал:

void fun (int i, int*j);

 Формальды параметрлер санында fun функциясы:

i – скаляр айнымалының аты;

jint типті берілгендеріне көрсеткіш аты.

Fun  функциясын шақыру мысал:

Fun (a, &b);

мәндағы a және b – айнымалы аттары.

 Fun  функциясында нықтылы параметрлер саны беріледі және операциялық жадыға кәшіріледі:

i үшін –  өрнектің нәтижесінің мәні;

j үшін – айнымалы адресі.

Адрес бойынша орналасқан мән – j айнымалысының мазмәны функция орындалуындағы қайтымды нәтиже болып табылады.

 Fun  функциясын шақыру мына түрде болуы мүмкін:

fun (k, &m); fun (k+3, &m);

 Бұл функцияны шақыру кезінде нақтылы параметр санында сол типтің айнымалыға көрсеткіш аты болуы  мүмкін. Мысалы,  егер шақыру функциясын жариялайтын болсақ,

int k, m, *p; … p=&m;

онда шақыру функциясы мына түрде болуы мүмкін:

fun (k, p);

 Функция орындалуының нәтижесір адресі бойынша орналасқан айнымалы адресі шақыру функциясында *р мазмәнды түрде пайдаланылуы мүмкін.

Массивпараметр

Массив параметр ретінде функцияға массив көрсеткішінің кәмегімен берілуі мүмкін. Массив берілгендерінің формальды  параметрлер ретінде кез-келген тип пайдалануға болады:  

Фиксирлі шектелген массив аты, мысалы:

int a[10]; float b[m] [n];

бірінші шегі бос массив аты, мысалы:

int a[]; float b[] [n]; double c[m][n];

бастапқы және ішкі массивке көрсеткіш, мысалы:

int *a;  float *b;  double *c;

 Массив үшінформальды параметрдің кез-келген түрімен келтірілген оның нақтылы параметр түрінде массив аты - операциондық жадыдағы массив адресінің басы немесе сол типтің берілгендер көрсеткіші жариялануы мүмкін. Формальды параметрді анықтау float a[]   и  float *a формада әквивалентті. Функция көрсеткішіне беру кезінде нақтылы параметрдің операциондық жадыда функция көрсеткішінің формальды параметрі массив әлементінің нәлдік адресіне беріледі.

 Массив – параметр функциясын жариялау мысалы;

void f1 (float b[m][n],  int m,  int n);

void f2 (float a[10],  int k);           бұл жариялау 

void f3 (float a[],  int k);              бір өлшемді массив 

void f4 (float *a,  int k);                үшін әквивалентті

Массивпен жәмыс кезінде формальды және нақтылы параметрлер көрсеткіш – массив адресінің басы болып табылады,  оның мәндерінің әңделуі шақырылған функцияда оперативті жадыда орналасқан берілгендермен әңделеді. Мәндайда массив әрқашан функция орындалуының нәтижесі болуы мүмкін.

Формальды параметр – көпөлшемді массив.

Көпөлшемді массивте формальды параметрді пайдалану кезінде оның шектерін екі способтың біреуімен беруге болады.

барлық шектері тәрақты, мысалы:

void f1 (int a[k][m][n], int b[2][3][4], int c[m][n], int d[m][5]);

бірінші шекті бос мәнмен беру, ққалғандарытәрақты, мысалы:

void f1 (int a[][m][n], int b[][3][4], int c[][n], int d[][5]);

Кез-келген жағдайда  нақтылы параметр ретінде массив аты пайдаланылады және оперативті жады облысында формальды параметрге сәйкес массив адресінің басы кәшіріледі. Нақтылы параметр берілгенде жүйе   массив шегінің мәнін, не оның өлшемінің санын бақыламайды. Көпөлшемді массив әлементтерін қарастырғанда шақырылған функцияда  жүйе келесі жолға әтуін немесе жол номері мәнінің ауысуы бойынша матрицаны және индексті өрнектегі матрицаны оқиды. Сондықтан массив әлементтеріне назар аударғанда массивтің нақтылы параметр түрінде оның әлементтерінің санын әртүрлі мәнмен бірінші өлшем бойынша,  ал қалған өлшемдер бойынша нақтылы параметрдің - массив әлементтерінің саны формальды параметрдіңмассив әлементтерінің санына сай келу керек.

Мысалы,  формальды параметр түрінде былай пайдаланылады:

float  a[1][3].

Нақтылы параметр түрінде кез-келген жол санымен және баған санымен берілген екі өлшемді массивті пайдалануға болады. Мысалы:

float  data[5][3] және float dat[2][3].




1. І Канта називається світоглядом
2. задание по управлению персоналом Выполнил студент Орлова В
3. Отчет по лабораторной работе Коллоквиум Комплексная оценка
4. Реферат- Наркотики и жизнь.html
5. Основные группы интересов в России Российская практика лоббизма
6. Нефроптозды~ III д~режесі кезінде астауша нешінші бел омырт~а де~гейінде орналасады 1
7. на тему- Свободные и обязательные договоры
8. Новаторство драматургии Чехова
9. Технология выращивания высоких урожаев суданской травы
10. B~nd~n- [trnsitive] 1to leve someone especilly someone you re responsible for- How could she bndon her own child 2to go wy from plce vehicle etc permnently especilly becuse the situt
11. Тема 1 Международные стандарты и универсальный механизм защиты прав человека и гражданина
12. Иллюстратором из PDFфайла рассказывавшего о новых возможностях седьмой версии
13. х годов- большие громоздкие и дорогие предназначались для очень небольшого числа избранных пользователей
14. Регион в политической науке Регионализм в современной России
15.  Пусть первоначально поршень занимает такое положение что объем газа равен
16. Экономические основы налогообложения юридических лиц в России
17. Нова Книга 2001 448 с
18. Симона Вейль
19. з курсу- ldquo;Основи економічної теоріїrdquo; Рекомендовано Вченою радою НПУ імені М
20. Синтез комбинационных суммирующих устройств АЛУ