質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

3回答

1168閲覧

単体のテストパターン(入れ子)が分かりません

hasune

総合スコア18

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

1グッド

1クリップ

投稿2019/05/07 11:53

単体でのテストパターンがイメージできません。
if文の入れ子でつまずいています。フローチャートを書いてみても途中で分からなくなりました。

条件が1~3あって、文1~3が処理結果として表示されるのでしょうか?
ご回答お待ちしています。よろしくお願いいたします。

if(●●==■■){ 条件1
if(▲▲==(U2)0x70{ 条件2
if((◆◆==OFF) 条件3
&&(〇〇〇<=◇◇◇)){
▽▽=(U1)ON; 文1
☆☆=(U1)ON;
}
else{
▽▽=(U1)OFF; 文2
☆☆=(U1)OFF;
}
}
else{
▽▽=(U1)ON; 文3
☆☆=(U1)OFF;
}

DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

decision-table書きなされ。こんなの↓

式1 式2 式3 false ----- ----- → なにもしない true false ----- → 文3 true true false → 文2 true true true → 文1

※ ----- は 「true/false どっちでもいい」の意

投稿2019/05/07 12:09

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hasune

2019/05/08 12:45

やはりそのテーブルが条件分岐を分かりやすくするのに適してるんですね・・・。 紙に書いてみても途中からよく分からなくなってしまっている状態です。 そもそもelseが2つあるのが謎です。 elseというのは、「全ての条件式が偽の時に実行する処理」だと思います。 これならelseはひとつあれば十分なのではないのでしょうか? if(●●==■■){ 条件1 if(▲▲==(U2)0x70{ 条件2 if((◆◆==OFF) 条件3 &&(〇〇〇<=◇◇◇)){ ▽▽=(U1)ON; ① ☆☆=(U1)ON; } else{ ▽▽=(U1)OFF; ② ☆☆=(U1)OFF; } } else{ ▽▽=(U1)ON; ③ ☆☆=(U1)OFF; }
episteme

2019/05/08 13:01

インデントつけてよーく見てみ。 if~else~else にはなってないよ。
hasune

2019/05/09 12:19

Chironianさんがつけてくださったインデントありのコードを見てみて考えました。 elseが2つあるのはおかしいと思ったのは、 私の中で条件1に対して2つelseがあると思えたため違和感となっていました。 インデントをつけたのを見るとそれぞれのifとセットになっているのですね。 まだどのifとelseがセットなのかパッとひらめけませんが、 インデントをつけることで少しだけ理解できました。 ありがとうございます。
guest

0

ベストアンサー

イメージ説明説明](f2f7879d941a58eafa81cbfb327bed61.png)

IF構文は、(a) IFで判断する条件、(b) 条件が成立した時(THEN)に行う処理、(c) 条件が成立しなかった時(ELSE)に行う処理、の3つから出来ていて、THENブロックやELSEブロックが無い場合もあります。

質問のコードのフローチャートを書いてみると上の図のようになります。
・最初のIF(条件1)には 条件が成立しない時(ELSE)の処理が無くて、条件が成立した時(①THEN)には、IF(条件2)に行きます。
・二つ目のIF(条件2)で条件が成立した時(②THEN)はIF(条件3)に行き、条件が成立しない時(②ELSE)は文3が実行されます。
・三つ目のIF(条件3)で条件が成立した時(③THEN)は文1が実行され、条件が成立しない時(③ELSE)には文1が実行されます。

分かりづらかったのは、最初のIFのELSEブロックが無いためではないかと思います。あるいは、THENブロックに"THEN"とは書かれていないからかも。

IFが3つあったら、THENブロックとELSEブロックも、それぞれ3つあるのが標準的な構成で、THENブロックやELSEブロックが無い(処理すべきものが無いので省略されている)場合もあるというふうに理解してください。

投稿2019/05/08 15:25

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hasune

2019/05/09 12:48

自分だと上手く作れなかったためフローチャートは非常に助かります。ありがとうございます! >分かりづらかったのは、最初のIFのELSEブロックが無いためではないかと思います。 仰る通りで、ひとつ疑問が解決されました。 最初のIF(条件1)elseが省略されているのは処理がないからなんですね。 すごく合理的ですが、初心者の私にはそこまで考えが及びませんでした・・・。 二つ目のIF(条件2)で条件が成立しない時(②ELSE)は文3にいくのは、 そういう書き方だからなのでしょうか? すみません、 条件と文がどうセットになっているのかピンときていません。 考え方としては、外から中に条件と文がセットになっていく感じでしょうか?
hasune

2019/05/12 11:37

>分かりづらかったのは、最初のIFのELSEブロックが無いためではないかと思います。 レスへのコメントをいただけませんでしたが、 おそらくもうコメントはつかないと思われるので締め切らせていただきます。 こちらのコメントが大きな手掛かりとなったためベストアンサーとさせていただきます。 皆様、どうもありがとうございました。
guest

0

こんにちは。

インデントを付け直してみました。一目瞭然ではないでしょうか?

C

1if(●●==■■) 条件1 2{ 3 if(▲▲==(U2)0x70 条件2 4 { 5 if((◆◆==OFF) &&(〇〇〇<=◇◇◇)) 条件3 6 { 7 ▽▽=(U1)ON;1 8 ☆☆=(U1)ON; 9 } 10 else 11 { 12 ▽▽=(U1)OFF;2 13 ☆☆=(U1)OFF; 14 } 15 } 16 else 17 { 18 ▽▽=(U1)ON;3 19 ☆☆=(U1)OFF; 20 }

ところで、最後の}が抜けてますね。

投稿2019/05/07 13:20

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hasune

2019/05/08 12:50 編集

わざわざ見やすいようインデントをつけていただいたのに理解ができませんでした。 大変申し訳ないです・・・。 何が分からなくさせているのか考えてみたところ、 「全ての条件式が偽の時に実行する処理をする」elseが2つもあることが一番の謎です。 p.s.最後の}ご指摘ありがとうございます。 ふつうは1つで十分なのではないのでしょうか?
Chironian

2019/05/08 12:57

「全ての条件式が偽の時に実行する処理をする」という判定式は存在していないですよ。 if文についてもう一度学習されると良いと思います。 ↓に良い例題があると思います。 https://www.sejuku.net/blog/25214 > ふつうは1つで十分なのではないのでしょうか? { と } は対応がとれていないといけません。
hasune

2019/05/09 12:30

仰る通りif文への理解がまだまだ浅いです・・・。理解が足らず申し訳ないです。 実はこちらのサイトは既に閲覧済みでしたが、 やはり入れ子の場合のテストパターンがイメージできません・・。 ただ、ifがどのelseとセットなのか分からないのですが、 以下のコメントで何かつかみかけました。ありがとうございます! > ふつうは1つで十分なのではないのでしょうか? { と } は対応がとれていないといけません。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問