среда, 28 июня 2017 г.

День седьмой - циклы, циклы, циклы, циклы...

Сегодня подробнее разбирал циклы for и foreach. Вроде как всё элементарно просто и понятно. Пока не дошёл до вложенных циклов... Тут я завис.
Вот, например, табличка умножения:



Смотрю я на этот вложенный цикл и думаю - как же ты сука работаешь?  Погуглив на скорую руку - никакого внятного объяснения я не нашёл. Пришлось взять в зубы дебагер и ковырять самому...
Оказывается, вот оно как работает:
  • Джава берёт начальное значение переменной i, равное единице
  • проверяет условие i < 10 - условие выполнено
  • кидает  эту единицу во внутренний цикл for
  • во внутреннем цикле точно так же берёт начальное значение переменной j, тоже равное 1
  • проверяет условие j < 10 - условие выполнено
  • a = 1 * 1, следовательно a = 1
  • выводит на экран 1 |
  • затем переходит на итерацию вложенного цикла: j = j + 1, следовательно j = 2
  • снова проверяет условие j < 10 - условие выполнено
  • a = 1 * 2, следовательно a =2
  • выводит на экран 2 |
  • и т. д. до 9. А вот когда значение j доходит до 10 - происходит самое интересное 
  • когда j = 10, то условие j < 10 не выполняется и программа выходит из внутреннего цикла и выполняет следующий оператор внешнего цикла System.out.println() - перенос строки. А потом...
  • а потом выполняется итерация внешнего цикла: i = i + 1, следовательно i теперь равно 2
  • эта двойка попадает во внутренний цикл, в котором: a = 2 * 1 откуда  a = 2
  • выводит на экран с новой строки 2 |
  • ну и т. д. и т. п.
  • цикл будет работать до тех пор, пока переменная  i не станет равной 10.
 Только одно для меня загадка - зачем там вначале переменной а присваивается значение 0 ?

Комментариев нет:

Отправить комментарий