- •Визначення конфігурації
- •61.Дайте оцінку методам прийняття рішень в медицині.
- •63.Визначіть види медичних рішень та підходи до їх прийняття.
- •50 Имена и идентификаторы
- •22. Охарактеризуйте та наведіть приклад використання типу даних short.
- •23 Розробники обчислювальної техніки часто використовують дві операції алгебри логіки, які називають операцією склеювання та поглинання:
- •24 Проаналізуйте правила для складання структурної схеми алгоритму.
- •72/ Цикл типа «n-раз» (оператор for)
- •36. .Види медичних рішень та підходи до їх прияняття
- •37. Охарактеризуйте та наведіть приклад застосування логічних операцій при програмуванні на с: !, &.
- •20. Дайте оцінку алгоритмів порівняння даних
- •21. Поняття біосигналу
- •25 Питання
- •47. Принцип утворення пошарового зображення
- •65.Умовна операція
- •56. Дайте оцінку фасетній системі класифікації об'єктів.
- •55.57 Разом……
- •Логічні операції або як ще називають булеві оператори:
- •69.Цикли while()
- •Інформаційні ресурси
- •Носії інформації
- •Інформаційні процеси
- •Інформаційна система
- •Основні операції над даними
- •1. Первинні одиниці
- •2. Одиниці, похідні від біта
- •2.1. Байт
- •2.2. Кілобайт
- •2.3. Мегабайт
- •2.4. Гігабайт
- •3. Що таке "байт"?
- •4. Чому дорівнює "кіло"?
69.Цикли while()
Як уже зазначалося у попередньому уроці, порядок виконання операторів у скрипті – послідовний, починаючи з першого і до останнього. Однак у більшості випадків є потреба виконувати деяку частину коду більше одного разу, можливо, з дещо зміненими параметрами. Для таких цілей використовують цикли while() та for(). Розглянемо спочатку цикл while() як більш простий та загальний. Схема виконання циклу проста:
while(умова) оператор;
Оператор після while (цей оператор називають тілом циклу) виконується до тих пір, доки умова у дужках має значення true. Звісно, що оператор має забеспечити умову припинення циклу для того, щоб цикл не виконувався нескінченне число разів (звичайно, якщо це не робиться навмисне). Наприклад
<?
$i = 0;
while($i < 10) $i++;
echo $i; ?>
Цей цикл виконається рівно 10 разів (ці рази називають кроками циклу) – на кожному разі до змінної $i буде додаватися одиниця, і як тільки $i стане не менше 10, умова $i < 10 стане дорівнювати false, станеться вихід з циклу та виконається наступний оператор після while(), тобто надрукується значення змінної $i. Можна подивитися докладніше, як це відбувається:
<?
$i = 0;
while($i < 10){ $i++;
echo "i = $i<br />\n";
}
?>
Тут значення змінної $i буде виводитися на кожному кроці циклу, і ми побачимо послідовно надруковані числа від 1 до 10.
До умови у дужках після while, звісно, можна застосовувати усі ті прийоми з логічними операціями, що ми розглядали на попередньому уроці.
Цикл while має дві форми. Описана вище є найбільш розповсюдженою та використовується майже завжди. Однак у неї є особливість – умова припинення виконання циклу має бути записана зразу після while, тобто вона має бути вже відома до початку виконання, і більше того – якщо ця умова несправедлива, то цикл не виконається жодного разу. На відміну від цієї форми можна використовувати іншу:
do оператор while(умова);
Цей цикл перевіряє справедливість умови не до, а після виконання тіла циклу. Тобто тіло циклу виконається один раз у будь-якому випадку, навіть якщо умова у дужках несправедлива. Приклад застосування обох циклів:
<?
$i = 20; while($i < 10){
$i++;
echo "i = $i<br />\n";
} $i = 20; do{
$i++;
echo "i = $i<br />\n";
} while($i < 10);
?>
Перший цикл while() не виконається жодного разу, оскільки перед його виконанням буде перевірено значення змінної $i, а раз воно не менше 10, то цикл не буде виконуватися взагалі. У той час як другий цикл виконається один раз, після чого буде перевірена умова і оскільки умова буде так само дорівнювати false, відбудеться вихід з циклу, проте один раз він все-таки виконається (надрукує число 21).
Іншими корисними засобами роботи з циклами є оператори break та continue. Перший з них дозволяє достроково перервати роботу циклу у будь-якій його частині, не виконуючи всі оператори після break; робота continue прямо протилежна – він дозволяє продовжити виконання циклу. Тобто break робить поточним оператором, що виконується, перший оператор після циклу, а continue – перший оператор у тілі циклу (звичайно, що при цьому перевіряється умова циклу). Приклад використання break:
<?
$str = "Що б таке зробити коли нема роботи";
$word = "коли";
$index = 0; while($index < strlen($str) - 3){
if(substr($str, $index, 4) == $word) break; $index++;
}
if($index == strlen($str) - 3) echo "Слова '$word' не знайдено у рядку '$str'";
else
echo "Слово '$word' у рядку '$str' починається після позиції $index"; ?>
Розберемо цей приклад, і тим часом дізнаємося про пару нових корисних функцій для роботи з рядками тексту.
Цей приклад шукає перше входження слова $word до рядку $str. Звичайно, для цієї задачі є стандартна функція strpos(), проте ми маємо ціль лише проілюструвати роботу break. У змінній $index знаходиться позиція у рядку $str, у якій ми перевіряємо наявність слова, і ми за допомогою циклу послідовно збільшуємо $index від 0 (початок рядка) до кінця рядка. Насправді немає необхідності продивлятися весь рядок, а достатньо продивитися стільки символів, скільки є у рядку мінус стільки символів, скільки є у слові, що шукається (4), та ще один. Щоб це було більш зрозумілим, наведу приклад: якщо ми шукаємо слово з десяти букв у рядку з двадцяти, то після одинадцятої букви шукати немає потреби – ми не знайдемо там слова вже просто тому, що воно не підійде за довжиною.
Кількість символів у рядку $str повертає функція strlen($str). Ідемо далі. Так само немає необхідності проглядати увесь рядок, якщо ми знайшли слово десь у його середині. Для цього ми у разі якщо знаходимо слово на позиції $index, то перериваємо цикл оператором break. Функція substr($str, $index, 4) повертає рядок, що знаходиться у рядку $str починаючи з символу $index та довжиною у 4 символи. Так, якщо там буде те слово, що ми шукаємо ($word), то умова у if() буде справедливою та цикл перерветься оператором break.
Після того, як цикл закінчився, ми перевіряємо як саме він закінчився. Могло бути два варіанти – або цикл закінчився, бо ми дійшли до кінця рядка, або ні. Перший варіант означає, що ми не знайшли слово, другий – що знайшли. Перший варіант ми розпізнаємо за умовою $index == strlen($str) – 3, тобто $index дорівнює кількості символів у рядку мінус три. Другий – протилежний випадок, тобто $index менше цього числа. У другому випадку ми можемо сказати, з якого символа починається наше слово. У першому ми можемо лише сказати, що такого слова не знайдено.
Якщо це зрозуміло, розберемо ще один приклад, на цей раз – на використання continue.
<? $numbers = array();
while(count($numbers) < 10){
$random = rand(1, 100); if( $random % 3 ) continue;
if( in_array($random, $numbers) ) continue;
echo "$random<br />\n"; $numbers[] = $random;
}
?>
Цей скрипт друкує 10 випадкових чисел у диапазоні від 1 до 100, причому кожне з цих чисел має ділитися на 3 і жодне з них не повторюється.
Для генерації випадкових чисел ми використовуємо функцію rand(), яка повертає випадкове число у диапазоні між двома своїми аргументами. Для гарантії того, що серед 10 згенерованих чисел жодне не повторюється, ми заносимо кожне згенероване число до масиву, а також перевіряємо, чи було вже це число згенероване раніше.
На початку скрипта ми створюємо пустий масив $numbers = array(). Далі йде цикл, умовою виходу з якого є заповнення масиву 10-ма елементами (функція count(), що повертає кількість елементів у масиві, поверне 10).
На кожному кроці циклу ми генеруємо випадкове число $random. Після чого ми перевіряємо, чи ділиться це число на 3 – якщо ділиться, то залишок від ділення його на 3 буде дорівнювати 0, а якщо ні, то умова if( $random % 3 ) спрацює, спрацює оператор continue і цикл повториться спочатку, тобто буде згенероване нове число і так далі. Далі ми перевіряємо, чи не виводили ми вже це число, для цього ми шукаємо його у масиві $numbers. Якщо число знайдене у цьому масиві, то функція in_array($random, $numbers) поверне true і знов-таки спрацює continue. У іншому випадку (число не знайдене у масиві та in_array($random, $numbers) поверне false) ми виводимо число та додаємо його до масиву $numbers ($numbers[] = $random).
Короткі висновки уроку:
Цикли використовуються для повторення деякої частини коду декілька разів
Оператори, що повторюються, називаються тілом циклу, а повторення – кроками циклу
Цикл while() виконується до тих пір, доки справедлива умова у дужках
Цикл do .. while() виконується принаймні один раз, тоді як просто while() може не виконатися жодного разу
Оператор break виконує вихід з циклу, оператор continue – продовження виконання циклу
76.