Программные циклы в php и численные значения


До настоящего времени все инструкции, которые мы использовали, при запуске программы выполнялись только один раз. Однако компьютер отличается бесконечным терпением и проявляется свои лучшие качества именно тогда, когда необходимо повторить выполнение блока инструкций - причем количество повторений может быть очень большим. Для этого используются так называемые циклы, которые являются одним из основных структурных блоков каждой программы и позволяют сделать ее намного более гибкой и мощной.

В PHP одной из основных форм для организации циклов является конструкция while. В переводе с английского слово «while» означает «пока, до тех пор, как» и аналогичным образом функционирует и созданный с помощью этой инструкции цикл. До тех пор, пока не будет обнаружена инструкция, которая останавливает выполнение цикла, будет выполняться команды, относящиеся к этому циклу. Инструкция, которая останавливает выполнение цикла, является логическим выражением и в общей форме конструкция while выглядит следующим образом:

while (выражение)
{
// набор произвольных команд
}

До тех пор, пока в результате выполнения выражения мы получаем значение true, будут выполняться инструкции, которые относятся к данному циклу и заключены в фигурные скобки. Хотя бы одна из этих инструкция должна каким-то образом изменять значение заданного выражения, и по истечении некоторого времени выражение Expression принимает значение false. В противном случае условие окончания цикла никогда не будет выполнено, и мы никогда не покинем данный цикл - его выполнение будет продолжаться бес-конечно.

Ошибка при определении условия прекращения выполнения цикла или его отсутствие - вот одна из наиболее частых причин, приводящих к неправильной работе программы. Пока все звучит достаточно сухо и абстрактно, давайте обратимся к конкретному примеру: Пусть в скрипт передаются два числа с помощью метода GET, которые сохраняются как начальное и конечное значение. Скрипт выполняет простые вычисления, начиная от одного и заканчивая вторым значением, и выводит результат на экран:

<?
$start = $_GET ['a'];
$end = $_GET['b']; 
while ( $start<= $end) { 
echo $start;
$start++;
}
?>

Так как переменная $start изменяется при выполнении тела цикла, то со­ответственно изменяется и логическое значение, которое определяет пре­кращение выполнения цикла. Как только значение $start превышает значе­ние $end, выполнение цикла прекращается.  Для этого скрипта мы настоятельно рекомендуем организовать проверку того, были ли передано значения переменным и того, что переданное значе­ние для переменной $start действительно меньше значения, которое пере­дано для переменной $end. Однако на самом деле такая проверка не является необходимой, так как цикл будет выполняться в том (и только том случае) ес­ли значение переменной $start меньше, чем значение переменной $end. Ес­ли это условие не выполняется, то просто ничего не происходит.

Цикл while относится к так называемым «отклоняющим циклам», которые всегда проверяют, истинно ли условие перед тем, как приступить к выполне­нию самих команд, относящихся к данному циклу. Противоположным случаем являются «принимающие циклы», в которых сначала выполняется блок инст­рукций, и только затем проверяется условие выполнения цикла. В таких цик­лах блок инструкций всегда будет выполняться хотя бы один раз, в то время как в отклоняющем цикле блок инструкций может ни разу не выполняться.

Для того, чтобы создать принимающий цикл, в PHP используется конст­рукцияdo/while:

do { // набор произвольных команд } while (выражение); 

Кроме такой конструкции, в PHP также существует оператор for, который имеет аналогичные функции, однако часто позволяет создать более компакт­ный и читаемый код. При использовании конструкции while необходимо помнить о том, что должно обязательно достигаться условие, при котором прерывается выпол­нение цикла. Для этого внутри цикла должно изменяться значение счетчика или производиться накопление результата другим способом, которое в конеч­ном счете обеспечивает, что достигается некое граничное значение.

Преиму­ществом конструкции for является то, что условие прерывания выполнения цикла и способ непрерывного увеличения значений счетчика выносятся за тело цикла и определяются до начала выполнения связанных с этим циклом инструкций.

В общем виде синтаксис цикла for выглядит так:

for (инициализация; условие; модификация) { // набор произвольных команд }

Запись в одну строк:

Если цикл включает только одну команду, то можно записать весь цикл в од­ной строке вместе с оператором for и отказаться от использования фигурных скобок. Основными элементами цикла for являются три инструкции, которые рас­полагаются в круглых скобках после ключевого слова for и разделеняются с помощью точки с запятой. Сначала обычно инициализируется значение пе­ременной, которая будет использоваться в качестве счетчика, затем опреде­ляется условие выполнения цикла, и, наконец, определяется способ измене­ния значения (увеличение или уменьшение) переменной-счетчика.

Например, для того, чтобы вывести на экран числа от 1 до 10, мы можем использовать показанный ниже цикл:

<? for ($x = 1; $x <= 10; $x++) echo $x; ?>

опробуем записать с помощью for небольшой скрипт, в котором мы чуть ранее использовали для организации цикла оператор while:

<?
$start = $_GET['а']; 
$end = $_GET ['e'];
for ($value = $start; $value <= $end; $value++)
echo $value. " ";
?>

Типичным применением цикла for является, например, организация вы­вода на экран ASCII-кодов с номерами от 33 до 255 - для этого нам понадобит­ся всего одна строчка PHP-кода.

HTML и численные значения:

В HTML все символы могут быть представлены с помощью численных значе­ний. Такое численное значение (entity) обозначается начальным символом & и заканчивается символом точки с запятой. Сам символ, который должен быть выведен на экран, обозначается либо с помощью ISO-имени (напри­мер, auml или a-Umlaut, а также а или же с помощью собственного численно­го кода этого символа (например, для а используется код 228, который так­же обозначается как #228). Таким образом, в HTML символ «а» может быть записан или как ä, или же как #228. Давайте выведем с помощью цикла значения от 33 до 255 с помощью инст­рукции echo как численное значение (рис. 2.5):

<html>
<head><title>ASCII-коды от 32 до 255</title>
</head>
<body>  
Это ASCII-коды от 32 до 255:  
<? for ($x = 32; $x <= 255; $x++) echo "&#$x; "; ?>
</body>
</html>


Рис. 2.5. Единственная строчка на PHP позволяет вывести на экран все видимые ASCII-символы

 


Тэги:

Комментарии: 0

Прокомментировать »

 
 
 

Прокомментировать

 
 
Сообщение *
 
Проверочный код *
 
 
 
Яндекс.Метрика