Читайте также: |
|
Switch операторы. switch – бұл шарттарды тексеру мен соған байланысты әр түрлі әрекеттерді тармақты түрде орындаудың тағы да бір тәсілі. Бұл оператор аты қазақ тіліне «ауыстырғыш» (переключатель) деп аударылады. Оның мағынасы да осыған сәйкес келеді. Айнымалының қандай мәнге ие болғанына байланысты әр түрлі әрекеттер блогы орындалады. Бұл оператордың атқаратын жұмысы if...elseif...else операторлары тізбегіне немесе if операторлары тобына ұқсас болып келеді. switch құрылымын мынадай түрде жазуға болады:
switch (өрнек немесе айнымалы){case 1-мән: 1-орындау_блогы break;case 2-мән: 2-орындау_блогы break;... default: келісім_бойынша_орындау_блогы}if -тан айырмашылығы – бұл жерде өрнектің мәні логикалық типке келтірілмейді, ол тек case түйінді сөзінен (мәні1, мәні2 және т.б.) кейінгі мәндермен салыстырылады. Егер өрнектің мәні қандай да бір нұсқамен сәйкес келсе, онда сол жолдың орындау блогы атқарылады да, қос нүктеден кейінгі әрекеттер жолдың соңына дейін немесе break операторына (ол бар болса) дейін орындалады. Егер өрнектің мәні бірде-бір нұсқамен сәйкес келмесе, онда келісім бойынша орындау блогы, яғниdefault түйінді сөзінен кейінгі әрекеттер атқарылады. switch операторында өрнек бір рет қана есептеледі, ал elseif операторында ол әр тексеру сайын есептелінетін еді, сондықтан өрнек күрделі болғанда, switch операторы жылдам жұмыс істейді.
Алдыңғы мысалды осы switch операторын қолданып қайтадан шығарайық.
Lt;?
$names = array("Иван","Петр","Семен");
switch ($names[0]){
case "Иван": echo "Привет, Ваня!"; break;
case "Петр": echo "Привет, Петя!"; break;
case "Семен": echo "Привет, Сеня!"; break;
Default: echo "Привет, $names[0].
А как Вас зовут?";
}
?>
Осы скрипттің жұмысы нәтижесі мынадай болады:
Привет, Ваня!
While операторы. while операторының құрылымы: while (өрнек) { орындау_блогы }немесе
while (шарт): орындау_блогы endwhile; түрінде болады. Бұл – қарапайым цикл. Ол өрнек мәні false болғанша, орындау_блогын қайталап отырады (if операторындағы сияқты өрнек логикалық типке келтіріледі). Мұнда өрнек мәні цикл ішінде өзгертіледі де, ол цикл басында қайта есептелініп отырады. Енді осы оператор көмегімен 10-ға дейінгі жұп сандарды анықтау алгоритмін келтірейік.Lt;?
$i = 1;
while ($i <= 10) {
if ($i % 2 == 0) print $i." ";
$i++;
}
?>
Нәтижесі: 2 4 6 8 10
Do while операторы. do while цикл операторы while-ға ұқсас, оның бір ғана өзгешелігі – өрнектің ақиқаттылығын циклдің басында емес аяғында тексереді. Осының арқасында орындау_блогы кем дегенде бір рет орындалады. Оператордың жазылуы: do {орындау_блогы} while (өрнек); Енді бір мысал келтірейік. <?$i = 12;do { if ($i % 2 = = 0) print $i; $i++; } while ($i<10)?>Нәтижесі: 12
For операторы. for операторы РНР тіліндегі күрделі циклдер тобына жатады. Ол Си тіліндегі циклге ұқсас болып келеді. Жазылуы: for (1-өрнек; 2-өрнек; 3-өрнек) { орындау_блогы }немесе
for (1-өрнек; 2-өрнек; 3-өрнек): орындау_блогы endfor; Мысалы, 10-ға дейінгі барлық жұп сандарды экранға шығару үшін for циклі келесідей түрде жазылады:Lt;?php
for ($i=0; $i<10; $i++) {
if ($i % 2 = = 0) print $i." ";
}
Егер оператор жақшасындағы екінші өрнекті ($i<10 шарты) алып тастасақ, онда циклден шығу үшін break операторын қолдану керек болады: <?phpfor ($i=0;; $i++){ if ($i>=10) break; if ($i % 2 = = 0) print $i.” “; }?> Жақша ішіндегі барлық үш өрнекті де алып тастауға да болады. Мұндай жағдайда $i санауышының алғашқы мәні де берілмейді және ол циклдің аяғында да өзгертілмейді. Сондықтан осы әрекеттерді жеке команда түрінде – орындау блогында немесе цикл алдында жазу қажет болады: <?php$i=0; for (;;) { if ($i>=10) break; if ($i % 2 == 0) print $i; $i++; }?> for жақшасы ішіндегі үшінші өрнекте бірнеше қарапайым командаларды бірден үтір арқылы жазуға да рұқсат етілген. Мысалы, егер біз барлық сандарды экранға шығарғымыз келсе, онда программаны қарапайым нұсқада жазуға болады: <?phpfor ($i=0; $i<10; print $i, $i++);?> Foreach операторы. foreach операторы тағы да бір керекті цикл конструкциясы болып саналады. Ол тек РНР4 тілінен бастап жиымдармен жұмыс істеу колледжында енгізілді. Жазылуы: foreach ($array as $value) {орындау_блогы}немесе
foreach ($array as $key => $value) {орындау_блогы} Бірінші нұсқада цикл $array айнымалысы арқылы берілген жиымның барлық элементтерін қамтиды. Циклдің әр қадамында жиымның ағымдағы элементінің мәні $value айнымалысына жазылады да, ішкі санауыш бірге өседі (келесі қадамда жиымның келесі элементі өңделеді).Орындау_блогы ішінде жиым элементінің ағымдағы мәнін $value айнымалысы көмегімен алуға болады. Цикл $array жиымында қанша элемент болса, сонша рет орындалады. Жазудың екінші нұсқасында жоғарыда айтылғандарға қосымша циклдің әрбір қадамында жиымның ағымдағы элементінің кілті (индексі) $key айнымалысының мәні ретінде жазылып отырылады, оныорындау_блогында пайдалануға болады. foreach орындалуы басталғанда, жиымның ішкі көрсеткіші автоматты түрде оның бірінші элементіне орналасады. <?php$names = array("Иван","Петр","Семен"); foreach ($names as $val) { echo "Привет, $val <br>"; }foreach ($names as $k => $val) { }?> Break операторы. break операторы бірден ағымдағы for, foreach, while, do..while сияқты циклдердің немесе switch операторының орындалуын аяқтайды. break операторының сандық аргументі де болуы мүмкін, ол пайдаланылғанда, сыртқы неше басқару операторларының жұмысы аяқталатыны көрсетіледі. <?php$i=1;while ($i) { $n = rand(1,10); echo "$i:$n "; if ($n= =5) break; echo "Цикл работает <br>"; $i++;}echo "<br> Число итераций цикла $i ";?>Осы скриптің жұмысы нәтижесі мынадай болады:
1:7 Цикл работает 2:2 Цикл работает 3:5 Число итераций цикла 3 Егер break операторынан кейін сан көрсетілсе, онда осы санға сәйкес сыртқы цикл операторларының жұмысы аяқталады. Жоғарыда келтірілген мысалда бұл мүмкіндікті пайдалана алмаймыз, өйткені онда сыртқы циклдер жоқ. Біз ол скрипті аздап өзгертейік: <?php$i=1;while ($i) { $n = rand(1,10); switch ($n) { case 5: echo "<font color=blue>Выход из switch (n=$n)</font>"; break 1; case 10: echo "<font color=red>Выход из switch и while (n=$n)</font>"; break 2; default: echo "switch работает (n=$n), ";}echo " while работает – шаг $i <br>";$i++;}echo "<br>Число итераций цикла $i ";?> Continue операторы. Кейде цикл жұмысын толығымен аяқтамай, тек оның жаңа қадамын (итерациясын) қайта бастау керек болып жатады. continue операторы кез келген циклдің орындау_блогындағы өзінен кейінгі нұсқауларды аттап өтіп, жаңа цикл қадамын орындауды жалғастырады. continue операторын да сандық аргументпен пайдаланып, алдыңғы басқарушы конструкциялардың нешеуінің жұмысын аяқтау керек екендігін көрсетуге болады. Жоғарыда келтірілген мысалдағы break сөзін сontinue сөзіне ауыстыралық. Осымен қатар цикл қадамын төртке тең етіп алайық. <?php$i=1;while ($i<4) { $n = rand(1,10); echo "$i:$n "; if ($n==5) { echo "Новая итерация "; continue; } echo "Цикл работает <br>"; $i++;}echo "<br>Число итераций цикла $i ";?>Осы скрипттің жұмысы нәтижесі мынадай болады:
1:10 Цикл работает 2:5 Новая итерация 2:1 Цикл работает 3:1 Цикл работает Число итераций цикла 4 continue операторының орындалуынан кейін циклдің жұмысы аяқталмайды. Мысалда циклдің санауышы 5 болғанда, ол өзгертілмейді, өйткені ол сontinue операторынан кейін тұр. Сондықтан сontinue операторының орнына өрнектің ақиқаттылығын тексеруді жазуға болады: <?php$i=1;while ($i<4) { $n = rand(1,10); if ($n!==5) { echo "$i:$n <br>"; $i++; }}?>РНР тілінде сontinue операторын пайдаланудың бір ерекшелігі – ол switch конструкциясында break сияқты жұмыс істейді. Егер switch цикл ішінде болса және жаңа қадам (итерация) бастау қажет болса, онда сontinue 2 деп жазу қажет.
Дата добавления: 2015-11-14; просмотров: 84 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Зертханалық жұмысқа берілген тапсырмалар | | | Теориялық мағлұмат |