2014-10-15 2 views
0

Я только начал изучать мозговое увлечение, и я только на приветственном примере мира. У меня вопрос, для чего используется квадратная скобка?Я не понимаю эффект квадратной скобки

Пример:

++++++++++[>+++++++>++++++++++>+++>+<<<<-]>++.>+.+++++++..+++.>++.<<+++++++++++++++.>.+++.------.--------.>+.>. 

Это программа "привет мир". Я не понимаю, почему там [] Я понимаю - и +, но я где-то читал, что скобка скобка:

[ (opening square bracket) 
while(mem[ptr]) { 
] (closing square bracket) 
} 

, но даже если у меня есть эта информация, которую я не понимаю, почему это здесь.

Я свободно владею php/C/POSIX/java, но здесь я этого не понимаю.

ответ

1

Каждый [ должен быть согласован с другим ]

Так всегда думают о них в парах. Вот как вы их рассуждаете. Когда программа встречает ], она проверяет текущую ячейку. Если ячейка имеет в ней число больше нуля, программа возвращается к соответствующему [. Если текущая ячейка имеет 0, программа продолжает работу.

[и] - способ создания петель.

Вот простой пример: +++[-] эта программа сначала устанавливает текущую ячейку на 3, а затем очищает ее (вы часто будете сталкиваться с частью [-], это часть, используемая для установки ячейки в 0, независимо от ее исходного значения был). Затем он встречает первый [ и игнорирует его (вы можете считать его как маркер). Затем он выполняет -, и первая ячейка теперь становится 2. после этого встречается с ]. Текущая ячейка имеет в ней 2, так что, поскольку 2 больше 0, программа возвращается к [. он делает это еще два раза, пока значение в ячейке не станет 0. Когда ячейка имеет 0 в нем, и программа снова встречает ], она видит, что текущая ячейка имеет в ней 0, поэтому вместо перехода на [ она позволяет программа продолжает действовать вправо (и поскольку у этой программы больше нет инструкций после ], это означает, что эта крошечная программа закончится)