次へ: 4 課題文の作成
上へ: AWK による簡単なタイプ練習ソフト
前へ: 2 タイプ練習ソフトの仕様
(PDF ファイル: awk2.pdf)
3 おおまかな設計図
[1] に書いたように、AWK を行単位のフィルタとして使う場合、
実行部分は大きく 3 つのブロックに分かれます (そのうちいくつかは省略可)。
- BEGIN{} ブロック: 最初 (入力の前) に 1 回だけ実行される
- {} ブロック: 各入力行に対して 1 回ずつ実行される
- END{} ブロック: 入力が終わった後に 1 回だけ実行される
{} ブロックは、その前に条件 (パターン) をつけて、
そのブロックを適用する行を選択することも可能ですし、
{} ブロック自体を複数置くことも可能ですが、
それはパターンのない一つの {} ブロックでも同じことが実現できますので、
ここでは簡単のため、パターンのない一つの {} ブロックで作ることにします。
課題に対するキーボードからの入力 (標準入力) を
{} ブロックに対する各入力行と見れば、
このプログラムのおおまかな設計図として、
次のようなものが考えられます。
BEGIN{
# (1) 課題文を作成して画面に表示
# (2) 現在時刻を記憶 (入力開始時刻)
}
{ ## ここはキーボードからの 1 行の入力が済んだ後に実行される
# (3) 現在時刻を記憶 (入力終了時刻)
# (4) 入力行と課題文とを比較
# (5) 違いがなければ終了し、
# 違いがあればその結果を表示し、現在時刻を記憶 (入力開始時刻)
}
END{
# (6) 途中でやめた場合はそのような表示をする
# (7) 正常終了した場合はそのような表示をする
}
ここでは、AWK のコメント (#
から行末までが AWK のコメント) の形で
書いてみました。
ちなみに、私がプログラムを実際に書くときは、
だいたいいつもこのようなおおまかな設計図から書き始めます。
後はこの (1)(7) の部分を実際に作っていけばいいわけです。
次へ: 4 課題文の作成
上へ: AWK による簡単なタイプ練習ソフト
前へ: 2 タイプ練習ソフトの仕様
竹野茂治@新潟工科大学
2006年4月27日