Javaプログラミング
本講義では、プログラミング言語Javaを用いてプログラミングの基本を学ぶ。 プログラムの制御構造と配列などのデータ型を理解し、簡単なプログラムを作成することを目標とする。 また、アプレットなどについても触れる。
Java言語を用いて、プログラムの仕組みやデータ型、制御構造などのプログラミングの基本を理解し、これらを用いて簡単なプログラムの作成ができるようになる。
スケジュール欄を参照のこと
http://www.cis.twcu.ac.jp/~konishi/index-j.html
授業内容に応じて参考資料を紹介する。
以下の基準にしたがって成績を評価する。
課題のプログラムはすべて提出すること。
試験は最後の授業の時間に実施する。
メール・アドレス: konishi@cis.twcu.ac.jp
回数 | 授業内容 | 教室外学習 | |
---|---|---|---|
内容 | 時間の目安 | ||
1 | コンピュータとプログラム | プログラミングの経験を問うアンケートを行うので、メールで回答すること。 | 120 |
2 | アプレット | アプレットに関する課題を出すので、そのプログラムを作成すること。 | 120 |
3 | 変数と式(1)整数 | 変数と式に関する課題を出すので、そのプログラムを作成すること。 | 120 |
4 | 変数と式(2)実数 | 変数と式に関する課題を出すので、そのプログラムを作成すること。 | 120 |
5 | 条件文(1)if文とif-else文 | 条件文に関する課題を出すので、そのプログラムを作成すること。 | 120 |
6 | 条件文(2)多重if-else文とswitch文 | 条件文に関する課題を出すので、そのプログラムを作成すること。 | 120 |
7 | 繰返し文(1)for文 | 繰返し文に関する課題を出すので、そのプログラムを作成すること。 | 120 |
8 | 繰返し文(2)while文と2重ループ | 繰返し文に関する課題を出すので、そのプログラムを作成すること。 | 120 |
9 | 配列(1)配列の使い方 | 配列に関する課題を出すので、そのプログラムを作成すること。 | 120 |
10 | 配列(2)配列のコピーと並列配列 | 配列に関する課題を出すので、そのプログラムを作成すること。 | 120 |
11 | 手続きと関数(1)メソッドの引数と返り値 | 手続きと関数に関する課題を出すので、そのプログラムを作成すること。 | 120 |
12 | 手続きと関数(2)論理型とブール値メソッド | 手続きと関数に関する課題を出すので、そのプログラムを作成すること。 | 120 |
13 | レコード | レコードに関する課題を出すので、そのプログラムを作成すること。 | 120 |
14 | 文字と文字列 | 文字と文字列に関する課題を出すので、そのプログラムを作成すること。 | 120 |
15 | まとめ | ||
備考 | 授業の進みぐあいや受講者の反応を考慮し、スケジュールには多少の変更を加えることがある。 |
この授業の内容は、一言で言うと、プログラミングです。 プログラミング ( 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社(2010年にOracle社に吸収合併された)から発表されたプログラミング言語です。 Javaは、ネットワークやGUI(Graphical User Interface)など、現代的な機能が充実しています。 特に、アプレットとよばれる、ホームページにプログラムを埋め込む技術は、Javaが一気に有名になった切っ掛けでもあります。 また、Javaは基本的にマルチプラットホームであり、一度プログラムを書けば、それはWindowsでもMacでもLinuxでもSolarisでも動きます。 Javaの言語体系は比較的整理されているので、プログラミングの入門にも適しています。
現在、Javaは色々な所で使われています。 パソコン・ソフトとしてはあまり使われていませんが、ネットワークなどJavaの強みを生かした場面では使われています。 Webアプリケーション(Webブラウザーで利用する各種サービス)では、本格的なシステムになるとJavaを使うことが多いです。 従来型携帯(ガラケー)のアプリについては、ドコモとソフトバンクのアプリがJavaを使って開発します。 スマートフォン(スマホ)のアプリについては、アンドロイドのアプリがJavaを使って開発します。
一般的に、プログラムを作成するときは、何らかの開発環境が必要です。 ここで、 開発環境 ( development environment )とは、プログラムを開発するためのソフトウェアです。 プログラマーは、開発環境に備わっている機能を利用して、プログラムをコンパイルしたり、 バグ ( bug )(プログラムの間違い)を見つけたりします。
Javaの開発環境には、いくつか種類があります。 この授業では、Oracle社の JDK (Java SE Development Kit)を用います。 プログラミングの学習が目的なら、JDKの提供する機能で十分でしょう。 JDKには、いくつかのバージョンがあります。 情報処理センターのシステムには、JDK 11がインストールされているので、授業ではそれを用います。
Javaでプログラムを作成すると、たくさんのファイルを扱うことになります。 そこで、授業用のフォルダー(java1)をデスクトップに作り、そのフォルダーの中で作業を行うことにします。 デスクトップを右クリックし、新規作成→フォルダー、とクリックし、 java1 と入力して、授業用のフォルダーを作成してください。
「 メモ帳 」( notepad )とは、Windowsに付属しているテキスト・エディターです。 ここで、 テキスト・エディター ( text editor )とは、テキスト・ファイル(文字だけのファイル)を作成するソフトで、プログラミングのときなどに使われます。
「メモ帳」は、テキスト・エディターとしては単純な方です。 高度な機能を利用したければ、他のテキスト・エディターを使ってください。 情報処理センターのパソコンには、atom、emacs(runemacs.exe)、jEdit、xyzzy、サクラエディタなど、数種類のテキスト・エディターがインストールされています。
本格的なプログラミングを行うときは、テキスト・エディターよりは 統合開発環境 ( Integrated Development Environment , IDE )が使われます。 Javaの統合開発環境としては、Eclipseが有名です。
「メモ帳」を起動するには、スタート・ボタン→Windows アクセサリ→メモ帳、とクリックします。
「メモ帳」にJavaのプログラムを入力し、ファイルに保存するときは、文字コードをANSIにしてください。
コマンド・プロンプト ( command prompt )とは、Windowsをコマンドで操作するときに使うソフトです。 ここで、 コマンド ( command )とは、コンピューターを操作するためにキーボードから入力される文字列です。
コマンド・プロンプトに似たものに、Windows PowerShellというソフトがありますが、この授業ではコマンド・プロンプトを利用します。
情報処理センターのパソコンでコマンド・プロンプトを起動するには、スタート・ボタン→System Tools→コマンド プロンプト、とクリックします。
情報処理センターのパソコンでコマンド・プロンプトを起動すると、最後の行に
Z:\>
と表示されます。 この部分は、 プロンプト ( prompt )とよばれます。 プロンプトのZ:がカレント・ドライブを表し、\がカレント・フォルダーを表します。 ここで、 カレント・ドライブ ( current drive )とは、コマンドの基準となるドライブです。 また、 カレント・フォルダー ( current folder )とは、コマンドの基準となるフォルダーです。
カレント・ドライブを変更するには、「(ドライブ名):」と入力します。 カレント・フォルダーを変更するには、「cd(フォルダー名)」と入力します。 ここで、cdはChange Directoryの略で、ディレクトリーとフォルダーは同じ意味です。
なお、コマンド・プロンプトのウィンドウをマウスでクリックしても、カーソルは動きません。 カーソルを移動するには、backspaceキーで直前の文字を消すか、左矢印キーや右矢印キーを押してください。
それでは、カレント・フォルダーをデスクトップのフォルダーjava1に変更しましょう。
Z:\>cd Desktop\java1 Z:\Desktop\java1>
注意: ホームページにバックスラッシュが表示されている場合、バックスラッシュの代わりに円記号を入力します。 バックスラッシュと円記号は同じものだと思ってください。
コマンド・プロンプトは、直近に入力されたコマンドを覚えています。 それらのコマンドをもう一度利用するには、上矢印キーと下矢印キーを押します。 上矢印キーで、直前、その直前と表示されます。 下矢印キーで、直後、その直後と表示されます。
また、コマンドを入力している途中でtabキーを押すと、コマンドの残りが自動入力されます。 ただし、自動入力されたものが期待どおりではないかもしれません。 そのときは、カーソルを移動して修正します。
コマンド入力を途中で止めたいときは、ctrlキーを押しながらcキーを押します。 このキーは、プログラムを強制終了するときも使います。
今日の授業では、Javaのプログラムが与えられたとき、そのプログラムをどうやって動かすかについて説明します。 今日はプログラムの内容を気にする必要はありません。
Javaプログラムの作成から実行までの手順は以下の通りです。
「コンパイラー」、「インタープリター」、「バイトコード」などの用語は、後で説明します。
ここで、「メモ帳」を開きます。
そして、次のプログラムをそっくりそのまま入力します。
アルファベットの大文字を小文字に変えたりしないでください。
/*
〜
*/
は入力する必要はありません。
/* 1*/ class ProgramTest { /* 2*/ public static void main (String[] args) { /* 3*/ System.out.println("OK"); /* 4*/ } /* 5*/ }
入力したら、プログラムをファイルに保存します。 Javaのプログラムを保存するときには、ファイル名の拡張子を〜.javaにする必要があります。 ファイル→名前を付けて保存、とクリックし、授業用のフォルダー(java1)を選び、ファイル名(今回はProgramTest.java)を入力し、文字コードをANSIにして、保存します。
プログラムをファイルに保存したら、次にコマンド・プロンプトで javacコマンド を実行します。 プログラムはProgramTest.javaに保存されているので、 javac ProgramTest.java と入力してください。 もし、 ProgramTest.java と全て入力するのが面倒なら、途中でtabキーを押してみてください。 残りが自動入力されます。
Z:\Desktop\java1>javac ProgramTest.java Z:\Desktop\java1>
プログラムが正確に入力できていれば、ProgramTest.classというファイルが生成されます。
もし エラー1個 のようなメッセージが表示されたら、どこかに入力ミスがあります。 ファイルProgramTest.javaを見直して、入力ミスを正し、保存して、もう一度javacコマンドを実行してください。 エラー・メッセージの見方は後述します。
javacコマンドは、〜.javaファイルをもとに〜.classファイルを生成します。 この〜.classファイルの内容が バイトコード ( bytecode )です。 バイトコードは、もとのプログラムとは似ても似つかない、特殊な文字の並びです。
Javaの場合、コンパイルとはバイトコードを生成することです。 一般的に、コンパイルを行うソフトウェアは、 コンパイラー ( compiler )と呼ばれます。
最後に、コマンド・プロンプトで javaコマンド を実行します。 バイトコードがProgramTest.classに格納されているので、 java ProgramTest と入力してください。 (ファイル名から.classを取り除きます。) もし、 java ProgramTest と入力するのが面倒なら、上矢印キーを押してみてください。 すると、直前の入力 javac ProgramTest.java が表示されるので、いらない部分を消してください。
Z:\Desktop\java1>java ProgramTest OK Z:\Desktop\java1>
実は、今回のプログラムは、コマンド・プロンプトに OK と出力するだけのものです。 javacコマンドで、そのプログラムからバイトコードを生成し、javaコマンドで、そのバイトコードを実行したのです。
Javaの場合、プログラムを実行するには、そのプログラムをコンパイルしてバイトコードを生成し、そのバイトコードを実行します。 一般的に、プログラム(バイトコードを含む)を(解釈しながら)実行するソフトウェアは、 インタープリター ( interpreter )と呼ばれます。
javacコマンドは、プログラム中におかしな点を見つけると、コンパイルを止め、エラー・メッセージを出力します。
例えば、ProgramTest.javaで、3行目
System.out.println("OK");
を
Systemout.println("OK");
と間違ったとします。 javacコマンドを実行すると、
Z:\Desktop\java1>javac ProgramTest.java ProgramTest.java:3: エラー: シンボルを見つけられません Systemout.println("OK"); ^ シンボル: 変数 Systemout 場所: クラス ProgramTest エラー1個 Z:\Desktop\java1>
というメッセージが表示されます。 これは、ProgramTest.javaの3行目のSystemout(記号^の指す点)がおかしいという指摘です。
javacコマンドは必ずしも本当の間違いを指摘するとは限りませんが、エラー・メッセージを参考にしてプログラムを直してください。 ファイルに保存したら、再びjavacコマンド( javac ProgramTest.java )でコンパイルします。 またエラーが発生したら、またプログラムを修正し、また保存し、またコンパイルします。 エラーが発生しなくなったら、コンパイルは成功です。 バイトコード・ファイル(ProgramTest.class)が作られていることを確認して、javaコマンド( java ProgramTest )でバイトコードを実行します。
履修者の予備知識を確認するため、アンケートを行います。 以下の質問に答え、回答をメールで提出してください。 差出人は学内のメール・アドレス(学生番号@cis.twcu.ac.jp)とし、宛先はkonishi@cis.twcu.ac.jpとします。 メールの本文には、学生番号、氏名、科目名、授業日(9月27日)を明記してください。
自宅のパソコンにJDKをインストールすれば、自宅でこの授業の自習ができます。 自宅のパソコンがWindows 10だとして、情報処理センターと同じバージョンのJDK(JDK 11)をインストールしたいとします。
JDKは2019年4月から有料になりました。 例外として、商用利用でなければ無料で使えますが、それでも利用者登録は必要です。 そこで、JDKとほぼ同じで、無料で使える OpenJDK のインストール方法を紹介します。
なお、Windows 10には32ビット版と64ビット版がありますが、OpenJDK 11は64ビット版にしかインストールできません。 使っている Windows 10が32ビット版か64ビット版か分からない場合は、スタート・ボタン→設定→システム→バージョン情報、とクリックすると、「システムの種類」の項目に「32ビット」または「64ビット」と表示されます。
1. OpenJDKの公式サイト https://openjdk.java.net/ を開く。
2. 「Download」から始まる段落の「install」をクリックする。
3. 「JDK 9 & Later」から始まる段落の「jdk.java.net」をクリックする。
4. 「Reference implementations」から始まる段落の「11」をクリックする。
5. 箇条書きの中の「Windows/x64 Java Development Kit」をクリックする。
6. ファイルがダウンロードされるので、ダウンロードしたフォルダーを開き、openjdk-11から始まる名前のZIPファイルを探し、右クリックして「すべて展開」をクリックする。
7. 「ファイルを下のフォルダーに展開する」入力欄に「C:\」と入力して「展開」をクリックする。
8. C:ドライブを開き、展開されたフォルダー名(ここではC:\jdk-11)を確認する。
9. スタート・ボタン→Windows システム ツール→コントロール パネル、とクリックして、コントロール・パネルを開き、システムとセキュリティ→システム→システムの詳細設定、とクリックする。
10. 「システムのプロパティ」ウィンドウが開くので、「詳細設定」タブをクリックして「環境変数」ボタンをクリックする。
11. 「環境変数」ウィンドウが開くので、上の欄の「Path」をクリックして「編集」ボタンをクリックする。
12. 「環境変数名の編集」ウィンドウが開くので、「新規」ボタンをクリックし、展開されたフォルダーの中のbinフォルダー名(ここではC:\jdk-11\bin)を入力して、「OK」ボタンをクリックする。
13. 「環境変数」ウィンドウの「OK」ボタンをクリックし、「システムのプロパティ」ウィンドウの「OK」ボタンをクリックし、コントロール・パネルを閉じる。
14. スタート・ボタン→Windows システム ツール→コマンド プロンプト、とクリックしてコマンド・プロンプトを開き、 java -version と入力して、バージョン情報が表示されたら、インストールは成功。
普通のWindowsパソコンでコマンド・プロンプトを起動するには、スタート・ボタン→Windows システム ツール→コマンド プロンプト、とクリックします。
普通のWindowsパソコンの場合、プロンプトは
C:\Users\(ユーザー名)>
となります。 つまり、カレント・ドライブはC:で、カレント・フォルダーは\Users\(ユーザー名)です。
カレント・フォルダーをデスクトップのフォルダーjava1に変更するには、以下のように入力します。
C:\Users\(ユーザー名)>cd Desktop\java1 C:\Users\(ユーザー名)\Desktop\java1>
どうしてもJavaの入門書が必要なら、書店に行って自分に合った本を探してください。 どれを選べばよいか分からないなら、以下の本が有名です。
Javaに関する公式文書は以下の通りです。 日本語版があるものは日本語版を選んでいます。