中小企業診断士 過去問
平成27年度(2015年)
問165 (経営情報システム 問5)

このページは閲覧用ページです。
履歴を残すには、 「新しく出題する(ここをクリック)」 をご利用ください。

問題

中小企業診断士試験 平成27年度(2015年) 問165(経営情報システム 問5) (訂正依頼・報告はこちら) (新しいタブで開く)

業務において条件に応じた処理を行う必要がある場合、条件を一覧表にして判定条件を検討することがある。
例えば、下記の表のように、項目A〜Cには商品の色が赤の場合は r が、緑の場合は g が入り、A〜C に入っている商品の色を判定して、Z欄に示す結果となるような判定を行う場合を考える。
判定には、以下の構文のIF文を用いて判定式を表記する。
     IF(条件式、判定が真の場合の処理、判定が偽の場合の処理)
ただし、IF文の判定が真または偽の場合の処理部分にはIF文のネストが許可される。また、条件式で文字列を表す場合は ”” の記号で囲み、等しくないことは<>で表す。
下記の解答群に示す判定式の中で、正しくない判定結果となるものはどれか。

横にスクロールして続きを読む(本文にフォーカスして左右キー)。

問題文の画像
  • IF(A=”g”,IF(B<>”g”,1,IF(C<>”g”,1,0)),1)
  • IF(A=”r”,1,IF(B=”r”,1,IF(C=”r”,1,0)))
  • IF(A<>”g”,1,IF(B=”r”,1,IF(C<>”g”,1,0)))
  • IF(A<>”r”,IF(B=”g”,1,IF(C<>”g”,1,0)),1)

正解!素晴らしいです

残念...

この過去問の解説 (3件)

01

正解は、

「IF(A<>”r”,IF(B=”g”,1,IF(C<>”g”,1,0)),1)」

です。

【基礎知識】

当問題ではIF文の使い方と表から条件を設定する力が問われています。

IF文は条件によって、正の場合の処理、誤の場合の処理を行うためのものです。

構文は以下のようになります。

IF(条件,正の場合の処理,誤の場合の処理)

例えば、Aが1の場合に0、そうでなければ1を返すようなIF文は以下のようになります。

IF( A=1 , 0 , 1)

ここで1が数値の場合は上記の表現でいいですが、文字列の場合は“”で挟んで“1”と表現します。

また、Aが1の場合に0、そうでない場合にAが2の場合に2、そうでない場合に1を返すようなIF文を考えます。

IF(A=1,0,IF(A=2,2,1))

上記のようにIF文の中に、さらに条件分岐を作ってIF文を入れることをネストと言います。

次に表から、どういった条件を設定すべきかを考えます。

A、B、Cのどれか1つ以上がrであれば、1、すべてgの場合は0が返っていることがわかります。

選択肢1. IF(A=”g”,IF(B<>”g”,1,IF(C<>”g”,1,0)),1)

正しい。ネスト条件です。

まずAがgかどうかをチェックし、gであれば、次にBがgでないことをチェックしています。gでなければ(つまりrであれば)1、gであれば次にCがgでないかをチェックしています。gでなければ(つまりrであれば)1、gであれば0を返していますので、正しいです。

選択肢2. IF(A=”r”,1,IF(B=”r”,1,IF(C=”r”,1,0)))

正しい。1の式と同様ですが、1はgでないかをチェックしていましたが、こちらはrかどうかをチェックしています。

選択肢3. IF(A<>”g”,1,IF(B=”r”,1,IF(C<>”g”,1,0)))

正しい。Aがgでないかをチェックし、gでなければ(A=r)1、そうでなければBがrかどうかをチェックし、rであれば、1、そうでなければCがgでないことをチェックしています。

選択肢4. IF(A<>”r”,IF(B=”g”,1,IF(C<>”g”,1,0)),1)

誤り。Aがrでないかをチェックし、rでなければ1を返す構文となっており、誤っています。

参考になった数31

02

問題の通り
IF(条件式、真の場合、偽の場合)で判定します。
赤、緑、赤でない、緑でないにそれぞれYES、NOを当てはめます。
A、B、Cを判定すると、表の値として4が不適切となります。

参考になった数25

03

正しくない判定結果となるものは「IF(A<>”r”,IF(B=”g”,1,IF(C<>”g”,1,0)),1)」です。

この問題では、A・B・Cに入る色を調べて、次の条件で判定します。

A・B・Cのどれか1つでも赤(r)なら、Z=1

A・B・Cがすべて緑(g)なら、Z=0

IF文は、条件が成り立つ場合と成り立たない場合で、処理を分ける仕組みです。

また、IF文の中に別のIF文を入れることをネストといいます。

選択肢1. IF(A=”g”,IF(B<>”g”,1,IF(C<>”g”,1,0)),1)

この判定式は適切です。

最初にAが緑(g)かどうかを調べます。

Aが赤(r)なら、その時点で「1」を返します。

Aが緑(g)の場合は、Bが緑以外、つまり赤(r)かどうかを調べます。

Bが赤(r)なら「1」を返し、Bも緑(g)ならCを調べます。

Cが赤(r)なら「1」、緑(g)なら「0」を返します。

つまり、A・B・Cがすべて緑の場合だけ「0」になり、それ以外は「1」となるため、正しい判定ができます。

選択肢2. IF(A=”r”,1,IF(B=”r”,1,IF(C=”r”,1,0)))

この判定式は適切です。

最初にAが赤(r)かどうかを調べ、赤なら「1」を返します。

Aが緑(g)ならBを調べ、Bが赤(r)なら「1」を返します。

AとBがどちらも緑(g)ならCを調べ、Cが赤(r)なら「1」、緑(g)なら「0」を返します。

この式は、A・B・Cのどれかに赤が含まれているかを順番に確認する仕組みです。

したがって、問題の条件と一致しています。

選択肢3. IF(A<>”g”,1,IF(B=”r”,1,IF(C<>”g”,1,0)))

この判定式は適切です。

「<>」は、等しくないことを表します。

A<>”g”は「Aが緑(g)ではない」という意味です。

この問題では赤(r)と緑(g)の2種類しかないため、緑でなければ赤になります。

最初にAが赤(r)なら「1」を返します。

Aが緑(g)ならBを調べ、Bが赤(r)なら「1」を返します。

Bも緑(g)ならCを調べ、Cが緑以外、つまり赤(r)なら「1」、緑(g)なら「0」を返します。

したがって、すべて緑の場合だけ「0」になり、それ以外は「1」となるため、正しい判定ができます。

選択肢4. IF(A<>”r”,IF(B=”g”,1,IF(C<>”g”,1,0)),1)

この判定式は不適切です。

最初にAが赤(r)ではないかどうかを調べます。

Aが赤(r)なら「1」を返しますが、Aが緑(g)の場合はBを調べます。

ここで、Bが緑(g)なら「1」を返してしまうことが問題です。

例えば、A・B・Cがすべて緑(g)の場合、本来は「0」になるはずです。

しかし、この式ではAが緑(g)で、Bも緑(g)なので「1」を返してしまいます。

また、Aが緑(g)、Bが赤(r)、Cが緑(g)の場合も、本来は「1」ですが、この式では「0」になります。

したがって、問題の条件と異なる判定結果が出るため、この式が不適切です。

まとめ

この問題では、IF文の条件を順番に確認し、正しい結果が返されるかを判断することが重要です。

IF文:条件が真の場合と偽の場合で、異なる処理を行います。

ネスト:IF文の中に別のIF文を入れて、複数の条件を順番に判定します。

=:左右の値が等しいことを表します。

<>:左右の値が等しくないことを表します。

今回の判定条件は、1つでも赤(r)があれば「1」、すべて緑(g)なら「0」です。

IF文が複雑な場合は、A・B・Cがすべて緑の場合など、結果が分かりやすい組み合わせを当てはめて確認すると、誤った判定式を見つけやすくなります。

参考になった数0

操作の確認にはJavaScriptと対応ブラウザが必要です。

出題を開始しますか?