くり返し回数と条件分岐を使ってみよう 🔰
前回の楕円を描くプログラム例では,外枠として正方形REPEAT
命令のくり返しが 2 回になっていておかしいと感ELLIPSE
命令を使うことができるなら,ほかの例と同REPEAT
命令のくり返しを 4 回にして 4 本の直線
REPEAT
命令の [
と ]
の中で,現在REPCOUNT
を使います※1.
今回REPCOUNT
が 奇数ELLIPSE
命令を実行するようにすればよさそうです.
ある数%
を使うと求めることができます※2.
条件が成IF
文
REPEAT 4 [
IF REPCOUNT%2 = 1 [ ELLIPSE [200, 200, 0h, 3h, 2] ] ; くり返し回数が奇数のときだけ実行
FD 100
RT 90
]
条件が成り立っているときと,成り立っていないときで異
:L = 100
REPEAT 6 [
IF REPCOUNT%2 = 1 [
ELLIPSE [:L, :L, 0h, 4h, 3] ; くり返し回数が奇数のとき
][
ELLIPSE [:L, :L, 4h, 0h, 3] ; くり返し回数が奇数ではない(偶数の)とき
]
PU
FD 100
RT 60
PD
]
つづいてこのプログラムの 1 行目の :L
に代入200
に変更して,動作させてみてください.
同じプログラムが描いたとは思えないほど図形の形が変わるとは思いませんか.
実IF
文など使わなくても,次のように書くこともできます※4.
:L = 100
:S = 0h
:E = 4h
REPEAT 6 [
ELLIPSE [:L, :L, :S, :E, 3]
:T = :S
:S = :E
:E = :T
PU
FD 100
RT 60
PD
]
そのほかのくり返し命令 🔰
LibreLogo で利用できるくり返し命令を紹介します.
比較
REPEAT
- これまでにたびたび使ってきた,回数を指定するくり返し命令です.
REPEAT 6 [ FD 1cm * REPCOUNT RT 90 FD 1cm * REPCOUNT RT 90 ]
FOR ... IN
- リストを使ったくり返しの命令です.
- 次の例では
[1cm,2cm,3cm,4cm,5cm,6cm]
というリストの中から,さいしょは1cm
,次は2cm
と 1 つずつ取り出して:X
の値としてくり返しを実行します.動作を確かめたら,リストを[2cm,1cm,2cm,3cm]
と書きかえて実行してみてください.FOR :X IN [1cm,2cm,3cm,4cm,5cm,6cm][ FD :X RT 90 FD :X RT 90 ]
- 次の例では
WHILE
- 条件が成りたっているうちは,くり返しつづけるという命令です.
- 次の例では
:L
が 7 より小さいあいだ,くり返しが続きます※5. 動作を確かめたら,下から 2 行めを:L = :L + 0.2
のように書きかえて実行してみてください. 実行するときは目を回さないよう気をつけてください.:L = 1 WHILE :L < 7 [ FD :L * 1cm RT 90 FD :L * 1cm RT 90 :L = :L + 1 ]
- なお,
WHILE
は,ほかの 2 つにくらべるとちょっとキケンかもしれません. 条件を7 > :L
のように書いてしまったり,:L = :L + 1
を書き忘れたりすると,いつまでもくり返しが終わらないことになってしまいます※6. タートルが狂くる ったように走はし り回るプログラムを実行してしまったときは,LibreLogo ツールバーの停止ていし アイコンをクリックして,タートルを助たす けてあげましょう. - 次の例では