2014-10-15 3 views
0

방금 ​​뇌물을 배우기 시작했고, 나는 안녕하세요 세상의 예에 불과합니다. 대괄호가 무엇에 사용되는지 질문이 있습니까?나는 대괄호 효과를 이해하지 못한다

예 :

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

이 프로그램에 "Hello World"입니다. [] 내가 -+이 이해 왜 이해가 안하지만 브레이스 브래킷이 어딘가에 읽어

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

하지만 여기가 왜이 정보를 경우에도 이해가되지 않습니다.

저는 PHP/C/POSIX/java에 익숙하지만 여기서는 이것을 이해하지 못합니다. 모든 [

답변

1

그래서 항상 쌍으로 그들을 생각하는 또 다른 ]

일치해야합니다. 여기에 당신이 그들을 추론하는 방법이 있습니다. 프로그램이 ]을 만나면 현재 셀을 검사합니다. 셀의 수가 0보다 큰 경우 프로그램은 일치하는 [으로 돌아갑니다. 현재 셀에 0이 있으면 프로그램이 계속됩니다.

[및]은 루프를 만드는 방법입니다.

다음은 간단한 예제입니다. +++[-]이 프로그램은 현재 셀을 3으로 설정 한 다음 지 웁니다 (부품 번호가 [-] 인 것을 자주 보게됩니다. 이것은 원래 값이 무엇이든간에 셀을 0으로 설정하는 데 사용됩니다). 였다). 그런 다음 첫 번째 [을 발견하고 무시합니다 (단지 마커라고 생각할 수 있습니다). 그런 다음 -을 실행하고 첫 번째 셀은 이제 ]을 만난 후 2가됩니다. 현재 셀에는 2가 있으므로 2가 0보다 크기 때문에 [으로 점프합니다. 셀의 값이 0이 될 때까지이 작업을 두 번 더 수행합니다. 셀에 0이 있고 프로그램에서 ]을 다시 만나면 현재 셀에 0이 있으므로, 으로 점프하는 대신 현재 셀에 0이 표시됩니다. 프로그램은 계속 오른쪽으로 진행됩니다 (이 프로그램은 ] 이후에 더 이상 지침이 없으므로이 작은 프로그램이 종료됨을 의미합니다)

관련 문제