わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

プログラムを説明する (3)完成したプログラムの説明

f:id:takehikom:20220222002934j:plain
「完成したプログラムの説明するときに,知っておくとよいことを,1枚のスライドにしました.
 先頭から1行ずつ,何が書かれているかを説明する,というのではありません.
 ではどう説明すればいいのか,ですが…」
f:id:takehikom:20220222002942j:plain
「最初に,『何をするプログラムか』が分かる文を書きましょう.
 この最初の文で,何を出力するのかを,合わせて書くのもよいと思います.簡潔に表現できない,例えば入力に応じて,さまざまな出力のパターンが考えられる,というのなら,『何をするプログラムか』と『何を出力するか』は,別々の文にしましょう.
 なお,文を分ける場合には,『何を出力するか』は,『何をするプログラムか』の直後でなくてもかまいません.例えば説明する文章の最後に,出力のことを書くと,ちょうどいい感じになる,という場合もあります.
 そして,必須というわけではありませんが,そのプログラムでは『何を使用しているか』について書くことで,そのプログラムの特色を示しやすくなります.
 『何を使用しているか』を簡潔に言い換えると,『手段』です.授業の例題や課題で,『授業で学習した技法』に名称がついているなら,それを挙げるといいでしょう.よく知られたアルゴリズムの名称も,『手段』として書くことができます.『~を用いて』や『~を使用して』を続けることで,『~』が手段であることが伝わります.
 プログラム中で使用しているライブラリ関数も,『手段』に含めていいでしょう.ただしprintfは,C言語では広く使われているので,初めての使用でない限り,『このプログラムではprintf関数を使用して~』と説明すべきではないですね.
 ここまでの3項目は,いわばプログラム全体の説明です.これを書いてから…」
f:id:takehikom:20220222002953j:plain
「プログラムの中の主要な箇所の処理内容を,説明するようにしましょう.『日本語で説明しなさい』という課題であっても,行番号や,プログラムの中の文・式などを挙げて,説明するのは,差し支えありません」

A科目で提示した「何をするプログラムか」

 研究室で独自にインタフェースと教材(タイプしてもらう内容など)を開発し,第3クォーターの科目で提供*1した各プログラムの解説から,「何をするプログラムか」を,抜き出してみました.

  • 「Hello, World!」と表示するプログラムです。
  • 7と3の和・差・積・商を求めて表示するプログラムです。
  • このプログラムは、代入によって、変数の持つ値が変わることを確認するためのものです。
  • このプログラムはツェラーの公式を用いて、年月日をもとに、曜日を表す数字を出力します。
  • このプログラムでは、左手と右手で「じゃんけん」をします。
  • 条件分岐のif(イフ)文を用いて、「10分で到着する必要があるなら、自転車に乗る。そうでないなら、徒歩で行く。」をプログラムにしたものです。
  • このプログラムは、変数numの値が0またはマイナスになるまで、1〜5のランダムな値を引くことを繰り返します。繰り返しにはwhile文を用います。
  • このプログラムは、2次元座標上の点(1, 1)から始まって、x座標もy座標も正の整数となるような座標を出力します。
  • このプログラムは、2から97まで、100未満の素数を小さい数から順に出力します。1行で出力し、数どうしの間には空白文字が入ります。
  • これは行列の積の定義に基づいて、3行3列の行列の2乗を計算し、右下成分の値を出力するプログラムです。
  • このプログラムは、データ型に応じた変数の内容や出力方法などの違いを確認するためのものです。
  • このプログラムは、ニュートン法と呼ばれるアルゴリズムを使用して、ルート5(√5)の近似値を計算します。
  • このプログラムでは「符号関数」を自作し、3つの入力に対し結果を返しています。与えられた実数が正なら1、負なら-1、0なら0を返す関数を、符号関数といいます。
  • 三平方の定理を用いて、2次元平面上の2点間の距離を求めるプログラムです。
  • 0と1の並びの最後に、パリティビットを設定するというプログラムです。パリティビットは、通信の誤り検出を行うための最も単純な仕組みです。

*1:今年度の成果ですので,https://github.com/takehiko/LbTypingには,3月までに追加する予定です.