[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: цикл for
Дима
main()
{
for (int x=1; x<=10; x++)
{
if (x==5)
break;
cout << x << endl;
}
return 0;
}

Результат выводит числа 1 2 3 4. Почему Цыкл прервался то понятно.
Не пойму как работает сама конструкция for (int x=1; x<=10; x++)

Тоесть проверяеться условие x=1 и цыкл работает покамисть x<=10 и при каждой итерации x++, но например при первом вхождении x++ тоесть он сразу становиться 2 тоесть результат скрипта должен быть
2 3 4.

Обьясните плиз детально как работает цикл. Буду рад любым обьяснениям.



Спустя 8 минут, 43 секунды (18.09.2009 - 17:14) glock18 написал(а):
Дима
x++ или третье выражение в объявлении цикла

отрабатывает каждую итерацию после первой, не включая ее.
На первой итерации выполняется только int x=1 - первое выражение.

x<=10 - выполняется на каждой итерации после того, как отработало первое или третье выражение, в зависимости от итерации.

Итого:
Первое выражение - инициализация цикла
Второе выражение - условие выполнения цикла
Третье выражение - инкрементация (читай увеличение, сдвиг, переход на следующий шаг и т.д.) цикла

Этот цикл должен и выведет
1
2
3
4

Вопрос, почему вы спрашиваете о том, как работает код, написанный на C++, на форуме по php? smile.gif

Спустя 6 минут, 10 секунд (18.09.2009 - 17:21) Pinoplast написал(а):
<?
for (инициализация; действие; делай после прохода; )
{
Действия
}

?>



ИНИЦИАЛИЗАЦИЯ - ОБЯВЛЕНИЕ ПЕРЕМЕНЫХ ИЛИ ЧИСЕЛ

ДЕЙСТВИЕ НАД ПРЕМЕНЫМЫ(ПРОВЕРКА УСЛОВИЙ)

делай после прохода - что делать после цыкла

а считает с 1 потомучто помойму от нуля цыкл виполняеться, хотя могу ощыбаться потому сразу идет 1 а не 2

Спустя 17 минут, 48 секунд (18.09.2009 - 17:38) Дима написал(а):
Цитата
x++ или третье выражение в объявлении цикла
отрабатывает каждую итерацию после первой, не включая ее.


Всё равно не понятно, в таком случае при первой итерации цикла х останется равным 1 и только при второй итерации начнёт х увеличивать на 1 и цикл произведет на 1 итерацию больше то есть не 10 а 11.

если читать слева на право код то сначала х присваивается 1 потом идет проверка меньше либо равно 10 и дальше просто иксу плюсуется 1.
Так как запись х++ не куда не присваивается то это обычное сложение х+1 и новое значение х должно пойти в цикл если читать код слева направо с верху в низ!

Сори всё равно не могу понять((

Цитата
Вопрос, почему вы спрашиваете о том, как работает код, написанный на
C++, на форуме по php? smile.gif


PHP
<?php
for ( $x=1$x<=10$x++)
{
  if (
$x==5)
  break;
  echo 
"$x <br>";
}


Цикл всё равно записывается одинаково но в следующий раз буду писать так))


Спустя 7 минут, 15 секунд (18.09.2009 - 17:46) Дима написал(а):
Цитата


а считает с 1 потомучто помойму от нуля цыкл виполняеться, хотя могу ощыбаться потому сразу идет 1 а не 2



Нет скорее всего потому что начальное значение 1.
В любом языке программирование цикл for считает не с 0, а с того что ты ему укажеш!

Спустя 10 минут, 39 секунд (18.09.2009 - 17:56) Pinoplast написал(а):
так у тебя нету указаной переменой которую увеличивать на единицу, у тебя только переменая для отсчета, нехватет, переменой увелечения или действия, а так как она у тебя не задана то цыкл берет ноль, у тебя задано х=1 количство повторов цыкла от 1 до 10 а переменую какую увеличить при исполнении нет, задай ее и переимену х++ на У++ и задай У= чемуто, вроде так

Спустя 1 минута, 4 секунды (18.09.2009 - 17:57) Pinoplast написал(а):
хотя могу ошыбаться сам учу пхп только пару месяцев гыгыгыгы

Спустя 2 минуты, 16 секунд (18.09.2009 - 18:00) glock18 написал(а):
Дима
Поведение такое, какое я описал. В цикле нигде не сказано, что итераций должно быть 10. Более того их не будет 10 (или 11, как вы почему то думаете).

Спустя 1 час, 38 минут, 9 секунд (18.09.2009 - 19:38) Дима написал(а):
Почему не будет, если break убрать то 10 получиться biggrin.gif

Спустя 11 минут, 39 секунд (18.09.2009 - 19:49) glock18 написал(а):
Если убрать.

Там сказано, что будет выполняться пока x больше или равен 10 и ничего нет про то, сколько итераций будет.

замени

x++
на
x += 2

и итераций будет не 10, хотя в условии будет так же стоять 10.

Спустя 3 часа, 18 минут, 9 секунд (18.09.2009 - 23:08) Дима написал(а):
Так так сказано что х будет увеличиваться ровно на 1. Значит следуя этому итераций будет 10

Спустя 53 секунды (18.09.2009 - 23:08) Дима написал(а):
Хотя чё спорить мы оба знаем про что говорим)) Спасибо за помощь!
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.