X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

Открыть тему
Тема закрыта
> объясните кто-нибудь do-while
dddr
dddr
Topic Starter сообщение 29.6.2011, 1:08; Ответить: dddr
Сообщение #1


объясните кто-нибудь do-while,с понятными наглядными примерами!!!Спасибо!!
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexdrob
alexdrob
сообщение 29.6.2011, 2:28; Ответить: alexdrob
Сообщение #2


разница в том что do {} while выполнится минимум 1 раз. Если вы уверенны что у вас цикл должен выполнится минимум 1 раз то можно использовать do {} while, а можно и while.

Есть мнение, я лично не проверял, просто в книге по с++ написано, что while выполняется немного дольше чем do while.
В связи с этим некоторые программисты используют циклы do {} while и в php, например тот же Попов.
Кстати из за это на Попова бочку и катят :)

Я лично всегда использую while. Так как оно удобней читается в коде, а прироста скорости я не проверял :)

Пример когда можно использовать do {} while
Вы хотите в цикле тащить 1 карту пока у вас меньше 17 очков в колоде, для проверки сколько очков естественно нет смысла проверять пустую колоду, должна быть хотя бы одна карта.
[PHP]
<?php
function getCard(&$a) {
return array_pop($a);
}

$cards = array(6,6,6,6,7,7,7,7,8,8,8,8,9,9,9,9,10,10,10,10,11,11,11,11,2,2,2,2,3,3,3,3,4,
4,4,4);
shuffle($cards);
$myCards = array();

do {
$myCards[] = getCard($cards);
$sum = array_sum($myCards);
} while ($sum < 17);

echo '<p>У вас: ' . $sum . ' очков!</p>';
?>[/PHP]

PS проверил скорость, на 10000 итераций я разницы не заметил, может всего на 0.0001-0.0002 но то там быстрей то там :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
dzheka3d
dzheka3d
сообщение 29.6.2011, 4:24; Ответить: dzheka3d
Сообщение #3


do - перевод "Выполнять"
Далее идет цикл, который выполняется
while - перевод "пока (условие верно)"

Теперь синтаксис:
[PHP]do
{
цикл;
}
while(условие)[/PHP]

Пример:

[PHP]
$a = 2; // присваиваем переменной $а значение 2, что бы программа знала чему равна эта перменная
do // выполнять условие (то что идет после фигурной скобки). Условие заканчивается второй фигурной скогбой.
{
echo "привет"; // выводим слово "привет"
$a = $a+1; // увеличиваем переменную $a на еденицу
}
while($a < 5); // пока переменная $a меньше пяти[/PHP]

Пояснение:
Программа присваивает переменной а значение 2
Программа видит первую строчку и понимает что ей нужно выполнить всё то, что находится в фигурных скобках
Программа выводит значение слово привет и затем увеличивает переменную на единицу. Т.е. теперь значение переменной равно 3
Как только программа доходит до слова while она проверяет условие которое находится в круглых скобках там у нас $a < 5 ставит на место $a нашу тройку и смотрит, что а меньше пятерки, поэтому программа возвращается к слову do и выполняет цикл снова. т.е. выводит слово "привет" и прибавляет к переменной единицу (получается 4). Сверяет что 4 меньше чем 5 и снова возвращается к слову do.
Выводит слово "привет" и прибавляет к $a еденицу (получается 5)
Сверяет, что 5 не меньше чем 5 и заканчивает цикл.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
dddr
dddr
Topic Starter сообщение 29.6.2011, 12:09; Ответить: dddr
Сообщение #4


[PHP]<?php
$a=8;
do
{
echo "Ky-ky";
}
$a=$a+1;
while ($a<15);
?>[/PHP]
А во ти собственно к ней ошибка:
Parse error: syntax error, unexpected T_VARIABLE, expecting T_WHILE in Z:\home\test1.ru\www\while.php on line 7

В чем проблемка?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
adlic
adlic
сообщение 29.6.2011, 13:14; Ответить: adlic
Сообщение #5


[PHP]<?php
$a=8;
do
{
echo "Ky-ky";
$a=$a+1;
}

while ($a<15);
?>[/PHP]
Не туда $a=$a+1; засунули.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
dddr
dddr
Topic Starter сообщение 29.6.2011, 13:16; Ответить: dddr
Сообщение #6


воот,поняль))))а что должен по сути вывести этот цикл?
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
dddr
dddr
Topic Starter сообщение 29.6.2011, 13:26; Ответить: dddr
Сообщение #7


и если не трудно объясните остальные циклы кроме if else elseif,а то я сам не могу их понять)Огромное заранее спасибо!
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
adlic
adlic
сообщение 29.6.2011, 13:40; Ответить: adlic
Сообщение #8


Этот цикл отличается от других тем, что идет сначала действие, а потом уже логика. То есть, как говорил alexdrob, он один раз выполнится точно, а там уже зависит от логики цикла.
dddr, if else elseif это не циклы, а условия, не путайте.
Цикл for выполняется до тех пор, пока проверяемое условие остаётся истинным.
[PHP]for($i=0; $i<3; $i++){
echo "Еще раз<br>";
}[/PHP]
То есть он будет выполняться до тех пор, пока переменная $i не станет равна или больше 3($i<3), сейчас она равна 0($i=0) и при каждом пробегании цикла увеличивается на единицу($i++).

Замечание модератора:
Эта тема была закрыта автоматически ввиду отсутствия активности в ней на протяжении 100+ дней.
Если Вы считаете ее актуальной и хотите оставить сообщение, то воспользуйтесь кнопкой
или обратитесь к любому из модераторов.
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Кто где хранит файлы? И какой объем?
просто интересно
22 mark2013 2684 15.4.2024, 8:08
автор: Room
Горячая тема (нет новых ответов) LITE.HOST - хостинг для тех, кто любит не переплачивать
74 akkyoh 30923 6.4.2024, 19:41
автор: Kseniya_Klimova
Открытая тема (нет новых ответов) Пишет кто отзывы на сайт в янднекс с разных аккаунтах
1 TenDemon_rs 1186 22.3.2024, 13:18
автор: writer80
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыКто и зачем покупает картинки обезьян по $200 тысяч?
NFT
167 metvekot 27447 6.3.2024, 21:58
автор: Boymaster
Открытая тема (нет новых ответов) Тизерная сеть Visitweb - кто покупает здесь трафик?
3 Boymaster 1363 29.2.2024, 10:24
автор: Skyworker


 



RSS Текстовая версия Сейчас: 25.4.2024, 23:19
Дизайн