За последние 24 часа нас посетили 51716 программистов и 1761 робот. Сейчас ищет 821 программист ...

Цикл for

Тема в разделе "Прочие вопросы по PHP", создана пользователем KOKS1999, 18 янв 2015.

  1. KOKS1999

    KOKS1999 Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    67
    Симпатии:
    0
    <?PHP
    $iSum=0;
    for($i=1; $i<=2; $i++)
    {
    echo $iSum+=$i;
    }
    ?>

    Почему выводит 13?
     
  2. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    потому что. умей читать алгоритмы.
    объявили ноль.
    вошли в цикл от единицы до двойки включительно
    тело цикла - вывод результата суммирования текущего значения итератора с текущим значением переменной
    проход первый - итератор 1 (начало ведь такое), исум ноль, сумма 1, печать 1
    проход второй - итератор 2 ведь там инкремент 1, исум 1 (с прошлой итерации), сумма 1+2 = 3, печать 3
    проход третий - итератор 3, конец цикла

    на экране 1 и 3. всё как ты и просил напечатать так тебе и напечатало.
     
  3. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Не 13, а 1 и 3 по очереди.
     
  4. KOKS1999

    KOKS1999 Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    67
    Симпатии:
    0
    Все рамно я не могу понять.Мне нужно как то очень по простому разъяснить, как 1 класснику в программирование.
    Si=1 - поэтому выводит 1? потом 1 + 2? - поэтому выводит 3?
     
  5. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    ну вообще-то ровно это я и написал. если у тебя проблемы с представлением таких простых вещей то лучше пока программированием не заниматься. ты просто не видишь состояния программы на разных этапах работы. у тебя всего три "объекта" и ты за ними не можешь уследить. боюсь представить что будет дальше...
     
  6. KOKS1999

    KOKS1999 Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    67
    Симпатии:
    0
    программированием не заниматься. - если я не буду заниматься я никогда не пойму.
     
  7. Ganzal

    Ganzal Суперстар
    Команда форума Модератор

    С нами с:
    15 мар 2007
    Сообщения:
    9.893
    Симпатии:
    965
    знаешь вот у кого-то руки из жопы и ему недоступно допустим ювелирное мастерство. а кто-то блоху может подковать. тут приобретенный навык это лишь развитие природного. ты в трех переменных запутался. хотя программа проще простого. значит ты просто не видишь алгоритмы. и развивать тебе нечего. может быть пока. а может быть и вообще.

    начало программы. у нас один объект - поток вывода. он пуст
    первая строка - объявление переменной. теперь у нас два объекта - ПВ(пусто) и иСум(0).
    объявление цикла. работает для итератора И с его значениями от 1 до 2 включительно. объявляем переменную И в начальном значении цикла - 1. теперь у нас три объекта - ПВ(пусто), иСум(0), И (1).
    тело цикла. вывод результата суммирования иСум с текущим значением итератора цикла.
    итерация первая. ПВ(пусто), иСум(0), И(1), сумма 0 плюс 1 равна 1, записать 1 в иСум.
    состояние: ПВ(пусто), иСум(1), И(1)
    вывести значение иСум.
    ПВ("1"), иСум(1), И(1)

    итерация вторая. ПВ("1"), иСум(1), И(1). инкремент И. ПВ("1"), иСум(1), И(2).
    сумма 1 плюс 2 равно 3, записать в иСум.
    ПВ("1"), иСум(3), И(2).
    вывести значение иСум.
    ПВ("13"), иСум(3), И(2).

    итерация третья. ПВ("13"), иСум(3), И(2). инкремент И. ПВ("13"), иСум(3), И(3). выполняется условие выхода из цикла ибо 3 точно больше 2 а условие как ты помнишь меньше-равно 2.
    конец программы.

    итак её итоговое состояние на момент завершения:
    итератор цикла И остался в значении число(3). переменная осталась как мусор внутри сценария. и это нужно понимать чтоб у тебя допустим разные итераторы не использовали одинаковые переменные а то получишь неожиданный результат.
    иСум остался в значении число(3)
    поток вывода ПВ в значении строка("13") отправился процессу который заказал вычисление. в твоем случае видимо через веб-сервер отправилось браузеру и ты увидел на экране.
     
  8. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Автор, попробуй так. Станет понятнее.
    Код (PHP):
    1. <?PHP
    2. $iSum=0;
    3. for($i=1; $i<=2; $i++)
    4. {
    5. echo 'Вывожу число '.($iSum+=$i).'<br>';
    6. }
    7. ?>
     
  9. KOKS1999

    KOKS1999 Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    67
    Симпатии:
    0
    Уже разобрался.
    Я не понимаю теперь это
    <?PHP
    $iSum=0;
    for($i=0;$i++<=20;)
    {
    $iSum+=$i;
    }
    ?>
     
  10. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Потому что бред галимейший написан. Почитай про for чтоли.
     
  11. KOKS1999

    KOKS1999 Новичок

    С нами с:
    11 янв 2015
    Сообщения:
    67
    Симпатии:
    0
    Уже понял.
    А новичков всегда такое ощущение как в тумане?
    Просто когда учил html только начал, было такое ощущение, щас знаю html css не такого ощущения.
     
  12. Fell-x27

    Fell-x27 Суперстар
    Команда форума Модератор

    С нами с:
    25 июл 2013
    Сообщения:
    12.156
    Симпатии:
    1.771
    Адрес:
    :сердА
    Бро, ну все люди разные. Как мы тебе ответим за всех?