Presentation is loading. Please wait.

Presentation is loading. Please wait.

情報教育論 第6回 HCPチャートを用いたプログラムの設計 ~入門編~ 2004・11・15

Similar presentations


Presentation on theme: "情報教育論 第6回 HCPチャートを用いたプログラムの設計 ~入門編~ 2004・11・15"— Presentation transcript:

1 情報教育論 第6回 HCPチャートを用いたプログラムの設計 ~入門編~ 2004・11・15
政策・メディア研究科 修士課程2年 杉浦 学

2 授業の前に 配布物 注意 確認 授業スライド×1部 HCPチャートの記入用紙×3枚 PCは使用しないので、しまってください
筆記用具がない人は申し出てください 質問をされたら、何でもいいから答えてみてください 確認 HCP Viewerのインストールはうまくいきましたか? 言霊のバージョンアップはうまくいきましたか? オブジェクト・プログラミングを履修済みの方はいますか? これまでの授業の出席状況はいかがですか?

3 授業の流れ プログラムの基本構造 プログラムを作る手順 HCPチャートによる設計

4 学習目標 HCPチャートを用いて50行程度のプログラムを設計することができる プログラムの基本構造を説明できる
プログラムを作る手順の概略を説明できる HCPチャートでプログラムの設計を表現できる

5 プログラムの基本構造 プログラムの基本構造 プログラムを作る手順 HCPチャートによる設計

6 前回の課題より ローレル指数を求めるプログラム(課題3) 1: 変数を定義する。名前を「身長」とする。
2: 変数を定義する。名前を「体重」とする。 3: 変数を定義する。名前を「ローレル指数」とする。 4: 身長に168を書き込む。 5: 体重に55を書き込む。 6: 体重の値× ÷身長の値÷身長の値÷身長の値を、ローレル指数に書き込む。 7: 「あなたのローレル指数は」を出力する。 8: ローレル指数の値を出力する。

7 実は前回の授業で紹介したソースコードに変更を加えました。 さて、変更箇所はどこでしょうか?
[質問]変更箇所はどこでしょうか? 実は前回の授業で紹介したソースコードに変更を加えました。 さて、変更箇所はどこでしょうか? 解答 コメントを削除した 空行を削除した

8 両者の比較 前回のプログラムと同じ事柄 前回のプログラムと異なる事柄 プログラムの機能 ソースコードの長さ(長くなった)
ソースコードの可読性(見通しが悪くなった)

9 [議論]コメントと空行について コメントについて 空行について コメントの記述と空行の挿入の指針を考えよう!
コメントは書かない方が良いのか?書く方が良いのか? コメントを書くとしたらどこに何を書くべきか? 空行について 空行は入れた方が良いのか?入れない方が良いのか? 空行を入れるとしたらどこに入れるべきか? コメントの記述と空行の挿入の指針を考えよう!

10 コメントと空行に関する指針 コメントには目的を記述する 行を目的でまとめ、目的の切れ目を空行で表現する 手段を記述したソースコードを説明する
人間がプログラムを素早く理解できる プログラムの改造が容易になる 行を目的でまとめ、目的の切れ目を空行で表現する まとめた目的をブロックコメントで記述する これを目的のブロックと呼ぶ

11 すばやく理解できない コメントには目的を記述する。それにより、人間がプログラムを素早く理解できる。また、プログラムの改造が容易になる。空行については、それぞれの行を目的でまとめ、目的の切れ目を空行で表現するのがよい。また、まとめた理由をコメントによって記述する。これを目的のブロックと呼ぶ。

12 指針を適用したソースコード ローレル指数を求めるプログラム(課題3) 1 : ※ 2 : ※ ローレル指数を計算する 3 : ※ 4 :
1 : ※ 2 : ※ ローレル指数を計算する 3 : ※ 4 : 5 : ※変数定義 6 : 変数を定義する。名前を「身長」とする。 7 : 変数を定義する。名前を「体重」とする。 8 : 変数を定義する。名前を「ローレル指数」とする。 9 : 10: ※体型の情報を入力する 11: 身長に168を書き込む。 12: 体重に55を書き込む。 13: 14: ※ローレル指数を計算する 15: 体重の値× ÷身長の値÷身長の値÷身長の値を、ローレル指数に書き込む。 16: 17: ※計算したローレル指数を表示する 18: 「あなたのローレル指数は」を出力する。 19: ローレル指数の値を出力する。

13 入力-処理-出力 目的の各ブロックを見てみると「入力-処理-出力」になっている
入力された情報を処理して、結果を出力するのがプログラム(コンピュータ)の基本構造 Webブラウザー URLを入力する - サーバーと通信する - Webページを出力する 電卓 数値を入力する - 演算する - 演算結果を出力する ファイル解凍ソフトウェア 圧縮ファイルを入力する - 解凍する - 解凍したファイルを出力する

14 入力-処理-出力の例 ローレル指数を求めるプログラム(課題3) 入力 処理 出力 1 : ※ 2 : ※ローレル指数を計算する 3 : ※
1 : ※ 2 : ※ローレル指数を計算する 3 : ※ 4 : 5 : ※変数定義 6 : 変数を定義する。名前を「身長」とする。 7 : 変数を定義する。名前を「体重」とする。 8 : 変数を定義する。名前を「ローレル指数」とする。 9 : 10: ※体型の情報を入力する 11: 身長に168を書き込む。 12: 体重に55を書き込む。 13: 14: ※ローレル指数を計算する 15: 体重の値× ÷身長の値÷身長の値÷身長の値を、ローレル指数に書き込む。 16: 17: ※計算したローレル指数を表示する 18: 「あなたのローレル指数は」を出力する。 19: ローレル指数の値を出力する。 入力 処理 出力

15 プログラムを作る手順 プログラムの基本構造 プログラムを作る手順 HCPチャートによる設計

16 新しいプログラムを作るために これまでは、既に存在するプログラムについて議論してきた
これまでにないプログラムを新しく考えて作る場合はどうしたらよいか?

17 [質問]プログラムを作る手順 プログラムを作る手順を説明してください 自主的に作る場合 課題をやる場合

18 最初の一歩は様々 問題が具体的な場合 問題が具体的でない場合 現実ではどちらが多いか? ローレル指数を計算するプログラムを作れ
~を入力すると~を出力する ローレル指数の計算式は~である 問題が具体的でない場合 食生活が充実せず、太ってきたので健康の管理をしたい 現実ではどちらが多いか?

19 手順を整理してみる 前提:具体的な問題が与えられていない場合が多い そのような時は、 ポイント これを何とかしたい もっと便利にしたい
もっと効率を上げたい そのような時は、 最初に「どんなプログラムを作るべきか」を考える 次に「どうやってそのプログラムを作るか」を考える ポイント 「どんなプログラムを作るべきか」を決めないと「どうやって作るか」を議論しても不毛である 「どうやって作るか」が決まらないと実際に作ることはできない 「どんなプログラムを作るべきか」が定まっていないと、期待どおりのプログラムができたかは検証できない

20 プログラムを作る手順 どんなプログラムを作るか考える どうやってそのプログラムを作るか考える プログラムを作る 作ったプログラムを検証する

21 プログラムを作る手順 分析 設計 実装 テスト

22 手順と成果物 分析 仕様書 設計 設計書 実装 ソースコード テスト

23 HCPチャートによる設計 プログラムの基本構造 プログラムを作る手順 HCPチャートによる設計

24 [質問]プログラムの得意な人は? プログラムを作るのが得意な人は、「分析-設計-実装-テスト」という手順を踏んでいるのか? 解答
きっと踏んでいる、でも素早く頭の中だけでやっていることが多い だから、いきなりソースコードを書いているように見える

25 設計が重要な理由 プログラミングが苦手な人の場合 大規模で複雑なプログラムを作る場合 思いつくままにソースコードを記述して自爆する
設計していれば質問もしやすい 大規模で複雑なプログラムを作る場合 頭の中で考えただけでは分担作業ができない プログラムが得意でも、頭の中だけで考えられる量には限界がある

26 HCPチャート HCPチャートとは HCPチャートの特徴 構造化プログラムを設計するための図法
日本電信電話株式会社(NTT)電気通信研究所で開発 HCPチャートの特徴 処理を目的から手段へ分解した階層構造で表現 実装されるプログラム構造と対応している

27 HCPチャートによる設計例 ローレル指数を求めるプログラムの設計 目的から手段へ 目的から手段へ

28 プログラムの構造との対応 その1 1 : ※ 2 : ※ ローレル指数を計算する 3 : ※ (途中省略) 9 :
1 : ※ 2 : ※ ローレル指数を計算する 3 : ※ (途中省略) 9 : 10: ※体型の情報を入力する 11: 身長に168を書き込む。 12: 体重に55を書き込む。 13: 14: ※ローレル指数を計算する 15: 体重の値× ÷身長の値÷身長の値÷身長の値を、ローレル指数に書き込む。 16: 17: ※計算したローレル指数を表示する 18: 「あなたのローレル指数は」を出力する。 19: ローレル指数の値を出力する。

29 プログラムの構造との対応 その2 1 : public class RohrerCalculator { 2 : 3 : /**
3 :  /** 4 :   * ローレル指数を計算する 5 :   */ 6 :  public static void main(String[] args) { 7 : (途中省略) 13:    //体型の情報を入力する 14:    height = 168; 15:    weight = 55; 16: 17:    //ローレル指数を計算する 18:    rohrer = weight * / height / height / height; 19: 20:    //計算したローレル指数を表示する 21:    System.out.println("ローレル指数は" + rohrer + "です。"); 22:  } 23:}

30 [演習1]家を描くプログラム 課題 ポイント 家を描くタートルのプログラムをHCPチャートを使って設計せよ
徐々に目的から手段へ詳細化すること 3段目まで記述できるだろうか

31 [設計例]家を描くプログラム

32 近くの人と見比べてみよう よくある勘違い 手段だけを書いてしまう 段階的に詳細化が行われていない 正解があると思ってしまう
プログラムの文法が先にある人に多い 段階的に詳細化が行われていない 理解しにくくなる 正解があると思ってしまう 実装できれば良い 理解しやすければ良い

33 レビュー(日本語・目的)

34 [設計例]家を描くプログラム 繰り返し処理を明示する の繰り返しで実現する

35 [設計例]肥満度を測定するプログラム 選択処理を明示する

36 [演習2]オウム返しプログラム 課題 ポイント オウム返しプログラムを設計せよ 繰り返し処理と選択処理を使う
ユーザが文字を入力すると、入力された文字をそのまま表示(オウム返し)する Qという文字を入力するまで繰り返して動作する ポイント 繰り返し処理と選択処理を使う 繰り返し処理から脱出する必要がある 飛越し(脱出)

37 [設計例1]オウム返しプログラム

38 [設計例2]オウム返しプログラム

39 次回までの課題 その1 相性判断プログラムをHCPチャートを使って設計せよ ユーザは以下の項目に関して入力する プログラムは以下の出力を行う
男女それぞれの名前 男女それぞれについて相手のことを好きか嫌いか プログラムは以下の出力を行う 男女の相性 補足 気持ちの入力では、好き・嫌いの二通りだけでなく、複数の段階を設けること それにより、相性の判断も四通り以上になるようにすること ユーザは男女二名で、各自が自分に関する情報を入力すると想定する

40 次回までの課題 その2 肉屋のレシートを出力するプログラムをHCPチャートを使って設計せよ
買う肉の種類の名前、その肉のグラム単価、買う量(g)を1つ入力すると、税込価格の値段が表示される 税込価格に対して、支払うお金の金額を入力する 支払い金額が税込価格より小さければ、お金が足りないというエラーを出力して、再度支払い価格の入力を求める 支払い金額が税込価格より大きければ、お釣りの金額を計算する レシートを出力する 買う肉の種類の名前、その肉のグラム単価、買う量(g)、定価、税込価格、支払い金額を表示し、おつりがある場合はおつりの金額も表示する

41 次回までの課題 その3 パワーポイントを使って、今あなたが熱いと思うこと、熱中していることを他の履修者に伝えるためのスライドを作成せよ
スライドを見たあなた以外の履修者が熱中していることと、その理由を簡単に説明できるようにすること プレゼンテーションをしなくとも、話の大筋が分かるようなスライドにすること スライドを見せられる時間は1枚あたり5秒程度だと想定すること 表紙を入れて5枚程度にまとめること マニアックな内容だとよい PowerPointが使えない人はいますか?

42 課題の提出について 次回(11/29)までの課題について 今日明日中に授業の感想を提出すること Subject:report06
11/28 24:00締め切り 注意 ログイン名.zipに圧縮して添付すること 課題その1~その3で作ったHCPチャートとスライドは、次回の授業時にそれぞれ2部印刷して持参すること 次回授業時は必ずPCを持参すること 今日明日中に授業の感想を提出すること Subject:report06-impression

43 今日の授業は終わりです よい三田祭休みを…


Download ppt "情報教育論 第6回 HCPチャートを用いたプログラムの設計 ~入門編~ 2004・11・15"

Similar presentations


Ads by Google