スクリプトを書いて動かしてみるのに必要なモノは・・。
ここで、スクリプトに付いて手短に紹介。
- スクリプト本体
- テキストエディタ
スクリプトとはやりたい作業の手順を書いたテキストファイルのことである。
テキストエディタを使って文法規則に従ったテキストを書いて、コンピュータに実行させる訳である。
これからの作業はスクリプトインタプリタを置いたディレクトリで行うことにする。
・・・。
と、この辺りから説明する必要は余りないか。
さてさて、実際にスクリプトを書いて実行してみよう。
まずは画面に 「 hello, world. 」 と表示させる。
いやいや、笑ってはイケナイ。大事な一歩目だ。
hello.txt というファイル名にでもしてテキストエディタで書いて保存する。print("hello, world.\n")
スクリプトインタプリタを起動して hello.txt と打ち込んで return ( enter ) を押せば画面に表示される。
もし、色々表示された後に 「 error load module 」 と表示があれば、書き間違いだ。
書き直してスクリプトインタプリタに、もう1度 hello.txt と打ち込むと良い。
スクリプトインタプリタを終了するには quit と打ちこんで return ( enter ) を押す。
ちょいと解説を加えておく。
print と言うのは画面に表示するという意味。
hello, world.\n が画面に表示する内容。
"hello, world.\n" と 「 " 」 で括ってあるのはこれが文字列だという意味。
「 ( 」 と 「 ) 」 で括ってあるのは print するのは "hello, world.\n" だという意味。
\n は改行の意味なので hello, world. と表示した後に改行している。
画面表示はできるようになったハズだから、今度はキーボードから入力する。
スクリプトは以下のようだ。
今度も適当なファイル名を付けてエディタでテキストファイルとして作成する。print("your input is : ") s = input() print(s)
書き終わったら、スクリプトインタプリタでファイル名を打ち込んで動かす。
動いたら、何か1行入力してみて欲しい。
今現在は残念なことに OSASK 版では日本語を表示できない。
(エディタで日本語が打てるようになったら対応しなければイカンかな)
スクリプトは上から順に実行されるので、まず 「 your input is : 」 と表示される。
次は s = input() で入力された1行を s に代入する。
input() は1行入力の意味で、return ( enter ) が押されるまでの入力がされる。
s と言うのは変数といって、文字列などを保存できる。
ココでは s という変数名にしているが、これは a でも hoge でも好きな名前を付けられる。
最後は print で s を画面に表示していて、先ほど入力された1行が表示される。
さて今度は、四則演算をしてみよう。
キーボードから2つの数値を入力して、その値で加減乗除の計算をする。
さてさて、どんなスクリプトかと言うと・・。
スクリプトを実行して数値を入力して return ( enter ) 、これを2回やる。s = input() a = int(s) s = input() b = int(s) print("add is ", a + b, "\n") print("sub is ", a - b, "\n") print("mul is ", a * b, "\n") print("div is ", a / b, "\n")
int てのは文字列を数値に変換すると言う意味。
a = int(s) では入力された文字列 s を数値に変換して a に代入する。
例えば、 「 100 」 と入力されれば a には 100 という数値が入る。
a + b , a - b , a * b , a / b , はそれぞれ加減乗除の計算である。
ちなみに print は便利に使えて、複数の出力ができる。
複数の出力をするためには、出力するモノを 「 , 」 で区切って指定する。
コンピュータに自分のやりたいことをやらせるにはどうしたって、分岐と繰り返しにブチ当たる。
まずは分岐の方から片付ける。
入力された数値がプラスかマイナスか判断して、表示する。s = input() a = int(s) if (0 > a) { print("minus.\n") } else { print("plus.\n") }
数値以外を入力したときも plus と表示してしまうけれど、こいつは勘弁。
条件分岐をするためには if-else 文を使う。
if のところで (0 > a) と書いてあって、これは条件式という。
0 > a とは変数 a の値が 0 より小さいという意味である。
変数 a の値が 0 より小さければ、0 > a は正しい。
変数 a の値が 0 以上ならば 0 > a は正しくない。
「 { 」 と 「 } 」 で囲まれたところをブロックと言う。
条件式が正しいなら if の後のブロックが実行され else の後のブロックは実行されない。
条件式が正しくないなら else の後のブロックが実行され if の後のブロックは実行されない。
今度は繰り返しを片付ける。
今度の例はゲーム仕立てで 0-9 の数を当てるゲームだ。
1行の中で 「 ; 」 以降は注釈(コメント)である。
特に解説はしない。注釈を持って解説に替える。
; time で現在の時間を取得 ; srand で現在の時間を使って乱数を初期化 srand(time()) ; 0-9 の間の乱数を取得 answer = rand() % 10 ; 正解できるまで繰り返し loop { ; 数値を入力 s = input() a = int(s) ; 正解判定 if (a == answer) { print("right.\n") ; 繰り返しを抜ける break } ; ヒントの表示 if (a < answer) { print("up.\n") } else { print("down.\n") } }
最後はファイルの内容を読み込むスクリプトを紹介しよう。
print.txt とでもして作成する。; ファイルの内容を表示 if (2 > arg) { ; ファイル名が指定されていない場合 print("few arg\n"); return; } loop { ; arg[1] というファイル名のファイルから1行読み込み buf = gets(arg[1]) ; 入力が null ならばファイルの終わりかファイルが存在しない if (null == buf) break ; 入力された行を表示 puts(stdout, buf) }
スクリプトインタプリタで print.txt print.txt と入力して return ( enter ) を押す。
print.txt の内容が表示されるはずである。
arg は配列で arg[0] , arg[1] などとして、入力時に渡された文字列が入っている。
print.txt print.txt とした場合は arg[1] は print.txt である。
もちろん print.txt hello.txt とすれば arg[1] は hello.txt である。
コレ以降は print や input などのように提供されている基本関数を使って色々できるだろう。
残念ながらグラフィックを扱うことはまだ出来ない。OSASK 版では日本語も扱えない。
そのうち、これらも出来るようにしたいと考えている。 ( このままだとあまりインパクトないだろーし )
さて、最後にココまで御付き合い頂いた方には感謝したい。
多少なりともプログラムって面白いなぁと思ってもらえたなら、うれしい。
それでは、また!