「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勇者 戦闘する人物を変更する際などにテンプレートを使用することでソースを流用することが可能に
開発成果(テンプレート) 魔王VS勇者の戦闘ゲーム 勇者はエネルギーを消費して魔王に攻撃 0~9の位置をひとつ選択し攻撃 魔王の位置と選択した位置が一致するとクリーン・ヒット消費したエネルギーの5倍のダメージ 選択した位置が±1の場合,消費したエネルギー分のダメージ クリーンヒットした場合魔王は+1~-1の間を移動 勇者か魔王のエネルギーが尽きるとGAME OVER
魔王VS勇者の戦闘ゲーム
開発成果(例外処理) 例外処理 他の言語の場合・・・ 例外処理を利用することで,予期しない実行時 エラーをより簡易に管理,対処が可能 割り当てられていない記憶領域へのアクセス ハードウェアの故障 ライブラリの欠損 etc… 他の言語の場合・・・ Java,JavaScript,Adaなどの言語でもサポートされている機能
開発成果(実行時型情報) 実行時型情報(Runtime Type Information) ポリモーフィズムをサポートする言語 プログラム実行中にオブジェクトの型を判別可能 ポリモーフィズムをサポートする言語 オブジェクトの正確な性質はプログラムを実行するまで未定 RTTIを使用することによりプログラム実行中に オブジェクトの型を判別可能
開発成果(実行時型情報) 簡単な図形を描画するプログラム プログラム実行時にRTTIを使用してなにも表示しない,長方形,三角形,直線のうちから無作為に画面上に描画 どの図形を描画するかは,乱数ジェネレータ関数rand()の結果に応じて,無作為に決定
簡単な図形を描画するプログラム
評価 プログラム制作 システム開発 習得した技術 約30個のプログラムを制作 ゼミ開始当初,中規模なシステムを制作予定 プログラム制作が想定よりも難航し断念 習得した技術 100以上の技法を習得
考察 プログラム制作 獲得した技術 指導者への師事により,順調な言語習得と制作 活動が期待出来たか・・・ 習得技法などをまとめたWebページの制作を 通して,Webデザインコンテストへの出展など, 研究の広がりが期待出来たか・・・
今後の課題 習得した技術の保持 継続したプログラミング 他言語への応用 更なる言語習得に向け今回の成果を活用
参考文献 C++Builder: 小林健一郎: これならわかるC++ Herbert Schildt: 独学C++第3版 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