プログラミング序論3(2015年度)

授業科目, www.kameda-lab.org 2016/02/04f

本授業について

講師:亀田能成
TA:笹井・鴇
連絡先:ic2qa[at]image.esys.tsukuba.ac.jp
教室:3L504(計算機室)
期間:秋C
時間:木曜1,2時限目(8:40-9:55, 10:10-11:25)
単位:1単位

本講義(プログラミング序論3)は秋Cモジュールに, 筑波大学理工学群工学システム学類 (知的工学システム・機能工学システム主専攻)の2年生を 想定して開講されます.
受講にあたっては, 2年生配当の「プログラミング序論1」「プログラミング序論2」 の知識が必須になります.
(その単位が本講義単位取得の前提になっているわけではありません.)

また,本講義の内容は 3年生配当の「データ構造とアルゴリズム」 の履修に役立ちます.

過年度生(2013年度以前に「計算機序論2」を落としている学生)は必ず本講義時間に出席し成績認定を受けること.


日程

全て3L504(計算機室)で行います.

年/月/日内容
2016/01/0801 Sec.1-4 Review of C programming
2016/01/1402 Sec.5 Eclipse and basic skills of compile and link
2016/01/2103 Sec.6 OpenGL programmiing
2016/01/2804 Sec.7-8
2016/02/0405 Sec.9-11


講義資料

この資料では,プログラミング序論1・2に限らずこれまでの工学システム学類の授業と幾分被っているところがあります.
本授業履修生以外の学生が,この資料だけでも独習がある程度できるようにとの配慮からです.
もうすでに知っているというところは飛ばして読んでください.

OpenGLを用いたC言語によるCGプログラミング

1. プログラミング基礎復習 -- "Hello ESYS" 再び --
1.1. ぞんざいなHello ESYS
1.2. 上品なHello ESYS
1.3. 至極丁寧なHello ESYS
1.4. 知っていると便利なマクロ

2. ファイルの開き方
2.1. ファイルのぞんざいな開き方
2.2. ファイルの上品な開き方
2.3. bashとの連携

3. 関数利用によるプログラムの構造化
3.1. 簡易電卓プログラムの設計
3.2. fgets()の試運転
3.3. sscanf()の試運転
3.4. 簡易電卓

4. 分割したファイルでのプログラミング
4.1. C言語プログラムのソースファイル分割
4.2. 簡易電卓・分割コンパイル版
4.3. 簡易電卓・自家製ライブラリの製作と利用

5. Eclipse CDT (C Development Tooling) 入門
5.1. 作業概念
5.1.1. 2種類のパースペクティブと2種類の実行ファイル
5.1.2. プロジェクト
5.1.3. ワークスペース
5.2. フォルダとファイルの配置
5.2.1. ワークスペース
5.2.2. プロジェクト
5.2.3. ソースファイル
5.2.4. 実行ファイルと実行時カレントディレクトリ
5.2.5. その他
5.3. はじめてのeclipse
5.3.1. eclipseの起動とワークスペースの設定
5.3.2. eclipseの初期設定
5.4. はじめてのプロジェクト - Hello Eclipse -
5.4.1. プロジェクト概要の決定
5.4.2. 新規プロジェクトの登録
5.4.3. 新規ソースファイルの作成
5.4.4. コーディングとデバッグ用実行ファイルの作成
5.4.5. 実行時デバッグの設定
5.4.6. 実行時デバッグ
5.4.7. ステップ実行(ステップイン,ステップオーバー)
5.4.8. デバッグの再実行
5.4.9. 通し実行(Run, Break point)
5.4.10. C/C++パースペクティブに戻る前に - デバッグの終了 -
5.4.11. デバッグ用実行ファイルの動作確認
5.4.12. パースペクティブの切り替え
5.4.13. リリース用実行ファイルの生成
5.5. プロジェクトへの外部ソースファイルの持ち込み - Hello ESYS again -
5.5.1. プロジェクトの概要
5.5.2. 新規プロジェクトの登録
5.5.3. 外からのソースファイルの取り込みとデバッグ・実行
5.6. プロジェクトへの外部ソースファイル群の持ち込み - 簡易電卓の分割ソースファイル群 -
5.6.1. プロジェクトの概要
5.6.2. 新規プロジェクトの登録
5.6.3. 外からの分割ソースファイル群の取り込みとデバッグ・実行
5.7. プロジェクトへの外部ソースファイル群の持ち込み - ファイルを開くプログラム -
5.7.1. プロジェクトの概要
5.7.2. 新規プロジェクトの登録
5.7.3. 外からのソースファイルの取り込み
5.7.4. 起動時引数(オプション)を伴う実行時デバッグの構成
5.7.5. eclipse:デバッグパースペクティブでの配列変数の読み方と,文字列の配列というargvの構造
5.8. 補足資料

6. OpenGLプログラミング入門
6.1. はじめてのOpenGL - プログラムの枠だけ -
6.2. はじめてのOpenGL - バッファを切り替えよう -
6.3. はじめてのOpenGL - バッファ切替の確認 -
6.4. はじめてのOpenGL - バッファを時間で切り替え -
6.5. はじめてのOpenGL - 直交投影カメラ -
6.6. はじめてのOpenGL - 線画物体を描画 -
6.7. はじめてのOpenGL - 周期的動作 -
6.8. はじめてのOpenGL - マイクロ秒オーダの計測 -
6.9. はじめてのOpenGL - コードクリーニング -

7. GLUTを用いたプログラムの構造化
7.1. プログラムの構造設計
7.2. ファイル分割
7.3. ファイル分割に伴う修正
7.4. イベントの追加(キーボード)
7.5. イベントの追加(ロゴの拡大縮小)

8. GLUTを用いたCGの移動と回転
8.1. OpenGLライブラリが使う行列
8.2. 初めての移動
8.3. OpenGLでの行列操作の実際
8.4. 多段階の行列操作

9. 透視投影
9.1. 透視投影の導入(暫定)
9.2. 透視投影の導入(正式)
9.3. 透視投影下での回転と移動

10. ファイルからの3DCGモデル読込
10.1. ファイルのオープン・クローズ
10.2. モデルデータのファイルからの読込

11. 3DCGモデルの表示
11.1. プログラム同居
11.2. プログラム統合
11.3. プログラム完全統合
11.4. ポリゴン表示
11.5. ポリゴン表示・Depth付


課題に関する注意


課題内容

講義の進捗を加味して,講義前後に掲載します.

課題については,課題1〜課題5の5回とも必須課題部分を提出することが単位取得のための絶対必要条件です. 提出洩れのないように厳に注意してください.

課題内容は(遺憾ながら)改訂されることがあります. 課題のページは見る度に,一度「更新(reload)」


成績

課題1〜5全ての必須課題部分を提出し,その上で合計60点以上の評価を得ること.
授業中の見回りでの応答も課題の一部と見なします.(必須課題ではありません)


シラバス

プログラミング序論III(知的工学システム主専攻)
プログラミング序論III(機能工学システム主専攻)

計算機序論II・後半(知的工学システム主専攻)
計算機序論II・後半(機能工学システム主専攻)


kameda[at]iit.tsukuba.ac.jp