0521602-20090202

「C++言語」習得のための実践的研究
-「テンプレート」,「例外処理」,「実行時型情報」-
北海道情報大学 情報メディア学部
情報メディア学科 新井山ゼミ
0521602 佐藤 翼
発表内容(目次)
•
•
•
•
研究概要
研究目的
研究手順
開発成果
•
•
•
•
評価
考察
今後の課題
参考文献
研究概要
• 研究目的
– 「C++」言語習得
• 研究手順
– 参考書をもとにプログラムを制作
• 研究成果
– 約30点のプログラムを制作
研究目的
• C言語の発展型
– 「C言語」を専門学校時代に習得
発展・・・「C++」言語を研究テーマに設定
• プログラマとして・・・
– 多言語の習得による柔軟性獲得
• 独学・独習
– ゼロからの技術習得に挑戦
研究手順
• プログラミング
– 参考書の内容を理解しプログラムを制作
– 参考書中の内容を終えた時点で1段階上の
レベルの参考書を購入
• レビュー
– 制作したプログラム,使用した技法などを発表
– 問題点,改善要望があれば修正し再度発表
研究手順
• 開発環境
– 使用OS
• Windows Vista
Home Premium
– 使用コンパイラ
• Borland C++
Compiler 5.5
研究手順
• 開発支援ツール
– BCC Developer
•
•
•
•
•
•
プロジェクト管理機能
ソースファイル・エディタ内蔵
使いなれたエディタでソースファイルを編集可能
CUI/Windows GUIアプリケーションが作成可能
DLLとライブラリも作成可能
Turbo Debugger を直接,起動可能
開発成果(テンプレート)
• テンプレート
– さまざまな型のデータに適用できる一連の汎用
操作を定義する関数
– 汎用関数やクラス制作時にも使用可能
• 魔王VS勇者
– 戦闘する人物を変更する際などにテンプレートを
使用することでソースを流用することが可能に
開発成果(テンプレート)
• 魔王VS勇者の戦闘ゲーム
1. 勇者はエネルギーを消費して魔王に攻撃
2. 0~9の位置をひとつ選択し攻撃
3. 魔王の位置と選択した位置が一致するとクリーン・ヒット
消費したエネルギーの5倍のダメージ
4. 選択した位置が±1の場合,消費したエネルギー分の
ダメージ
5. クリーンヒットした場合魔王は+1~-1の間を移動
6. 勇者か魔王のエネルギーが尽きるとGAME OVER
魔王VS勇者の戦闘ゲーム
開発成果(例外処理)
• 例外処理
– 例外処理を利用することで,予期しない実行時
エラーをより簡易に管理,対処が可能
•
•
•
•
割り当てられていない記憶領域へのアクセス
ハードウェアの故障
ライブラリの欠損
etc…
• 他の言語の場合・・・
– Java,JavaScript,Adaなどの言語でもサポート
されている機能
開発成果(実行時型情報)
• 実行時型情報(Runtime Type Information)
– プログラム実行中にオブジェクトの型を判別可能
• ポリモーフィズムをサポートする言語
– オブジェクトの正確な性質はプログラムを実行す
るまで未定
• RTTIを使用することによりプログラム実行中に
オブジェクトの型を判別可能
開発成果(実行時型情報)
• 簡単な図形を描画するプログラム
– プログラム実行時にRTTIを使用してなにも表示
しない,長方形,三角形,直線のうちから無作為
に画面上に描画
– どの図形を描画するかは,乱数ジェネレータ関数
rand()の結果に応じて,無作為に決定
簡単な図形を描画するプログラム
評価
• プログラム制作
– 約30個のプログラムを制作
• システム開発
– ゼミ開始当初,中規模なシステムを制作予定
– プログラム制作が想定よりも難航し断念
• 習得した技術
– 100以上の技法を習得
考察
• プログラム制作
– 指導者への師事により,順調な言語習得と制作
活動が期待出来たか・・・
• 獲得した技術
– 習得技法などをまとめたWebページの制作を
通して,Webデザインコンテストへの出展など,
研究の広がりが期待出来たか・・・
今後の課題
• 習得した技術の保持
– 継続したプログラミング
• 他言語への応用
– 更なる言語習得に向け今回の成果を活用
参考文献
• C++Builder:
– http://www.codegear.com/jp/downloads/free/
cppbuilder/
• 小林健一郎: これならわかるC++
– 講談社(2001)
• Herbert Schildt: 独学C++第3版
– 翔泳社(1994) [邦訳]株式会社トップスタジオ
• BCC Developer:
– http://www.hi-ho.ne.jp/jun_miura/bccdev.htm