Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
texpr_wpor.docx
Скачиваний:
20
Добавлен:
13.03.2015
Размер:
113.63 Кб
Скачать

Функцияны баяндау: классикалыќ т‰рі.

[<ЖК т‰рі>][<тип т‰рі>]<сипаттаушы>([<аргументтер типініњ тізбегі>]); Функцияны баяндау функция атымен, ќайтаратын мєнініњ типімен жєне, м‰мкін, оныњ аргументтерініњ саны жєне типтерімен ж‰зеге асады. Баяндаудыњ ќазіргі стилі (прототиптерді баяндау). Аргументтер типініњ тізбегінде прототипте осы аргументтердіњ идентификаторлары болуы м‰мкін.

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

Тип функция_аты ();

Б±л спецификация функцияныњ атын жєне ќайтаратын мєнніњ типін баяндайды.

Ќазіргі стиль ANSІ ±сынѓан Си тілініњ кењейтілген т‰рлерініњ конструкцияларында ќолданылады. Б±л Си тілініњ т‰рінде функцияны баяндау кезінде “функция прототипі” деп аталатын тілдіњ арнайы ќ±ралдары ќолданылады. Оныњ прототипін ќолданып функцияны баяндау кезінде параметрлері туралы ќосымша аќпарат болады:

Тип функция_аты(парам_аќпар1, парам_аќпар2, ...);

Б±ндаѓы парам_аќпарi параметрлері - формальды параметрлердіњ аты жєне типі туралы мєлімет.

Функцияларды

анықтау,баяндау.

Функция аныќталуы. Функцияны баяндау сияќты оны аныќтау кезінде де екі стильді ќолдануѓа болады - классикалыќ жєне ќазіргі. Функцияны аныќтаудыњ классикалыќ форматы келесідей:

Тип функция_аты (параметрлер аты) параметрлер аныќтамасы;

{

локалдыќ баяндау;

операторлар;

}

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

Тип функция_аты(парам_аќпар1, парам_аќпар2, ...)

{

локалдыќ баяндау;

операторлар;

}

Б±ндаѓы, параметр аныќтамасы парам_аќпар - берілетін параметр (тип жєне идентификатор) туралы аќпаратты саќтайды.

Функция ішінде (maіn() басты функциясынан басќа) т±рѓан баяндаулар тізбегі (константалар, мєліметтер типі, айнымалылар) тек осы функция ішінде аныќталады. Сондыќтан Си тілі ішкі циклдерді ќамтымайды, яѓни бір функция басќа функцияныњ ішінде баянала алмайды.

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

Функцияны шаќыру функция аты жєне жаќша ішінде аргументтері бойынша ж‰зеге асырылады.

Функцияныњ орындалу нєтижесі return операторы кµмегімен ќайтарылады. Жалпы т‰рі:

Return (µрнек);

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

Return операторын мына т‰рде ќолдануѓа болады:

return; return 0;

Оны ќолдану ол т±рѓан функция ж±мысын аяќтап, басќару шаќырушы функцияѓа ќайтады (беріледі). Оператордыњ жаќшасыныњ ішінде µрнек жоќ болѓандыќтан, функцияѓа ешќандай мєн берілмейді.

Мысал

Maіn()

{

float y, x, mult(); /*шаќырушы программадаѓы баяндау*/

іnt n;

y=mult(x, n); }

float mult(v, k) /*функция аныќтамасында баяндау*/

float v; іnt k;

{

float res;

for(res=1.0; k>0; k--)

res=res*v;

return(res); /*float типті мєнді ќайтарады*/}

Return операторы кµмегімен шаќырушы программаѓа тек бір ѓана мєн беріледі. Егер екі шама берілу керек болса, онда кµрсеткіштерді ќолдану керек.

Кµрсеткіштерді функциялар арасындаѓы байланысты ќ±ру ‰шін ќолдануѓа болады. Кµрсеткіштерді функциялар арасындаѓы байланысты ќ±ру ‰шін ќолдануѓа мысал келтірейік. Б±л мысалда кµрсеткіштер айнымалылардыњ мєнін ауыстыру ‰шін ќолданылады.

Мысал

Maіn()

{

іnt x=5, y=10;

prіntf(“x=%d y=%d\n”, x, y);

change(&x, &y); /*функция адрестерін беру*/

prіntf(“x=%d y=%d\n”, x, y);}

change(u, v)

іnt *u, *v; /*u жєне v кµрсеткіш болып табылады*/{

іnt temp;

temp=*u; /*temp-ке u кµрсетіп т±рѓан мєн меншіктеледі*/

*u=*v;

*v=temp;}

Адрестік опрециялар.

Си екі арнайы адрестік операцияларды ќолдайды: адресті аныќтау операциясы (&) жєне адреске баѓыттау (*). & операциясы берілген айнымалыныњ адресін ќайтарады. Егер sum іnt типті айнымалы болса, онда &sum осы айнымалыныњ адресі болып табылады.

Операциялардыњ орындалу тєртібі жєне приоритеті

Егер µрнекте операциялардыњ орындалу тєртібін кµрсететін дµњгелек жаќшалар ќолданылмаса, онда операциялар ‰шін операндалардыњ топталуы операциялардыњ приоритеті бойынша орындалады. Мысалы,

first *=second<=third

µрнегінде second операнды <= операциясымен топтасады, µйткені <= операциясыныњ приоритеті *= операцисяна ќараѓанда жоѓары. Келтірілген µрнек келесіге эквивалентті:

first *=(second<=third).

(second<=third) µрнегі нµл немесе бір мєнін ќабылдай алады.

Келесі мысалда

first =second– =third

= жєне – = операцияларыныњ приоритеттері бірдей, біраќ second операнды оныњ оњ жаѓындаѓы операциямен топтасады, µйткені = жєне – = операциялары оњ ассоциациялы (оњнан солѓа ќарай орындалады) болып табылады.

Оњ ассоциациялы шартты операция жєне меншіктеу операциядан басќа барлыќ екі орындыќ жєне ‰ш орындыќ операциялар сол ассоциациялы (сол оњѓа ќарай орындалады) болып табылады.

Кесте 2 (Турбо) Си операциялардың приоритеттері кему реті бойынша келтірілген.

Кесте 2– (Турбо) Си операциялардың приоритеттерініњ кему реті бойынша келтірілуі

Операция

Таѓайындалуы

[ ]

Массив элементініњ берілуі

( )

Функцияны шаќыру

.

Ќ±рылымныњ µрісін тањдау

Кµрсеткіштіњ кµмегімен ќ±рылым µрісін белгілеу

++, – –

Постфиксті/префиксті 1-ге арттыру жєне кеміту, егер бір µрнекте екеуіде кездессе, онда постфикстініњ приоритеті жоѓары.

Sizeof

Айнымалыныњ µлшемін байтта аныќтау

(тип)

Типке келтіру

Бит бойынша кеміту

!

Логикалыќ ЖОЌ

Унарлы минус

&

Адресті аныќтау

*

Адрес бойынша ќатынас жасау

*, /, %

Кµбейту, бµлу жєне ќалдыќ – бірдей приоритет

+, –

Ќосу, азайту – бірдей приоритет

<<, >>

Солѓа жылжыту, оњѓа жылжыту – бірдей приоритет

Кесте 2 жалғасы

Операция

Таѓайындалуы

<, >, <=, >=

Салыстыру – бірдей приоритет

= =, !=

Тењдік, тењсіздік – бірдей приоритет

&

Бит бойынша ЖЄНЕ

^

Бит бойынша шыѓару НЕМЕСЕ

|

Бит бойынша НЕМЕСЕ

&&

Логикалыќ ЖЄНЕ

| |

Логикалыќ НЕМЕСЕ

? :

Шартты оператор

=, +=, –=, *=, /=, <<=, >>=, &=, ^=, |=

Меншіктеу жєне ауыстыру – бірдей приоритет

,

¤рнектіњ тізбекті орындалуын кµрсететін ‰тір операциясы

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]