さて、今週からみなさんはこのオンラインテキストを使ってプログラミングの勉強を進めてゆくことになります。これまでのコンピュータ歴は人それぞれだと思いますが、この講座では「プログラミングは全くはじめて」という人を想定しながら、半年間で何とかプログラミングの基本を無理なく学習できるように授業を進めてゆきます。それではさっそくはじめましょう!
1.1 この講座について 1.2 どんなものができるのか 1.3 今週学ぶことは 1.4 プログラム、プログラミング、そしてJavaとは 1.5 「タートルグラフィック」を使って学習開始! 1.6 はじめて作るプログラム(その1・プログラム作成の手順) 1.7 はじめて作るプログラム(その2・命令の意味)
この講座は、コンピュータを主体的に使いこなすために必要なリテラシー(読み書き能力)を、プログラミングの学習を通して身につけてゆこうというものです。「プログラミングとは何か」については後に回しますが、ひとまずこの講座では次のような能力を「リテラシー」として考え、それらを身につけることを目標にしています。
これらをみて、「なんだかまるでレポートの書き方みたい」と思う人も多いのではないでしょうか。実にその通りです。これらは一言で言えば、「論理的思考・表現能力」と言いうことができるでしょう。プログラミングは正確なレポートを仕上げるのと同じような能力を必要とする作業なのです。つまりこの講座はコンピュータのみならず、広く一般に必要とされるリテラシーを鍛える場でもあるのです。
コンピュータを自分のアイデアを実現する道具として効率よく使ってゆくためには以上のような論理的思考・表現能力が不可欠であり、プログラミングはそのための格好の教材となります。しかしそれだけではなく、コンピュータの動作原理や道具としての特徴も知らなければ、それをうまく使いこなすことはできません。みなさんはプログラミングをおこなうことで、アプリケーションソフトを使っているだけでは見えづらい(ユーザの目から隠されている)コンピュータの動作原理に、直に触れてゆくことになります。この点にもプログラムを学ぶ大きな意味があります。
この講座ではJavaアプレットというものを作成しながら(実際に登場するのは第5週以降)プログラミングを学んでゆきます。Javaアプレットとはブラウザの上で動く特殊なソフトウェアです。どんなものを作ってゆくことになるのか、どんなものができるのか、実際の作品の一部を見てみましょう。
1)画像や文字を表示する仕掛けを作る
→ ソースコード
→ アプレット作品
2)ユーザーからの情報(たとえばマウスのクリック)を受け取ってそれに応じて動作する仕掛けを作る
→ ソースコード
→ アプレット作品
3)表示した文字や画像を動かす仕掛けを作る
→ ソースコード
→ アプレット作品
4)これらを組み合わせた作品を作る
→ ソースコード
→ アプレット作品
いかがでしたでしょうか? この講座ではこれらのようなアプレットの作品を基本例題として作成してゆきます。講座を終了する頃には、自分のオリジナルアプレットを作れるようになっているはずです。
ちなみに、作品例とともにお見せした「ソースコード」とは、それぞれのアプレットを実現するために必要となる「コンピュータに対する命令」を書き下したものであり、つまりは「プログラム」そのものです。今の段階では意味が全く分からなくても当然ですのでご心配なく。それぞれのソースコードには日本語で解説のコメントがふってあります。どんな処理をする命令が書かれているのかを眺めてみて下さい。
これらの作品はあくまでもこちらの用意した「作品例」にすぎません。「もっとこうしたほうがおもしろいのに」といったアイデアのうかんだ人もいるかもしれません。学習を進めてゆくうちに、用意された作品例よりもおもしろいアプレットを作れるようになればしめたものです。
アプレットの作品例で、だいたいどんなものを作って行くのかがイメージされたことと思います。今週は以上のような作品を作って行くための「はじめの一歩」として、次のようなことを学ぶことを目標にします。
また、第4週目まではみなさんの学習のための「補助輪」として、「タートルグラフィックス」という教材を用います。この教材を用いると、簡単に図形を描くプログラムが作成できます。今週は、この教材を活用するために必要な「図形を描くための命令」も、併せて学習して行きます。
それではここであらためて、これから取り組むプログラミングについての予備知識を少しまとめておきます。
コンピュータは命令にしたがっていろいろな計算を行います。命令は順番に実行されます。 このコンピュータにあたえる命令を書いたものがプログラムです。 そして、プログラムを作ることをプログラミングといいます。プログラミングを初めてするという人も多いと思いますが、プログラミングをするときには、コンピュータに関する次のことに注意すると、少しは 理解しやすいかもしれません。
ところでプログラムにコンピュータへの命令を記述する際には、そのために用意されたプログラミング言語という言葉(言語体系)を用います。プログラムはプログラミング言語を用いて書き下された命令群です。人間が日常会話に使っている言語にも、英語やドイツ語、日本語などいろいろあるように、コンピュータに指示を与えるためのプログラムを書く言語にも いろいろあります(BASIC, FORTRAN, COBOL, LISP, Cなどなど)。この講座ではJavaという名前の言語を用いてプログラミングを学びます。Javaについてあれこれ知っている必要は今のところありませんが、強いて特徴をあげるならば次のようなものでしょう。
但し今回のこの講座では「Javaの専門家」を育てることは主眼におかれていません(結果的にそうなる人がいても大いに結構なのですが)。先ほど触れたとおり、もう少し一般的な意味でのコンピュータ・リテラシーの育成が最大の目的です。ですから必要以上にこの「Java」という言葉(あるいはそれにまつわるいろいろな言説)に振り回されない方が良いでしょう。
プログラミングの最初の演習教材として、今日から第4週目まではタートルグラフィックスを用います。これは、ウインドウ上にタートル(下の図の、中央部に見える黄緑色の“うみがめ”くん)を置き、そのタートルに移動や回転の指示を行い、タートルがたどった足跡で絵を描くものです。このとき、タートルへの指示は、Java言語によるプログラムとして作成されます。したがって、私たちは、タートルに意図した図形を描かせるために、Java言語を用いて正しくプログラムを書かなければなりません。
タートルに与えることのできる指示としては、次のものが用意されています。
ペンを下ろした状態でタートルが動くと、動いた跡が線として残ります。
それでは、このタートルグラフィックスを使って学習をはじめるための準備をします。
% cd % mkdir java % cd java |
% cd java |
% cp /pub/sfc/ipl/1a98/java/Turtle.java . |
それでは早速タートルグラフィックスのプログラムを作成してみましょう。プログラムはテキストエディタを用いて一つのファイルとして作成します。SFCのUNIX環境では、普通emacsを使うことになります。それではさっそくemacsを使って、最初のプログラムのファイルを作成してみましょう。先ほどつくっておいた作業ディレクトリjavaに、ファイル名MyFirstTurtle.javaで、次のような中身のファイルを作成して下さい。
class MyFirstTurtle extends Turtle{ void start(){ fd(100); } } |
以上の記述はすべてJavaで書かれたプログラムです。命令の意味は後ほど触れることにして、まずはプログラム完成までの手順を一通り憶えてください。今作成したファイルMyFirstTurtle.javaは、プログラムそのものが書かれたファイルとして、特にソースファイルと呼ばれます。ソースファイルを作成する際の注意事項として、1行目の「class」と「extends」の間に挟まれた「MyFirstTurtle」の記述は、ファイル名の「.java」以前の部分と全く同じになるよう(大文字小文字の区別やスペルに注意)に気を付けて下さい。また、プログラムの命令はすべて半角英数字で記述するようにして下さい。
ソースファイルが完成したら次にコンパイルを行います。コンパイルとは一体なんでしょうか? 実は、コンピュータは、上のようにJavaで書かれたソースファイルのプログラムを直接理解することができません。そのために、プログラムの各行を翻訳して、コンピュータが直接理解し実行できる「コンピュータ用の命令書」を、新たに作成しなくてはならないのです。そのための「翻訳」の作業のことをコンパイルと呼ぶのです。Javaのコンパイルにはjavacというコマンドを使います。
% javac MyFirstTurtle.java |
するとMyFirstTurtle.javaはコンパイルされて、「コンピュータ用の命令書」として新たにMyFirstTurtle.classが作られます。このMyFirstTurtle.classにはコンピュータが直接理解できる命令が入っています。無事にプロンプトが戻ってくれば成功です。
しかし場合によってはここで、プロンプトが戻ってくる前に、なにかメッセージが出てくる場合があります。これはエラーメッセージといい、何らかの理由でプログラムが翻訳不可能であることを意味します。つまりコンパイルの失敗です。失敗する理由はいろいろあります。たとえば半角英数字でない文字がプログラムに含まれていたり、スペルミスなどによってJavaの言語に登録されていない命令を書いてしまったり、あるいはコンパイルの対象となるソースファイルが存在しないディレクトリでコンパイルを行おうとした場合、など理由はいろいろです。エラーメッセージには、どこにどういう間違いがあるのか、その個所が指摘されています。ただし今の段階でエラーメッセージを読みとるのは難しいでしょう。したがってもしもエラーが出てしまったら、根気よくファイルの中身を確認し、間違いを訂正した上でもう一度コンパイルを行って下さい。
コンパイルに成功したら、lsコマンドを使って作業ディレクトリの中身を確認してみましょう。
% ls MyFirstTurtle.class Turtle$Line.class Turtle.class MyFirstTurtle.java Turtle.java |
先ほど下準備の時にコピーしてきたTurtle.javaも同時にコンパイルされます。
さて、これでやっと作成したプログラムを実行する準備が整いました。javaコマンドを使ってMyFirstTurtleを早速実行してみましょう。
% java Turtle MyFirstTurtle |
実行の際には上のように、javaコマンドのあとに半角あけてTurtle、さらに半角あけて自分が作成したソースファイルのファイル名から「.java」を抜いた文字列を、引数として与えます。
ウインドウが現れ、タートルによって次のような直線が引かれるはずです。
終了するためには、FileメニューからQuitを選択します。あるいは、端末ウインドウにおいて、C-cでプロセスを殺します。
というわけで、プログラム作成の手順をもう一度まとめると「(1)ソースファイルの作成 → (2)コンパイル(→エラーが出たらもう一度ソースファイルの作り直し) → (3)実行」となります。この手順を忘れないで下さい。
今度はMyFirstTurtle.javaのソースファイルに書かれた命令の意味を追ってみましょう。説明しやすいように行番号を付けてみました。
1: class MyFirstTurtle extends Turtle{ 2: void start(){ 3: fd(100); 4: } 5: } |
1、2行目はタートルグラフィックスでの「お約束」だと思って下さい。とりあえずは以下のことだけに注意を払ってプログラムを作成して下さい。
というわけで、参考までにタートルグラフィックスで利用できる命令の一覧を以下に示しておきます
それでは、先ほどのMyFirstTurtle.javaをコピーし、新たにMySecondTurtle.javaファイルにし、「100歩前進する」の命令の直後に以下のように「90度右に曲がる」という命令を書き加えプログラムを完成しなさい。また、そのあとさらに「100歩前進する」「90度右に曲がる」を書き加えるとどうなるか試してみなさい(新たな命令を書き加えたら「ファイルのセーブ→コンパイル」を再度行います。また、ファイル名とクラス名の一致に気を付けましょう)。
class MySecondTurtle extends Turtle{ void start(){ fd(100); rt(90); } } |
100歩進んで90度右に曲がることを4回繰り返せば正方形が描けますね。
正三角形を描くTriangle.javaを作成しなさい。今度は何度曲がればよいのでしょうか?
余力のある人は、正三角形と正方形を組み合わせて「家」を描くプログラム(House01.java)を作ってみましょう(「1.4 「タートルグラフィックス」を使って学習開始!」の見出しの下にある図を参照)。
>> 目次ページへ