本講義では、プログラミング言語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の開発用ソフトウェアには、いくつか種類があります。 この授業では、Mac OS X標準の、 JDK (Java SE Development Kit)を用います。 プログラミングの学習が目的なら、JDKの提供する機能で十分でしょう。 JDKには、いくつかのバージョンがあります。 情報処理センターのシステムには、JDK 6がインストールされているので、授業ではそれを用います。
自宅のパソコンに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' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。 と出力されれば設定は失敗です。)
この授業で使うソフトは次のようなものです。
ソフトの種類 | 授業で使う | 使ってもよい |
---|---|---|
ターミナル・ソフト | ターミナル |
|
テキスト・エディタ | Jedit X | Emacs |
ウェブ・ブラウザ | Safari | Firefox |
メール・ソフト | Safari+GMail | Firefox+GMail |
「ターミナル」とSafariは、Mac OS Xに付属しているソフトウェアです。 Jeditは、Artman 21が開発したソフトウェアです。 GMailは、Googleが提供しているメール・サービスです。
Jeditの起動の仕方は以下の通りです。
Jeditはこのままでも使えますが、この授業用に設定をしておくと、より使いやすくなります。
まず、メニューバーで「Jedit X」→「環境設定」とクリックすると、「環境設定」ウィンドウが開きます。 「新規書類」ボタンをクリックし、「書式」タブをクリックして、「文書幅」の「ウインドウ幅に合わせる」をクリックします。
次に、「フォントとカラー」タブをクリックし、「プレインテキスト」の「フォント変更」ボタンをクリックし、「フォント」ウィンドウで「日本語」→「Osaka」→「レギュラー-等幅」→「12」とクリックします。
最後に、「すべてを表示」ボタンをクリックし、「エンコーディング」ボタンをクリックして、「エンコーディング」を「Unicode (UTF-8)」、「改行」を「Unix (LF)」にします。
Jeditを終了するには次のようにします。
「ターミナル」の起動の仕方は以下の通りです。
「ターミナル」はこのままでも使えますが、この授業用に設定をしておくと、より使いやすくなります。
まず、メニューバーで「ターミナル」→「環境設定」とクリックすると、「環境設定」ウィンドウが開きます。 「設定」ボタンをクリックし、「テキスト」タブをクリックし、「フォント」の「変更」ボタンをクリックし、「フォント」ウィンドウで「Osaka」→「レギュラー-等幅」→「12」とクリックします。
次に、「テキスト」の「テキストをアンチエイリアス処理」をオンにします。
最後に、「詳細」タブをクリックして、「文字エンコーディング」を「Unicode (UTF-8)」にします。
「ターミナル」を終了するには次のようにします。
Javaでプログラムを作成すると、たくさんのファイルを扱うことになります。 そこで、授業用のフォルダ(java1)をデスクトップに作り、そのフォルダの中で作業を行うことにします。 フォルダは、デスクトップを右クリックして「新規フォルダ」をクリックしても作れますが、せっかくなので「ターミナル」で作ることにします。
再び「ターミナル」を起動して、次のように入力すると、フォルダjava1が作られます。
24102a1:~ k12x1001$ mkdir Desktop/java1 24102a1:~ k12x1001$
ここで、mkdirはディレクトリを作成するコマンドです(MaKe DIRectory)。 なお、ディレクトリとフォルダは同じ意味です。
続いて、カレント・ディレクトリを変更します。 カーソルの左にあるのが プロンプト ( prompt )とよばれる文字列で、これを見るとカレント・ディレクトリが分かります。 (プロンプトの設定によりますが。) 例えば、プロンプトが
24102a1:~ k12x1001$
ならば、カレント・ディレクトリは~で、これはホーム・ディレクトリを意味します。 また、
24102a1:java1 k12x1001$
ならば、カレント・ディレクトリはjava1です。
カレント・ディレクトリがホーム・ディレクトリ(~)であることを確認して、次のように入力すると、カレント・ディレクトリがjava1になります。
24102a1:~ k12x1001$ cd Desktop/java1 24102a1:java1 k12x1001$
ここで、cdはカレント・ディレクトリを変更するコマンドです(Change Directory)。
今日の授業では、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というファイルが生成されます。 (Picked up〜は設定情報なので気にしないでください。)
24102a1:java1 k12x1001$ ls ProgramTest.java 24102a1:java1 k12x1001$ javac ProgramTest.java Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 24102a1:java1 k12x1001$ ls ProgramTest.class ProgramTest.java 24102a1:java1 k12x1001$
ここで、lsはファイルをリスト・アップするコマンドです(LiSt)。
もし「エラー1個」のようなメッセージが表示されたら、どこかに入力ミスがあります。 ファイルProgramTest.javaを見直して、入力ミスを正し、保存して、もう一度javacコマンドを実行してください。 エラー・メッセージの見方は後述します。
javacコマンドは、〜.javaファイルをもとに〜.classファイルを生成します。 この〜.classファイルの内容が バイトコード ( bytecode )です。 バイトコードは、もとのプログラムとは似ても似つかない、特殊な文字の並びです。
Javaの場合、コンパイルとはバイトコードを生成することです。 一般的に、コンパイルするソフトウェアをコンパイラと呼びます。
最後に、「ターミナル」で javaコマンド を実行します。 バイトコードがProgramTest.classに格納されているので、 java ProgramTest と入力してください。 (ファイル名から.classを取り除きます。)
24102a1:java1 k12x1001$ java ProgramTest Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 OK 24102a1:java1 k12x1001$
実は、もとのプログラムは、OKと出力するものです。 javacコマンドで、そのプログラムからバイトコードを生成し、javaコマンドで、そのバイトコードを実行したのです。
Javaの場合、プログラムを実行するには、そのプログラムをコンパイルしてバイトコードを生成し、そのバイトコードを実行します。 一般的に、プログラム(バイトコードを含む)を(解釈しながら)実行するソフトウェアを、インタプリタと呼びます。
javacコマンドは、プログラム中におかしな点を見つけると、コンパイルを止め、エラー・メッセージを出力します。
例えば、ProgramTest.javaで、3行目
System.out.println("OK");
を
Systemout.println("OK");
と間違ったとします。 javacコマンドを実行すると、
24102a1:java1 k12x1001$ javac ProgramTest.java Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF-8 ProgramTest.java:3: シンボルを見つけられません。 シンボル: 変数 Systemout 場所 : ProgramTest の クラス Systemout.println("OK"); ^ エラー 1 個 24102a1:java1 k12x1001$
というメッセージが表示されます。 これは、ProgramTest.javaの3行目のSystemout(記号^の指す点)がおかしいという指摘です。
javacコマンドは必ずしも本当の間違いを指摘するとは限りませんが、エラー・メッセージを参考にしてプログラムを直してください。
直したプログラムをファイルに保存するには次のようにします。
保存したら、再びjavacコマンド( javac ProgramTest.java )でコンパイルします。 またエラーが発生したら、またプログラムを修正し、また保存し、またコンパイルします。 エラーが発生しなくなったら、コンパイルは成功です。 バイトコード・ファイル(ProgramTest.class)が作られていることを確認して、javaコマンド( java ProgramTest )でバイトコードを実行します。
自宅のWindowsパソコンでプログラムを動かすには、Macとは違うソフトを使います。
まず、プログラムを入力するときは、Jeditではなく「メモ帳」を使います。 スタートボタン→「すべてのプログラム」→「アクセサリ」→「メモ帳」とクリックして起動してください。
「メモ帳」でJavaのプログラムを保存するときに、注意することがあります。 メニューバーで「ファイル」→「名前を付けて保存」とクリックすると、「名前を付けて保存」ウィンドウが開きますが、ファイル名を入力する前に、「ファイルの種類」を「すべてのファイル」にしてください。 そうしないと、拡張子が「〜.java.txt」となってしまいます。 また、「文字コード」は「ANSI」のままにしてください。
また、「ターミナル」の代わりに「コマンド プロンプト」を使います。 (設定を確認するときに使いました。) スタートボタン→「すべてのプログラム」→「アクセサリ」→「コマンド プロンプト」とクリックして起動してください。
「コマンド プロンプト」のプロンプトの見方は、ユーザー名がkyokoの場合、
C:¥Users¥kyoko>
ならば、カレント・ディレクトリはホーム・ディレクトリで、
C:¥Users¥kyoko¥Desktop¥java1>
ならば、カレント・ディレクトリはjava1です。
入力するコマンドも多少違います。 以下の表を参考にしてください。
ターミナル | コマンド プロンプト |
---|---|
mkdir Desktop/java1 | mkdir Desktop¥java1 |
cd Desktop/java1 | cd Desktop¥java1 |
ls | dir |
履修者の予備知識を確認するため、アンケートを行います。 以下の質問に答え、回答をメールで提出してください。 差出人は学内のメール・アドレス(k12x1001@cis.twcu.ac.jpなど)とし、宛先はkonishi@cis.twcu.ac.jpとします。 メールの本文には、学生番号、氏名、科目名、授業日(9月26日)を明記してください。
どうしてもJavaの入門書が必要なら、書店に行って自分に合った本を探してください。 どれを選べばよいか分からないなら、以下の本が有名です。
Javaに関する公式文書は以下の通りです。 日本語版があるものは日本語版を選んでいます。