ClauText - Old

반복문

 

 C, C++등의 언어에서 for, while뿐만아니라 재귀함수 호출을 통해서도 

반복문의 효과를 얻을 수 있다.

  ClauText에서는 if문과 재귀Event호출(함수대신 Event) 로 반복문의 효과를 얻을 수 있다.

아래는 반복문의 대표적인 예인 구구단의 ClauText 코드 이다. ( 일반적인 for보다 복잡하다. )

 
# Data
x = 9
y = 9
 
# main and events.
Main = {
    $call = { id = 0 }
}
 
Event = {
    id = 0
 
    $call = { id = 1 i = 1 j = 1 }
    $_getch = { } # pause
}
 
Event =
{
    id = 1
 
    $option = { REMOVE_IF_CALL_ONESELF_EVENT } # REMOVE_IF_CALL_ONESELF_EVENT.
    $parameter = { i j }
    
    $if = {
        condition = { $COMP<EQ = { $parameter.i /./x } }
        then = {
            $call = { id = { $concat = { x $add = { 1 1 } } } i = $parameter.i j = 1 }
            $call = { id = 1 i = { $add = { $parameter.i 1 } } j = 1 }
        }
    }
}
 
Event =
{
    id = x2
    $parameter = { i j }
    $option = { REMOVE_IF_CALL_ANY_EVENT }
 
    $if = {
        condition = { $COMP<EQ = { $parameter.j /./y } }
        then = {
            $print = { value = { $parameter.i } }
            $print = { value = { " * " } }
            $print = { value = { $parameter.j } }
            $print = { value = { " = " } }
            $print = { value = { $multiple = { $parameter.i $parameter.j } } }
            $print = { value = { \n } }
            $call = { id = x2 i = $parameter.i j = { $add = { $parameter.j 1 } } }
        }
    }
    $print = { value = { \n } }
}

 이제 ClauText에서 while이 지원된다.(단, 형태는 $while = { condition = { ~~ } then = { ~~ } } 이다.

아래는 위의 코드를 while를 이용하여 바꾼 코드 이다.

Main = { $call = { id = 0 } }

Event = {
	id = 0

	$local = { i j }
	$assign = { $local.i value = { 1 } }

	$while = {
		condition = { 
			$COMP<EQ = { $local.i 9 } 
		}
		then = {
			$assign = { $local.j value = { 1 } }
			$while = {
				condition = {
					$COMP<EQ = { $local.j 9 }
				}
				then = {
					$if = { 
						condition = { $EQ = { 0 $modular = { $local.j 2 } } }
						then = {							
							$print = { data = { $local.i } }
							$print = { data = { " * " } }
							$print = { data = { $local.j } }
							$print = { data = { " = " } }
							$print = { data = { $multiple = { $local.i $local.j } } }
							$print = { enter = { \n } }
						}	
					}		
					$assign = { $local.j value = { $add = { 1 $local.j } } }		
				}
			}
			$print = { data = { ------- } }
			$print = { enter = { \n } }
			$assign = { $local.i value = { $add = { 1 $local.i } } }
		}
	}

	$_getch = { }
}

 

댓글

댓글 본문