PHP. Сохтори идоракунандаи for

Печать

Агар лозим шавад, ки ягон қисми томи код якчанд маротиба такрор ёбад операторҳои сиклиро истифода мебаранд. Дар PHP чор намуди операторҳои сикли мавҷуданд: for, while, do-while, foreach. Барои операторҳои сиклиро хуб истифода бурда тавонистан мафҳумҳои TRUE ва FALSE-ро донистан зарур аст. (Нигаред ба дарс дар бораи амалҳои мантиқӣ.)

Дар аввал бо тарзи кори оператори for шинос мешавем. Мебинем, ки чӣ тавр for ба рафтори программа таъсир мекунад. Худи for чунин сохтор дорад:

for(initialization; condition; modification)
оператор;

Дар рафти кори барнома, хҳнгоми навбат ба for расидан:

1) қисми initialization иҷро карда мешавад. Дар қисми initialization тағйирёбандаҳоро эълон карда, ба онҳо қиматҳои авваларо мебахшанд, ё ки ба тағйирёбандаҳои пештар эълон кардашуда қимат мебахшанд;

2) баъди иҷро карда шудани қисми initialization, барнома ба санҷидани қисми condition мегузарад. Дар қисми condition, одатан, ягон ифодаи мантиқӣ мешавад;

3) ҳангоми FALSE будани қимати қисми condition иҷрои оператори for қатъ мегардад ва барнома ба иҷрои қисми баъди оператори for шурӯъ мекунад. Ҳангоми TRUE будани қимати қисми condition барнома ба иҷрои қисми оператор оғоз мекунад. Қисми оператор - тани сикл низ номида мешавад (body);

4) баъди иҷрои қисми оператор барнома ба иҷрои қисми modification мегузарад. Дар ин қисм қимати тағйирёбандаҳо тағйир дода мешаванд ва барнома боз ба пункти 3) мегузарад.

Тасвири сохтори идоракунандаи for:

Мисоли истифодаи оператори for:
namuna16.php

<?php
$n=10;
for($k=1; $k<=$n; $k++)
echo "Сатри $k-um.<br>";
?>

Дар мисоли болои оператори афзункунӣ (increment) ++ истифода шудааст, ки вазифаи он як воҳид зиёд кардани қимати аргументаш мебошад: k++ баробарқувва аст ба k=k+1, лекин тезтар иҷро мешавад. Ба k дар қадами аввал 1 бахшида шуда, баъди чоп шуданаш ҳар дафъа як воҳид зиёд карда мешавад. Ҳангоми ба 11 баробар шудани қимати k кори сикл ба итмом мерасад. Як чизро қайд кардан зарур аст, ки баъди кори сикл k=11 мебошад, ки инро истифода бурдан мумкин аст.

Хотиррасон мекунем, ки дар PHP оператори камкунӣ (decrement) -- мавҷуд аст, ки вазифаи он як воҳид кам кардани қимати аргументаш мебошад: k-- баробарқувва аст ба k=k-1.

Аз рафтори оператори for хулоса мебарояд, ки агар ба мо ягон сикли беохир лозим бошад, мо дар қисми condition ҳамин хел ифодаи мантиқӣ навиштанамон зарур аст, ки қимати он доимо TRUE бошад, мисол:
namuna17.php

<?php
for(;1;)
echo "In cikl beintihost.<br>";
?>

Дар вақти санчидани ин барнома, барои қатъ кардани кори он броузерро маҳкам карда, азнав ба кор андохтан лозим мешавад.

Ҳангоми тартиб додани сикл ҳамаи қисмҳои оператори for-ро санҷидан лозим аст, то ки сикли беохир ҳосил нашавад (агар чунин сикл зарур набошад, албатта).

Як мисолеро, ки амали чанде аз функсияҳои математикии дар PHP мавҷудбударо нишон медиҳад, меорем:
namuna17.php

<?php
$n=20;
echo "Адади Пи=".pi()."<br>";
?>
<TABLE border='1'>
<TR><TH>x</TH><TH>round(cos(x),4)</TH><TH>sin(x)</TH><TH>sqrt(x)</TH></TR>
<?php
$h=2*pi()/$n;
for($x=0; $x<=2*pi(); $x+=$h) {
echo "<TR><TD>",$x,"</TD><TD>",round(cos($x),4),"</TD>";
echo "<TD>",sin($x),"</TD><TD>",sqrt($x),"</TD></TR>";
}
?>
</TABLE>

Оператори x+=h баробарқувва аст ба x=x+h, лекин тезтар иҷро мешавад. Инчунин дар сикл операторҳои -=, *=, /= истифода шуда метавонанд.

Як мисоли дигар:

<?php
$price = rand(1000, 10000)/100;
echo "Нархи 1 кг: ", number_format($price, 2, '.', ''),"<br>";

for($i=1;$i<11;$i++){
$y = $i * $price;
$s = number_format($y, 2, '.', '');
echo $i," кг - ",$s,"<br>";
}
?>

САВОЛҲО БАРОИ МУСТАҲКАМКУНӢ
1. Барномае нависед, ки сикли “беохири” for дошта бошад.
2. Барномае нависед, ки сикли for бо тағйироти намуди $x-=$h дошта бошад.
3. Бо истифодаи сикли for барои якчанд қиматҳои тағйирёбандаи новобаста қимати функсияи тангенс чоп карда шавад.

Добавить комментарий


Защитный код
Обновить

Произведение «OFTOB.COM» публикуется на условиях лицензии Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Непортированная.