タートルに命令する
進む・曲がる,たった 2 つの命令から始めます.
プログラミングとは,コンピュータに「何を」「どの順番で」やらせるかを 書き並べる作業です.コンピュータは気を利かせてくれません.書いたとおりに, 書いた順番どおりに動きます.そのかわり,何万回でも文句を言わずに繰り返します.
最初の相手はタートル(かめ)です.画面にいるかめに 「前に進め」「右を向け」と命令すると,かめは通った跡に線を残します. たったこれだけの仕組みですが,命令の並べ方しだいで驚くほど複雑な絵が描けます.
いまは,経路検索も翻訳も集計も,コンピュータが一瞬で片付けてくれます. ただしコンピュータは,自分から気を利かせて何かをしてくれるわけではありません. どんな情報を,どういう手順で扱うのかを, あらかじめ人間が書いて渡しておく必要があります. その「書いて渡すもの」がプログラムです. プログラミングを学ぶというのは, コンピュータに仕事のやり方を説明できるようになるということです.
- 右側のコード欄でプログラムを実行し,結果を確かめられる
fd・bk・lt・rtを使って,思ったとおりの図形が描ける- 正多角形を描くときの角度を自分で計算できる
- ペンの上げ下げと色・太さを使い分けられる
- プログラムの記号の読み方がわかり,全角文字の混入を自分で直せる
- プログラムの流れには順次・分岐・反復の 3 つしかないことを説明できる
- エラーの読み方と,バグの見つけ方の手順がわかる
Ctrl + Enter)を押すだけです.
- 右下は「タートル画面」と「コンソール」のタブに分かれています.絵は「タートル画面」,
printの結果とエラーは「コンソール」に出ます. - 書きかけのコードはブラウザが覚えているので,ページを閉じても消えません.元に戻したいときは「↺ 最初から」を押します.
- 真ん中の細い縦線・横線はドラッグすると動かせます.コード欄を広げたいときに使ってください.
- 上の「教材」「コード」の
A- A A+で,文字の大きさを別々に変えられます. - タートル画面のタブの右に「画面
-620 × 460+」があります.これはかめが動ける範囲そのものの大きさです.+を押すと画面が広くなり,プログラムはその場で動かし直されます.広い画面に入りきらないところは,スクロールバーで見てください.真ん中の数字を押すと,もとの大きさに戻ります.
2.1 まずは動かしてみる
最初のプログラムです.右側で開いて,実行してみてください.
print("こんにちは")
print(1 + 2)
右下の「コンソール」に こんにちは と 3 が出れば成功です.
print は「書き出す」という命令で,かっこの中に書いたものを表示します.
文字は "(ダブルクォート)で囲み,数はそのまま書きます.
1 + 2 が 3 になったように,かっこの中では計算もできます.
右側の中身を書き換えて,もう一度実行してみましょう.自分の名前を表示させたり,
1 + 2 を 7 * 8 に変えたりしてください(* はかけ算です).
print("こんにちは") は,人間に読める言葉です.
ところがコンピュータの中身が直接あつかえるのは,
0 と 1 だけで書かれた命令(機械語)だけです.
ですから,人間の書いたプログラムは,必ずどこかで翻訳されています.
翻訳のやり方には,大きく 2 つあります.
| 方式 | やり方 | たとえるなら | 例 |
|---|---|---|---|
| コンパイル方式 | 実行する前に,プログラム全体をまとめて機械語に翻訳しておく.翻訳する作業をコンパイルという | 本を先に全部翻訳して,翻訳版を読む | C,C++,Java |
| インタープリタ方式 | プログラムを上から 1 行ずつ翻訳しながら,そのつど実行していく | 通訳者が横について,1 文ずつ訳してくれる | Python,JavaScript |
Python はインタープリタ方式です. 第 1 章で「どの Python で動くかを確かめる」という作業をしましたが, あれはこの通訳役の本体をどれにするかを決めていたのです.
方式の違いは,間違えたときの現れ方にも出ます. コンパイル方式なら,翻訳の段階で間違いが見つかるので,1 行も実行されません. インタープリタ方式の Python は,間違いのある行まで来て初めて止まります. つまり途中までは動いてしまうことがあるわけです. この様子は 2.7.2 項で実際に見ます.
2.2 プログラムの決まりごと
ここからが本題です.いきなり完成品を見てみましょう.家を描くプログラムです. 開いて実行してください.
# 家を描くプログラム from turtle import * # 屋根を描く lt(60) fd(100) rt(120) fd(100) rt(120) fd(100) # 本体(かべ)を描く lt(90) fd(100) lt(90) fd(100) lt(90) fd(100) lt(90) fd(100) done()
「速さ」を「とてもゆっくり」にして,もう一度実行してみてください. かめが 1 本ずつ線を引いていく様子が見えます.プログラムが 上から順に実行されていることが目で確かめられます.
2.2.1 プログラムは何でできているか
いま見たような,文字で書き並べたプログラムのことを ソースコードといいます.短くコードとも呼びます. この教材で「コード欄」と言っているのは,ソースコードを書く場所のことです.
このソースコードは,次の要素からできています.
| 要素 | 説明 |
|---|---|
from turtle import * | 道具箱を開ける命令.Python には最初から多くの道具が用意されていますが,使う前に「この箱を開けます」と宣言します.これを書かないと fd も lt も「そんな名前は知りません」と言われます. |
fd(100) | 命令.かめへの指示です.かっこの中の数を引数(ひきすう)といい,「どれだけ」を指定します. |
# 屋根を描く | コメント.# から行末まではコンピュータに無視されます. |
done() | 「ここでおしまい」の合図.引数がないので,かっこの中は空です. |
| 空行 | 意味のまとまりを区切るために入れます.あってもなくても動きは変わりません. |
2.2.2 命令の区切りは「改行」
Python では,1 行に 1 つの命令を書きます.
行を変えることが「ここで命令がひとつ終わり」という合図です.
行末に ;(セミコロン)のような記号は要りません.
fd(100) lt(90)
どうしても 1 行にまとめたいときは fd(100); lt(90) と書けますが,
読みにくくなるので,この教材では使いません.
2.2.3 コメントの書き方
コメントは人間のために書きます.コンピュータは読み飛ばしますが, 数日後の自分は必ず読みます. 「何をしているか」ではなく「なぜそうしているか」を書くと役に立ちます.
# これは行コメント.行末まで無視される fd(100) # 命令の後ろに書いてもよい """ 3 つ並べたダブルクォートで囲むと 何行でもまとめて書ける(ファイルの先頭の説明に使う) """
コメントにはもう一つ使い道があります.
いまは実行させたくない行の先頭に # を付けて,
一時的に無効にすることです.これをコメントアウトといいます.
消してしまうと書き直すのが面倒ですが,コメントアウトしておけば
# を外すだけで元に戻せます.
うまく動かない原因を探すときの常とう手段です(2.7.5 項).
2.2.4 行の先頭の空白には意味がある
Python では,行の先頭の空白(インデント)が文法の一部です. 意味もなく字下げするとエラーになります.
fd(100)
lt(90) ← いきなり字下げするとエラー
第 5 章以降,「ここからここまでが 1 つのかたまり」を表すために字下げを使います. 今回はすべての行を左端から書いてください.
2.2.5 記号の読み方
プログラムでは,ふだんの文章ではあまり使わない記号が次々に出てきます. 名前を知らない記号は,覚えることも質問することもできません. 先に読み方を押さえておきましょう.
| 記号 | 読み方 | 役割 |
|---|---|---|
# | シャープ/ハッシュ | コメント.ここから行末までは無視される |
" | ダブルクォート | 文字列を囲む."こんにちは" |
' | シングルクォート | 同じく文字列を囲む.この教材では " に統一します |
( ) | かっこ(丸かっこ) | 命令に渡すものを囲む.計算の順番を変えるときにも使う |
, | カンマ | 渡すものが 2 つ以上あるときの区切り.goto(100, 50) |
. | ピリオド/ドット | 小数点.「〜の中の〜」を表すときにも使う(第 3 章 random.randint) |
_ | アンダースコア/アンダーバー | 名前の中で単語を区切る.right_angle(第 3 章) |
* | アスタリスク | かけ算.from turtle import * の「全部」の意味でも使う |
/ | スラッシュ | 割り算 |
% | パーセント | 割り算の余り(第 3 章) |
= | イコール | 「等しい」ではなく代入(第 3 章) |
: | コロン | 「ここからかたまりが始まる」の合図(第 5 章・第 6 章) |
; | セミコロン | 1 行に複数の命令を書く区切り.この教材では使いません |
[ ] | 角かっこ/ブラケット | ものを並べるときに使う(第 16 章) |
{ } | 波かっこ/ブレース | f 文字列の差し込み口(第 3 章).辞書(第 18 章) |
(),” のような
全角の記号になってしまい,見た目は似ていてもエラーになります.
コードを書くときは必ず半角入力モードにしてください.
- 日本語キーボードでは,上の段の記号は
Shiftを押しながら打ちます.たとえば(はShift+8,"はShift+2です. _はShift+ろ(右下のキー)です.最初はまず見つからないので,いま一度押して確かめておいてください.
2.2.6 プログラムの流れは 3 つしかない
ここで一度,全体の見取り図を見せておきます. 世の中のプログラムは,どんなに大きく複雑なものでも, たった 3 つの流れの形の組み合わせでできています.
| 流れの形 | どういう形か | 身のまわりの例 | 習う回 |
|---|---|---|---|
| 順次(じゅんじ) | 上から下へ,書いた順に 1 つずつ実行していく | 料理のレシピ.手順どおりに進める | 今回 |
| 分岐(ぶんき) | 条件によって,進む道が分かれる | 雨なら傘を持つ.晴れなら持たない | 第 5 章 |
| 反復(はんぷく) | 決まったところを,何度もぐるぐる回る | ラジオ体操を 2 回繰り返す | 第 6 章 |
今回使うのは順次だけです. 家のプログラムが上から順に実行されたのも,これが順次の形だからです. ですから今回は,やりたいことを全部,順番に書き並べることになります. 同じ行が何度も並んで面倒に感じるはずですが,それでかまいません.
2.3 かめに出す基本の命令
2.3.1 進む — fd と bk
fd は forward(前へ),bk は back(後ろへ)の略です.
どちらも向きは変わりません.bk はかめが後ずさりします.
fd(100)bk(100) 向きはそのまま2.3.2 回る — lt と rt
lt は left(左へ),rt は right(右へ)の略です.
かっこの中には回る角度を書きます.
ここが初めのうちに間違えやすいところです.角度は
「どちらの方角を向くか」ではなく「その場で何度回るか」を表します.
lt(90)rt(90)lt(45)lt(90) を 2 回続けて書けば,合計 180 度回ることになります.
次のプログラムで角度を変えながら確かめてください.
from turtle import * fd(80) lt(120) # ここの数を変えてみる fd(80) done()
lt(120) の場合.次のプログラムは,右へ 120 進んでから上へ 80 進んで L 字を描くものです. ____ を埋めて完成させてください. 上を向くには,左と右のどちらへ何度回ればよいでしょうか.
from turtle import * pensize(3) fd(120) ____(90) fd(____) done()
2.3.3 ペンを上げる・下ろす
かめはペンを持っていて,進むと線を引きます.pu()(pen up)でペンを上げると,
進んでも線が引かれません.離れた場所に描きたいときに使います.
pd()(pen down)で下ろすと,また線を引くようになります.
from turtle import * fd(60) pu() # ペンを上げる fd(40) # ここは線が引かれない pd() # ペンを下ろす fd(60) done()
pu() と pd() の間は跡が残らない.2.3.4 色と太さ
pencolor で線の色,pensize で太さを変えます.
どちらもそれ以降に描く線に効きます.すでに描いた線は変わりません.
from turtle import *
pensize(6)
pencolor("red")
fd(80)
lt(120)
pencolor("green")
fd(80)
lt(120)
pencolor("blue")
fd(80)
lt(120)
done()
red blue green yellow
orange purple pink brown
black white gray cyan
magenta navy gold など多数あります.
"#ff8800" のように 16 進数で細かく指定することもできます
(赤・緑・青の強さを 00〜ff で並べた書き方です).
2.3.5 かめの初期位置と向き
プログラムを始めたとき,かめは画面の中央にいて,
右(東)を向いています.だから最初に fd と書くと右へ進みます.
画面には座標があり,中央が (0, 0),右が x の正の向き, 上が y の正の向きです.数学のグラフと同じ向きで,画面の座標としては 上下が逆(下向きが正)になっていない点に注意してください.
2.4 閉じた図形を描く
2.4.1 正方形 — 閉じた図形の考え方
「進む」と「曲がる」を交互に並べると,閉じた図形になります. 正方形なら 90 度ずつ 4 回曲がれば,元の位置・元の向きに戻ります.
from turtle import * fd(100) lt(90) fd(100) lt(90) fd(100) lt(90) fd(100) lt(90) done()
lt(90) で向きも元どおりになる.lt(90) は,図の形だけを見れば無くても同じです.
しかし向きが元に戻っていないと,続けて何かを描くときに必ず混乱します.
「描き終わったら,始めた状態に戻す」と決めておくと,
図形を組み合わせるときに楽になります.後の回で「関数」を習うと,この約束が効いてきます.
横 160・縦 80 の長方形を描きます. 4 つの ____ を埋めてください. 長方形も「1 周で 360 度」は変わりません.
from turtle import *
pensize(2)
pencolor("seagreen")
fd(160)
lt(90)
fd(____)
lt(90)
fd(____)
lt(____)
fd(____)
lt(90)
done()
2.4.2 正多角形と「外角」
正五角形では何度曲がればよいでしょうか.内角(108 度)ではありません. かめが曲がるのは外角です.
考え方はとても簡単です.図形を 1 周してもとの向きに戻るということは, かめは全部で 360 度回ったということです. 角が n 個あるなら,1 か所あたり 360 ÷ n 度回ればよい.
| 図形 | 角の数 n | 1 回に曲がる角度 (360÷n) |
|---|---|---|
| 正三角形 | 3 | 120 度 |
| 正方形 | 4 | 90 度 |
| 正五角形 | 5 | 72 度 |
| 正六角形 | 6 | 60 度 |
| 正八角形 | 8 | 45 度 |
| 正十二角形 | 12 | 30 度 |
lt(18) や lt(30) が付いているのは,
図形をまっすぐ座らせるためです(底辺を水平にする).
無くても同じ形が描けますが,少し傾きます.試してみてください.
1 辺 40 の正十角形を描きます.曲がる角度を自分で計算して, 10 か所の ____ を埋めてください. 360 を角の数で割るのでしたね.
from turtle import *
pensize(2)
pencolor("indigo")
fd(40)
rt(____)
fd(40)
rt(____)
fd(40)
rt(____)
fd(40)
rt(____)
fd(40)
rt(____)
fd(40)
rt(____)
fd(40)
rt(____)
fd(40)
rt(____)
fd(40)
rt(____)
fd(40)
rt(____)
done()
2.4.3 星はなぜ 144 度なのか
星(五芒星)は,1 周ではなく2 周しながら描く図形です. 5 か所で合計 720 度回るので,1 か所あたり 720 ÷ 5 = 144 度になります.
from turtle import *
pensize(3)
pencolor("gold")
fd(150)
rt(144)
fd(150)
rt(144)
fd(150)
rt(144)
fd(150)
rt(144)
fd(150)
rt(144)
done()
2.5 曲線を描く
かめは直線しか引けません.では円はどうやって描くのでしょうか. 答えは「ごく短い直線を,少しずつ向きを変えながらつなぐ」です.
from turtle import * # 右まわりの円弧 rt(5) fd(5) rt(5) fd(5) rt(5) fd(5) rt(5) fd(5) rt(5) fd(5) rt(5) fd(5) rt(5) fd(5) rt(5) fd(5) rt(5) fd(5) rt(5) fd(5) # 左まわりの円弧 lt(5) fd(5) lt(5) fd(5) lt(5) fd(5) lt(5) fd(5) lt(5) fd(5) lt(5) fd(5) lt(5) fd(5) lt(5) fd(5) lt(5) fd(5) done()
やってみよう:角度と長さを小さくすると,もっとなめらかになります.
rt(2) と fd(2) にしたらどうなるでしょうか.
逆に rt(20),fd(20) にすると何が起きるでしょうか.
rt(5); fd(5) を 72 回繰り返せば,ちょうど 1 周して円になります
(5 度 × 72 = 360 度).つまり円の正体は正 72 角形です.
ただし 72 回も書くのは大変です.第 6 章で習う「繰り返し」を使うと 3 行で書けます.
ちょうど 90 度ぶんの弧を描きます.
rt(10) と fd(12) の組を何回繰り返せばよいでしょうか.
必要な回数だけ行を増やし,____ を埋めてください.
rt(10) と fd(12) を書き足してください.
from turtle import *
pensize(3)
pencolor("darkcyan")
rt(____)
fd(12)
rt(10)
fd(12)
rt(10)
fd(12)
# ここから下に必要なだけ書き足す
done()
2.6 描き始める位置を変える
かめは必ず中央から始まります.別の場所から描き始めたいときは, ペンを上げて移動してから,ペンを下ろすのが基本です.
pu() # ペンを上げて bk(100) # 左へ 100 下がって pd() # ペンを下ろす
行き先の座標がわかっているなら,goto(x, y) で一気に移動できます.
home() と書けば,中央・右向きの最初の状態に戻ります.
from turtle import * pensize(2) # 左の正方形 pu() goto(-180, -40) pd() fd(80) lt(90) fd(80) lt(90) fd(80) lt(90) fd(80) lt(90) # 中央の正方形 pu() goto(-40, -40) pd() fd(80) lt(90) fd(80) lt(90) fd(80) lt(90) fd(80) lt(90) # 右の正方形 pu() goto(100, -40) pd() fd(80) lt(90) fd(80) lt(90) fd(80) lt(90) fd(80) lt(90) done()
goto で場所を変えながら同じ図形を描く.画面の 4 すみの近くに,色の違う点を打ちます.
座標を考えて ____ を埋めてください.
画面は横 620・縦 460 なので,中央から見て右端は x が約 300,
上端は y が約 210 です.dot(20) はその場に直径 20 の点を打つ命令です.
from turtle import *
ht()
pu()
goto(-250, 180)
pencolor("crimson")
dot(20)
goto(____, 180)
pencolor("royalblue")
dot(20)
goto(-250, ____)
pencolor("seagreen")
dot(20)
goto(____, ____)
pencolor("darkorange")
dot(20)
done()
2.7 エラーの読み方と直し方
プログラムは,最初から思いどおりに動くことのほうが稀です. プロでも同じです.大切なのは間違いを早く見つけて直せることで, 一発で当てることではありません.
2.7.1 文法の間違い(SyntaxError)
書き方そのものが Python の決まりに合っていないと, 1 行も実行されずに止まります. 次のプログラムはかっこが閉じていません.開いて実行し,エラーを見てください.
from turtle import * fd(100 lt(90) fd(100) done()
SyntaxError と表示されます.「文法(syntax)の誤り」という意味です.
示された行に間違いが見当たらないときは,その 1 つ上の行を疑ってください.
かっこの閉じ忘れは,次の行まで読んで初めて「おかしい」と気づかれるためです.
2.7.2 名前の間違い(NameError)
次は,書き方は正しいけれど,そんな名前の命令が無い場合です.
from turtle import * fd(100) LT(90) fd(100) done()
4 行目: NameError: name 'LT' is not defined と出ます.
「4 行目の LT という名前は知りません」という意味です.
Python は大文字と小文字を区別するので,lt に直せば動きます.
この種のエラーは途中まで実行されてから止まります.
実際,タートル画面には最初の fd(100) の線が残っているはずです.
どこまで描けているかを見れば,どこで止まったかがわかります.
2.7.3 目に見えない間違い(全角文字)
いちばんたちが悪いのが,全角文字の混入です. 日本語入力のまま打ってしまったときに起こります. 次のプログラムには 2 か所しかけてあります.開いて実行し,直してみてください.
from turtle import *
pensize(3)
pencolor("crimson”)
fd(100)
lt(90)
fd(100)
done()
まず SyntaxError: invalid non-printable character U+3000 と出ます.
U+3000 は全角スペースのことです.
3 行目の pensize(3) の前に,見えない全角スペースが 1 つ入っています.
行の先頭にカーソルを置いて Backspace で消してください.
字下げのつもりが無くても,全角スペースがあれば文字として扱われます.
直すと,今度は
SyntaxError: unterminated string literal(文字列が閉じられていない)が出ます.
4 行目の閉じ側が ”(全角)になっているためです.
半角の " に打ち直せば,赤い線が引かれます.
2.7.4 初めのうちに多い間違い
| 症状 | 原因と直し方 |
|---|---|
SyntaxError: invalid non-printable character | 全角スペースが混じっている.見えないので,その行を全部打ち直すのが速い |
SyntaxError: invalid character | 全角の記号が混じっている.(),;は使えない.半角に直す |
SyntaxError: unterminated string literal | " の閉じ忘れ,または閉じ側が全角の ” になっている |
NameError | 命令の綴りか大文字・小文字の間違い.fd を FD や fw と書いていないか.pencolor を pencolour と書く間違いも多い |
IndentationError | 行の先頭に余計な空白がある.今回は全部の行を左端から書く |
NameError: name 'fd' is not defined | 1 行目の from turtle import * を書き忘れている |
| エラーは出ないが形が変 | バグ.角度か長さの数が思っているものと違う.2.7.5 項へ |
2.7.5 バグを見つける手順
エラーが出ないのに思ったとおりの形にならないことをバグといい, それを直すことをデバッグといいます. コンピュータは必ず命令したとおりに動きます. つまりバグは,コンピュータではなく命令した側の間違いです.
- 速さを「とてもゆっくり」にして実行する.かめがどこで思っていない方向に曲がったかを目で追う.これが一番速い.
- 途中まで消す.怪しいところより後ろを全部コメントにして(各行の先頭に
#を付けて),そこまでは正しいかを確かめる. - 紙に描いてみる.かめの気持ちになって,自分の体の向きを変えながらたどってみると,角度の間違いはすぐ見つかる.
- 少しずつ書いて,そのつど実行する.20 行書いてから実行すると,間違いが 20 行のどこにあるかわからない.2〜3 行書いては実行する人のほうが,結果的にずっと速い.
print は,デバッグの道具としても使えます.
たとえば print(xcor(), ycor()) と書けば,
その時点のかめの座標がコンソールに出ます.
「思っている場所に本当にいるのか」を確かめられます.
2.8 この章で出てきた命令
| 命令 | 意味 |
|---|---|
from turtle import * | タートルの命令を使えるようにする(1 行目に書く) |
fd(長さ) | 前へ進む(forward).forward(長さ) とも書ける |
bk(長さ) | 後ろへ下がる(back).向きは変わらない |
lt(角度) | 左へ回る(left).その場で向きだけ変える |
rt(角度) | 右へ回る(right) |
pu() | ペンを上げる(pen up).進んでも線が残らない |
pd() | ペンを下ろす(pen down) |
goto(x, y) | 指定した座標へ移動する.中央が (0, 0) |
home() | 中央・右向きの最初の状態に戻る |
pencolor(色) | 線の色を変える.例 pencolor("red") |
pensize(太さ) | 線の太さを変える |
ht() | かめの姿を隠す(hide turtle).仕上げに使う |
write(文字) | その位置に文字を書く |
print(…) | コンソールに書き出す |
done() | プログラムの終わり |
演習
____ の部分だけを埋める短い練習です.
まだ埋め残しがある状態で実行すると,その旨を知らせて止まります.
ここから先は,出発点のプログラムを自分で伸ばしていく課題です.
以下の演習には,出発点となるプログラムが入っています. 「▶ この演習を開く」で右側に読み込み,それを発展させて作品にしてください. できあがったら「⤓ 保存」でファイルに保存して,手元に残しておきましょう.
正五角形を描くプログラムを与えます.これを参考に,
大きさの違う 2 つ以上の正五角形を組み合わせて模様を描いてください.
どんな模様でもかまいません.位置をずらすには pu() と
goto() を使います.
正六角形を描くプログラムを与えます. 大きさの違う 2 つ以上の正六角形で模様を描いてください. 六角形は敷き詰めることができます(蜂の巣を思い出してください). 並べてみるのも面白いでしょう.
正八角形を描くプログラムを与えます. 大きさの違う 2 つ以上の正八角形で模様を描いてください. 少しずつ回しながら重ねると,花のような模様になります.
星を描くプログラムを与えます. 大きさの違う 2 つ以上の星で模様を描いてください. 色を変えたり,向きを変えて重ねたりしてみましょう.
「こんぺいとう」を描くプログラムを与えます.
fd(25) → rt(90) → fd(25) → lt(45) の繰り返しでとげを作っています.
この考え方をもとに,とげの数や長さを変えて,別の形に発展させてください.
正三角形を組み合わせた「トライフォース」を描くプログラムを与えます. 三角形の中に三角形が入った形です. 段数を増やしたり,色を塗り分けたりして発展させてください.
ここまでの命令だけを使って,好きな絵を描いてください. 自分の名前の頭文字,家,旗,ロボット,キャラクター — 何でもかまいません.
- 色(
pencolor)と太さ(pensize)を必ず使うこと pu()とpd()で,離れた部分も描くこと- 先頭にコメントで,題名・氏名・日付を書くこと
- 仕上げに
ht()を入れると,かめが消えて作品らしくなる
まとめ
- プログラムの流れの形は順次・分岐・反復の 3 つだけ.今回使ったのは順次で,プログラムは上から順に実行される.
fdで進み,lt・rtで向きを変える.この 2 つだけで図形が描ける.- 角度は「その場で何度回るか」.閉じた図形を 1 周すると合計 360 度になるので,正 n 角形の角度は 360 ÷ n.
- 曲線は,短い直線を少しずつ曲げてつないだもの(ディジタル表現).
- 描き始める位置を変えるときは
pu()→ 移動 →pd(). - エラーは行番号と種類を読む.とくに多いのは全角文字の混入.半角入力モードで書くこと.形がおかしいときは速度を落とし,少しずつ書いて確かめる.
次の回では,「100」のような数に名前をつけて覚えさせる変数を習います. 家の大きさを 1 か所変えるだけで全体が拡大・縮小できるようになります.