2011年04月27日

ドリトルその4

前回、課題1)で終わってしまったので続きをさせました。前回書き忘れましたが、これらの課題は以前ブログに書いたものを使っています。

ちなみに解答例は次のような形ですが、特に示しません。課題2)の簡略した形のみ見せました。

解答例−課題1)
かめた=タートル!作る。
かめた!100 歩く。
かめた!90 右回り。
かめた!100 歩く。
かめた!90 右回り。
かめた!100 歩く。
かめた!90 右回り。
かめた!100 歩く。
かめた!90 右回り。


解答例−課題2)
かめた=タートル!作る。
かめた!100 歩く 90 右回り。
かめた!100 歩く 90 右回り。
かめた!100 歩く 90 右回り。
かめた!100 歩く 90 右回り。

または、
かめた=タートル!作る。
かめた!100 歩く 90 右回り 100 歩く 90 右回り 100 歩く 90 右回り 100 歩く 90 右回り。


そして、「 」による繰り返しを用いて、
かめた=タートル!作る。
「かめた!100 歩く 90 右回り。」!4 繰り返す。


ここまで分かれば、3〜6は楽しんでできます。

解答例−課題3)
かめた=タートル!作る。
「かめた!100 歩く 120 右回り。」!3 繰り返す。


※外角なので三角形は120度回らなければいけませんね。

解答例−課題4)
かめた=タートル!作る。
「かめた!100 歩く 60 右回り。」!6 繰り返す。


解答例−課題5)
かめた=タートル!作る。
「かめた!100 歩く 72 右回り。」!5 繰り返す。


解答例−課題6)
かめた=タートル!作る。
「かめた!100 歩く 144 右回り。」!5 繰り返す。


※☆マークの真ん中が五角形しているところから角度を割り出します。

さて、課題7以降のための「命令一覧プリント・その2」を配りました。

図形オブジェクトの命令(一部)
「図形を作る」で作られた独立したオブジェクト。タートルオブジェクト同様、他の図形と一部が重なるというイベントが発生すると、「衝突」で定義したメソッドを実行する。また「動作」というメソッドを定義しておくと、ボタンのようにマウスで図形をクリックしたときに実行する。










命令用途使用例
図形を作る今まで描いていたものを独立させる図形1=かめた!図形を作る。
作る自分を複製して新しい図形を作る星2=星1!作る。
右回り右に回る星1!90 右回り。
左回り左に回る星1!90 左回り。
位置原点からの位置を指定して移動星1!100 100 位置。
塗る( )で括られた色に自分を塗る星1!(黄) 塗る。
拡大する自分をn倍する。または縦横にx倍y倍する星1!2 拡大する。
星1!2 3 拡大する。
消える画面から見えなくなる。星1!消える。
現れる消えていた姿を戻す。星1!現れる。
向き?現在の角度を右から右回りで調べるラベル!(星1!向き?) 作る。


色オブジェクトの命令(一部)
色を表すオブジェクト。よく使う8色として「黒、赤、緑、青、黄、紫、水色、白」が用意されている。それ以外はRGBを指定して「作る」で作る。

命令用途使用例
作るRGBの順に0〜255までを指定して色を作るピンク=色!255 136 255 作る。
星1!(ピンク) 塗る。
暗くする色を暗くする濃い緑=緑!暗くする。
明るくする色を明るくする。暗くした色を再び明るくする明るい緑=緑!明るくする。
半透明にする裏側が透けて見える色を作る透ける青=青!半透明にする。



課題7)は課題8)以降の序章。課題8−1)から課題8−9)まででペイントが完成する。ペアプログラミングの形を取り、二人ずつ、あーでもないこーでもないと悩みながら進めていく。グループによってはかなり苦労していましたが、一番進んだグループは課題の指示にない「☆を作るボタン」を作成していました。まさにサンプル通りです。もちろん、サンプルプログラムは見せていません。

ボタンの位置は各班バラバラですが、それでまったく構わないと思います。「使いやすいアプリケーションである」と思えるものであればいいのですから。

なぜそうしたのか、どのような苦労があったのか、それが明かであれば、次に繋がると思います。続きを読む
posted by n_shimizu at 23:59| Comment(0) | TrackBack(0) | 授業2011

2011年04月24日

ドリトルが文字化けをする

情報Bの授業でアルゴリズムやオブジェクト指向プログラミングを扱うために、ドリトルをがっぷり四つで取り組むことにしました。

ただ本校の環境では文字化けしてしまう現象に悩まされています。

以下はサンプルプログラムの「ペイント」を実行したものです。

ドリトル文字化け.gif

……酷いものです。なにがなにやらさっぱりわかりません。
最初は文字コードや言語設定がおかしいのかと思ったのですが、半角英字、つまり ASCIIコード部分ですら化けます。たとえば「GO」と表示しようとすると「FN」になるといった具合です。この場合コードが1ずつ小さくなっていますが、漢字となると法則性すらわかりません。

上記画像をもう一度ご覧頂くと一番下に「「ペイントソフト」(「ドリトルで学ぶプログラミング」Activity3)」という文字が読める!ということに気づきました。

ラベルは読めて、ボタンが化けるのか?とも思いましたがそうではなく、文字サイズであることが分かりました。

上記画像の左上、「あるく」だけは表示されています。「23 文字サイズ」を指定しているのです。ボタンのデフォルト値は文字サイズ24ポイントです。

いろいろ試すと、ラベルであってもボタンであってもフィールドであっても、本校パソコン室の環境では24ポイント以上のサイズにすると文字化けが発生すると言うことが分かりました。原因はドリトルではなく、環境にあることがハッキリしました。

さて、原因は何でしょう?フォントが壊れているのか、JAVAのインストールがうまくいってないのか、グラフィックドライバ等がおかしいのか、これから探っていきたいと思います。

※もしよければ旧ブログのドリトルの記事も参照下さい。
情報科雑感: ドリトル
posted by n_shimizu at 17:52| Comment(0) | TrackBack(0) | ドリトル

2011年04月23日

ドリトルその3

さて、ドリトルでいろいろ自分で考えて実習していくにあたり、命令について一覧となっているものが必要です。公式ページの命令一覧を見ろというのが一番正しいのですが、どこを見ていいのか初学者にはきつい。そこで小出しに命令一覧その1、その2という形でプリントを配ることにしました。お分かりの通り、「1時間で学ぶソフトウェアの仕組み」に出てくるオブジェクトの命令一覧になっています。

その1です。

タートルオブジェクトの命令(一部)
動き回るキャラクター。動くと軌跡が残るので図形を描ける。

命令用途使用例
作るオブジェクトを作るかめた=タートル!作る。
歩く前進するかめた!100 歩く。
右回り右に回るかめた!90 右回り。
左回り左に回るかめた!90 左回り。
変身するカメの画像を違うものにするかめた!”tulip.png” 変身する。
ペンなし軌跡を描かない(で移動する)かめた!ペンなし。
位置原点からの位置を指定して移動かめた!100 100 位置。
向き右からの角度で向きを指定するかめた!90 向き。
閉じる書き始めの点まで線を引くかめた!閉じる。
図形を作る軌跡の線を切り離して図形にするかめた!図形を作る。
線の色描く線の色を変えるかめた!(緑) 線の色。


ボタンオブジェクトの命令(一部)
画面に表示されるGUI部品の一つ。押されることを「動作」というメソッドで感知する。

命令用途使用例
作るオブジェクトを作る右ボタン=ボタン!”右” 作る。
読むボタン上の文字を読んで返すラベル!(ボタン1!読む)作る。
書くボタンに文字を書くボタン1!”あいうえお” 書く。
(:動作)押された時の動作を定義する右ボタン:動作=「かめた!3 右回り」。


タイマーオブジェクトの命令(一部)
一定時間毎に、「……」のブロックを繰り返して実行する。標準で0.1秒間隔100回。
命令用途使用例
作る新しいタイマーを作る時計=タイマー!作る。
間隔間隔を変更する時計!1 間隔。(1秒間隔にする)
回数回数を変更する時計!10 回数。
時間n秒間動くようにする時計!5 時間。
実行ブロックを実行する時計!「かめた 10 歩く」実行。
待つタイマーが終わるのを待つ※時計!待つ。

※(待つを実行しないと次の行の命令が同時に実行される)。


また課題プリントを渡しました。

課題0)宝拾いゲームの復習(もう一度入力して確かめる)。
課題1)一辺の大きさが100の正方形を描いてみよう。→「正方形1」で保存。
課題2)正方形をなるべく簡単な記述で描いてみよう。→「正方形2」で保存。
課題3)正三角形を描いてみよう。→「正三角形」で保存。
課題4)正六角形を描いてみよう。→「正六角形」で保存。
課題5)正五角形を描いてみよう。→「正五角形」で保存。
課題6)☆を描いてみよう。→「星」で保存。
課題7)図形を描いた後、「かめた!(色) 図形を作る。」で色を塗ってみよう。
課題8−1)「前進」と表示されたボタンをつくり、前に20歩進むようにしましょう。
課題8−2)「もどる」と表示されたボタンをつくり、後ろに20歩進むようにしましょう。
課題8−3)「左」と表示されたボタンをつくり、30度左に回転するようにしましょう。
課題8−4)「右」で右回転ボタンもつくりましょう。
課題8−5)ボタンを作る際に、『左ボタン=ボタン!“左” 作る −380 185 位置。』などと位置を指定して、ボタンが上手に配置されるようにしましょう。
課題8−6)「線なし」と表示されたボタンをつくり、線を描かないようにしましょう。
課題8−7)「線あり」で、再び線を描くようにしましょう。
課題8−8)「図形を作る」ボタンをつくり、このボタンの『:動作』として
『「:直前の図形=かめた!図形を作る」。』
を定義して、描いた線が図形オブジェクトになるようにしましょう。
課題8−9)「青」などのボタンを作り、このボタンの動作として、
『「:直前の図形!(青) 塗る」。』
などを定義して、図形に色を塗られるようにしましょう。色ボタンの大きさも調節しよう。


分かる人には分かると思いますが、課題8は1)〜9)まで完成させると、ほぼドリトル本のペイントと同じものができあがるはずなのです。

授業では課題1で終わり次回に続きました。
posted by n_shimizu at 23:59| Comment(0) | TrackBack(1) | 授業2011

2011年04月20日

【情報B】ドリトルの授業・その2?

今年は初めて「選択・情報B」を持つことになりました。

本校では一年生で情報Cを全員必修しています。
当初のアンケートによると情報系進学を考えてという生徒は皆無(^_^;

情報Bの内容をがっつり身につけさせるよりも教養的にやっていった方がいいようです。

しかし、やはり「情報」ですから、アプリケーション習得にしたくはありません。情報Bですから尚更です。

一つは「ゼミ形式」を取り入れること。

情報Cと重複する内容はすっ飛ばして、未習のところを2ページずつ順番に当て、生徒に授業をしてもらう形式です。時間は30分。

いきなり初回のテーマは「論理回路とプログラミング言語」。かなり手強いかなと思いつつ、ちゃんとオリジナルプリントを作り、AND回路、OR回路、NOT回路の説明と半加算器の説明などをしていました。時間は大幅に伸びて50分。まったく問題有りません。今後も期待できそうです。

さて、それと同時に、実習中心に私がやります。

「アルゴリズム」「データベース」「問題解決」の3つをじっくり取り組むことにしました。

とりあえず取り組みやすい「アルゴリズム」から。「アルゴリズムとは」ということを理論的にやるよりも、実習の中から順番に身につけるようにしていきたいと思いました。一昨年の情報Cでは全クラスに一度だけドリトルの「1時間で学ぶソフトウェアの仕組み」をまさに一時間だけやっています。

ということで、今回は「その2」です。題して「かっちりドリトル」。

1年生ではこちらから「これを入力しなさい」とリストを見せて、ひたすらそれを入力すると宝拾いゲームが完成しました。ソフトウェアとは何かということを「感じる」だけならそれでいいのですが、アルゴリズムなどを考えてコンピュータ上で表すためには文法等を押さえなければなりません。そこでスライドを使いながら下記のような解説をしました。

○ドリトルとは
・教育用プログラミング言語
・現在主流のオブジェクト指向
・・オブジェクト(もの、対象物)を中心に考える
・日本語文字を採用
・フリーソフト
・JAVA上で実行

○ドリトルの文法1
・基本オブジェクト
・・数値、文字列、ブロック、タイマー、他
・グラフィックオブジェクト
・・タートル、図形、パレット、他
・GUIオブジェクト
・・ボタン、フィールド、ラベル、 他
・音楽オブジェクト
・・メロディ、コード、ドラム、楽器
・その他

○ドリトルの文法2
・オブジェクトには特定の機能(メソッド)がある
・・例)タートルオブジェクト
・・・作る、歩く、戻る、右回り、左回り、移動する、位置、向き、ペンなし、ペンあり、閉じる、変身する、拡大する、線の色、線の太さ、衝突、他
・・例)タイマーオブジェクト
・・・作る、間隔、回数、時間、実行、待つ、中断
・無い機能は命令できない
・・歩け、進む、右周り、跳ねる……×

○ドリトルの文法2.5
・タートルオブジェクトとは
・・グラフィック関係のオブジェクトの一つ
・・移動する時に軌跡の線を残し、絵を描くことができる
・・描いた絵を切り離して図形にすることができる
・・規定値として
・・・原点(0,0)に現れる
・・・ペンあり
・・・亀の絵

○ドリトルの文法3
・オブジェクトに命令することで実行
・・オブジェクト!命令。
・・・例)タートル!作る。
・・「オブジェクトにメッセージを送信する」
・・オブジェクトをレシーバ(受信者)ともいう
・・「。」で動作が完結
・・半角と全角を区別しない
・パラメータは命令の前
・・例)かめた!10 歩く。

○ドリトルの文法4
・オブジェクトに名前を付ける(変数)
・名前を付けたものも新しいオブジェクト
・・かめた=タートル!作る。
・・かめた!10 歩く。
・・・※名前を付けないと二度と命令できない
・複数のオブジェクトを作る
・・かめた=タートル!作る。
・・かめた!100 歩く。
・・かめこ=タートル!作る。
・・かめこ!100 戻る。

○ドリトルの文法5
・同じオブジェクトは並べて命令できる
・・例)
・・・宝=タートル!作る。
・・・宝!“tulip.png” 変身する。
・・・宝!ペンなし。
・・・宝!100 100 位置。
・・次の表記と同じ
・・・タートル!作る "tulip.png“ 変身する ペンなし 100 100 位置。
posted by n_shimizu at 23:59| Comment(0) | TrackBack(0) | 授業2011