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

Slides:



Advertisements
Similar presentations
C 言語講座第 5 回 構造体. 構造体とは ... 異なる型の値をまとめて新しい型とする 機能がある . つまり , 複数の変数を 1 つのまとまりにできる . 配列と違って同じ型でデータをまとめるのではな く違った型のデータをまとめられる .
Advertisements

情報教育論 第10回 政策・メディア研究科 岡田 健. 今日やること 皆さんのコメントへの返答 前回の課題のフォロー コーディングライブ HCPチャートのレビュー 冬休み課題の告知.
東京工科大学 コンピュータサイエンス学部 亀田弘之
情報基礎演習I(プログラミング) 第9回 6月22日 水曜5限 江草由佳
ASP入門 - Windows 2000 Server 活用 -.
SPSS操作入門 よい卒業研究をめざして 橋本明浩.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第3回 配列(1) 情報・知能工学系 山本一公
本日のスケジュール 14:45~15:30 テキストの講義 15:30~16:15 設計レビュー 16:15~16:30 休憩
Takashi Taniguchi (谷口貴志)
プログラミング入門 電卓番外編 ~エクセルで関数表示~.
情報・知能工学系 山本一公 プログラミング演習Ⅱ 第4回 配列(2) 情報・知能工学系 山本一公
プログラミング基礎I(再) 山元進.
情報教育論 第7回 HCPチャートを用いたプログラムの設計 ~中級編~ 2004・11・29
技術者英語第3回(流れ) 14:45~ Windowsログイン 15:00~ ALCログイン 16:15 学習プリント提出、授業終了
<5日目内容> 今後のスケジュール HP更新内容の確認 課題の確認 (i-sys) 前回のプレゼンへの質問について
情報基礎演習I(プログラミング) 5月25日 水曜5限 江草由佳
<4日目内容> 今後のスケジュール HP更新内容の確認 課題の確認 (i-sys) 発表準備・予行演習の進め方について
プログラミング演習Ⅱ 第12回 文字列とポインタ(1)
プログラミング基礎I(再) 山元進.
クイズ 「インターネットを使う前に」 ネチケット(情報モラル)について学ぼう.
情報科学1(G1) 2016年度.
プログラミング実習 1・2 クラス 第 1 週目 担当教員:  渡邊 直樹.
情報教育論 第9回 仮定文の仕組み 政策・メディア研究科 岡田 健.
湘南工科大学 2013年12月10日 プログラミング基礎1 湘南工科大学情報工学科 准教授 小林 学.
変数のスコープの設計判断能力 を育成するプログラミング教育
情報検索演習 第8回 パソコンを起動しておくこと 前から4列目までに着席すること 2005年11月30日 後期 水曜5限
Powerpoint でプレゼンテーション
情報 第2回:状態遷移 その2.
第10回 プログラミングⅡ 第10回
PowerPointとは? 百聞は一見しかず! プレゼンテーションソフトウェア 今、使っているこれがそうです!
練習問題アイテムバンクの開発研究 ~再生形式~
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
オブジェクト指向 プログラミング 第二回 知能情報学部 新田直也.
プログラミング入門 電卓を作ろう・パートIV!!.
アルゴリズムとプログラミング (Algorithms and Programming)
第1回 プログラムの基本 他人が読めるプログラムを書く.
WEBアプリケーションの開発 2002年度春学期 大岩研究会2.
 情報の授業 アルゴリズムとプログラム(1) Go.Ota.
一人暮らしの男性のための料理検索システムの設計
情報 第1回:状態遷移 その1.
プロジェクト演習Ⅱ インタラクティブゲーム制作
情報処理Ⅱ 第2回:2003年10月14日(火).
オブジェクト・プログラミング 第8回.
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
情報基礎演習I(プログラミング) 第11回 7月12日 水曜5限 江草由佳
オブジェクト プログラミング 第2回 プログラムの基本.
第1章 いよいよプログラミング!! ~文章の表示 printf~
★C++/オブジェクト指向実践企画★ Othelloゲーム作成
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
本日のスケジュール 14:45~15:30 講義 15:30~16:15 企画書レビューシート記入 16:15~16:30 休憩
プログラミング演習I 2003年7月2日(第11回) 木村巌.
人を幸せにするアプリケーションの開発 2004年度春学期 大岩研究プロジェクト2 2004年4月8日(木) 発表:武田林太郎.
情報基礎Ⅱ (第1回) 月曜4限 担当:北川 晃.
計算機プログラミングI 木曜日 1時限・5時限 担当: 増原英彦 第1回 2002年10月10日(木)
プログラミング入門 電卓を作ろう・パートI!!.
情報基礎演習I(プログラミング) 第8回 6月8日 水曜5限 江草由佳
東京工科大学 コンピュータサイエンス学部 亀田弘之
2008/7/16(情報コース)2008/7/22(通信コース) 住井
第5章 まだまだ続く反復処理!! ~繰り返しその2 for~
アルゴリズム入門 (Ver /10/07) ・フローチャートとプログラムの基本構造 ・リスト ・合計の計算
情報技術演習Ⅰ 人文学研究のための情報技術入門 2017/04/13
~sumii/class/proenb2009/ml6/
東京工科大学 コンピュータサイエンス学部 担当 亀田弘之
オブジェクト指向 プログラミング 第四回 知能情報学部 新田直也.
第7章 そろそろ int 以外も使ってみよう! ~データ型 double , bool~
Javaとは Javaとはオブジェクト指向言語でJava VM(Java仮想マシン)と呼ばれるプログラム上で動作します。
テクニカル・ライティング 第4回 ~文章の設計法「KJ法」について~.
プログラミング演習II 2004年11月 2日(第3回) 理学部数学科・木村巌.
レポート&筆記試験について.
計算機プログラミングI 第2回 2002年10月17日(木) 履習登録 複習 ライブラリの利用 (2.6-7) 式・値・代入 (2.6-8)
Presentation transcript:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

プログラムの構造との対応 その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 * 10000000 / height / height / height; 19: 20:    //計算したローレル指数を表示する 21:    System.out.println("ローレル指数は" + rohrer + "です。"); 22:  } 23:}

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

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

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

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

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

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

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

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

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

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

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

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

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

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