本講義では、Java言語を用いて基本的なアルゴリズムを学ぶ。 再帰、リスト、木などの概念を理解し、整列プログラムを作成することが目標となる。 また、オブジェクト指向プログラミングについても触れる。 Java言語の基礎知識を仮定する。
授業内容に応じて参考資料を紹介する。
原則として毎回レポート課題を出す。 最後の授業では筆記試験を行う。 レポートの採点結果と試験の得点を総合して成績を決定する。
レポートはすべて提出すること。
レポート課題に取り組むこと。
コンピュータの台数の関係により、履修希望者が80名を越えた場合は抽選を行います。
この授業は、Javaの入門程度は理解している人を対象にしています。 プログラミングは初めてという人は履修しないでください。 Javaは知らないがCは知っているという人なら履修しても大丈夫です。
授業のテーマは次の3点です。
整列とは、与えられた数の列を小さい順に並べ替えることです。 整列は、基本的なデータ処理であると同時に、工夫次第では高速処理が可能になります。 この授業では、代表的な整列アルゴリズムと、そこで使われるデータ構造について学びます。
オブジェクト指向プログラミングとは、データ構造を中心にしてプログラムを構成するというプログラミングのことです。 最近のプログラミング言語は、多くはオブジェクト指向の考え方を取り入れています。 この授業では、オブジェクト指向プログラミングの入門的な内容について説明します。
この授業では、次のようなアプリケーションを利用します。
Jedit は、アートマン21が開発したテキスト・エディタです。 「 ターミナル 」は、Mac OS Xに付属しているターミナル・ソフトウェアです。
今日は、これらのアプリケーションの使い方を覚えながら、授業の準備をします。
この授業では、演習でいくつかのプログラムを作成します。 すでに自分でプログラムを保存している学生もいると思いますので、授業用のフォルダを作り、そこに演習で作ったファイルを置くことにします。
もし、「フォルダ」という言葉を聞いたことがなければ、これを「ディレクトリ」と読み替えてください。 この授業では、フォルダとディレクトリは同義語です。
はじめに、「ターミナル」を起動します。 「ターミナル」を起動するには次のようにします。
次に、授業用のフォルダを作成します。 この作業は一度行えばよいものです。 「ターミナル」で次のように入力してください。
b04a001@AsiaA1:~% mkdir comp3b b04a001@AsiaA1:~%
続いて、Jeditを起動します。 Jeditを起動するには次のようにします。
今日は、次のプログラムを実行します。 このプログラムは、"Good afternoon!"と出力するものです。
/* 1*/ class GoodAfternoon { /* 2*/ public static void main (String[] args) { /* 3*/ System.out.println("Good afternoon!"); /* 4*/ } /* 5*/ }
プログラムをファイルに保存するには、次のようにします。
プログラムを実行するには、「ターミナル」で次のように入力します。
b04a001@AsiaA1:~% cd comp3b b04a001@AsiaA1:~/comp3b% javac GoodAfternoon.java b04a001@AsiaA1:~/comp3b% java GoodAfternoon Good afternoon! b04a001@AsiaA1:~/comp3b%
確かに出力されました。
履修者の予備知識を確認するため、アンケートを行います。 以下の質問に答え、回答をメールで提出してください。 メールの差出人は学内のアドレス(b04a001@twcu.ac.jpなど)とし、メールの宛先はkonishi@twcu.ac.jpとします。 メールの本文には、学生番号、氏名、科目名、授業日(9月30日)を明記してください。
次に、2の約数を左から順に探します。 この場合は自分自身ですので、2の右隣に次の数3を格納します。{2, 0, 0, 0, ...}
続いて、3の約数を左から順に探します。 この場合も自分自身ですので、3の右隣に次の数4を格納します。{2, 3, 0, 0, ...}
4の約数を左から順に探します。 この場合は自分でない数2で割り切れますので、4に1を足して5にします。{2, 3, 4, 0, ...}
5の約数を左から順に探します。 この作業を、素数が1000個見つかるまで繰り返します。{2, 3, 5, 0, ...}