• 締切済み

フローチャート以外の設計方法

大学で初めてC言語プログラミングを習い、 授業が終わってからもC言語の書籍をいくつか読みました。 その力試しとしてトランプゲームのブラックジャックの プログラムを作ってみようと思いました。 その過程でフローチャートを用いて設計してみたのですが 条件分岐がぐちゃぐちゃだったり、gotoを使わなければならなかったり とてもまともなコードが書けるような代物ではありませんでした。 確かに読んだ本の中で 「フローチャートは設計するために使ってはいけない」 という内容がありました。 ですがそれらの本ではフローチャートはいけないというだけで 具体的にどのような設計方法を用いればよいか読み取れませんでした。 そこでみなさんに質問なのですが、 一通りプログラミング言語の文法を理解したプログラミング初心者が こんなプログラムを作りたいと思ってから (たとえば簡単なトランプゲームなど) 実際にソースコードを書くまでには どのような方法でどのような手順を踏んだらよいのでしょうか? 教えてください。よろしくお願いします。

みんなの回答

  • nak777r
  • ベストアンサー率36% (49/136)
回答No.4

C言語で goto を使っていいのは、きれいなフローチャートが 思い描ける人だけです 条件分岐がぐちゃぐちゃだったり gotoを使わなければならない 状態になった事をフローチャートのせいにしないで まず、きれいなフローチャートになるように再度考えてみてください ぐちゃぐちゃになるなら、ぐちゃぐちゃにならないように関数化 して分割していけばいいのですよ

  • R32C
  • ベストアンサー率39% (115/290)
回答No.3

UMLでステートチャートあたりを使うといいのではないでしょうか? ステートマシンを想定して作ればロジックは比較的単純にできると 思います。 http://homepage1.nifty.com/BROKEN/project/humanoid2003/exp_idea_of_state_machine.htm まずjudoで適当な図を書いてみるのもいいかと思います。 http://jude.change-vision.com/jude-web/product/community.html

  • uki629
  • ベストアンサー率23% (40/172)
回答No.2

>gotoを使わなければならなかったり これは絶対にやってはいけない。 >確かに読んだ本の中で >「フローチャートは設計するために使ってはいけない」 >という内容がありました。 昔ながらの構造化型のプログラミング言語においては プログラムの流れを勉強する上ではいいけど実際に 業務でいちいちフローチャートを全部書いていたら えらいことになりますよ。 >ですがそれらの本ではフローチャートはいけないというだけで >具体的にどのような設計方法を用いればよいか読み取れませんでした。 最近のオブジェクト指向ならUML >(たとえば簡単なトランプゲームなど) >実際にソースコードを書くまでには >どのような方法でどのような手順を踏んだらよいのでしょうか? 簡単なプログラムで業務としてではなくてメンテナンス性が必要ないプログラムなら簡単な機能分割して機能説明を書いた関数orクラス表を作ってそのまま作業開始 業務でも簡単なものは関数orクラス表作って後はソースのコメントですます。 小さいプログラムに対して仕様書を核時間が無駄。で効率が悪い。 はっきりいってコメントで十分。

  • galluda
  • ベストアンサー率35% (440/1242)
回答No.1

がると申します。 んと…書き込んでおいてなんなのですが、そこそこの年数プロやってるとどうしても「初心者さんのわからない部分」がわからないので、ってのはあるのですが。 普段私もやって下の子にも教えてるのが ・まずコメント書け です。 例えばブラックジャックなら…とりあえず「終了条件が発生するまで何度も同じゲームを繰り返す」ものですよね? なので、まず // 終了条件が発生するまで while(終了条件が発生していない) { } と書いてしまいます。 で…とりあえず「1対1のブラックジャック」を想定すると。 ・カードを配って特定条件でカード配るのをやめて勝負 ですよね? なので while(終了条件が発生していない) {  while(親子の最低どっちかがカード欲しい) {   if(子がカード欲しい) {    子供がカードを取得する処理   }   if(親がカード欲しい) {    親がカードを取得する処理   }  }  /* 勝負 */  子供のカードの数字計算  親のカードの数字計算  if(子供が勝った) {   子供が勝った時の処理  }  if(親が勝った) {   親が勝った時の処理  }  if(ドロー) {   ドローの処理…ですが、多分これって親が勝った時の処理ですよね?  } } ってな感じでかいていきます。 で、各場所まずは「何をやりたいかを書いて」から、日本語部分を「コメント化して読みやすく文章を整形して」「コーディング」していくと、案外に楽に組める…と思うのですが。 実際のところ初心者さんにはどうでしょうか? 以上…あまり参考になるのか自信が持てないのですが。参考の参考、くらいにでもなれば幸いです。

関連するQ&A

  • フローチャートを書く書かない

     元ハード屋です。 先日ASIC設計(半導体設計)の方との話で驚いたことがあります。その方はC言語を使いフローチャートは書かずにいきなりコーデングするそうです。 装置物(マイコンでの制御)の設計を10年位前にしていましたが、その時一緒に仕事をしてましたソフト屋さんはたしかC言語を使い、そして沢山のフローチャートを書いていました。 最近はC言語ではフローチャートを書かないのでしょうか。また言語(FORTRAN、COBOL、BASIC、、、)或いはやる内容により差があるのでしょうか。私はプログラマーでは有りませんが最近Visual Basicで割合大きなプログラムを組みましたが、その時はフローチャートを書きました。あとで変更する時フローチャートが無いと困るだろうと感じています。

  • 課題研究でVisual C#でトランプゲームを作成したいのですが

    課題研究でVisual C#でトランプゲームを作成したいのですが C#ははじめでやる言語でなかなか進みません・・・ C言語とVBは習いました。 C#のゲームプログラミングの本も結構あるのですが たくさんあってどれを選べばいいのかわかりません 高い本なので失敗はしたくありません・・・ もし、オススメの本などがありましたら教えていただけませんか? Visual Studioは2005を使っています。 ちなみに作りたいトランプゲームは大富豪です。大貧民ともいいますね

  • フローチャート&プログラムについて

    C言語のプログラムが組めません(´;ω;`)ウッ それ以前にフローチャートが上手く書けないですΣ(ŎдŎ|||) どう書いていいのかわかりませんil||li_| ̄|○il||l なにかいい方法はないですか??

  • [ソフトウェア設計]処理の流れは、アクティビティ図?フローチャート?どちらで書くべきか。

    VCですでに組まれているソフトの設計を設計書として文書にする作業をしています。 (現状あるソフト設計を別のソフトの設計に継承するため、このような作業が発生しました。すでに組まれているソフトには設計書がありませんので、参照はできません。) この場合、ソースコードに記載されている処理の流れは、UMLのアクティビティ図で書けるのでしょうか? 参考書でアクティブ図を勉強しましたが、プログラムの処理の流れ(基本情報技術者試験の擬似言語で記載されているような処理)をそのまま書いたような図は見つかりませんでした。一般的には、プログラムの処理の流れは、アクティブティ図では、書かないのでしょうか? そのような処理は、フローチャートで書くべきなのでしょうか? シーケンス図も一緒に書いていますので、できたらUMLで統一し、アクティブティ図で書きたいのです。 設計書は、今まで記載していなかったので、ノウハウがありません。 知識がおありの方がおられましたら、ご教授お願いいたします。

  • フローチャートで。

    C言語で exit(0); というプログラムを中止するという処理をフローチャートで書くときって ↓ 四角(exit(0);) ↓ 終了 と、四角の処理で書いて最後の終了まで一気に線を引っ張ればいいのでしょうか? それとも中止だからその処理を書いてそのままでいいのでしょうか? break;の時は確か処理とかかかずにそのままループの外まで線を引っ張ったような気がするのですが、exitの場合はどうなるのでしょうか?

  • プログラミングの問題です。c言語でお願いします。

    プログラミングの質問です。 c言語でお願いします。 以下の結果が得られるようなプログラムを書いてください。 期末試験では必ずフローチャートを書いてください。また、フローチャートが 書けない場合は、どういう順番でプログラムを書けば よいかを書いてください。 100個のデータを入力させ、プログラム実行者が定めるある値以上のものの個数 を表示する。 プログラミングわからないのでお願いします。

  • プログラミングの問題です。

    プログラミングの質問です。 c言語でお願いします。 以下の結果が得られるようなプログラムを書いてください。 期末試験では必ずフローチャートを書いてください。また、フローチャートが 書けない場合は、どういう順番でプログラムを書けば よいかを書いてください。 年月日を数字8個で入力させ、「今日は○年○月○日です」と 表示させてください。 プログラミングわからないのでお願いします。

  • プログラミングの問題です。c言語でお願いします。

    プログラミングの質問です。 c言語でお願いします。 以下の結果が得られるようなプログラムを書いてください。 期末試験では必ずフローチャートを書いてください。また、フローチャートが 書けない場合は、どういう順番でプログラムを書けば よいかを書いてください。 3択の質問を5回行い、その結果によって回答者を3つのグループ に分ける。(質問、グループは何でも構わない) プログラミングわからないのでお願いします。

  • プログラミングの問題です。c言語でお願いします。

    プログラミングの質問です。 c言語でお願いします。 以下の結果が得られるようなプログラムを書いてください。 期末試験では必ずフローチャートを書いてください。また、フローチャートが 書けない場合は、どういう順番でプログラムを書けば よいかを書いてください。 10秒間、1秒間当たり5個得られる実験データを入力させ、それを 1秒ごとに平均した値として出力する。 プログラミングわからないのでお願いします。

  • プログラミングの質問です。

    c言語でお願いします。 以下の結果が得られるようなプログラムを書いてください。 期末試験では必ずフローチャートを書いてください。また、フローチャートが 書けない場合は、どういう順番でプログラムを書けば よいかを書いてください。 1.数字を5個続けて入力させ、大きい順に並び替え、出力する。(配列を使う事) プログラミングわからないのでお願いします。

専門家に質問してみよう