repeat & break – flow control “REPEAT” & “BREAK”

repeat & break – flow control “REPEAT” & “BREAK”
使用例1: repeat{rcmd;if(expression){break}}
概要1: expressionが満たされていない限りrcmdが繰り返し実行される。
    (備考:expressionが満たされていても、rcmdが一度は必ず実行される)
使用例2: repeat{if{expression){break}; rcmd2}
概要2: expressionが満たされていない限りrcmdが繰り返し実行される。
    (備考:expressionが満たされていている場合、rcmdが一度も実行されない)
関連: for, while,

# usage #
repeat {
  rcmd
  if (expression) {break}
}
# and/or
repeat {
  if (expression) {break}
  rcmd
}

##### ----- examples ----- #####
# 1から5までカウントし、表示する       #
> counter=0
> repeat {
+   counter=counter+1
+   print(counter)
+   if (counter==5) {break}
+ }
[1] 1
[1] 2
[1] 3
[1] 4
[1] 5

# printYesNoが真の場合、1から3までカウントし、終わりに"done"と表示する#

# printYesNoが真の場合の例。3までカウントすることが終了条件      #
> printYesNo=T;counter=0
> repeat{
+  counter=counter+1
+  print(counter)
+  if (counter==3){
+    print("Done")
+    break
+  }
+  if (printYesNo==F){break}
+ }
[1] 1
[1] 2
[1] 3
[1] "Done"

# printYesNoが偽も場合の例。終了条件をみたしているが実行している    #
> printYesNo=F;counter=0
> repeat{
+  counter=counter+1
+  print(counter)
+  if (counter==3){
+    print("Done")
+    break
+  }
+  if (printYesNo==F){break}
+ }
[1] 1

# printYesNoが偽も場合の例。終了条件の位置を変更すると実行されない   #
> printYesNo=F;counter=0
> repeat{
+  if (printYesNo==F){break}
+  counter=counter+1
+  print(counter)
+  if (counter==3){
+    print("Done")
+    break
+  }
+ }
##### ----- end examples ----- #####

Leave a Reply