三日坊主 / プログラミング入門 https://www.rad51.net/blog/diary/ たわいも無いことの、書き綴り / 入門書の企画書 ja Jeans CMS © Weblog http://backend.userland.com/rss https://www.rad51.net/jeans/skins/jeans/images/jeans2.gif 三日坊主 https://www.rad51.net/blog/diary/ 読み終えたら https://www.rad51.net/blog/diary/?itemid=634
どうしようか。普通に考えると、VB.NETなんだろうけれど、最近はVB自体に取り組みやすさがなくなってるから、C#.NETでも敷居の高さはほとんど変わらない。C#.NETを薦めたほうが良いかも。

Cもいいんだけれど、良いツールが見当たらない。C++.NETかな。あとで、ボーランドのツールを調べてみる。

スクリプト系では、pygameなんてのが有るらしいので、あとで調べる。Ruby/DLは、初心者向けではなさそう。これはWin32APIなどを直接たたく形になるので、初心者にはつらいだろう。雛形を用意してやればよいのだろうけれど、それはそれで、別に記事を書かないとちんぷんかんぷんだろうし。(追記:Ruby/SDLというのは、使えそう。)HSPは、初心者の即戦力にはなるだろうけれど、言語を学ぶという上での発展が無いので、薦めない。

Javaはどうかな。良いツールを調べておかないといけない。

いまのところ、一番の候補はpygameのような気がする。]]>
プログラミング入門 https://www.rad51.net/blog/diary/?itemid=634 Tue, 01 Apr 2008 14:32:01 PDT ITEM634_20080401
プログラミング入門:文字列の結合 https://www.rad51.net/blog/diary/?itemid=625
しかし、VBScriptでは型指定ができない。この環境下では、演算子として『+』を用いた場合、数値加算なのか、数値を文字列に置き換えた後に結合するのかの区別ができないため、エラーを起こすことがある。

一方、『&』を用いた場合、文字列の結合しか意味しないため、数値が代入されている2つ以上の変数を『&』で処理すると、まず数値から文字列への変換が行われ、次に文字列の結合が行われる。

ならば、プログラミングがはじめての人たちに教える場合は、文字列の結合として『&』だけを扱うほうが、混乱が無くてよいはずだ。『+』は学校で習ってきた加算と同じものであり、『&』は別のもの(文字列をくっつけるための接着剤)という捉え方ができるはずだ。

先の記事で悩んでいた電卓のシミュレーションだが、次のコードで実現できることが分かった。

a=0+inputbox("値を一つ入力してください")
b=0+inputbox("値をもう一つ入力してください")
c=a+b
msgbox a & "+" & b & "=" & c

4行目で、『&』の代わりに『+』を用いると、エラーになる。]]>
プログラミング入門 https://www.rad51.net/blog/diary/?itemid=625 Tue, 18 Mar 2008 18:43:37 PDT ITEM625_20080318
プログラミング入門 https://www.rad51.net/blog/diary/?itemid=618
namae="名前"
msgbox "私の名前は"+namae+"です"

ここで、namaeというもの(変数)に自分の名前を入れられることを教える。メッセージボックスで表示するときに、足し算すればよいことも同時に教える。

なぜわざわざ変数に入れる必要があるのか?次のような例を示す。

namae="名前"
msgbox "私の名前は"+namae+"です"
msgbox namae+"が私の名前です"

一度namaeという変数に入れておけば、何回でも使えるわけだ。続けて、

namae="名前"
msgbox "私の名前は"+namae+"です"
namae="父の名"
msgbox "お父さんの名前は"+namae+"です"

のようにすれば、一度代入した値に、別の値を入れ直すことができることがわかるだろう。

つづけて、

namae=inputbox("あなたの名前は?")
msgbox "こんにちは"+namae+"さん"

をもちい、inputboxによる入力を教える。ここまでくれば、

入力→処理→出力

という、コンピューターの基本を感じることができるだろう。ここまでは電卓と同じである。なので、電卓をエミュレートしてみる。

a=inputbox("値を一つ入力してください")
b=inputbox("値をもう一つ入力してください")
c=a+b
msgbox a+"+"+b+"="+c

こうしたいところだが、このプログラムはうまく働かない。123+456=123456という値を返す。つまり、aとbが文字列として入力されてしまう。どうしたものか。正しく機能させるには、

a=inputbox("値を一つ入力してください")
b=inputbox("値をもう一つ入力してください")
c=cdbl(a)+cdbl(b)
msgbox a+"+"+b+"="+cstr(c)

としなければならない。電卓のエミュレーションは後回しだ。当分の間、文字列だけを扱ったほうがよさそう。

余談だが、次のスクリプト
if 1="01" then msgbox "OK1"
if "01"=1 then msgbox "OK2"
if "01"="1" then msgbox "OK3"
if "1"="01" then msgbox "OK4"
は、OK1とOK2を返す。文字列と数値を条件式で比較した場合、数値として比較されるようだ。]]>
プログラミング入門 https://www.rad51.net/blog/diary/?itemid=618 Tue, 04 Mar 2008 13:37:14 PST ITEM618_20080304
小中学生のためのプログラミング入門 https://www.rad51.net/blog/diary/?itemid=614
1)コンピューターの環境。
 VBScriptは、ノートパッドで編集できるし実行はダブルクリックで可能。必要最低限の権限のユーザーで大丈夫。フォルダやファイルをダブルクリックして開き、ファイルをドラッグアンドドロップで移動する、右クリックのメニューを使えるなどの基本的な操作が行えることが必要。Webページにアクセスしてきた時点で、これらはクリアしていると思われる。

2)ノートパッドが使えること。
 簡単なワープロ操作が行えることが必要。シフトキーの使用で、『"』『(』などの記号が打てる必要あり。ローマ字が使えることは大事。ローマ字は中学生に入ってから習うはずだから、小学生相手に教える場合、このあたりはネックになる可能性あり。ただ、日本語の入力にローマ字を使っているかもしれないので(カナのじか打ちかなぁ)、案外大丈夫かもしれない。文書の保存方法を知っていることは、必須。

3)自分専用のフォルダを作成できること。
 プログラミング環境構築に、これは必要。

おそらく、これだけ。次に、プログラミング環境の構築。

1)まず、プログラミング用のフォルダを作成する。

2)start.vbsという名の空のファイルを含んだZIPファイルをダウンロードさせる。start.vbsをじかにダウンロードさせる方法では駄目。これは、セキュリティー上の理由で、ブラウザが自動的にstart.vbs.txtとファイル名を変換してしまうため。

3)ダウンロードしたZIPファイルを開き、中にあるstart.vbsを、自分のフォルダにドラッグアンドドロップする。

以上で、環境の準備は完了。まずは、Hello Worldから。

1)start.vbsをコピーする。
2)好きなファイル名に書き換える。
3)右クリックの『編集』を選択。
4)次の内容を書き込む。

msgbox "私の始めてのプログラム"

5)ダブルクリックして実行。

まずは、こんなところかな?]]>
プログラミング入門 https://www.rad51.net/blog/diary/?itemid=614 Fri, 22 Feb 2008 17:21:05 PST ITEM614_20080222
小中学生のためのプログラミング入門 https://www.rad51.net/blog/diary/?itemid=609
プログラミングを始めたいと思っている人へ捧げる入門書。小学生や中学生でも理解できるということを念頭に解説する。もちろん、大人が読んでもかまわない。難しい表現は避け、漢字にはルビをふって、小学生でも読めるようにする。

私自身が一番初めにプログラムを書き始めたのは中学1年生だった。そのときにどんなプログラムを書いたかを思い出しながら、コンピューターの基本を理解してもらうように書くつもり。

扱うのは、VBScript。これならWindowsにすでにインストールされているし、編集はノートパッドで行える。右クリックの『編集』から、これを利用すればいい。これなら、admin権限が無くてもできる。

最終章では、『今までに覚えたことは、すべて忘れてください』で締めくくる。これは、VBScriptを覚えるための入門書ではなく、コンピューターとは何か・プログラムとは何かを教えるためのものだから、基本原理だけを理解させる。あとはVBでもJavaでもDelphiでもC#でも、何でも好きなものを学べばいい。

シンタックスは、次のものを扱う。これだけで、必要最小限のことはできるはずだ。

文字列
数値
msgbox (出力)
inputbox (入力)
if-then (分岐)
do-loop (繰り返し)
for-next (繰り返し)
配列
サブルーチン

本当はdo-loopの代わりにgotoを扱いたかったのであるが、VBScriptではgotoが使えなくなっている。gotoを使える言語を教えようとすると、そのプログラミング言語をインストールするところから始めないといけないので、あきらめた。変数はすべてグローバルで扱う。ローカルな変数を用いると、混乱する可能性があるためだ。

VBScriptにあるけれども教えない機能(抜粋)

option explicit と dim (ただし、dimは配列の宣言には用いる)
クラスとオブジェクト
関数(組み込み関数は一部使うかも)
select-case
while
wsh (オブジェクトの概念が必要なため、これは使わない)
エラー処理]]>
プログラミング入門 https://www.rad51.net/blog/diary/?itemid=609 Wed, 13 Feb 2008 19:36:20 PST ITEM609_20080213