プログラミングを勉強中の人に出す例題、練習問題として、よいと思われるものを教えてください。


対象者のレベル分けとしては、
1.VB等でコンポーネントプログラミングができる程度
(フォーム上にボタン等を貼り付け、プロパティ、メソッドを使い計算結果を表示する等)
2.制御構文、変数等を理解して、利用できる程度
3.自作関数や配列等を理解して利用できる程度
4.オブジェクト指向的な概念や考え方(クラスや継承等)を学習した程度
です。

今のところ、
1の人には、「連立方程式を解くプログラム」や「BMI指数の計算」等
2の人には、「階乗、べき乗計算」や「数値を入力し、合否判定」等
3の人には、「配列内の値のソート(バブル・クイック)」等

を考えているのですが、4の人に出す問題として「シンプルで手軽な」練習問題が思い浮かびません。そこそこ実用的でイメージしやすい例はないでしょうか?

アルゴリズムやオブジェクト指向的な考え方を理解して欲しいので、言語等は一般的なものであれば何でも結構です。

1~4まで、何かよいものがあったら、教えてください。
よろしくお願いいたします。

回答の条件
  • 1人5回まで
  • 登録:2007/05/15 10:43:27
  • 終了:2007/05/20 23:29:03

回答(4件)

id:Mr_T_0023 No.1

Mr_T_0023回答回数20ベストアンサー獲得回数02007/05/15 12:24:56

ポイント20pt

Mr.Tです、こんにちは。

よくあるのが、クルマなんかをサンプルにしているものとかですね。

クルマというスーパークラスがあって、派生してトラック、軽自動車、なんて形になりますね。

実はクルマは、馬車とかの派生であった、とか。

id:hina1981

こんにちは。

ありがとうございます。


クルマクラス:

プロパティ:色・メーカ・ガソリン残量など

メソッド:進む、止まる、曲がるなど

とかいう例ですね。


私的に、オブジェクト指向を理解している人が別言語を使うときの書式の確認等で使う分にはよいと思うのですが、オブジェクト指向を学習したばかりの人が使ってもイマイチ実感がわかないと思うのです。

できれば、作っているクラス等が普段使っているコンピュータ上の処理としてイメージできる例が欲しいです。

すみません、どうぞよろしくお願いいたします。

2007/05/15 16:41:47
id:memo77 No.2

memo77回答回数238ベストアンサー獲得回数202007/05/15 12:38:03

ポイント30pt

自分としては

ここの http://www.objectclub.jp/

このテキストが http://www.objectclub.jp/technicaldoc/c/training.pdf

本当に役に立ちました。

id:hina1981

ありがとうございます。

確認して見ます。

2007/05/20 23:28:17
id:YOSIZO No.3

YOSIZO回答回数64ベストアンサー獲得回数12007/05/15 17:59:22

ポイント30pt

GUI環境であればゲームは題材として使いやすいと思います。

キャラごとにクラスを作り、同時に表示させることでマルチプルインスタンスを感覚的に理解できます。

また、キャラごとにパラメーターや振る舞いを変えてみることでも継承を理解しやすいと思います。

id:hina1981

ありがとうございます。

ゲーム作りを題材にするというのはいいですね!!


その昔(OOを全く理解していない頃)、STGのソースを拾ってきて読んだときのことを思い出しました。

確か、enemyクラス(HPや座標情報のフィールドを持つ)から継承し、自機に突っ込んでくるenemy1クラスやすぐにいなくなるenemy2クラスを、みたいなカンジで作っていました。

もう一度、あのときのソースを読み返しながら、サンプルとして使える部分を見つけてみたいと思います。

2007/05/16 09:51:10
id:witt No.4

witt回答回数4ベストアンサー獲得回数02007/05/19 17:11:24

ポイント10pt

4について。

クラスについて理解させるには、自作文字列クラスを作らせるとよいです。

C言語には文字列処理関数がありますが、その引数に与えるデータと関数の手続きには強い依存関係があることがわかると思います。であるならば、ひとつにまとめてしまえばよい。それがクラスです。上記の問題をやらせれば、クラスのありがたみがわかるはずです。

なお、オブジェクト指向と一口にいっても、上記のクラスを含めた様々な概念が存在します。オブジェクト指向の中で特に重要な概念として、ポリモーフィズム(これはメインルーチンの共通化を目的としたもの)がありますが、この理解を促進する問題としては、ADOやJDBCのような自作のデータベース用APIを作らせればよいでしょう。

id:hina1981

ありがとうございます。

ん~、実用的でオブジェクト指向のメリットを理解しやすい例ではあるのですが、プログラミングを勉強中の人には難易度が高そうな気がします……。

OOPの勉強というよりも、文字列処理やDBとの連携方法などの勉強の方がメインになってしまいそうな気がします……。

2007/05/20 22:14:37

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません