本講義では、プログラミング言語Javaを用いてプログラミングの基本を学ぶ。 プログラムの制御構造と配列などのデータ型を理解し、簡単なプログラムを作成することを目標とする。 また、アプレットなどについても触れる。
Java言語を用いて、プログラムの仕組みやデータ型、制御構造などのプログラミングの基本を理解し、これらを用いて簡単なプログラムの作成ができるようになる。
スケジュール欄を参照のこと
http://www.cis.twcu.ac.jp/~konishi/index-j.html
授業内容に応じて参考資料を紹介する。
毎回の課題80%と試験20%で成績を評価する。
以下の基準にしたがって成績を評価する。
課題のプログラムはすべて提出すること。
試験は最後の授業の時間に実施する。
メール・アドレス: konishi@cis.twcu.ac.jp
コンピュータの台数の関係により、履修希望者が40名を越えた場合は抽選を行います。 抽選用紙には、時間割番号(JJ603B)を記入してください。
この授業の内容は、一言で言うと、プログラミングです。 プログラミング ( programming )とは、プログラムを作成することです。 それでは、プログラムとは一体何かと言いたくなるでしょう。 これを説明するには、パソコンの仕組みを理解する必要があります。
パソコンの部品の中で、最も重要なのがCPUです。 CPU ( Central Processing Unit )は、中央処理装置と訳され、加減乗除などの演算をしたり、他の部品を制御したりします。
次に重要なのが、記憶装置です。 記憶装置 ( memory unit )は、文字通り、情報を記憶する装置です。 記憶装置は、主記憶装置と補助記憶装置に分類されます。
主記憶装置 ( main memory unit )は、単にメモリと呼ばれたり、 RAM ( Random Access Memory )と呼ばれたりします。 主記憶装置の中の情報は、CPUから直接読み書きできますが、電源を切ってしまうと、主記憶装置の中の情報は消滅します。
一方、 補助記憶装置 ( auxiliary memory unit )とは、具体的にはハードディスク、フロッピーディスク、CD-ROM, DVD-ROM, USBメモリなどのことです。 補助記憶装置の中の情報は、CPUから間接的にしか読み書きできませんが、電源を切っても、補助記憶装置の中の情報は保持されます。
なお、パソコンには、CPUや記憶装置の他にも、キーボード、マウス、ディスプレイなどの部品があります。 これらをまとめて、 ハードウェア ( hardware )と呼びます。
CPUは演算や制御を行う装置ですが、どんな演算をするかや何を制御するかは決まっていません。 CPUが何をするかは、人間が命令を与えると決まります。 命令 ( instruction )とは、CPUに行わせる演算や制御を示す情報です。
人間は、CPUに対して、演算や制御の詳細を命令の列として与えます。 すると、CPUはその命令の列に従って、具体的な演算や制御を行うのです。 この命令の列が プログラム ( program )です。 CPUがプログラムに従って演算や制御を行うことを、プログラムを 実行する ( execute )と言います。 パソコンが動くとは、CPUがプログラムを実行することです。
以上をまとめると、人間がプログラムを作成してパソコンに与えると、パソコンはそのプログラムに従って動くというわけです。 つまり、プログラミングができるようになれば、パソコンを思い通りに動かせるようになります。
さて、CPUにプログラムを実行させるには、CPUが直接読み書きできる主記憶装置に、そのプログラムを格納する必要があります。 しかし、主記憶装置は電源が切れると、その中の情報は消滅します。 そこで、主記憶装置と補助記憶装置を次のように使い分けます。
パソコンの電源が入る前、プログラムは、ハードディスクやCD-ROMなどの補助記憶装置に格納されています。 パソコンの電源が入ると、必要に応じて、プログラムは主記憶装置にコピーされます。 そして、CPUは主記憶装置の中のプログラムを実行します。 パソコンの電源を入れてから使えるようになるまで時間がかかるのは、補助記憶装置から主記憶装置にプログラムをコピーしているからです。
なお、プログラムの集合体は ソフトウェア ( software )と呼ばれます。 この言葉は、ハードウェア(元々の意味は金物)の反対という意味で作られた言葉です。
また、ソフトウェアという言葉はソフトと略されることが多く、「ワープロ・ソフト」や「表計算ソフト」のように使われます。 ワープロ・ソフトも表計算ソフトも、もともとは誰か(実際は技術者集団)が作ったプログラムなわけです。
この授業ではプログラミングを学ぶわけですが、勉強すると何がよいのかについて説明しておきます。
1. プログラマになれる。
プログラマ ( programmer )とは、プログラムを作成する人のことです。 この授業より難しい勉強が必要になりますが、プログラマとしての職が得られるかもしれません。
2. パソコンをより便利に使える。
たとえ10行程度のプログラムでも、道具として役に立つことがあります。 自分でプログラムを作成し、それを自分の道具にすることで、パソコンをより便利に使うことができます。
3. パソコンについての理解が深まる。
プログラミングの経験があれば、パソコンがどのように動いているのか、ある程度理解ができます。 パソコンにトラブルが発生しても、適切に対処できるかもしれません。
プログラミング言語 ( programming language )とは、プログラムを作成するときに使う言語です。 プログラマは、何らかのプログラミング言語を選択し、その文法に従ってプログラムを作成します。 作成したプログラムをパソコンに与えると、パソコンはそのプログラムを実行します。 プログラミング言語によっては、人間が理解できるプログラムを、CPUが理解できるプログラムに翻訳するという作業を行います。 このことを、 コンパイル ( compile )と言います。
Java とは、1995年にSun Microsystems社(現在はOracle社の子会社)から発表されたプログラミング言語です。 Javaは、ネットワークやGUI(Graphical User Interface)など、現代的な機能が充実しています。 特に、アプレットとよばれる、ホームページにプログラムを埋め込む技術は、Javaが一気に有名になった切っ掛けでもあります。 また、Javaは基本的にマルチプラットホームであり、一度プログラムを書けば、それはWindowsでもMac OS XでもLinuxでもSolarisでも動きます。 Javaの言語体系は比較的整理されているので、プログラミングの入門にも適しています。
現在、Javaは色々な所で使われています。 パソコン・ソフトとしてはあまり使われていませんが、ネットワークなどJavaの強みを生かした場面では使われています。 Webアプリケーション(Webブラウザで利用する各種サービス)では、本格的なシステムになるとJavaを使うことが多いです。 従来型携帯(ガラケー)のアプリでは、ドコモとソフトバンクがJavaを採用しています。 スマートフォン(スマホ)のアプリでは、アンドロイドがJavaを採用しています。
一般的に、プログラムを作成するには、プログラム開発用ソフトウェア(言語処理系、開発環境などとよばれる)を用意する必要があります。 プログラマは、開発用ソフトウェアに備わっている機能を利用して、プログラムをコンパイルしたり、プログラムの間違いを見つけたりします。
Javaの開発用ソフトウェアには、いくつか種類があります。 この授業では、Oracle社の JDK (Java SE Development Kit)を用います。 プログラミングの学習が目的なら、JDKの提供する機能で十分でしょう。 JDKには、いくつかのバージョンがあります。 情報処理センターのシステムには、JDK 8がインストールされているので、授業ではそれを用います。
この授業で使うソフトは次のようなものです。
ソフトの種類 | 授業で使う | 使ってもよい |
---|---|---|
ターミナル・ソフト | ターミナル |
|
テキスト・エディタ | Jedit X | Emacs |
ウェブ・ブラウザ | Firefox |
|
「ターミナル」は、Mac OS Xに付属しているソフトウェアです。 Jedit(X)は、Artman 21が開発したソフトウェアです。 Emacsは、GNUプロジェクトが開発したソフトウェアです。 Firefoxは、Mozilla Foundationが開発したソフトウェアです。
Jeditの起動の仕方は以下の通りです。
Jeditはこのままでも使えますが、この授業用に設定をしておくと、より使いやすくなります。
まず、メニューバーで「Jedit X」→「環境設定」とクリックすると、「環境設定」ウィンドウが開きます。 「新規書類」ボタンをクリックし、「書式」タブをクリックして、「文書幅」の「ウインドウ幅に合わせる」をクリックします。
次に、「フォントとカラー」タブをクリックし、「プレインテキスト」の「フォント変更」ボタンをクリックし、「フォント」ウィンドウで「日本語」→「Osaka」→「レギュラー-等幅」→「12」とクリックします。
最後に、「すべてを表示」ボタンをクリックし、「エンコーディング」ボタンをクリックして、「エンコーディング」を「Unicode (UTF-8)」、「改行」を「Unix (LF)」にします。
Jeditを終了するには次のようにします。
「ターミナル」の起動の仕方は以下の通りです。
「ターミナル」はこのままでも使えますが、この授業用に設定をしておくと、より使いやすくなります。
まず、メニューバーで「ターミナル」→「環境設定」とクリックすると、「環境設定」ウィンドウが開きます。 「プロファイル」ボタンをクリックし、「テキスト」タブをクリックし、「フォント」の「変更」ボタンをクリックし、「フォント」ウィンドウで「Osaka」→「レギュラー-等幅」→「12」とクリックします。
次に、「テキスト」の「テキストをアンチエイリアス処理」をオンにします。
最後に、「詳細」タブをクリックして、「テキストエンコーディング」を「Unicode (UTF-8)」にします。
「ターミナル」を終了するには次のようにします。
Javaでプログラムを作成すると、たくさんのファイルを扱うことになります。 そこで、授業用のフォルダ(java1)をデスクトップに作り、そのフォルダの中で作業を行うことにします。 デスクトップを右クリックして、「新規フォルダ」をクリックして、 java1 と入力して、授業用のフォルダを作成してください。
再び「ターミナル」を起動してください。 「ターミナル」の最後の行は、次のようになっています。
24102a1:~ k16x1001$
続いて、カレント・ディレクトリを変更します。 カレント・ディレクトリ ( current directory )とは、操作の基準となるディレクトリのことです。 (ディレクトリとフォルダは同じ意味です。) カーソルの左にあるのが プロンプト ( prompt )とよばれる文字列で、これを見るとカレント・ディレクトリが分かります。 (プロンプトの設定によりますが。) 例えば、プロンプトが
24102a1:~ k16x1001$
ならば、カレント・ディレクトリは~で、これはホーム・ディレクトリを意味します。 また、
24102a1:java1 k16x1001$
ならば、カレント・ディレクトリはjava1です。
カレント・ディレクトリがホーム・ディレクトリ(~)であることを確認して、 cd Desktop/java1 と入力すると、カレント・ディレクトリがjava1になります。
24102a1:~ k16x1001$ cd Desktop/java1 24102a1:java1 k16x1001$
この、 cdコマンド は、カレント・ディレクトリを変更するものです(Change Directory)。
もし、 Desktop/java1 と入力するのが面倒なら、アイコンをドラッグ・アンド・ドロップしてください。 cd とスペースを入力してから、java1のフォルダ・アイコンを「ターミナル」にドラッグ・アンド・ドロップすると、
24102a1:~ k16x1001$ cd /home/k16x1001/Desktop/java1 24102a1:java1 k16x1001$
となります。 カレント・ディレクトリがホーム・ディレクトリなら、 Desktop/java1 と /home/k16x1001/Desktop/java1 は、同じディレクトリを表します。
今日の授業では、Javaのプログラムが与えられたとき、そのプログラムをどうやって動かすかについて説明します。 今日はプログラムの内容を気にする必要はありません。
Javaプログラムの作成から実行までの手順は以下の通りです。
「コンパイラ」、「インタプリタ」、「バイトコード」などの用語は、後で説明します。
ここで、再びJeditを起動します。
そして、次のプログラムをそっくりそのまま入力します。
アルファベットの大文字を小文字に変えたりしないでください。
/*
〜
*/
は入力する必要はありません。
/* 1*/ class ProgramTest { /* 2*/ public static void main (String[] args) { /* 3*/ System.out.println("OK"); /* 4*/ } /* 5*/ }
次に、このプログラムをファイルに保存します。 Javaのプログラムを保存するときには、ファイル名の拡張子を〜.javaにする必要があります。 今日は、ファイル名をProgramTest.javaとします。
新規に作成したプログラムをファイルに保存するには次のようにします。
プログラムをファイルに保存したら、次に「ターミナル」で javacコマンド を実行します。 プログラムはProgramTest.javaに保存されているので、 javac ProgramTest.java と入力してください。 プログラムが正確に入力できていれば、ProgramTest.classというファイルが生成されます。
24102a1:java1 k16x1001$ javac ProgramTest.java 24102a1:java1 k16x1001$
もし、 ProgramTest.java と入力するのが面倒なら、アイコンをドラッグ・アンド・ドロップしてください。 javac とスペースを入力してから、ProgramTest.javaのアイコンを「ターミナル」にドラッグ・アンド・ドロップすると、
24102a1:java1 k16x1001$ javac /home/k16x1001/Desktop/java1/ProgramTest.java 24102a1:java1 k16x1001$
となります。 カレント・ディレクトリがjava1なら、 ProgramTest.java と /home/k16x1001/Desktop/java1/ProgramTest.java は、同じファイルを表します。
もし エラー1個 のようなメッセージが表示されたら、どこかに入力ミスがあります。 ファイルProgramTest.javaを見直して、入力ミスを正し、保存して、もう一度javacコマンドを実行してください。 エラー・メッセージの見方は後述します。
javacコマンドは、〜.javaファイルをもとに〜.classファイルを生成します。 この〜.classファイルの内容が バイトコード ( bytecode )です。 バイトコードは、もとのプログラムとは似ても似つかない、特殊な文字の並びです。
Javaの場合、コンパイルとはバイトコードを生成することです。 一般的に、コンパイルを行うソフトウェアは、 コンパイラ ( compiler )と呼ばれます。
最後に、「ターミナル」で javaコマンド を実行します。 バイトコードがProgramTest.classに格納されているので、 java ProgramTest と入力してください。 (ファイル名から.classを取り除きます。)
24102a1:java1 k16x1001$ java ProgramTest OK 24102a1:java1 k16x1001$
もし、 ProgramTest と入力するのが面倒なら、アイコンをドラッグ・アンド・ドロップしてから、いらない部分を消してください。 java とスペースを入力してから、ProgramTest.classのアイコンを「ターミナル」にドラッグ・アンド・ドロップすると、
24102a1:java1 k16x1001$ java /home/k16x1001/Desktop/java1/ProgramTest.class // まだreturnキーは押さない。
となり、deleteキーと矢印キーを使って /home/k16x1001/Desktop/java1/ と .class を消してからreturnキーを押せば、
24102a1:java1 k16x1001$ java ProgramTest OK 24102a1:java1 k16x1001$
となります。
実は、今日のプログラムは、「ターミナル」に OK と出力するだけのものです。 javacコマンドで、そのプログラムからバイトコードを生成し、javaコマンドで、そのバイトコードを実行したのです。
Javaの場合、プログラムを実行するには、そのプログラムをコンパイルしてバイトコードを生成し、そのバイトコードを実行します。 一般的に、プログラム(バイトコードを含む)を(解釈しながら)実行するソフトウェアは、 インタプリタ ( interpreter )と呼ばれます。
javacコマンドは、プログラム中におかしな点を見つけると、コンパイルを止め、エラー・メッセージを出力します。
例えば、ProgramTest.javaで、3行目
System.out.println("OK");
を
Systemout.println("OK");
と間違ったとします。 javacコマンドを実行すると、
24102a1:java1 k16x1001$ javac ProgramTest.java ProgramTest.java:3: エラー: シンボルを見つけられません Systemout.println("OK"); ^ シンボル: 変数 Systemout 場所: クラス ProgramTest エラー1個 24102a1:java1 k16x1001$
というメッセージが表示されます。 これは、ProgramTest.javaの3行目のSystemout(記号^の指す点)がおかしいという指摘です。
javacコマンドは必ずしも本当の間違いを指摘するとは限りませんが、エラー・メッセージを参考にしてプログラムを直してください。
直したプログラムをファイルに保存するには次のようにします。
保存したら、再びjavacコマンド( javac ProgramTest.java )でコンパイルします。 またエラーが発生したら、またプログラムを修正し、また保存し、またコンパイルします。 エラーが発生しなくなったら、コンパイルは成功です。 バイトコード・ファイル(ProgramTest.class)が作られていることを確認して、javaコマンド( java ProgramTest )でバイトコードを実行します。
履修者の予備知識を確認するため、アンケートを行います。 以下の質問に答え、回答をメールで提出してください。 差出人は学内のメール・アドレス(学生番号@cis.twcu.ac.jp)とし、宛先はkonishi@cis.twcu.ac.jpとします。 メールの本文には、学生番号、氏名、科目名、授業日(9月23日)を明記してください。
自宅のパソコンにJDKをインストールすれば、自宅でこの授業の自習ができます。 例として、Windows 7が動いているパソコンに、最新版のJDK(JDK 8)をインストールする方法を説明します。
始めに、JDK 8のインストール用ファイルを手に入れます。 URL
を開き、「Java DOWNLOAD」ボタン(下に「Java Platform(JDK)8uXX」と書かれている)をクリックします。 次に、表「Java SE Development Kit 8uXX」の中の「Accept License Agreement」をクリックし、「Windows x86」の行(64ビット版のWindowsならば「Windows x64」の行)のファイル名をクリックします。 ファイルを実行するか保存するか聞かれるので、「保存」ボタンをクリックすると、ダウンロードが始まります。
ダウンロードが完了したら、ダウンロードしたファイルを実行(アイコンをダブルクリック)します。 インストール・プログラムが実行され、いくつか質問されますが、「次へ」ボタンをクリックするだけでよいです。
インストールが完了したら、JDKの設定を行います。 まず、スタートボタン→「コンピューター」とクリックし、C:ドライブ→「Program Files」→「Java」とダブルクリックして、JDKがインストールされたフォルダ名(jdk1.8.0_XX)を確認します。
次に、スタートボタン→「コントロールパネル」→「システムとセキュリティ」→「システム」とクリックし、左側の「システムの詳細設定」をクリックします。
すると、「システムのプロパティ」ウィンドウが開くので、「詳細設定」タブをクリックし「環境変数」ボタンをクリックします。
すると、「環境変数」ウィンドウが開くので、「ユーザー環境変数」の変数の列に「PATH」がないことを確認して、「新規」ボタンをクリックします。 (もし「PATH」があれば、それをクリックして「編集」ボタンをクリックします。)
すると、「新しいユーザー変数」ウィンドウが開くので、「変数名」欄に PATH 、「変数値」欄に C:¥Program Files¥Java¥jdk1.8.0_XX¥bin (jdk1.8.0_XXはJDKがインストールされたフォルダ名)と入力し、「OK」ボタンをクリックします。 (「ユーザー変数の編集」ウィンドウの場合は、「変数値」欄の最後にセミコロン(;)と C:¥Program Files¥Java¥jdk1.8.0_XX¥bin を追加します。)
「環境変数」ウィンドウの「OK」ボタンをクリックし、「システムのプロパティ」ウィンドウの「OK」ボタンをクリックします。
最後に、スタートボタン→「すべてのプログラム」→「アクセサリ」→「コマンド プロンプト」とクリックします。 すると、「コマンド プロンプト」ウィンドウが開くので、 javac -version と入力し、 javac 1.8.0_XX と出力されれば設定は成功です。 (もし 'javac' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。 と出力されれば設定は失敗です。)
自宅のWindowsパソコンでプログラムを動かすには、Macとは違うソフトを使います。
まず、プログラムを入力するときは、Jeditではなく「メモ帳」を使います。 スタートボタン→「すべてのプログラム」→「アクセサリ」→「メモ帳」とクリックして起動してください。
「メモ帳」でJavaのプログラムを保存するときに、注意することがあります。 メニューバーで「ファイル」→「名前を付けて保存」とクリックすると、「名前を付けて保存」ウィンドウが開きますが、ファイル名を入力する前に、「ファイルの種類」を「すべてのファイル」にしてください。 そうしないと、拡張子が「〜.java.txt」となってしまいます。 また、「文字コード」は「ANSI」のままにしてください。
また、「ターミナル」の代わりに「コマンド プロンプト」を使います。 (設定を確認するときに使いました。) スタートボタン→「すべてのプログラム」→「アクセサリ」→「コマンド プロンプト」とクリックして起動してください。
「コマンド プロンプト」のプロンプトの見方は、ユーザー名がkyokoの場合、
C:¥Users¥kyoko>
ならば、カレント・ディレクトリはホーム・ディレクトリで、
C:¥Users¥kyoko¥Desktop¥java1>
ならば、カレント・ディレクトリはjava1です。
javacコマンドやjavaコマンドは、授業と同じように使えます。 ただし、ファイルの区切り記号については、授業ではスラッシュ(/)なのに対して、Windowsでは円記号(¥)になります。
どうしてもJavaの入門書が必要なら、書店に行って自分に合った本を探してください。 どれを選べばよいか分からないなら、以下の本が有名です。
Javaに関する公式文書は以下の通りです。 日本語版があるものは日本語版を選んでいます。