応用プログラミング及び実習 2017年度 第2回

注意

課題A(self) 締切: 今回の実習終了時

全部できたらTAさんに申し出てください.

課題A-1 PGM画像を表示してみよう

plain PGM形式の画像のサンプルをダウンロードして表示してみよう. サンプル画像: uni3.pgm

  1. 上記のサンプル画像を aprog20XY ディレクトリに保存しよう
    • check リンクを右クリックして「別名でリンク先を保存」とかそんな感じ.
    • check 必要なら mv コマンドでファイルを移動させよう Docs/4UNIXBeginners
  2. displayコマンドで画像として表示させてみよう.
    • check displayコマンドの使い方は講義資料参照.
    • check 終了は,画像の中にマウスカーソルがある状態で右クリック or 左クリックしてメニューから
  3. lessコマンドでテキストファイルとして中身を表示させてみよう.
    • check lessコマンドの使い方は講義資料参照.
    • check 表示させた内容から,この画像の幅,高さ,画素値の最大値を読み取りなさい.

課題A-2 プログラムに画像を生成させてみよう

  1. aprog20XY ディレクトリ内に以下のプログラムを保存.左下のファイル名のリンクを右クリックして保存するのがらくちんです &gist(c0ff880aeaf882262e0df8c1b3464017);
  2. そのままコンパイル&実行して出力を眺め,何が起こっているのか理解する.
  3. WIDTH と HEIGHT を大きくして,↑をもう一度
  4. 適当なファイル名(拡張子は pgm とすること)を指定して標準出力をリダイレクションし,ファイルを作成する
  5. それを display コマンドで表示させて正しく画像を作れたことを確認

課題B(self) 締切: 今回の実習終了時

下記のプログラムソースは,標準入力から plain PGM 形式の情報を受け取って,それを標準出力へ書き出すもの(未完成)である.これを完成させて,標準入力・標準出力の両方をファイルにリダイレクションして実行すると,単純に画像ファイルをコピーするのと同様のことができるようになる.このプログラムを完成させて,uni3.pgm や課題Aで作った画像で動作確認しなさい.

#gist(3fbc1953939415783e9c); ↑のファイル名のリンクを右クリックして保存するのがらくちんです

課題C(TA&takataka) 締切: 本文参照

注意: この課題は,「TAチェック課題」と「takatakaチェック課題」のハイブリッドです.「takatakaチェック課題」については AProg/2017/ex00 を参照してください.それぞれの課題としての締め切りは次の通りです.

画像の画素値を反転させる(例えば画素値の最大値が255なら,0を255に,255を0にする)関数をつくろう.次の仕様にしたがって紙(授業の際に配布されたもの)に書きなさい.

課題D(TA) 締切: 次回実習開始直後

課題B,Cの結果を組み合わせて,画素値反転のプログラムを完成させよう.

  1. ソースファイル名は ex02negate.c とする
    • check 課題Bのプログラムを cp コマンドでこの名前にコピーしたら簡単です(cf. Docs/4UNIXBeginners ).エディタを2つ開いてマウスでコピー&ペーストとかそういうださださなことはやめましょう.
  2. 関数 negate の定義は main の定義より下に書き,プロトタイプ宣言をつけること.

課題S(おまけ) 締切: 次回実習終了まで

次のことをやりなさい.おまけ課題のチェックは高橋が担当しますので,直接高橋に声をかけてください.この課題をやるには AProg/omake が役に立つかもしれません.

  1. グレイスケール画像の形式としてPGMがあるように,カラー画像の形式としてPPM(Portable PixMap)というものがあります. PPMでは,画素値をRGB(赤緑青)3色の値で表現します. plain PPM では画素値をどのように並べる約束になっているのか自分で調べなさい.
  2. その結果をもとに,課題Dのプログラムをベースとして,PPM画像を読み込んでRGBそれぞれの画素値を反転させた画像を出力するプログラムを作りなさい.
    • 画素値を格納する配列の作り方や関数の設計は何通りもありえます.

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS