СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

"Функциялар" дәріс

Категория: Прочее

Нажмите, чтобы узнать подробности

Функция – бұл оған скрипттің әр түрлі бөліктерінен қатынауға болатын код блогы.

Просмотр содержимого документа
«"Функциялар" дәріс»

Функциялар

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


Функциялардың сипатталуы

Функциялар function кілттік сөзінің көмегімен жарияланады. Егер функцияның параметрлері болса, олар функцияның жариялануы кезінде айнымалы ретінде сипатталады:


function my_function($my_parameter)

{

echo "you send '$my_parameter' to my function
";

}


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


Функциямызды шақыру үшін келесідей жазамыз:


my_function("бұл менің параметрім")


Енді осы функцияны қолданатын скрипттітолығымен жазайық:


function my_function($my_parameter)

{

echo "you send '$my_parameter' to my function
";

}

my_function("бұл менің параметрім");

my_function("ал бұл менің жаңа параметрім");

?


Скриптті орындаған кезде экранда екі жол пайда болады:


you send 'бұл менің параметрім' to my function

you send 'ал бұл менің жаңа параметрім' to my function


Егер бірнеше параметрді беру керек болса, онда олар үтірмен ажыратылады.

function my_function($my_parameter1, $my_parameter2)

{

echo "you send '$my_parameter1' and " .

'$my_parameter2' to my function
";

}


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


function my_function_sum($a, $b)

{

return $a+$b;

}

echo "2 мен 3-ті қосқандағы нәтиже ";

echo my_function_sum(2, 3);

?


Функцияда шыққан нәтижені айнымалыға сақтауға болады:


$sum = my_function_sum(2, 3)


Return ештаңані қайтармауы да мүмкін, оны тек функциядан шығу үшін қолдануға болады:


function not_1($a)

{

if($a == 1)

return;

echo "сіздің параметріңіздің 1-ге тең емес екені анық";

}

not_1(1);

not_1(2);

not_1(3);

?


Бос return – ол мынамен бірдей:


return NULL


Берілген жағдайда хабарла жолы тек екі рет шығады, себебі бірінші жағдайда (not_1(1);) if операторының шарты орындалып, фнукциядан шығу жүзеге асады.


Үнсіз келісім бойынша мәндер

РНР функция параметрлеріне үнсіз келімі бойынша мән анықтауға мүмкіндік береді. Жалғыз шарт – бұл параметрлер функцияны жариялағанда соңғы жазылуы тиіс. Үнсіз келісім бойынша мән беру параметрді міндетті емес етеді, сондықтан функцияны шақырғанда оны жазбай қоюға болады:


function sum($a, $b = 1)

{

return $a + $b;

}

echo sum(1);

echo sum(1, 2);

?


Алдымен echo функциясы 2 мәнін шығарады, содан кейін 3-ті шығарады. Бірінші жағдайда біз тек бір параметрі бар функцияны шақырдық, сондықтан $b айнымалысы (екінші параметр) үнсіз келісім бойынша мән алды. Екінші жағдайда $b айнымалысына 2 деген мән меншіктелді.


Рекурсия

Функция коды блокының ішінде РНР тілінің кез келген құралдарын пайдалануға болады. соның ішінде функция өзін өзі шақыра алады. Бұл операция рекурсия деп аталады. Факториалды есептеу мысалын қарастырайық:


function fact($x)

{

if ($x == 1)

return 1;

else

return $x * fact($x - 1);

}


n-нің факториалы – бұл n-ді қосқандағы оның алындағы барлық натурал сандардың көбейтіндісі. Математикада ол «!» символымен белгіленеді. Мысалы: 5! = 1*2*3*4*5.


Біздің факториалдың рекурсивті функциясы қалай жұмыс істейді? Алдымен берілген параметрді тексеру жүргізіледі. Егер аргумент 1-ге тең болса, онда 1-ді қайтарамыз (1! = 1). Егер біздің параметр 1-ге тең болмаса, онда біз мына ережені қолданамыз:

n! = n*(n-1)!

РНР терминінде ол былай жазылады:

$x * fact($x - 1);

Бағдарлама осы жолға жеткенде fact функциясы жаңадан, 1-ге кем параметрмен шақырылады.


Айнымалылардың көріну аймағы


Айнымалыларды көріну аймағы бойынша екіге жіктеуге болады: ауқымды (глобальды) және жергілікті (локальды). Біріншісіне бағдарламаның кез келген жерінен, ал екіншісіне тек нақты бір жерден ғана қатынауға болады.

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

Келесі мысалды қарастырайық:


function printA()

{

$a = 2;

echo $a;

}

$a = 1;

echo $a; // 1-ді шығарады

printA(); // 2-ді шығарады

echo $a; // 1-ді шығарады

?


printA функциясының ішінде жарияланған $a айнымалысының функциядан кейінгі сипатталған глобальды $a айнымалысына еш қатысы жоқ. Сондықтан скрипт «121» тізбегін шығарады.


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


function printA()

{

$a = 0;

$a++;

echo $a;

}

printA();

printA();

?


Бұл скрипт үш бірді шығарады, себебі printA функциясын әрбір шақырған сайын $a айнымалысының мәні алдымен нөлге теңестіріліп алады.


Бірақ ерекше жағдайлар да бар. Функция инициалданған айнымалыларды «есінде сақтау» үшін static кілттік сөзі қолданылады. Осылайша, функциямен тек бір рет инициалданатын статикалық айнымалыларды жариялауға болады:


function printA()

{

static $a = 0;

$a++;

echo $a;

}

printA();

printA();

printA();

?


Бұл скрипт «123» тізбегін шығарады, себебі $a айнымалысын нөлге теңестіру тек функцияны бірінші рет шақырғанда ғана жүзеге асады. Функцияны келесі шақырғанда РНР $a айнымалысының бар екенін біліп, static сөзі бар жолды аттап кетеді.


Тапсырмалар


  1. Скрипттің басында екі бүтін санды айнымалыларды жариялаңыз, олардың бастапқы мәндерін тұрақтылар арқылы анықтаңыз.

  2. Егер $a және $b айнымалылары оң болса, олардың қосындысын шығарыңыз.

  3. Егер $a және $b айнымалылары теріс болса, олардың айырмасын шығарыңыз.

  4. Егер $a және $b айнымалыларының таңбалары әр түрлі болса, олардың көбейтіндісін шығарыңыз.

  5. Тернарлық операторды қолданып, сандардың үлкенін шығарыңыз.

  6. $a айнымалысына [0..9] аралығында мәндер меншіктеңіз. Switch операторының көмегімен $a-дан 9-ға дейінгі сандарды шығарыңыз.

  7. Барлық арифметикалық операцияларды екі параметрі бар функция арқылы жүзеге асырыңыз.

  8. Үш параметрі бар функцияны жүзеге асырыңыз: function mathOperation($arg1, $arg2,

$operation), мұндағы $arg1, $arg2 – аргументтер мәні. $operation – операцияның аты бар жол. Берілген мәнге байланысты арифметикалық операциялардың бірін орындап, алынған мәнді қайтарыңыз (switch қолданыңыз).

  1. Рекурсияның көмегімен санның дәрежесін анықтайтын функция ұйымдастырыңыз. Формат: function power($val, $pow), мұндағы $val – берілген сан, $pow – дәрежесі.

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

$a = 1;

$b = 1;

$c = 0;

function mysuperfunc()

{

if ($a + $b 100)

$c = 100;

else

$c = $a + $b;

}

mysuperfunc();

echo $c;

$a = 2;

$b = 34;

mysuperfunc();

echo $c;

$b = 99;

mysuperfunc();

echo $c;

?