繰り返し処理について

午前試験免除制度対応!基本情報技術者試験のeラーニング【独習ゼミ】
たいきさん  
(No.1)
下記のプログラム、変数valの値を順に回答するのですが、ご教示ください。
プログラム
整数型  i.j.val
for( iを1から5まで1ずつ増やす)
  val←0
  j←1
  while(jが1以下)
    val←val+j
    j←j+1
  endwhile
  valを表示
endfor

回答は1.3.6.10.15です
ここで疑問ですが、while文1回目の時点でval=1は理解できます。
2回目のi=2に移行した際、val=0、j=1に書き換えられ、while文は常にval=1にならないのかと言う疑問点です。
for文の外に、val←0、j←1があれば、回答は納得いきますが、for文の中にある以上、この行を飛ばさないと認識していましたが間違っていますでしょうか?
2024.05.01 14:13
たいきさん  
(No.2)
while(jがi以下)に訂正です。
2024.05.01 14:15
ともさん 
(No.3)
こんにちは。
i=2 以降の繰り返し処理が不明ということでよろしいでしょうか?
私のトレース結果を記載するので、参考になれば幸いです。

for( iを1から5まで1ずつ増やす)
  val←0
  j←1

※i=2 のとき
Valの値は「0」
jの値は「1」
→for文はiの値を増やす外ループ。毎回Valとjの値は初期化されます。

while(jがi以下)
※「jがi以下」、つまり「jの値が2以下」になるまでループを行います。(内ループ)

①内ループ1回目(jが1)
 val←val+j
→0+1=1

※Valの値を1で上書きします

 j←j+1
→1+1=2

※jの値を2で上書きします

①内ループ2回目(jが2)

 val←val+j
→1+2=3

※Valの値を3で上書きします

 j←j+1
→2+1=3

※jの値を3で上書きします

jの値が3になったことで、「while(jがi以下)」の条件が偽となり、内ループの処理が完了します。
この時点でValの値の3を出力します。
2024.05.01 15:25
たいきさん  
(No.4)
ともさん
大変ご丁寧にありがとうございます。
よくわかりました。
間違えた理由は、for文のval←0、j←1は毎回実施する事は正解だけれども、while文において、jがi以下になるまで実行してなかった事でした。
ありがとうございました。
2024.05.01 16:34

返信投稿用フォーム

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

投稿記事削除用フォーム

投稿番号:
パスワード:

その他のスレッド


Pagetop