事前準備
課題に取り組む前に「仮想型端末(VDI)」で次の手続きを行ってください(仮想型端末の上で実行することを想定しています). 今後の課題のために環境を更新します.
- PandAから次のファイルを「Home」にダウンロードしてください.
リソース > 01_設定ファイル > update_20251015.sh
-
端末(Terminal)で次のコマンドを実行してください.
$ bash update_20251015.sh ⏎
なお「$」は端末画面に最初から出ている「プロンプト」を表しています.これは入力しません.
このコマンドを実行すると,次のように表示されます(表示されるメッセージの一部のみ掲載しています).
+ cd /home/xxxxxxxx/lib/ruby/gtr : : turtle.rb 100%[===================>] 22.82K --.-KB/s in 0.02s 2025-10-14 19:34:15 (950 KB/s) - ‘turtle.rb’ saved [23363/23363] : : + /bin/rm -f update_20251015.sh
最後に上のように表示されていれば設定の更新は完了です. 更新が完了した時点でダウンロードしたファイル(update_20251015.sh)は削除されます.
[オプション] ページのスーパーリロード(強制的な再読込)
授業ポータルサイトのスタイルに(若干)手を加えたため, (これまで授業ポータルサイトを利用していた場合は)このページをスーパーリロード(強制的に再読込)してみてください. 期待通りであれば,見え方が(若干)変わるはずです.
Chrome(Linux版)では次の操作でスーパーリロードできます([Ctrl]を押しておいてから,[F5]を一瞬押す.[F5]を離すときに[Ctrl]も同時に離す).
[Ctrl] + [F5]
課題
課題に取りかかる前に「タートルグラフィクス」のページをよく読んでください.
目次
プログラムテンプレート
次に示すテンプレート(雛型)をダウンロードして利用してください.
このテンプレートには亀の動作以外は全て書いてあります. 亀の動作の記述を追加してプログラムを完成させてください. 亀の動作は次に示すように「def draw」の次の行から「end」の前の行までに順に記述します.
プログラムの他の部分は変更する必要はありません. キャンバスのサイズは変えてみてもよいでしょう.
class Turtle
def draw
##
## ここに亀の動作を記述する
## (def draw...endの間に記述する)
##
end
end
# キャンバスの幅と高さ
WIDTH = 800 # 幅 = 800(変更可)
HEIGHT = 600 # 高さ = 600(変更可)
ファイル名の決め方
テンプレート(gtr_template.rb)はダウンロードする際に名前を適宜変えて保存してください. ファイル名の文字は(いわゆる半角の)英数字のみとして,最後は「.rb」で終わるようにしてください(そうすればEmacsでファイルがRubyのプログラムであると自動判別されます). ファイル名を決めるにあたっては, ファイル名を見たときに何のプログラムなのかを思い出せるようにして, また今後同様にこの演習でプログラムを作っていくことも考慮するとよいでしょう.
ダウンロードの方法と保存先の指定
テンプレート(gtr_template.rb)をダウンロードするにはリンクを右クリックして「名前を付けてリンク先を保存...」を選びます. ダウンロード先はHomeにしてください.
関連資料
サンプルプログラム
- gtr_square.rb(正方形を描く)
- gtr_square_fill.rb(塗りつぶされた正方形を描く; fill,hoverの例)
- gtr_simple_star.rb(星形を描く)
- gtr_two_stars.rb(星形を二つ描く; hoverの例)
- gtr_sprout.rb(植物の芽を描く; circle,mark,backの例)
- gtr_simple_star_fill.rb(塗りつぶされた星形を描く)
- gtr_meta.rb(亀を描く)
プログラミングに関する注意
演習では次のことに注意してください.
- Emacs,Terminalの基本的な使い方については次のページを参照してください.
このページの「Tips(hint)」も参照してください.
- プログラムを変更したら必ず保存してください.
- タートルグラフィクスのプログラムは実行開始時にしか読み込まれません.
そこでプログラムを変更したときに,すでにプログラムを動かしていた(タートルグラフィクスの画面が出たままになっていた)のであれば,一旦終了してから再度実行してください.
- プログラムを実行してエラーがでたら「よくある質問」を参照してみてください.
もちろん分からないことがある場合には演習中に質問してください.
- プログラムには適宜「コメント」を入れてください(以下を参照のこと)
- プログラムを提出する際には「課題提出に関する注意」を必ず守るようにしてください.
プログラムにコメントを書こう
すでに説明したとおり,提出するプログラムには適宜コメントを入れるようにしてください. コメントとはプログラムの理解を助けるための注釈です. 詳しくは次の資料を見てください.
Tips(hint)
以下,課題に取り組むにあたって,知っておくとよさそうなtips(hint)を示します.
コマンドの「履歴」を利用する
Terminal(端末)でカーソルキーの[↑]を押すと前に入力したコマンドがでてきます. コマンドが表示されたら,[Enter]で実行できます. 一度入力したコマンドを何度も入力する必要はありません.
プログラムを切り貼りする(Emacs)
プログラムで似たような処理をいくつも書く場合に,すべて手で入力する必要はありません. コピーしてから必要に応じて書き換えた方が楽です. 以下にEmacsでコピーと貼り付けを行う方法を示します.
まずマウス(3ボタン)を使えば,次のようにコピーと貼り付けができます.
- コピーしたい部分の最初から最後までをマウスの左ボタンを押しながらドラッグしてなぞる.
- 貼りつけたい場所で,マウスの中ボタンを押す.
次のようにメニューを使う方法もあります.
- コピーしたい範囲をドラッグして選択しておく
- メニューの「Edit」から「Copy」でデータをコピーする
- メニューの「Edit」から「Paste」で貼り付ける
また次のようにキーボード操作を使う方法もあります.
| [Ctrl]+[k] | カーソルの位置から行末までを切り取る |
| [Ctrl]+[y] | 切り取ったテキストを貼り付ける |
連続して[Ctrl]+[k]を入力すれば,一連の行を切り取ることができます.
連続して切り取った行は[Ctrl]+[y]で一度に貼り付けできます.
キーの組み合わせが独特ですが,このような「コマンド入力」を習得すると,
キーボードから手を離す必要がなくなります.
数学関数,定数
数学で使われる関数や定数はRubyでは「Math.関数名(パラメタ)」,「Math::定数名」のように記述して使います.
| 関数・定数 | Rubyでの記法 |
|---|---|
| sin x | Math.sin(x) |
| cos x | Math.cos(x) |
| tan x | Math.tan(x) |
| xの平方根 | Math.sqrt(x) |
| π | Math::PI |
三角関数のパラメタはラジアンで与えます. 円周率の定義「Math::PI」の「PI」は大文字のアルファベットです.
タートルグラフィクスでの数学関数など
利便性のため,「タートルグラフィクス」の動作の記述においては,次のようにして,「度」(degree)をパラメタに指定する三角関数(sin,cos,tan)が利用できるようになっています.
class Turtle
def draw
# キャンバスのx軸正の方向から左回りで45度の方向へ100進む
move(100*cos(45),100*sin(45))
end
end
平方根は「Math」を省略して利用できます.
class Turtle
def draw
# 100√2進む(Rubyでの標準的な書き方)
forward(100*Math.sqrt(2))
turn(90)
# 100√2進む(こう書いてもOK)
forward(100*sqrt(2))
end
end
また次も用意しています.
- hypot(x,y): 底辺の長さx,高さyの直角三角形の斜辺の長さ
これはRubyで標準で使える「Math.hypot(x,y)」と同じ関数です.
四則演算に関する注意
- 乗算: 演算子は「*」です.数学のように「*」を省略することはできません. 乗算では常に「*」を記述してください(括弧でくくっている場合も含みます).
- 除算: 演算子は「/」です.ただし「整数/整数」の値は「商」になりますので注意してください. たとえば,1/2=0となります.
- 演算の優先順位:
数学と同じです.括弧で優先順位を明示できます. ただし計算式での括弧には常に( … )を使います. したがって,式によっては( … )で括られた内部に ( … )が現れることもあります. { … }や[ … ]は使いません.
日本語の入力
仮想型端末のLinuxで日本語を入力するには次のようにします.
- 予め「入力ソース」を「日本語 (Mozc)」に設定します
入力ソース設定 画面右上の『ja▼』からメニューを開いて選択
- 英数字/日本語入力を切り替えるには次のようにします.
※ Windowsの場合(Macの場合は[かな]/[英数]を試してみてください)「英数字/日本語」の入力切替
[半角/全角]を押す(※) 画面右上の『A▼』からメニューの「入力モード」で選択
→「ひらがな」(日本語)/「直接入力」(英数字)
上の方法で日本語入力ができない場合,Emacsで次のようにしてみてください.
|
「英数字/日本語」の入力切替(Emacs) |
[Ctrl]+[\] |
Ctrlキーを押した状態で,バックスラッシュ(あるいは¥)を(一瞬)押します. なおこの「英数字/日本語」切替方法が使えるのはEmacsのみです.
さらにVDIのメニューボックスからクリップボードを開いて利用する方法もあります.
日置尋久(HIOKI Hirohisa)
Last modified: Sun Oct 12 16:25:14 JST 2025