本講義では、プログラミング言語Javaを用いてプログラミングの基本を学ぶ。 プログラムの制御構造と配列などのデータ型を理解し、簡単なプログラムを作成することを目標とする。 また、アプレットなどについても触れる。
原則として毎回レポート課題を出すので、その課題に取り組むこと。
http://www.cis.twcu.ac.jp/~konishi/index-j.html
授業内容に応じて参考資料を紹介する。
レポートおよび筆記試験
以下の基準にしたがって成績を評価する。
レポートはすべて提出すること。
筆記試験は最後の授業の日に実施する。
メール・アドレス: konishi@cis.twcu.ac.jp
コンピュータの台数の関係により、履修希望者が40名を越えた場合は抽選を行います。 抽選用紙には、時間割番号J202Bを記入してください。
プログラミング言語とは、簡単に言えば、人間がパソコンに対して命令するときに使う言語です。 パソコンは、プログラミング言語を理解して、その命令に従って動きます。 プログラミング言語を使って命令を順番に並べたものが、プログラムです。
世の中には、ワープロ・ソフトやゲーム・ソフトなど、色々なソフトウェアが存在します。 これらのソフトウェアの本質は、何らかのプログラミング言語で書かれたプログラムです。 パソコンは、プログラムに書かれた命令に従って、ワープロ・マシンやゲーム・マシンのように動くのです。
Javaとは、1995年にSun Microsystems社から発表されたプログラミング言語です。 Javaは、ネットワークやGUI(Graphical User Interface)など、現代的な機能が充実しています。 特に、アプレットとよばれる、ホームページにプログラムを埋め込む技術は、Javaが一気に有名になった切っ掛けでもあります。 また、Javaは基本的にマルチプラットホームであり、一度プログラムを書けば、それはWindowsでもMac OS XでもLinuxでもSolarisでも動きます。 Javaの言語体系は比較的整理されているので、プログラミングの入門にも適しています。
一般的に、プログラムを作成するには、プログラム開発用ソフトウェア(言語処理系、開発環境などとよばれる)を用意する必要があります。 プログラマは、開発用ソフトウェアに備わっている機能を利用して、プログラムを実行できるものにしたり( コンパイル 、 compile )、プログラムの間違いを見つけたり( デバッグ 、 debug )します。
Javaの開発用ソフトウェアには、いくつか種類があります。 この授業では、Mac OS X標準の、Java 2 SDK (Software Development Kit)を用います。 プログラミングの学習が目的なら、SDKの提供する機能で十分でしょう。 Java 2 SDKには、いくつかのバージョンがあります。 情報処理センターのシステムには、バージョン1.5.0がインストールされていので、授業ではそれを用います。
ちなみに、Java 2はバージョン2という意味ではありません。 バージョン1.2.2以降、JavaはJava 2とよばれるようになったのです。
自宅のパソコンにJava 2 SDKをインストールすれば、自宅でこの授業の自習ができます。 CD-ROM付きのJavaの本を買い、その本に従ってインストールするのが簡単です。 本を買いたくなければ、インターネット経由で入手することもできます。 例として、Windows 2000/XP/Vistaが動いているPCに、Java 2 SDK 1.5.0をインストールする方法を説明します。
はじめに、Administratorとしてログオンします。
次に、Java 2 SDK 1.5.0のインストール用ファイルを手に入れます。 URL
から「JDK 5.0 Update (番号)」の「ダウンロード」ボタンをクリックし、使用許諾契約(License Agreement)に問題がなければチェックを入れて「Continue」ボタンをクリックし、オフライン・インストール用のファイルを選択してダウンロードしてください。 ファイルの大きさは約52Mバイトです。
ダウンロードが終了したら、ダウンロードしたファイルを実行(アイコンをダブルクリック)します。 質問に答えていくと、フォルダC:\Program Files\Java\jdk1.5.0_(番号)が作られ、必要なファイルやフォルダがその中に展開されます。
続いて、普段のユーザとしてログオンし直します。
最後に、フォルダC:\Program Files\Java\jdk1.5.0_(番号)\binにパスを通します。 「コントロールパネル」→「システム」→「詳細」または「詳細設定」→「環境変数」と選択し、ユーザー環境変数PATHの値にC:\Program Files\Java\jdk1.5.0_(番号)\binを追加します。 (パスが複数ある場合はセミコロンで区切ります。) これでインストールは完了です。
2007年9月に、情報処理センターのシステムが更新されました。 Mac OS Xであることは変わりませんが、一部のアプリケーションがバージョン・アップしています。
この授業に関係するアプリケーションは次のようなものです。
アプリケーション | 更新前 | 更新後 |
---|---|---|
ターミナル・ソフト | ターミナル | ターミナル |
テキスト・エディタ | Jedit 4 | Jedit X |
ウェブ・ブラウザ | Safari | Safari |
メール・ソフト | Apple Mail | Safari+GMail |
「ターミナル」とSafariは、Mac OS Xに付属しているソフトウェアです。 Jeditは、Artman 21が開発したソフトウェアです。 GMailは、Googleが提供しているメール・サービスです。
Jeditの起動の仕方は以下の通りです。
Jeditを終了するには次のようにします。
なお、Jeditの字が小さくて読みにくい場合は、次のようにしてください。
「ターミナル」の起動の仕方は以下の通りです。 もし、入力モードが日本語(メニューバーに「あ」)なら、これを英字(「A」)に切り替えておきます。
「ターミナル」を終了するには次のようにします。
なお、「ターミナル」の字が小さくて読みにくい場合は、次のようにしてください。
Javaでプログラムを作成すると、たくさんのファイルを扱うことになります。 そこで、授業用のフォルダcomp2bを作り、そのフォルダの中で作業を行うことにします。 再び「ターミナル」を起動して、以下のように入力してください。
asiaa1:~ b08a001$ mkdir comp2b asiaa1:~ b08a001$ cd comp2b asiaa1:~/comp2b b08a001$
ここで、mkdirはディレクトリを作成するコマンドです(MaKe DIRectory)。 また、cdはカレント・ディレクトリを変更するコマンドです(Change Directory)。 なお、ディレクトリとフォルダは同じ意味です。
今日の授業では、Javaのプログラムが与えられたとき、そのプログラムをどうやって動かすかについて説明します。 今日はプログラムの内容を気にする必要はありません。
Javaプログラムの作成から実行までの手順は以下の通りです。
「コンパイラ」、「インタプリタ」、「バイトコード」などの用語に耳慣れないかもしれません。 ある程度Javaに慣れたら説明しますので、今は気にしないでください。
ここで、再びJeditを起動します。 そして、次のプログラムをそっくりそのまま入力します。 アルファベットの大文字を小文字に変えたりしないでください。 /*...*/は入力する必要はありません。
/* 1*/ class GoodAfternoon { /* 2*/ public static void main (String[] args) { /* 3*/ System.out.println("Good afternoon!"); /* 4*/ } /* 5*/ }
次に、このプログラムをファイルに保存します。 Javaのプログラムを保存するときには、ファイル名の拡張子を 〜.java にする必要があります。 今日は、ファイル名を GoodAfternoon.java とします。
新規に作成したプログラムをファイルに保存するには次のようにします。
練習のため、タイトルバーの赤ボタンをクリックしてウィンドウを閉じます。 そして、再びこのファイルを開くことにします。
以前作成したファイルを開くには次のようにします。
なお、更新したプログラムをファイルに保存するには次のようにします。
プログラムをファイルに保存したら、次に「ターミナル」で javacコマンド を実行します。 プログラムは GoodAfternoon.java に保存されていますので、 javac GoodAfternoon.java と入力してください。 プログラムが正確に入力できていれば、GoodAfternoon.class というファイルが生成されます。
asiaa1:~/comp2b b08a001$ ls GoodAfternoon.java asiaa1:~/comp2b b08a001$ javac GoodAfternoon.java asiaa1:~/comp2b b08a001$ ls GoodAfternoon.class GoodAfternoon.java asiaa1:~/comp2b b08a001$
ここで、lsはファイルをリスト・アップするコマンドです(LiSt)。
もし「エラー1個」のようなメッセージが表示されたら、どこかに入力ミスがあります。 ファイル GoodAfternoon.java を見直して、入力ミスを正し、保存して、もう一度 javac コマンドを実行してください。 エラーメッセージの見方は後述します。
javac コマンドは、〜.java ファイルをもとに 〜.class ファイルを生成します。 この 〜.class ファイルの内容が、 バイトコード ( bytecode ) です。 バイトコードは、もとのプログラムとは似ても似つかない、特殊な文字の並びです。
最後に、「ターミナル」で javaコマンド を実行します。 バイトコードが GoodAfternoon.class に格納されているので、 java GoodAfternoon と入力してください。 (ファイル名から .class を取り除きます。)
asiaa1:~/comp2b b08a001$ java GoodAfternoon Good afternoon! asiaa1:~/comp2b b08a001$
実は、もとのプログラムは、Good afternoon! と出力するものです。 javaコマンドで、確かに実行できたことが分かります。
javacコマンドは、プログラム中におかしな点を見つけると、バイトコード・ファイルの生成を止め、エラーメッセージを出力します。
例えば、GoodAfternoon.java で、3行目
System.out.println("Good afternoon!");
を
Systemout.println("Good afternoon!");
と間違ったとします。 javacコマンドを実行すると、
asiaa1:~/comp2b b08a001$ javac GoodAfternoon.java GoodAfternoon.java:3: シンボルを見つけられません。 シンボル: 変数 Systemout 場所 : GoodAfternoon の クラス Systemout.println("Good afternoon!"); ^ エラー 1 個 asiaa1:~/comp2b b08a001$
というメッセージが表示されます。 これは、3行目の Systemout(記号 ^ の指す点)がおかしいという指摘です。
javacコマンドは必ずしも本当の間違いを指摘するとは限りませんが、エラーメッセージを参考にしてプログラムを直してください。 エラーがなくならない限り、バイトコード・ファイルを生成できないので、プログラムは動かせません。
履修者の予備知識を確認するため、アンケートを行います。 以下の質問に答え、回答をメールで提出してください。 差出人は学内のメール・アドレス(b08a001@cis.twcu.ac.jpなど)とし、宛先はkonishi@cis.twcu.ac.jpとします。 メールの本文には、学生番号、氏名、科目名、授業日(4月10日)を明記してください。
次の問題が自分でプログラムを作成して解けるかどうかを答えてください。 解ける場合は、どのプログラミング言語かも答えてください。
問題: 100円を両替する方法は何通りあるかを計算してください。 使える硬貨は、100円、50円、10円、5円、1円とします。 なお、この種の問題は、両替問題(Count Change Problem)と呼ばれます。
asiaa1:~/comp2b b08a001$ java CountChange 1: 100円1枚、50円0枚、10円0枚、5円0枚、1円0枚 2: 100円0枚、50円2枚、10円0枚、5円0枚、1円0枚 3: 100円0枚、50円1枚、10円5枚、5円0枚、1円0枚 4: 100円0枚、50円1枚、10円4枚、5円2枚、1円0枚 5: 100円0枚、50円1枚、10円4枚、5円1枚、1円5枚 6: 100円0枚、50円1枚、10円4枚、5円0枚、1円10枚 7: 100円0枚、50円1枚、10円3枚、5円4枚、1円0枚 8: 100円0枚、50円1枚、10円3枚、5円3枚、1円5枚 9: 100円0枚、50円1枚、10円3枚、5円2枚、1円10枚 10: 100円0枚、50円1枚、10円3枚、5円1枚、1円15枚 ... 155: 100円0枚、50円0枚、10円0枚、5円4枚、1円80枚 156: 100円0枚、50円0枚、10円0枚、5円3枚、1円85枚 157: 100円0枚、50円0枚、10円0枚、5円2枚、1円90枚 158: 100円0枚、50円0枚、10円0枚、5円1枚、1円95枚 159: 100円0枚、50円0枚、10円0枚、5円0枚、1円100枚 asiaa1:/~comp2b b08a001$