Javaプログラミング
本講義では、プログラミング言語Javaを用いてプログラミングの基本を学ぶ。 プログラムの制御構造と配列などのデータ型を理解し、簡単なプログラムを作成することを目標とする。
Java言語を用いて、プログラムの仕組みやデータ型、制御構造などのプログラミングの基本を理解し、これらを用いて簡単なプログラムの作成ができるようになる。
スケジュール欄を参照のこと
https://www.cis.twcu.ac.jp/~konishi/index-j.html
授業内容に応じて参考資料を紹介する。
以下の基準にしたがって成績を評価する。
課題のプログラムはすべて提出すること。
試験は実施しない。
メール・アドレス: konishi@cis.twcu.ac.jp
回数 | 授業内容 | 教室外学習 | |
---|---|---|---|
内容 | 時間の目安 | ||
1 | コンピューターとプログラム | プログラミングの経験を問うアンケートを行うので、メールで回答すること。 | 120 |
2 | 変数と式(1)整数 | 変数と式に関する課題を出すので、そのプログラムを作成すること。 | 120 |
3 | 変数と式(2)実数 | 変数と式に関する課題を出すので、そのプログラムを作成すること。 | 120 |
4 | 条件文(1)if文とif-else文 | 条件文に関する課題を出すので、そのプログラムを作成すること。 | 120 |
5 | 条件文(2)多重if-else文とswitch文 | 条件文に関する課題を出すので、そのプログラムを作成すること。 | 120 |
6 | 繰返し文(1)for文 | 繰返し文に関する課題を出すので、そのプログラムを作成すること。 | 120 |
7 | 繰返し文(2)while文と2重ループ | 繰返し文に関する課題を出すので、そのプログラムを作成すること。 | 120 |
8 | 配列(1)配列の使い方 | 配列に関する課題を出すので、そのプログラムを作成すること。 | 120 |
9 | 配列(2)配列のコピーと並列配列 | 配列に関する課題を出すので、そのプログラムを作成すること。 | 120 |
10 | 手続きと関数(1)メソッドの引数と返り値 | 手続きと関数に関する課題を出すので、そのプログラムを作成すること。 | 120 |
11 | 手続きと関数(2)論理型とブール値メソッド | 手続きと関数に関する課題を出すので、そのプログラムを作成すること。 | 120 |
12 | レコード | レコードに関する課題を出すので、そのプログラムを作成すること。 | 120 |
13 | 文字と文字列 | 文字と文字列に関する課題を出すので、そのプログラムを作成すること。 | 120 |
14 | 例外 | 例外に関する課題を出すので、そのプログラムを作成すること。 | 120 |
15 | まとめ |
|
|
備考 |
授業の進みぐあいや受講者の反応を考慮し、スケジュールには多少の変更を加えることがある。
以下は遠隔授業になった場合: 授業ではZoomを用いる。 プログラミングの課題はホームページに載せる。 パソコンを持っているのが望ましいが、タブレットしか持っていなくても、オンラインでプログラミングの課題に取り組めるようにする。 最初の授業の前日までに履修者あてにメールを送るので、その指示に従うこと。 メールが届かない場合は、上記アドレスまで連絡すること。 |
この授業の内容は、一言で言うと、プログラミングです。 プログラミング ( 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がプログラムに従って演算や制御を行うことを、プログラムを 動かす ( run )または 実行する ( execute )と言います。 コンピューターが動くことは、CPUがプログラムを実行することです。
以上をまとめると、人間がプログラムを作成してコンピューターに与えると、コンピューターはそのプログラムに従って動くというわけです。 つまり、プログラミングができるようになれば、コンピューターを思い通りに動かせるようになります。
さて、CPUにプログラムを実行させるには、CPUが直接読み書きできる主記憶装置に、そのプログラムを格納する必要があります。 しかし、主記憶装置は電源が切れると、その中の情報は消滅します。 そこで、主記憶装置と補助記憶装置を次のように使い分けます。
コンピューターの電源が入る前、プログラムは、ハードディスクやCD-ROMなどの補助記憶装置に格納されています。 コンピューターの電源が入ると、必要に応じて、補助記憶装置の中のプログラムが主記憶装置にコピーされます。 そして、CPUは主記憶装置の中のプログラムを実行します。 コンピューターの電源を入れてから使えるようになるまで時間がかかるのは、補助記憶装置から主記憶装置にプログラムをコピーしているからです。
なお、プログラムの集合体は ソフトウェア ( software )と呼ばれます。 この言葉は、ハードウェア(元々の意味は金物)の反対という意味で作られた言葉です。
また、ソフトウェアという言葉はソフトと略されることが多く、「ワープロ・ソフト」や「表計算ソフト」のように使われます。 ワープロ・ソフトも表計算ソフトも、人間が作ったプログラムなのです。
この授業ではプログラミングを学ぶわけですが、勉強すると何がよいのかについて説明しておきます。
1. プログラマーになれる。
プログラマー ( programmer )とは、プログラムを作成する人のことです。 この授業より難しい勉強が必要になりますが、プログラマーとしての職が得られるかもしれません。
2. パソコンをより便利に使える。
たとえ10行程度のプログラムでも、道具として役に立つことがあります。 自分でプログラムを作成し、それを自分の道具にすることで、パソコンをより便利に使うことができます。
3. パソコンについての理解が深まる。
プログラミングの経験があれば、パソコンがどのように動いているのか、ある程度理解ができます。 パソコンにトラブルが発生しても、適切に対処できるかもしれません。
プログラムを日本語で書いても、コンピューターは理解してくれません。 プログラムを書くための専用の言語が、いくつか定義されています。 それらの言語を、 プログラミング言語 ( programming language )とよびます。
プログラミング言語を1つ選び、その言語でプログラムを書けば、コンピューターはそのプログラムを理解してくれるのです。
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を使って開発します。
実は、人間がJavaのプログラムを作成しても、コンピューターは「そのままでは」理解してくれません。 Javaのプログラムを作成したら、コンピューターが理解できるプログラムに翻訳して、翻訳したプログラムを実行するのです。
Javaに限らず、人間が作成したプログラムを、コンピューターが理解できるプログラムに翻訳することを コンパイル ( compile )といいます。 コンパイルするソフトウェアを コンパイラー ( compiler )とよびます。
Javaのコンパイラーとして基本的なのは、 JDK (Java Development Kit)です。 JDKには、有料版の Oracle JDK と、無料版の OpenJDK があります。 Javaを仕事で使うならOracle JDK、Javaの勉強をするならOpenJDKがよいでしょう。
パソコンにOracle JDKやOpenJDKをインストールすれば、Javaのプログラムをコンパイル・実行できます。 Windowsパソコンであれば、
となります。
参考までに、自宅のWindowsパソコンにOpenJDKをインストールして使いたい人のために、インストールの方法と使い方を以下の付録に載せています。
プログラミングの勉強が目的であれば、「JDK」+「メモ帳」+「コマンド・プロンプト」でも十分です。 しかし、仕事でプログラミングを行うとなると、これらが一体となったソフトウェアを利用することになります。 統合開発環境 ( IDE ; Integrated Development Environment )とは、プログラムの入力、コンパイル、実行が、1つの画面で行えるソフトウェアです。
JavaのIDEとしては、 Eclipse が有名です。 また、Androidスマホのアプリ開発では、 Android Studio というIDEが使われます。
オンライン・コンパイラー ( online compiler )とは、遠隔地にあるサーバーの上で、プログラムのコンパイル・実行ができるシステムです。 通常、オンライン・コンパイラーは、ウェブ・サイトをウェブ・ブラウザーで開いて利用します。 オンライン・コンパイラーを使うなら、パソコンにコンパイラーやIDEをインストールする手間が省けるので、すぐにプログラミングの勉強ができます。
現在、インターネットでは様々なオンライン・コンパイラーが利用可能です。 ここでは、授業で使うための条件
を満たした、codiva.ioとonline-ide.comを取り上げます。
オンライン・コンパイラー codiva.io は、C、C++、Java、Pythonの4種類のプログラミング言語に対応しています。 プログラムの実行中のキー入力については、専用の入力欄に入力するという方式です。
オンライン・コンパイラー online-ide.com は、C、C++、Python、Java、PHP、Ruby、R、Go、Bashの9種類のプログラミング言語に対応しています。 ただし、プログラムの実行中にキー入力を行うと、余計な改行が入って表示が多少乱れます。
この授業では、基本的にcodiva.ioを使うことにします。 万が一codiva.ioが使えなくなったときは、online-ide.comを使うことにします。
まず、URL https://www.codiva.io/ を開きます。 または「codiva java」で検索して、検索結果の一番上を開きます。 「Start coding now」の直下の「Try without login!」をクリックまたはタップします。
もし「Select the language」というの選択肢が表示されたら、「Java」をクリックまたはタップし、「Create project」をクリックまたはタップします。
上側の「My Projects」をクリックまたはタップします。
「Project Name」入力欄にプロジェクト名(例えばTest)を入力し、「Create」ボタンをクリックまたはタップします。
「CLASS / FILE NAME:」入力欄にファイル名(例えばProgramTest.java)を入力し、「DIRECTORY:」入力欄は「src/」のままにして、「Create」ボタンをクリックまたはタップします。
すると、ファイル・タブが開き、プログラムが入力できるので、(例えば以下の)プログラムをキー入力またはコピー・アンド・ペーストします。 (保存は不要です。)
/* 1*/ class ProgramTest { /* 2*/ public static void main (String[] args) { /* 3*/ System.out.println("OK"); /* 4*/ } /* 5*/ }
入力されたプログラムはすぐにチェックされ、エラー(間違い)があると行番号の左側にバツ印が表示されます。 バツ印の上にマウスを置くと吹き出しでエラー・メッセージが表示されるので、それを参考に修正してください。
エラーがなくなったら、上側の「Run」ボタンをクリックまたはタップして少し待つと、コンソール・タブが拡大して、実行結果が表示されます。 (例のプログラムであれば、「OK」と表示されます。) コンソール・タブを縮小するには、「Slide」をクリックまたはタップします。
ブラウザーを閉じると、せっかく作ったプログラムがすべて消えてしまいます。 必要なプログラムは、「メモ帳」などにコピー・アンド・ペーストしておいてください。
プログラムを追加するには、プラス印のファイル・タブをクリックまたはタップします。
codiva.ioの機能の1つに、作成中のプログラムを他の人にオンラインで見てもらうことができます。 上側の「Share」をクリックすると、codiva.ioの画面がインターネットに公開されます。 見てもらいたい人にURLを伝え、その人がそのURLを開けば、codiva.ioの画面が表示され、作成中のプログラムが見られるのです。 codiva.ioの画面を非公開にするには、「Unshare」をクリックします。
まず、URL https://www.online-ide.com/ を開きます。 または「online ide」で検索して、検索結果の上位にある「Online IDE」を開きます。
右上にあるドロップダウン・メニューから「Java」を選びます。
「Main.java」タブの右の「+」タブをクリックまたはタップし、ファイル名(例えばProgramTest.java)を入力すると、プログラムが入力可能になるので、(例えば以下の)プログラムをキー入力またはコピー・アンド・ペーストします。 (保存は不要です。)
/* 1*/ class ProgramTest { /* 2*/ public static void main (String[] args) { /* 3*/ System.out.println("OK"); /* 4*/ } /* 5*/ }
プログラムの下の「Run」ボタンをクリックまたはタップして少し待つと、プログラムが実行されます。 (例のプログラムであれば、「OK」と表示されます。)
Javaアプレット ( Java applet )(以下、単にアプレット)とは、ホームページの中で動くJavaプログラムのことです。 Javaが急速に普及した理由の一つに、アプレットを使うと高機能のホームページが作成できることがあげられます。 なお、アプレットでないJavaプログラムは、 Javaアプリケーション ( Java application )とよばれます。
アプレットは、1995年当時は、画期的な技術でした。 しかしその後、ブラウザーで動くプログラムは、Flash Playerが標準になりました。 さらに、スマートフォン(スマホ)の時代になり、スマホではアプリを利用することになり、スマホのブラウザーでFlash Playerが使えなくなりました。 このような時代の流れに従い、Javaバージョン11(2018年リリース)から、アプレットは廃止になりました。
現在、ブラウザーでプログラムを動かすには、JavaScriptを利用します。 JavaとJavaScriptは、名前は似ていますが、別物です。
アプレットの廃止とは関係なく、Javaのプログラムで、デスクトップにウィンドウを開いたり、そこに図形を描いたりすることができます。 このような、グラフィカルなプログラムを作成するには、いくつかの「部品」を組み合わせることになります。 もっとも単純なのは、フレームとキャンバスです。
フレーム ( frame )とは、Javaにおけるウィンドウのことです。 プログラムでフレームを生成すると、画面にウィンドウが開きます。 キャンバス ( canvas )とは、Javaにおける描画領域のことです。 プログラムでキャンバスを生成すると、そのキャンバスに図形を描くことができます。 最後に、プログラムでフレームにキャンバスを追加すれば、図形が表示されたウィンドウになるわけです。
残念ながら、多くのオンライン・コンパイラーは、グラフィカルなプログラムには対応していません。 この授業でも、グラフィカルなプログラムは作成しないことにします。
履修者の予備知識と受講環境を確認するため、アンケートを行います。 以下の質問に答え、回答をメールで提出してください。 差出人は大学発行のメール・アドレス(学生番号@cis.twcu.ac.jp)とし、宛先はkonishi@cis.twcu.ac.jpとします。 メールの本文には、学生番号、氏名、科目名、授業日(9月24日)を明記してください。
ここでは、自宅のパソコンがWindows 10だとして、現在よく使われているバージョンのJDK(JDK 11)をインストールしたいとします。
なお、Windows 10には32ビット版と64ビット版がありますが、OpenJDK 11は64ビット版にしかインストールできません。 使っている Windows 10が32ビット版か64ビット版か分からない場合は、スタート・ボタン→設定→システム→バージョン情報、とクリックすると、「システムの種類」の項目に「32ビット」または「64ビット」と表示されます。
1. OpenJDKの公式サイト https://openjdk.java.net/ を開く。
2. 左側の上から2番目の「Installing」をクリックする。
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 と入力して、バージョン情報が表示されたら、インストールは成功。
Javaでプログラムを作成すると、たくさんのファイルを扱うことになります。 そこで、作業用のフォルダー(java1)をデスクトップに作り、そのフォルダーの中で作業を行うことにします。 デスクトップを右クリックし、新規作成→フォルダー、とクリックし、 java1 と入力して、作業用のフォルダーを作成してください。
プログラムを入力するには「 メモ帳 」( notepad )を使います。 スタート・ボタン→Windows アクセサリ→メモ帳、とクリックしてください。 そして、「メモ帳」に(例えば以下の)プログラムを入力します。
/* 1*/ class ProgramTest { /* 2*/ public static void main (String[] args) { /* 3*/ System.out.println("OK"); /* 4*/ } /* 5*/ }
入力したら、プログラムをファイルに保存します。 ファイル→名前を付けて保存、とクリックし、作業用のフォルダー(java1)を選び、ファイル名(今回はProgramTest.java)を入力し、文字コードをANSIにして、保存します。
プログラムをファイルに保存したら、次にコマンド・プロンプトを使います。 コマンド・プロンプト ( command prompt )とは、Windowsをコマンドで操作するときに使うソフトです。 ここで、 コマンド ( command )とは、コンピューターを操作するためにキーボードから入力される文字列です。
コマンド・プロンプトを起動するには、スタート・ボタン→Windows システム ツール→コマンド プロンプト、とクリックします。 すると、コマンド・プロンプトが開き、最後の行に
C:\Users\(ユーザー名)>
と表示されます。 この部分は、 プロンプト ( prompt )とよばれます。 プロンプトのC:がカレント・ドライブを表し、\Users\(ユーザー名)がカレント・フォルダーを表します。 ここで、 カレント・ドライブ ( current drive )とは、コマンドの基準となるドライブです。 また、 カレント・フォルダー ( current folder )とは、コマンドの基準となるフォルダーです。
カレント・ドライブを変更するには、「(ドライブ名):」と入力します。 カレント・フォルダーを変更するには、「cd(フォルダー名)」と入力します。 ここで、cdはChange Directoryの略で、ディレクトリーとフォルダーは同じ意味です。
カレント・フォルダーをデスクトップのフォルダーjava1に変更するには、以下のように入力します。
C:\Users\(ユーザー名)>cd Desktop\java1 C:\Users\(ユーザー名)\Desktop\java1>
続いて、コンパイル・コマンドを入力します。 JDKでコンパイルするのは javacコマンド です。 プログラムはProgramTest.javaに保存されているので、 javac ProgramTest.java と入力します。
C:\Users\(ユーザー名)\Desktop\java1>javac ProgramTest.java C:\Users\(ユーザー名)\Desktop\java1>
もし エラー1個 のようなメッセージが表示されたら、どこかに入力ミスがあります。 ファイルProgramTest.javaを見直して、入力ミスを正し、保存して、もう一度javacコマンドを実行してください。 エラー・メッセージがなくなるまで、プログラムの修正・保存とjavacコマンドを繰り返します。
最後に、コマンド・プロンプトに実行コマンドを入力します。 JDKで実行するのは javaコマンド です。 プログラムはProgramTest.javaなので、 java ProgramTest と入力してください。 (ファイル名から.javaを取り除きます。)
C:\Users\(ユーザー名)\Desktop\java1>java ProgramTest OK C:\Users\(ユーザー名)\Desktop\java1>
今回のプログラムは、コマンド・プロンプトに OK と出力するものです。
どうしてもJavaの入門書が必要なら、書店に行って自分に合った本を探してください。 どれを選べばよいか分からないなら、以下の本が有名です。
Javaに関する公式文書は以下の通りです。 日本語版があるものは日本語版を選んでいます。