Поиск

Цикл for

Цикл for предназначен для выполнения блока инструкций определенное ко личество раз (в отличие от while, который выполняется, пока условие не ста нет ложным). Для этого в цикле обычно используют специальную переменную, иногда называемую счетчиком цикла. Синтаксис цикла for более сложен, чем цикла while. Хотя они совпадают во многих отношениях, порой первый более пригоден для одних задач, а второй для других.

for (начальное выражение; условие; завершающее выражение) {
}

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

for ($n = 0; $n < count($Array); $n++) {
print ("$Array[$n]<BR>n");
}

Как видите, все команды для организации цикла собраны в одном месте и точно соответствуют синтаксису такого же цикла в других языках програм мирования. Для лучшего понимания синтаксиса цикла for я переписал цикл while для переменной $Day из листинга 6.9 как цикл for. Исходный код был следующим:

$рау = 1;
while ($Day <= 31) {
print ("<OPTION VALUE=$Day>$Day</OPTION>n");
$Day++; •
}

Сначала было присвоено значение переменной $Day, затем задано условие ($Day <= 31). Если возвращаемое значение истинно, то выполняется инструк ция print ( ) и значение переменной $Day увеличивается на единицу. В цикле for тот же код выглядит следующим образом:

for ($Day = 1; $Day <= 31; $Day++;) {
print ("<OPTION VALUE=$Day>$Day</OPTION>n"); ')

Распространенный пример использования цикла for печать всех простых чисел от 1 до 1000.

Написание цикла for

  1. Создайте новый PHPдокумент в текстовом редакторе.
  2. <HTMLxHEADxTITLE>Prime Numbers</TITLEx/HEADxBODY><?php
  3. Начните цикл for.
  4. for ($n = 1; $n <= 1000; $n++) { '

    В соответствии с синтаксисом цикла for переменная $п объявлена перемен ной цикла. Ей изначально присваивается значение 1. Затем циклом проверяет ся, чему равно значение переменной $п: оно должно быть меньше или равно 1000. Другими словами, этот цикл выполняется 1000 раз. В конце концов, если условие цикла ($п <= 1000) истинно, обрабатывается блок инструкций в фигур ных скобках, затем значение $п увеличится на единицу и процесс начинается заново.

  5. Теперь напишем само тело цикла.
  6. if ( ($n = = 1) OR ($n == 2) OR ($n == 3) OR ($n == 5 ) ) {
    print("$ri<BR>n");
    } elseif (($n % 2 != 0) AND ($n % 3 != 0) AND($n % 5!= 0)) {
    print("$n<BR>n") ;
    }

    Число считается простым, если оно делится без остатка только на само себя и на единицу. Другими словами, еслиразделить простое число на любое дру гое, кроме него самого и единицу, то всегда будет оставаться остаток. Напри мер, 4 делится на два без остатка, поэтому оно не простое, а 7 не делится без остатка на 2, 3 или 5, поэтому это простое число. Всем известно, что 1, 2, 3 и 5 простые числа, поэтому, если значение переменной $п равно одному из них, оно будет распечатано автоматически. Обратите внимание на то, что мы использовали оператор OR, так как, если одно из этих условий верно, значение $п будет напечатано.

    Если значение $п не равно 1, 2, 3 или 5, то для определения того, простое ли это число, его необходимо проверить. Число делят на 2, 3 или 5 и смотрят, есть ли в результате остаток. При этом используется оператор остатка, или, как говорят математики, взятия по модулю (%). Данный оператор просто возвра щает остаток от деления первого числа на второе. Хотя это не самый часто ис пользуемый оператор, здесь он бесценен. Мы также ограничились только про веркой на деление на 3 простых чисел в начале ряда, так что в наш список может попасть несколько «непростых» чисел, но более строгую проверку на простоту числа оставим для других курсов по программированию. Если после деления переменной $п на 2, 3 или 5 возвращается отличный от нуля остаток, то перед нами, возможно, простое число, которое должно быть напечатано.

    Обратите внимание на то, что мы использовали опе ратор AND. Следовательно, если одно из этих условий ложно, то анализируемое число не простое.

  7. Закройте цикл, РНР и HTML.
  8. </BODY>
    </HTML>
  9. Сохраните сценарий под именем primes.php (листинг 6.10), загрузите его на сервер и протес тируйте в браузере (рис.).
    Листинг 6.10 т Этот короткий сценарий прос той пример применения цикла for, повторяющего процесс 1000 раз.
1 <HTML>
2 <HEAD>
3 <TITLE>Prime Numbers</TITLEx/HEAD>
4 <BODY>
5 <?php
6 // Если вы хотите напечатать больше простых
чисел, измените это значение.
7 for ($n =1; $п <= 1000, $п++) {
8 if ( ($n == 1) OR ($n » 2) OR ($n == 3)
OR ($n ==5» {
9 print("$n<BR>n");
10 } elseif (($n Ч 2 1 0) AND ($n % 3 != 0)
AND ($n Ч 5 1= 0)) {
11 print("$n<BR>n");
12 } // Закрытие IF.
13 } // Закрытие FOR.
14 ?>
15 </BODY>
16 </HTML>
Хотя существует много задач, для решения которых можно применять как цикл for, так и while, постепенно приходит понимание того, в каких ситуациях более уместно употребить тот или иной цикл. Цикл while часто используется для извле чения данных из базы (см. главу 11), а цикл for для работы с массивами (более подробная информация о них представлена в главе 7).
Не все числа, которые печатает сценарий 6.10, являются простыми (49, напри мер). Чтобы устранить данный недостаток, надо проверять, делится ли перемен ная $п на все найденные простые числа.