Practice 5: %Q, %C, %P の実装とテスト

exec_command()から呼び出される,各関数を実装し,コマンド機能を追加していきましょう.

このPracticeでは,%Q, %C, %P を実装し,それらコマンドの動作確認をしてください.

第5回講義

まずは,exec_command()の役割を思い出すためにも:

を振り返りましょう.それから:

をもう一度確認してから,%Q, %C, %Pの実装に取り掛かりましょう.

第6回講義

ところで,テストには,どのような方法があるでしょうか.テストに関して,より詳細に理解するため:

を読んでみてください.

今回も解答例(前半後半)を用意しました.解答例を見るのは,慎重に.

練習5-1 cmd_quit() 関数の実装 (%Qコマンドの実現)

仮実装となっているcmd_xxx()関数のうち,まずは,cmd_quit()を実装し,%Qコマンドが使えるようにせよ.

ヒント:K&R pp.198--199, および,pp.316--318

» 解答例(練習5-1)

練習5-2 cmd_check() 関数の実装 (%Cコマンドの実現)

これまで仮実装していたcmd_check()を完成させよ.

» 解答例(練習5-2)

練習5-3 cmd_print() 関数の実装方針の検討

これまで仮実装していたcmd_print()を完成させたい.

まずは,cmd_print()の実装方針を検討せよ.

ヒント:必要な仕様は演習課題説明資料 (p2-theme-all.pdf)に記載されている.%Pコマンドとして,どのような機能が必要だろうか?

ヒント:Practice 3: 標準入力を受け取る構文解析プログラムとその解説における考え方を思い出そう.このとき,段階的詳細化にこだわらず,Practice 4: Profile 構造体の定義 他の解説や練習問題で実装した様々な定義や関数群を使って組み立てることも考えてみよう.(cf.トップダウンとボトムアップ

» 解答例(練習5-3)

練習5-4 cmd_print() 関数の実装 (%Pコマンドの実現)

2025年度注:nが負の場合の実装は,プログラミング演習1時点では発展課題扱いとします.

これまで仮実装していたcmd_print()を完成させよ.

ヒント:実装は段階を追って進めよう.例えば:

  • まず,\(n=0\)の場合に対応できるよう,cmd_print()を実装する.

  • 次に,\(n>0\)に対応できるように,cmd_print()を拡張する.

  • 最後に,\(n<0\)にも対応できるようにして,cmd_print()を完成させる.※

» 解答例(練習5-4)

練習5-5 現在までのプログラムの動作確認とテスト

2025年度注:nが負の場合の実装は,プログラミング演習1時点では発展課題扱いとします.

これまで実装したプログラムの動作確認とテストをせよ.標準入力からの入力について,

  • CSV行を読込んで登録する機能

  • %Qコマンドによるプログラムの終了

  • %Cコマンドによる登録件数の表示

  • %Pコマンドによる登録データの表示を各種パラメータについて.例えば,

    • ゼロ/正/負の数

    • 絶対値が登録件数より大きな 正/負の数

    • 絶対値がちょうど登録件数と同じ 正/負の数

最低限,演習開始時に配布したsample.csvを用いて,サンプルプログラムdb-sampleの実行結果と比較してみること.

» 解答例(練習5-5)

プログラミング演習1の達成度確認

試問前の回に実施する.プログラミング演習1の達成度確認