• ベストアンサー

初心者です。

初心者です。 プログラミング(C言語)を始めた者です。 for、while文を理解した段階ですが、添付画像の様なfor、while文が複合したフローチャートの場合、どの様にソースを書けばわかりません。 教えて頂けますでしょうか? よろしくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.6

No.3 たびたび失礼します。 そういえば、exit() を使う手がありましたね。 直接 return でもいいし。 そうすると、「間違いです」と言った、例3)、例4)も書き直し可能です。 あと、例2)も間違いでした。 -------------------------------------------- 例2) int main() { 処理1(); while(1) { if (a != 0) break; if (b != 0) continue; // ここが間違っていた if (c == 0) { 処理3(); break; } else { 処理2(); break; } } return 0; } -------------------------------------------- 例3)分離する int main() { 処理1(); while(1) { if (a != 0) return 0; if (b == 0) break; } if (c == 0) { 処理3(); } else { 処理2(); } return 0; } -------------------------------------------- 例4)do - while 構文 さらに、意味的にはこちらの方が自然かもしれません。 int main() { 処理1(); do { if (a != 0) return 0; } while(b != 0); if (c == 0) { 処理3(); } else { 処理2(); } return 0; } -------------------------------------------- 例3)と例4)で while の中身が違うのは、while の判定タイミングが違うから。

ron_nast
質問者

お礼

ご回答ありがとうございます! 参考にさせて頂きます!!

その他の回答 (6)

  • wisize
  • ベストアンサー率42% (37/87)
回答No.7

身も蓋もないことを言ってしまいますが、フローチャートなんぞは今時だれも使いません。 あなたが書き方に困るようなものは相手も読み方に困るので、 箇条書きで手順を説明したり、コメントを豊富にする方が賢明です。 学校の宿題だの会社の決まり事だのであれば口を挟めませんが、 個人的な問題でしたら「フローチャートを投げ捨てるべし」とお答えしておきます。

ron_nast
質問者

お礼

ご回答ありがとうございます! 参考にさせて頂きます!!

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.5

a,b,cをどういう処理して判定に使うのか知らないけど,下記のような流れでしょう。 exitを使いたいので,stdlib.hをincludeする。 int main(void) { ・ ・ (処理1) while(b){ if(a) exit(0); ・ ・ } if(c){ (処理2) } else (処理3) return(0); }

ron_nast
質問者

お礼

ご回答ありがとうございます! 参考にさせて頂きます!!

回答No.4

No. 3 訂正です。 例3)と、例4)は間違っています。 失礼しました。

回答No.3

例1)フローチャートに忠実 int main() { 処理1(); loop: if (a != 0) goto exit; if (b != 0) goto loop; if (c == 0) { 処理3(); } else { 処理2(); } exit: return 0; } 例2) while とか使ってみる。 Cのループの中では、break と continue が特徴的な制御に使われます。 これを使うと、以下のように書けます。 ただ、break や continue は、「かくれた goto」なので、これも、使いすぎはよくありません。 int main() { 処理1(); while(1) { if (a != 0) break; if (b == 1) continue; if (c == 0) { 処理3(); break; } else { 処理2(); break; } } return 0; } 例3)分離する 実は、例2)のような長い while ループは不要です。 ループする可能性があるのは、b == 0 の判定までなのですが、 案外、必要以上に長いループを書いてしまうことがあります。 int main() { 処理1(); while(1) { if (a != 0) break; if (b == 1) continue; } if (c == 0) { 処理3(); } else { 処理2(); } return 0; } 例4)do - while 構文 さらに、意味的にはこちらの方が自然かもしれません。 int main() { 処理1(); do { if (a != 0) break; } while(b == 0); if (c == 0) { 処理3(); } else { 処理2(); } return 0; }

ron_nast
質問者

お礼

ご回答ありがとうございます! 参考にさせて頂きます!!

  • titokani
  • ベストアンサー率19% (341/1726)
回答No.2

別に複合はしていないですね。 gotoを使わずに書くと、こんな感じでしょうか 処理1; while( a == 0 ){  if( b == 0 ){   if( c == 0 ){    処理3;   }else{    処理2;   }   break;  } }

ron_nast
質問者

お礼

ご回答ありがとうございます! 参考にさせて頂きます!!

noname#140045
noname#140045
回答No.1

考え方としては、IF文とGOTO文を使ったものに置き換えたものをフローチャートとして書けばいいでしょう。 質問とは違いますが、フローチャートよりもPADの方がいいと思います。

参考URL:
http://www.geocities.jp/dyamagu2/perl/perl3-4.html
ron_nast
質問者

お礼

ご回答ありがとうございます! 参考にさせて頂きます!!

関連するQ&A

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

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

  • 効率的なプログラミング

    データ処理や数値計算のために簡単なプログラミングをしている者です。大体,一般的な入門書レベルの内容をマスターしている程度と考えていただければ良いと思います。 それで,プログラミングで重要なことは「より単純に,より速く」というコードを書くことが1つあげられると考えていますが,そういったより効率的なプログラミングをするために良い参考書などないでしょうか? 例えば,「こういうコードの書き方は良くないですよ」とか「このように記述することによってより高速に動きますよ」といったような,初心者がはまりやすい罠とか,より上達するために良い書籍ということです。 こういったことは,原則としてどの言語でも共通なことであると認識していますが,全く分からない言語の説明を受けても理解できないので,PerlかCかVBのいずれかの言語でお願いします。 あと,頼みついでに1つ教えて欲しいのですが,同じ繰り返し処理を行う場合,(例えばCでいうところの)for構文とwhile構文の使い分けというのがイマイチよく分かりません(それぞれのメリットとデメリットが分からないということ)。基本的にはどちらでも同じことができますが,私はほとんどfor構文しか使わないのです。

  • for文のフローチャート

    c言語です。 for文のフローチャートを教えてほしいです。 カウンタ更新、初期値設定、継続条件、真偽、処理 この5つを使って書いたfor文のフローチャートを教えてください。

  • C言語でプログラミングできるソフト(初心者)

    大学1年で今年から始めてプログラミング(C言語)を学ぶものです。 今のところif文やfor文、関数などの基本をかじった程度なのですが なんとか自分の家のパソコンでプログラミングを行いたいので、 何か良いソフトのようなものはないでしょうか?(有料でも構いません) 実際に文などが書けて、コンパイルし、結果を出力してくれるものです。 パソコン自体がまだ初心者なので、できればで良いのですが、分りやすいものをお願いします<m(__)m>

  • 入れた数字の回数だけ、繰り返して足し算をするプログラミング

    こんにちは、初質問ですが、皆さんの知恵を借りたいと思います。よろしくお願いします! C言語はまったくの初心者です。下のプログラミングはどうやって作ったらいいのか、全然わかりません。 プログラミング:n1とn2の二つの数字を入力させ、n1×n2の結果を掛け算を使わずに、足し算だけで表示させる。 たぶん繰り返し文を使って、n2回n1の足し算すると思いますが、whileだけで作れますか?あるいはforを使ったほうがいいですか?できればプログラミングを書いてください。 ぜひよろしくお願いします!!!

  • プログラミング(数学的) 初心者です

    今年、大学の情報科学科に入学した一年生です。 大学の授業で初めてプログラミング(C言語)を学んでいるところです。 その授業というのが、いくつもの課題が提示され実際にパソコンでプログラミングするというものなのです。 基本中の基本はなんとか理解でき書けるんですが、数学のような応用問題(素数がどうのや行列など)のC言語ではどういう思考回路を持てばよいのか分りません… 数学みたいに基本的な思考方法を覚えた方が良いのでしょうか? 見れば分るのですが自分ではなかなか思いつかないようなことばかりなので 例えばfor文自体の意味は分るのですが、一般的にどういう表現のときに用いるのかが分らないのです。 何か良い本などがあれば教えてください。 回答よろしくお願いします<m(__)m>

  • CEDIT for Windowsの使い方

    CEDIT for Windowsを使って、C言語ソースからフローチャートを作ろうと思うのですが、ダウンロードしたものの使い方がわかりません。インストールも必要なのでしょうか?ダウンロードしたものにはたくさんファイルがあるもので・・。 お願いいたします。

  • c言語プログラミングでの質問?です。

    学校でc言語プログラミングを使って簡単なゲームを作りなさい。 という課題が出ました。 下記の条件に沿って作れとのことです。 なかなかいいアイデアが浮かばないんですが、なにかちょうどいいものないですかね? ・scanf文を使うこと。。 ・if文を使うこと。 ・for文(while文)を使うこと。 ・rand関数を使うこと。 ・自分で定義した関数を使うこと。 ・配列または文字列を使うこと。

  • 全くの初心者がはじめるプログラミング言語

    全くの初心者がはじめるプログラミング言語は、 いったいどのプログラミング言語がおすすめでしょうか? 人によっては VBがいい、Cからはじめるべき、 と様様です。 説得力のあるご意見お願いします。

  • C言語関連です。

    ど素人です。 画像のフローチャートを参考にしてif文を作るのですが 自分で考えても解りませんでした。 どなたか教えて下さい。 (因みにC言語です)

専門家に質問してみよう