Javaアルゴリズム
本講義では、プログラミング言語Javaを用いて、アルゴリズムとデータ構造を学ぶ。 ソートや探索などのメソッドや、リストや木などのクラスを、ただ利用するのではなく自作することによって、アルゴリズムとデータ構造を理解する。 これによって、より高度なプログラムを作成できるようになることが目標である。
普段使っているソフトウェアがどのように動作しているか、その仕組みを理解し、そのソフトウェアに類似する簡単なプログラムを作成する技術を習得し、また、プログラム作成に必須であるアルゴリズムや、Javaの特徴の基本を理解する。 自分が使うための、簡単なプログラムを、自分で作ることができるようになることを目指す。
スケジュール欄を参照のこと
柴田望洋『新・明解Javaで学ぶアルゴリズムとデータ構造 第2版』SBクリエイティブ、2020
https://www.cis.twcu.ac.jp/~konishi/index-j.html
以下の基準にしたがって成績を評価する。
課題のプログラムはすべて提出すること。
試験は実施しない。
メール・アドレス: konishi@cis.twcu.ac.jp
回数 | 授業内容 | 教室外学習 | |
---|---|---|---|
内容 | 時間の目安 | ||
1 | 基本的なアルゴリズム(1)アルゴリズムとは | 基本的なアルゴリズムに関する課題を出すので、そのプログラムを作成すること。 | 120 |
2 | 基本的なアルゴリズム(2)繰返し | 基本的なアルゴリズムに関する課題を出すので、そのプログラムを作成すること。 | 120 |
3 | 基本的なデータ構造(1)配列 | 基本的なデータ構造に関する課題を出すので、そのプログラムを作成すること。 | 120 |
4 | 基本的なデータ構造(2)クラス | 基本的なデータ構造に関する課題を出すので、そのプログラムを作成すること。 | 120 |
5 | 探索(1)基本 | 探索に関する課題を出すので、そのプログラムを作成すること。 | 120 |
6 | 探索(2)応用 | 探索に関する課題を出すので、そのプログラムを作成すること。 | 120 |
7 | スタックとキュー(1)スタック | スタックとキューに関する課題を出すので、そのプログラムを作成すること。 | 120 |
8 | スタックとキュー(2)キュー | スタックとキューに関する課題を出すので、そのプログラムを作成すること。 | 120 |
9 | 再帰的アルゴリズム(1)基本 | 再帰的アルゴリズムに関する課題を出すので、そのプログラムを作成すること。 | 120 |
10 | 再帰的アルゴリズム(2)応用 | 再帰的アルゴリズムに関する課題を出すので、そのプログラムを作成すること。 | 120 |
11 | ソート(1)基本 | ソートに関する課題を出すので、そのプログラムを作成すること。 | 120 |
12 | ソート(2)クイックソート | ソートに関する課題を出すので、そのプログラムを作成すること。 | 120 |
13 | ソート(3)マージソート | ソートに関する課題を出すので、そのプログラムを作成すること。 | 120 |
14 | ソート(4)ヒープソート | ソートに関する課題を出すので、そのプログラムを作成すること。 | 120 |
15 | ソート(5)度数ソート | ソートに関する課題を出すので、そのプログラムを作成すること。 | 120 |
備考 | 授業の進みぐあいや受講者の反応を考慮し、スケジュールには多少の変更を加えることがある。 |
この授業では、大量のプログラム・ファイルを扱います。 そのため、授業用のフォルダーを作成し、そこに保存することにします。 例えば、デスクトップに「java2」というフォルダーを作成してください。
テキストに載っているプログラムを手入力するのは時間の無駄なので、ダウンロードします。 著者のウェブ・サイト
の右側にある「新刊情報」の中の『新・明解Javaで学ぶアルゴリズムとデータ構造 第2版』をクリックし、「ダウンロード」をクリックすると、ダウンロード・ページが開きます。 ZIP形式については、UTF-8のものをダウンロードします(MS932(Shift-JIS)ではありません)。 ダウンロードしたら、ZIPファイルについては展開し、分かりやすい名前(例えば、「textbook」フォルダー、「exercise」フォルダー、「目次.pdf」ファイル、「索引.pdf」ファイル)に変更し、すべて「java2」フォルダーに移動してください。
この授業では、開発環境としてVisual Studio Code(VS Code)を利用します。
VS Codeは、Microsoft社が開発しているテキスト・エディターですが、
ので、開発環境として使うことができます。
情報処理教室のパソコンには、すでにJDKとVS Codeがインストールされています。 なので、あとはVS Codeで
の設定を行えば、Javaのプログラミングが始められます。
まず、メニューやメッセージを日本語化します。
1. スタート・ボタン→「Visual Studio Code」とクリック。
2. 左側のExtension(拡張機能)アイコンをクリック。
3. 検索入力欄に「Japanese」と入力。
4. 検索結果の中の「Japanese Language Pack for Visual Studio Code」の「Install(インストール)」ボタンをクリック。
5. しばらくすると、右下に「Change Language and Restart」ボタンが表示されるので、それをクリック。
6. VS Codeが再起動されるので、メニューが日本語になっていることを確認。
次に、Java用の拡張機能を追加します。
1. 左側のExtension(拡張機能)アイコンをクリック。
2. 検索入力欄に「Java」と入力。
3. 検索結果の中の「Extension Pack for Java」の「Install(インストール)」ボタンをクリック。
次に、VS Codeで「java2」フォルダーを開きます。
1. 左上の「File(ファイル)」メニュー→「Open Folder(フォルダーを開く)」とクリックして、デスクトップの「java2」フォルダーを選択。
2. もし、作成者を信頼するか聞かれたら、「はい、作成者を信頼します」ボタンをクリック。
これで、VS Codeの設定は完了です。
VS Codeの設定が終わったので、次に、テスト・プログラムを入力して実行しましょう。
まず、プログラム・ファイル「ProgramTest.java」を作成します。 左上の「File(ファイル)」メニュー→「New File(新しいファイル)」とクリックして、入力欄に「ProgramTest.java」と入力してください。
次に、ウィンドウの右側に以下のプログラムを入力します。 手入力でもいいですが、コピー・アンド・ペーストのほうが楽です。 左側の行番号は入力しません。
class ProgramTest { public static void main (String[] args) { System.out.println("OK"); } }
なお、プログラムの中に、入力していない文字が表示されるかもしれません。 灰色の「Run」「Debug」「x:」などは、ヒントを表示しているだけなので、無視してください。
入力が終わったら、左上の「File(ファイル)」メニュー→「Save(保存)」とクリックして、ファイルに保存してください。
最後に、プログラムを実行します。 左側の「Run and Debug(実行とデバッグ)」アイコンをクリックし、「Run and Debug(実行とデバッグ)」ボタンをクリックしてください。
もし、ブロックされているという警告が出たら、「アクセスを許可する」ボタンをクリックしてください。 (情報処理教室では「キャンセル」ボタンをクリックしてください。)
ウィンドウの右下に大量の文字が表示されますが、水色の文字の直後に「OK」と表示されれば、プログラムが正しく実行されたことになります。
このプログラムは、画面に「OK」と表示するものです。
今度は、間違ったプログラムを試してみます。 例えば、3行目の「System.out」を「Systemout」とタイプミスしたとしましょう。 実行する前に保存するのを忘れないでください。
実行してみると、ウィンドウの右下に少ししか文字が表示されず、「Build failed, do you want to continue?」と表示されます。 「Continue」ボタンをクリックすると、水色の文字の直後に、エラー・メッセージ(プログラムの間違いの説明)が表示されます。
これは、プログラムの「Systemout」の部分が間違っているという意味です。
エラー・メッセージを参考にしてプログラムの間違いを直し、保存・実行してください。
テキストpp.2--13を参照。
{
…
}
)を省略できます。
場合 | 場合分け1 | 場合分け2 | 場合分け3 | 大小関係 | 中央値 | 備考 |
---|---|---|---|---|---|---|
A | a > b | b > c |
|
a > b > c | b |
|
B | b = c |
|
a > b = c | b |
|
|
C | b < c | a > c | a > c > b | c |
|
|
D | a = c | a = c > b | a |
|
||
E | a < c | c > a > b | a |
|
||
F | a = b | b > c |
|
a = b > c | b |
|
G | b = c |
|
a = b = c | b |
|
|
H | b < c |
|
c > a = b | a | a ≦ c が成り立つ | |
I | a < b | a > c |
|
b > a > c | a |
|
J | a = c |
|
b > a = c | c | b > c が成り立つ | |
K | a < c | b > c | b > c > a | c |
|
|
L | b = c | b = c > a | b |
|
||
M | b < c | c > b > a | b |
|
p.2のList 1-1を参考にして、3つの整数値を読み込んで、最大値と最小値を求めて表示するプログラムを作成してください。
import java.util.Scanner; class MaxMin3 { public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); } }
PS ...\Desktop\java2> & ... 'MaxMin3' 三つの整数の最大値と最小値を求めます。 aの値:1 bの値:3 cの値:2 最大値は3です。 最小値は1です。 PS ...\Desktop\java2>
余力のある人は、p.6のList 1-2とp.7の演習1-2も参考にして、3値の最大値を求めるメソッド
static int max3(int a, int b, int c)
と、3値の最小値を求めるメソッド
static int min3(int a, int b, int c)
を作成し、それらを呼び出して、最大値と最小値を求めてください。
import java.util.Scanner; class MaxMin3Method { static int max3(int a, int b, int c) { } static int min3(int a, int b, int c) { } public static void main(String[] args) { Scanner stdIn = new Scanner(System.in); } }
PS ...\Desktop\java2> & ... 'MaxMin3Method' 三つの整数の最大値と最小値を求めます。 aの値:1 bの値:3 cの値:2 最大値は3です。 最小値は1です。 PS ...\Desktop\java2>
完成したら、答案(Javaプログラム)をメールで提出してください。 差出人は大学発行のメール・アドレス(学生番号@cis.twcu.ac.jp)とし、宛先はkonishi@cis.twcu.ac.jpとします。 メールの本文には、学生番号、氏名、科目名、授業日(9月19日)を明記してください。
自宅のパソコンにJDKとVS Codeをインストールすれば、自宅で自習したり課題をやったりできます。 実は、「Coding Pack for Java」というものを使えば、JDK、VS Code、Extension Pack for Javaを一気にインストールすることができます。 なので、「Coding Pack for Java」をインストールして、追加で「Japanese Language Pack for Visual Studio Code」をインストールすれば、情報処理教室のパソコンと同じようにプログラミングができるようになります。