自前の命令の作りかた 🔰
CIRCLE
や SQUARE
などの命令のような,図形を描く描く命令を自分で作る方法を紹介します.
このあとは,自前の命令のことを関数と呼ぶことにします※1.
さいしょは長さ 1cm の直線定規を描く関数を作ってみましょう. 関数を作るときは,少なくとも次の 2 つを考える必要があります.
- 名前
- その命令にふさわしい名前をつけましょう.
ただし,
CIRCLE
やSQUARE
のように,LibreLogo であらかじめ用意されている命令と同じ名前にならないようにします.- 今は 1cm の直線定規を作りたいので,
ruler1cm
という名前を付けることにします※2. - 今は 1cm の直線定規を作りたいので,
- 機能
- その命令は何をするのかを,なるべく具体的に考えましょう.
- 今は,ただの直線を描くだけではなく,両端に長さ 2mm の目盛りをつけることにします※3.
ruler1cm
関数と,それを呼びだして定規を描くプログラムは次のように書けるでしょう.
TO ruler1cm
FD 2mm
RT 90
FD 1cm
RT 90
FD 2mm
END
ruler1cm ; 関数を呼びだす
関数は TO
と END
の間に書きます.
これを関数定義と呼びます.
呼びだすまえに関数定義をしなければならないことに注意してください.
動作チェックがうまくいったら,関数を呼びだす ruler1cm
の数をふやすか,REPEAT
命令で ruler1cm
をくり返し呼びだしてみてください.
まっすぐな定規にならず,ぐるぐると長方形を描いてしまうはずですが,なぜそうなるかよく考えましょう.
理由がわかったら,くり返し呼びだしたときにまっすぐな定規が描けるように関数定義を修正しましょう.
関数を作るときは,その関数の処理が終わったときにタートルがどこにいて,どちらを向いているようにするのがよいか,注意する必要があることがわかったでしょうか.
ここまでうまくいったらプリンタで印刷して,正確な定規ができたかどうか測ってみるとよいでしょう※4.
引数を使う関数の作りかた 🔰
たった 1cm の定規ではあまり実用的とはいえません.
描きたい長さを指定したら,その長さの定規を描いてくれる関数にできると便利ですね.
そこで,定規を描く関数 RULER
を作成し,引数として描きたい長さを指定できるようにしてみましょう.
また,目盛の間隔も,もっと細かいほうが実用的ですが,ぜんぶ同じ長さの目盛では数えにくくなりそうです. そこで,2mm 間隔で短い目盛を,1cm 間隔で長い目盛をつける工夫をしてみましょう.
TO cal :L ; 長さ :L の目盛を描く関数
LT 90
FD :L
PU
BK :L
PD
RT 90
END
TO ruler :N ; 長さ :N cm の定規を描く関数
cal 4mm ; 長い目盛
REPEAT :N [
REPEAT 4 [
FD 2mm
cal 2mm ; 短い目盛
]
FD 2mm
cal 4mm ; 長い目盛
]
END
ruler 5
ちなみに,ある文房具メーカーの定規は,目盛の長さを少しずつ長く描いていき,1cm になると元にもどすことで,さらに読みとりやすくしているそうです. だれにでも使いやすくするための工夫をユニバーサルデザインといいますが,ぜひとり入れてみてください.
うまくできたらプリンタで印刷して,正確な定規ができたかどうか測ってみるとよいでしょう※4.