А не добавил бы в конце выход из цикла - бежал бы дальше по воздуху
До края рисунка за которым кончается оперативка.
Так ведь он добежит до максимального значения и вернётся со знаком -
За "краем рисунка" начинается следующая строка в рисунке.
Падение можно просчитать за исключение - исполняемый поток улетит к первому подходящему обработчику ошибок.
только шакала это ничему не учит, и обработчик вида {}
Шакал тот, кто такие обработчики пишет...
там ещё кое чего не хватает
if(LookDown) { Fall();}
if(LookDown) { Fall();}
function Fall() {
play("DDT - chto takoe osen.mp3");
}
play("DDT - chto takoe osen.mp3");
}
do {
run();
if (surface = edge_limit) {
break;
}
} while (not edge);
Кодишь как пидорас - так оставайся им до конца.
run();
if (surface = edge_limit) {
break;
}
} while (not edge);
Кодишь как пидорас - так оставайся им до конца.
> surface = edge_limit
За такое и распять мало.
За такое и распять мало.
Классика же, когда твоя проверка лишь усугубляет положение.
.equals() и == для слабаков.
.equals() и == для слабаков.
while и do-while ведут себя как полностью эквивалентные конструкции за одним-единственным исключением: если условие не выполнено изначально, while не выполнит код цикла, а do-while - выполнит.
Таким образом, приходим к выводу, что они оба стояли на краю скалы, но Бегун остался стоять, а Койот - побежал.
Можно было бы привести более логичный пример:
for (int i = 0; i
Да, парсер любит кушать треугольные скобки.
for (int i = 0; i < length; ++i) {}
и
for (int i = 0; i <= length; ++i) {}
for (int i = 0; i < length; ++i) {}
и
for (int i = 0; i <= length; ++i) {}
geek'овский шепард, перелогинься
Слишком много чести, я всего лишь поправил неточность, а не объяснил шутку.
Уже поздно. Теперь привяжется.
Это что же получается, мне теперь в каждом посте с тегом it-юмор нудеть?
Да.
Обязательно
Всенепременно
Даже в конструкции видно, что while проверяет до выполнения, а do-while после выполнения, а не "если условие не выполнено изначально". И пример с FORом абсолютно не логичнее, т.к. при одинаковых значениях переменной у твоих форов будет одинаковый результат, а кайот улетит, только когда переменные станут разными. А с while/do-while при одинаковых значениях переменной -- результат разный. ЗЫ: и почему ++i? увеличить до выполнения итерации?
Ты не прав
var i = 0; do{console.log('step ' + i); i++;}while(i 'знак меньше' 5)
и
var i = 0; while(i 'знак меньше' 5){console.log('step ' + i); i++;}
выведут идентичный результат
не могу знак меньше указать в комментарии..
var i = 0; do{console.log('step ' + i); i++;}while(i 'знак меньше' 5)
и
var i = 0; while(i 'знак меньше' 5){console.log('step ' + i); i++;}
выведут идентичный результат
не могу знак меньше указать в комментарии..
Реактор воспринимает треугольные скобки как HTML. Чтобы в HTML-разметке написать треугольные скобки, используй конструкции < и >.
P.S. Как мне удалось написать конструкции выше, чтобы они не превратились в треугольные скобки? &lt; и &gt;.
P.S. Как мне удалось написать конструкции выше, чтобы они не превратились в треугольные скобки? &lt; и &gt;.
В твоем случае одинаковый. А вот так попробуй:
var i = 5; do{console.log('step ' + i); i++;}while(i < 5)
var i = 5; while(i < 5){console.log('step ' + i); i++;}
На картинке именно такие входные данные, а не заведомо "правильные" для циклов. И зачем мы спорим? Do-While используется, если нужно обязательно 1 раз выполнить итерацию, а дальше смотреть нужно ли повторить, а в While нужно сначала проверять и итерации может вообще не быть -- это в методичке любой написано.
var i = 5; do{console.log('step ' + i); i++;}while(i < 5)
var i = 5; while(i < 5){console.log('step ' + i); i++;}
На картинке именно такие входные данные, а не заведомо "правильные" для циклов. И зачем мы спорим? Do-While используется, если нужно обязательно 1 раз выполнить итерацию, а дальше смотреть нужно ли повторить, а в While нужно сначала проверять и итерации может вообще не быть -- это в методичке любой написано.
Ты привел абсолютно правильный пример, где while и do-while отличаются. А теперь перечитай абзац из моего самого первого комментария, который об этом и говорит.
Таким образом, приходим к выводу, что они оба стояли на краю скалы, но Бегун остался стоять, а Койот - побежал.
В мультфильме, как правило, сначала оба бегут, но койот не успевает остановиться, поэтому в моих глазах койот, стоявший на месте и из положения стоя метнувшийся в пропасть, кажется плохой демонстрацией. Он, может, и дурак, но не настолько.
Таким образом, приходим к выводу, что они оба стояли на краю скалы, но Бегун остался стоять, а Койот - побежал.
В мультфильме, как правило, сначала оба бегут, но койот не успевает остановиться, поэтому в моих глазах койот, стоявший на месте и из положения стоя метнувшийся в пропасть, кажется плохой демонстрацией. Он, может, и дурак, но не настолько.
Я ценю в людях желание докопаться до истины, потому что сам ужасный зануда, но перед спором лучше проверять факты. Человек выше выложил хороший лаконичный пример.
Что касается for'ов, с моей стороны, видимо, было ошибкой не уточнить, что эти примеры относятся к обращению по индексу к элементам массива длины length, индексируемого с нуля. В таком случае первый for пройдет по всем индексам от 0 до length-1 (их length штук), а второй - от 0 до length (на 1 больше, чем есть в массиве), т.е. последнее обращение даст какой-нибудь ArrayIndexOutOfBoundsException, что прекрасно символизирует койот, вылетевший с исключением.
++i в данном случае эквивалентен i++. Префиксный инкремент как бы лучше тем, что он транслируется в меньшее количество операцией, если мы не используем возвращаемое значение:
i = i + 1;
return i;
в то время как постфиксному требуется запомнить значение до инкремента:
int tmp = i;
i = i + 1;
return tmp;
В реальности на современных системах разница в производительности чуть менее, чем смехотворная. Просто привычка.
Что касается for'ов, с моей стороны, видимо, было ошибкой не уточнить, что эти примеры относятся к обращению по индексу к элементам массива длины length, индексируемого с нуля. В таком случае первый for пройдет по всем индексам от 0 до length-1 (их length штук), а второй - от 0 до length (на 1 больше, чем есть в массиве), т.е. последнее обращение даст какой-нибудь ArrayIndexOutOfBoundsException, что прекрасно символизирует койот, вылетевший с исключением.
++i в данном случае эквивалентен i++. Префиксный инкремент как бы лучше тем, что он транслируется в меньшее количество операцией, если мы не используем возвращаемое значение:
i = i + 1;
return i;
в то время как постфиксному требуется запомнить значение до инкремента:
int tmp = i;
i = i + 1;
return tmp;
В реальности на современных системах разница в производительности чуть менее, чем смехотворная. Просто привычка.
Вчера мне глаз резанула твоя фраза "если условие не выполнено изначально", мол do-while проверяет-то после 1 выполнения... Но я сейчас сам выше привел пример с условием, которое неудобно _изначально_ для циклов и понял, что ты это имел в виду, так ведь?
С плюсами согласен.
Но вот пример с фор считаю для картинки абсолютно неудачным по сравнению с оригиналом.
С плюсами согласен.
Но вот пример с фор считаю для картинки абсолютно неудачным по сравнению с оригиналом.
Да (выше тоже откомментировал).
Фор хорош тем, что это реальная ошибка для недоспавшего разработчика, и она хорошо ложится на предположение, что Бегун и Койот бегут к краю скалы, а не стоят стоймя. Если бы не последнее, while и do-while так-то были бы поинтереснее.
Фор хорош тем, что это реальная ошибка для недоспавшего разработчика, и она хорошо ложится на предположение, что Бегун и Койот бегут к краю скалы, а не стоят стоймя. Если бы не последнее, while и do-while так-то были бы поинтереснее.
Я человек просто: вижу тэг "it-юмор" - ничего не понимаю
Но ведь тег можно заблочить...
А он не сказал, что ему это не нравится
it-мазохист.
вот-вот!
В данном случае шутка основана на циклах с пред- и постусловием. Нам информатик объяснял это так:
Цикл с предусловием: Ты сидел в ресторане, тебе принесли суп, но в него залетела муха. Ты делаешь так:
1) Наполняешь ложку.
2) Смотришь, есть ли в ложке муха? Если нет, то переходишь к шагу три. Если есть, переходишь к шагу 6.
3) Ешь содержимое ложки.
4) Наполняешь ложку.
5) Переходишь к шагу 2.
6) Скандалишь с официантом.
Цикл с постусловием:
1) Наполняешь ложку.
2) Ешь содержимое ложки.
3) Наполняешь ложку.
4) Смотришь, съел ли ты муху? Если нет, то переходишь к шагу 2. Если есть, переходишь к шагу 5.
5) Скандалишь с официантом.
Цикл с предусловием: Ты сидел в ресторане, тебе принесли суп, но в него залетела муха. Ты делаешь так:
1) Наполняешь ложку.
2) Смотришь, есть ли в ложке муха? Если нет, то переходишь к шагу три. Если есть, переходишь к шагу 6.
3) Ешь содержимое ложки.
4) Наполняешь ложку.
5) Переходишь к шагу 2.
6) Скандалишь с официантом.
Цикл с постусловием:
1) Наполняешь ложку.
2) Ешь содержимое ложки.
3) Наполняешь ложку.
4) Смотришь, съел ли ты муху? Если нет, то переходишь к шагу 2. Если есть, переходишь к шагу 5.
5) Скандалишь с официантом.
Пример больше похож на преждевременный выход из цикла по событию (муха), а не условию цикла - жрать пока не кончится суп.
Я не говорил, что это был хороший информатик. Он не принимал лабу, потому что ему не понравилось, что я сначала присваиваю Б значение У, а потом присваиваю А значение Х. На программу это никак не влияло, всё работало, но я потратил две недели и 30 грамм нервов на то, чтобы сдать эту лабу, потому что он отказывался говорить, что не так.
В первом случае выхода из цикла нет.
`coyoteTime()`
Чтобы написать коммент, необходимо залогиниться