このドキュメントは http://edu.net.c.dendai.ac.jp/ 上で公開されています。
この講義は専門科目の最後の必修科目です。 コンピュータのプログラミング能力を初心者から中級者へ持ち上げるための内 容を含んでいます。 この講義を習得することにより、三年生のプログラミングの講義を深く理解で きるようになります。 また、通信系の研究室に所属しても実験の整理や分析など、 大量のデータの処理をコンピュータでできるようになります。 なお、不合格者が多い科目ではありますが、不合格になっても何の得もありません。
本講義の難易度ですが、基本的には OB の就職先の社員研修程度を目標として います。 つまり、文系の人たちと混ざって受ける社員研修において、情報系の学科の卒 業生として恥をかかない程度の実力が付くように設定してあります。
本講義での大きな目標は二つあります。 一つはオブジェクトクラスを作ることができること。 これは、単になんの要素も含まないクラスを定義するという意味ではなく、 アプリケーションソフトをオブジェクト指向プログラミングで作成する上で、 Java の常識を備えた基本的なクラスを作成できるという意味です。 これには、コンストラクタ、文字列化、比較、継承、型などの概念や、それに 伴うアルゴリズムやデザインパターンといった定石を知る必要があります。
もう一つはデータ構造として基本的かつ最も重要な木構造について学びます。 但し、木構造についても初歩の初歩である、データの格納だけを取り上げます。 なお、「データ構造とアルゴリズムII」では木構造をデータの分析に使用することま で学びます。
これらを学ぶと、メモリーを大量に使用できる(スケーラブルな)オブジェク ト指向的なプログラムを作成することができるようになります。
なお、大学院を他大学で学びたい人は、2007年までのデータ構造とアルゴリズム の方が入学試験範囲をカバーしていると思われます。 2007年までの講義内容とは、本講義の後半部分やデータ構造とアルゴリズム II の一部が若干重複しています。 しかし、本講義ではオブジェクト指向を前提としている点で、オブジェクト指 向を前面に出さない大学院試験では範囲をカバーしきれてない部分があります。 したがって、他大学院をめざすには2007年の講義資料も学習すると良いで しょう。
この講義を終えた後、引き続いて「データ構造とアルゴリズム II」という選 択科目が始まります。 内容は「作りたいプログラムをどうやって作るか?」がテーマです。 前半は「ルールとプログラム」の関係に関する理論を、後半は XML というデー タ構造と処理をテーマに学びます。 GUIプログラミングの基礎も学びます。 この講義を受けることで、作りたいプログラムを作ることができるようになり ます。
本講義は、基本的に講義中に演習を行いません。 しかし、講義についていくには、復習として講義中に出した課題についてプロ グラムを作成すべきです。 この時、プログラミングツールである Eclipse の利用を強くお勧めします。 講義では特に Eclipse の利用法を説明したりはしませんが、Eclipse を活用 することにより楽にプログラムの課題に取り組むことができます。 特に Source, Refactoring のメニューには様々な有益な項目がありますので、 メニューになにがあるか、またどのような役割があるのかを把握しておくと良 いと思います。 なお、Eclipse は日本語化ができます。 プログラミング技術が上達してきて、最新のツールが必要になってくると、英 語の情報が重要になってきます。 そして、最新の情報は英語の情報の方が多いため、日本語化しない方が楽に対 応できます。 しかし、初心者のうちは日本語化されていた方が使いやすいと思います。 初めのうちは最新版の Eclipse を日本語化して使うようにしてください。 また、Eclipse の付属のコンパイラは互換性が低いため, SUN の JDK のコン パイラを使用してください。 つまり、 SUN の JDK をインストールしてから, Eclipse をインストールし、 さらに日本語化をするようにしてください。
この講義では、Java の初心者を卒業するような人を対象にしています。 つまり、全く Java を知らないような人は対象外です。つまり、講義について いくことはまず無理だとおもいます。 次のプログラムの課題を自力で解ける程度の知識を前提にしています。 それでも、9 月中に自力で解けるようになれば、なんとかついていけるかも知 れません。
配列 int[] a = {1,2,3,4,5};
が定義されている時、合計、平均
を出力する Java プログラムを作りなさい。
但し、上記の配列の内容や要素数を変更しても、プログラムは変更せずに正常
に動作しなければならない。
有名な FizzBuzz 問題。
1から 100 までの数字を一行に1つずつ表示する Java のプログラムを作りな さい。 但し、3 の倍数の時は数の代わりに Fizz を表示し、 5 の倍数の時は数の代わりに Buzz を表示し、 3 と 5 の倍数の時には数の代わりに FizzBuzz を表示しなさい。
1 2 Fizz 4 Buzz Fizz 7 ...
講義は座学が中心で、演習などは行いません。 各自、サンプルプログラムや例題などを実際に動かしたりして、動作を確認す る復習を怠らないように願います。 又、参考文献に挙げた書籍を読むのも良いでしょう。 但し、 Java は Version 5 から大きく変わり、プログラミングテクニックも 変化しています。 しかし、それに対応した書籍は少ないです。 Version 1.4 以前の書籍を読む場合は、サンプルプログラムのコンパイル時に ワーニングすら出る場合がありますので、書籍を選ぶ際は十分に気をつけてく ださい。
期末試験は行わず、評価はレポート二通で行います。 レポート課題は例年通り、講義の資料にある演習問題を組み合わせたような 内容を出題します。
この講義は勉強せずに単位を取ることは難しいです。 他人に頼らずプログラムを書けるようになるよう目指してください。
本講義では最新版の Java の開発環境と、ドキュメントをもっとも重視します。 http://java.sun.com/で、 SUN の SDK のインストールと、ドキュメントのダウンロードは忘れずに行っ て下さい。 Eclipse に付属してくる Java のコンパイラではコンパイルできないものがあ るかもしれません。
この講義では Java 言語を主に使用しますが、対比のために C 言語も多少取 り上げます。 本講義を受講すると C 言語がどのような機能を持つ言語かは分かるようにな りますが、以前の講義と違い C 言語のプログラミングテクニック を多く説明したりはしません。
Java に関しても、本講義で重要と思われることのみを説明します。 つまり、 Java の全ての機能を説明するわけではありません。 機能の一部やクラスライブラリの一部しか紹介しません。 つまり、この講義では Web アプリケーションや、データベースとのやりとり などは行いません。 これらに関しては対応する講義で学んでください。