科目Bでわからないところがある。

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
masさん  
(No.1)
ある参考書の問題なのですが、
1 ⭕️文字型 functionA()
2 if(functionB()){
3 ret←a
4 else
5 ret←c
6 end if 
7 return ret

8 ⭕️整数型 functionB()
9 return false

とあり、トレースの結果はretの戻り値は"c"となります。


ここで疑問なのですが、2行目のif(funcitonB)は実行されません。
しかしif(functionB)は、if(false)つまり、「もし[false]なら以下の処理を実行するよ」という意味合いにはならないのですか?
ですので僕自身はretにaが入ると考えたのですが、この考えが間違っている理由を教えて欲しいです。
2026.04.16 18:11
みかんさん 
(No.2)
if(false)の解釈を間違っているのではありませんか。
質問主さんは「if(false)」という部分を「条件がfalseの時に、直後の処理(ret←a)をする」と解釈されたのだと思いますが、プログラミングでは if は真偽をチェックするものです。 
すなわち、以下のような解釈になります。

1  ⭕️文字型 functionA()
2  if(functionB()){       // functionB() は false を返す
3      ret←a              // □条件が「真(true)」の時だけ実行
4  else                   // ★条件が「偽(false)」の時に実行
5      ret←c              // ★ここが実行される
6  end if 
7  return ret
8  ⭕️整数型 functionB()
9  return false

順を追っていくと、
functionA を実行

if(functionB())の評価

functionB() がfalseを返す

if(false)となるため、3行目は実行されず
4行目のelse以降が実行される

retにcが代入され、cをリターンする。いかがでしょうか。
2026.04.16 18:54
すぎさん 
(No.3)
if文は条件式"()の中身"がtrueのときのみ、発動します。

if(false)は何も起きません。

何か起こそうとするなら

if(functionB()=false){
 処理
}
とし、

functionB()=false→false=falseなのでtrue
ということになります。
2026.04.16 20:43
masさん  
(No.4)
連絡ありがとうございます。
a=4
b=5
if(a>b){

がif(false)になる。のようなイメージでしょうか。
そうならすごく納得が行きます。
2026.04.16 21:03
すぎさん 
(No.5)
その理解で合ってます
2026.04.16 22:37

返信投稿用フォーム

※CBT試験では出題内容の公開が禁止されているため、直接的・間接的を問わず、出題内容や難易度を尋ねる質問は厳禁です。
※宣伝や迷惑行為を防止するため、当サイト、姉妹サイト、IPAサイト以外のURLを含む記事の投稿はできません。

投稿記事削除用フォーム

投稿番号:
パスワード:

その他のスレッド


Pagetop