Ex08
From Prog0
演習第8回
Contents |
演習問題
主な内容
- フローチャートによるプログラムの設計の練習
今までの課題では、試行錯誤でプログラムを修正しているうちに、理由は分からないけれども正しく動くプログラムができてしまった、という人も多いのではないでしょうか。しかし、そのような方法でプログラミングする習慣をつけてしまうと、ちょっとしたプログラムでもかなり時間がかかってしまいますし、今後もっと長いプログラムを作る必要が生じたときには手も足も出なくなってしまうでしょう。
そうならないためには、プログラミングを要する問題が与えられたら、まずその問題を吟味して、どのようなプログラムを作ればよいか、プログラムの設計を行うことが重要になります。
出席確認
- 演習時間中に出席確認をLMS上の「演習出欠」で行ってください
- 出席確認用のパスワードは演習時間のどこかのタイミングで提示されます
A問題
A-1 つるかめむし算問題の再定義
ファイル名: ex08a1.txt
つるかめ算問題の再定義の例にならって、ハンドアウト lec08-15ページを参考に、以下の「つるかめむし算問題」を再定義し、その内容をテキストファイルに記述せよ。
[つるかめむし算問題]
- 鶴・亀・てんとう虫が合わせて 20 いて、足の合計本数が ashi_total 本である。鶴、亀、てんとう虫はそれぞれ何匹(羽)いるか?
- 条件を満たす答えを全て表示せよ(一つとは限らない)。また、条件を満たす答えが存在しない場合は「NOT found!」と表示せよ。
[再定義]
- 与えられた問題を解析し、問題を論理的に再定義する。 - そのために以下の情報を洗い出す - 与えられている情報は何か - 与えられていないが常識的に知っている事が使えるか - 求めるものは何か
A-2 つるかめむし算問題のフローチャートの作成
ファイル名: ex08a2.pdf
再定義された「つるかめむし算問題」の完全なフローチャートを作成せよ。
なお、足の合計本数 ashi_total の値は、プログラム実行時にキーボード入力で与えるものとする。
フローチャートの作成は以下に挙げるいずれかのツールを用いること
- diagrams.net(旧draw.io)
- OpenOffice Draw
- その他 PowerPoint など同等の作図機能を持つツール
diagrams.net を使用したフローチャートの作成については 別ページの解説 を参照のこと。演習時間中にもデモを行う予定である。
作図した内容は PDF形式 で書き出すこと。
B問題
B-1 つるかめむし算問題プログラムの作成
ファイル名: ex08b1.c
作成したつるかめむし算問題フローチャートに沿って、プログラムを作成せよ。
実行例は以下の通り(カッコ内は足の本数)であるが、表示内容などは例と異なっていてもよい。
実行例
% ./a.out
Input ashi (total): 88
Turu:0(0) Kame:16(64) Tentoumushi:4(24)
Turu:1(2) Kame:14(56) Tentoumushi:5(30)
Turu:2(4) Kame:12(48) Tentoumushi:6(36)
Turu:3(6) Kame:10(40) Tentoumushi:7(42)
Turu:4(8) Kame:8(32) Tentoumushi:8(48)
Turu:5(10) Kame:6(24) Tentoumushi:9(54)
Turu:6(12) Kame:4(16) Tentoumushi:10(60)
Turu:7(14) Kame:2(8) Tentoumushi:11(66)
Turu:8(16) Kame:0(0) Tentoumushi:12(72)
% ./a.out
Input ashi (total): 116
Turu:0(0) Kame:2(8) Tentoumushi:18(108)
Turu:1(2) Kame:0(0) Tentoumushi:19(114)
% ./a.out
Input ashi (total): 99
NOT found!
%
B-2 平均・分散
ファイル名: ex08b2.pdf, ex08b2.c
10個の整数をキーボードから読み込み,それらの平均および分散を求めて表示するプログラムを作成したい.
- このプログラムのフローチャートを作成し,PDF形式で書き出しなさい.
- 作成したフローチャートに基づいてプログラムを作成しなさい.
[実行例]
% ./a.out
10個のデータを入力してください: 23 21 29 30 29 28 26 24 28 29
平均: 26.700000
分散: 8.410000
% ./a.out
10個のデータを入力してください: 19 18 17 17 17 17 17 18 19 19
平均: 17.800000
分散: 0.760000
参考資料
課題提出上の注意事項
解答ファイルはmenuコマンドを使って提出してください。以下のようにmenuコマンドを実行し、表示されるメッセージに沿って操作すること。
%
~prog0/bin/menu
menuコマンドは、解答ファイルが ~/Prog0/Ex## のディレクトリに指定されたファイル名で置かれているものとして処理します。正常に提出された場合は ○ が、何らかのエラーが生じた場合は × が表示されます。
解答の提出期間は以下のとおりです。
問題 | 提出受付開始 | 提出〆切 |
---|---|---|
A問題 | 演習日の6日前の午後9時 | 演習終了時刻 |
B, Extra問題 | 演習日の6日前の午後9時 | 演習日の6日後の午後9時 |
提出は〆切前であれば何度でもやり直すことができます。再提出すると、前に提出したファイルは新しい内容で上書きされます。