68931

Цикли План. Цикли з передумовою. Цикли з постумовою

Лекция

Информатика, кибернетика и программирование

Цикл дозволяє повторити певну і навіть не визначене коли робота циклу залежить від умови кількість разів якінебудь оператори. Дані оператори називаються тілом циклу они крутитимуться в циклі. Прохід циклу називається ітерацією. Як і С PHP підтримує три види циклів: Цикл з передумовою while...

Украинкский

2014-09-27

58 KB

2 чел.

Лекція № 7

Тема:  Цикли

План

  1.  Цикли з передумовою
  2.  Цикли з постумовою
  3.  Цикл з лічильником
  4.  Оператори break і continue
  5.  Цикл перебору масивів

ЦИКЛИ

На другому місці по частоті використання, після умовного оператора, знаходяться цикли. Цикл дозволяє повторити певну (і навіть не визначене — коли робота циклу залежить від умови) кількість разів які-небудь оператори. Дані оператори називаються тілом циклу -они «крутитимуться» в циклі. Прохід циклу називається ітерацією.

Як і С, PHP   підтримує три види циклів:

  •  Цикл з передумовою (while)
  •  Цикл з післяумовою (do-while)
  •  Цикл з лічильником (for)

Цикл з передумовою While

Принцип роботи циклу з передумовою:

  •  Обчислюється значення логічного виразу.
  •  Якщо значення істинне, виконується тіло циклу, інакше — перехід до наступного за циклом оператора.

Синтаксис циклу з передумовою виглядає таким чином:

while   (логічний   вираз) інструкція;

В даному випадку тілом циклу є «інструкція». Звичайне тіло циклу складається з більшого числа операторів. Простий приклад циклу:

<?

$i=0; while($i++   <   10)   echo   $i;

?>

Дана програма виведе рядок 12345678910. Звернете увагу на послідовність виконання операцій умови $i++ < 10. Спочатку перевіряється умова, а тільки потім збільшується значення змінної. Якщо ж ми поставимо операцію інкремента перед змінній (++Si<10), то спочатку буде виконано збільшення змінної, а тільки потім — порівняння. В результаті ми отримали б рядок 123456789.

Цей же цикл можна було б записати по-іншому:

Si  =  0; while ($i<10)

{

$i ++;// збільшення лічильника

echo $i;

}

Якщо ми збільшимо лічильник після виконання оператора echo, ми отримаємо рядок 0123456789. Але у будь-якому випадку, у нас буде 10 ітерацій. Ітерація — це прохід циклу, тобто виконання інструкцій тіла циклу.

Цикл з постумовою do while

Цикл з умовою поста відрізняється від циклу з передумовою тим, що спочатку виконується тіло циклу, а тільки потім вже перевіряється умова. Таким чином, тіло циклу хоч би один раз, але буде обов'язково виконано.

Синтаксис циклу do while такий:

do

{//   тіло   циклу

} while    (умова);

Спробуємо за допомогою циклу з умовою поста отримати рядок 12345678910. Оскільки в цьому циклі спочатку виконується тіло, а потім перевіряється умова, то нам потрібно встановити початкове значення лічильника в одиницю:

<? $i   =   1; do   echo   $i;   while    ($i++   <10); ?>

Нагадаю, що ми можемо збільшувати значення лічильника в тілі циклу (так навіть зрозуміліше).

Цикл з лічильником For

Цикл з лічильником використовується для виконання тіла циклу певної кількості разів.

Наприклад, в циклі while зручно чекати певної події, наприклад, коли що повертається якоюсь функцією значення буде істинне (а така ситуація може і не відбутися). Цикл for зручно використовувати, наприклад, для заповнення масиву. Синтаксис циклу for:

for (команда_инициапизации; умова; команды_после_итерации) {   тіло циклу }

Оператор for починає свою роботу з виконання команд ініціалізації. Дані команди виконуються всього лише один раз. Після цього перевіряється умова: якщо воно істинне, виконується тіло циклу. Після того, як буде виконаний останній оператор тіла, виконуються команди «Після ітерації». Потім знову перевіряється умова, у випадку, якщо воно істинне, виконується тіло циклу і ітераційні для поста команди, і т.д.

Виведемо звичний нам рядок:

<? for    ($i=0;    $i<10;    $i++)    echo   $i; ?>

Даний сценарій виведе рядок 0123456789. Нам же потрібний рядок 12345678910, тому потрібно забезпечити збільшення лічильника при перевірці логічного виразу:

<? for    ($i=0;    $i++<10;)    echo   $i; ?>

В цьому випадку нам не потрібні команди, що виконуються після ітерації. Якщо вам потрібно вказати декілька команд, ви можете розділяти їх комами:

for    ($i=0,    $j=0;    $<10;   $i++,    $j++)    echo   $i;

Як ви вже встигли відмітити, цикл з лічильником є варіацією циклу з передумовою, оскільки спочатку в нім перевіряється умова, а тільки потім виконується тіло.

Альтернативний синтаксис

Цикли while і for мають альтернативний синтаксис. Для циклу while він такий:

while    (логическое_выражение):

тіло   циклу endwhile;

А для циклу for — такий:

for    (команды_инициализации;   умова;    команды_после_итерации) :

тіло   циклу endfor;

Зверніть увагу на двокрапку — його наявність обов'язкова! Альтернативний синтаксис також передбачений для оператора if-eIse:

if    (логическое_выражение):

команди; е1зе1^логическое_выражение2) :

команди; else:

команди; endif;

Використовувати даний синтаксис чи ні — ваша особиста справа. Що ж до мене, то я вважаю за краще використовувати «класику» — звичайний синтаксис.

Використовувати альтернативний синтаксис має сенс, якщо ви вважаєте за краще включати в РНР-сценарії HTML-код, а не виводити його за допомогою echo. B цьому випадку альтернативний синтаксис полегшує використання операторів if-else, while і for:

<?if    ($REMOTE_ADDR):?>

<hl>Welcome   home!</hl> <?else:?>

<hl>Hello</hl> <?endif;    ?>

Оператори break і continue

При використанні циклом можна використовувати операторів break і continue. Перший перериває роботу всього циклу, а другою — тільки поточній ітерації. Розглянемо наступні приклади:

<?

$i  =  0;

while    ($i++   <   10)

{

if    ($i==3)   break;

echo   "Ітерація   $i\n";

?>

В даному прикладі після другої ітерації робота циклу буде перервана і програма виведе рядки:

Ітерація   1 Ітерація   2

Якщо ж замість оператора break використовувати оператора continue, буде перервана робота тільки третьої ітерації і ми отримаємо висновок:

Ітерація 1

Ітерація 2

Ітерація 4

Ітерація 5

Ітерація 6

Ітерація 7

Ітерація 8

Ітерація 9

Ітерація 10

Припустимо, що у нас є вкладені цикли, наприклад

for   (...) {

for   (...)

{

for   (...)

Нам потрібно перервати роботу певного циклу, наприклад, першого. Тоді як оператор break знаходиться в тілі третього. В цьому випадку мож-

але передати функції break параметр — номер циклу, наприклад, break(l). Нумерація циклів починається з одиниці.

Цикл перебору масивів foreach

У четвертій версії PHP з'явився ще один вид циклу — foreach. Даний цикл призначений спеціально для перебору масивів.

Синтаксис даного Циклу такий:

foreach(MACCMB   as   $ключ=>$значение) оператори;

Оператори, що містяться в тілі циклу, будуть виконані для кожного елементу масиву. Змінна $ключ міститиме ім'я ключа елементу, а змінна $значение   — значення елементу.

Наступний приклад відобразить значення масиву SGLOBALS, що містить глобальні змінні (будуть виведені як імена змінних, так і їх значення):

<?

foreach($GLOBALS   as   $key=>$value) echo   "$key  =   $value\n";

?>

У PHP є один дуже корисний стандартний масив $GLOBALS. Ключем даного масиву є ім'я змінної, а значенням елементу масиву — значення змінної. Про цей важливий масив ми ще не раз поговоримо в цій книзі.


 

А также другие работы, которые могут Вас заинтересовать

1774. УЧЕБНАЯ АКТИВНОСТЬ В СТРУКТУРЕ ИНТЕГРАЛЬНОЙ ИНДИВИДУАЛЬНОСТИ СТУДЕНТОВ В СВЯЗИ СО СПЕЦИАЛИЗАЦИЕЙ И ЭТАПАМИ ОБУЧЕНИЯ 1.39 MB
  Основные положения теории интегральной индивидуальности. Активность и ее роль в структуре интегральной индивидуальности. Методика исследования свойств личности. Особенности учебной активности студентов в связи со специализацией и этапами обучения. Учебная активность в структуре интегральной индивидуальности студентов в связи со специализацией и этапами обучения.
1775. НАРОДЫ КАВКАЗА В ВООРУЖЕННЫХ СИЛАХ СССР В ГОДЫ ВЕЛИКОЙ ОТЕЧЕСТВЕННОЙ ВОЙНЫ 1.39 MB
  Состояние и использование людских ресурсов Кавказа в первые годы войны. Приостановки мобилизации и призыва у закавказских народов осенью 1943 г. Воинские части с участием кавказцев в начальный период войны (1941 – ноябрь 1942 г.). Идеология патриотизма и национальный вопрос. Деятельность армейских политических органов и командиров по воспитанию личного состава кавказских национальностей.
1776. Право на жизнь и смертная казнь: проблемы конституционно-правовой регламентации в Российской Федерации 1.38 MB
  Понятие права на жизнь по международному и российскому законодательству. Смертная казнь в системе мер, направленных на защиту естественного права на жизнь. Международно-правовые и внутригосударственные ограничения применения смертной казни. Аспекты совершенствования правовой регламентации смертной казни в соответствии с обязательствами Российской Федерации перед Советом Европы.
1777. ИНДИВИДУАЛЬНО-ПСИХОЛОГИЧЕСКИЕ ОСОБЕННОСТИ АДАПТИВНОСТИ ЖЕНЩИН К СОСТОЯНИЮ БЕРЕМЕННОСТИ 1.38 MB
  Обоснование программы и метода исследований. Психофизиологический уровень. Специальная теория темперамента В.М. Русалова. Техника построения генограммы. Построение и анализ генограмм. Диагностика особенностей атрибутивных стилей. Проектирование психологической коррекции. Особенности психотерапевтической работы с каждой группой.
1778. КОНЦЕПТУАЛЬНЫЕ МЕТАФОРЫ ВРЕМЕНИ В СОВРЕМЕННОМ АНГЛИЙСКОМ ЯЗЫКЕ 1.37 MB
  Целью настоящего исследования является изучение изменения концепта времени в английском языке сквозь призму концептуальных метафор времени и их языковых реализаций.
1779. ПРАГМАТИЧЕСКИЙ АСПЕКТ ПЕРЕВОДОВ АНТИЧНЫХ АВТОРОВ. на материале ранних английских переводов латинского сочинения Боэция Об утешении философией 1.37 MB
  Лингвистическая прагматика в парадигме языкознания и теории перевода. Лингвокультурологический аспект английских переводов античных латинских текстов. Прагматический аспект ранних английских переводов латинского сочинения Боэция Об утешении философией. Перевод как особый вид литературного творчества эпохи английского Ренессанса.
1780. Совершенствование экспрессных методов индикации микобактерий туберкулеза 1.36 MB
  Анализ эпидемиологической обстановки по туберкулёзу и современного состояния экспресс-диагностики его возбудителя. Носители иммобилизованных систем твёрдофазного иммуноанализа. Питательные среды, условия культивирования микроорганизмов. Получение и контроль иммунофлуоресцирующих конъюгатов. Характеристика реагентов, используемых для получения магноиммуносорбентов. Биотехнология изготовления латексного диагностикума.
1781. ПРОБЛЕМЫ ИНТЕЛЛИГЕНЦИИ В РУССКОЙ ПУБЛИЦИСТИКЕ 1909 - 1912 ГГ. (ПОЛЕМИКА ВОКРУГ СБОРНИКА 1.36 MB
  ПОЛЕМИКА ОБ ИНТЕЛЛИГЕНЦИИ КАК ЯВЛЕНИЕ ОБЩЕСТВЕННОЙ ЖИЗНИ 1909-1912 ГГ. ПОДХОД УЧАСТНИКОВ ПОЛЕМИКИ К ПРОБЛЕМАМ РУССКОЙ ИНТЕЛЛИГЕНЦИИ (СОДЕРЖАТЕЛЬНАЯ СТОРОНА ПОЛЕМИКИ). ПРАВЫЕ КОНСТИТУЦИОНАЛИСТЫ И СОЦИАЛЬНЫЕ ХРИСТИАНЕ (ВЕХОВЦЫ).
1782. ФУНДАМЕНТАЛЬНЫЙ АНАЛИЗ МИРОВЫХ ВАЛЮТНЫХ РЫНКОВ 1.36 MB
  Для чего необходимо изучать фундаментальный анализ. Индексные методы измерения экономических процессов. Основные положения количественной теории денег. Показатели роста экономики, валовой внутренний продукт. Фундаментальные данные, психология рынка и принятие решений. Продажи грузовых и легковых автомобилей. Заказы на товары длительного пользования.