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 = { }
}