HOME»基本情報技術者試験掲示板»繰り返し処理について
投稿する

繰り返し処理について [5424]

 たいきさん(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
返信投稿用フォームスパム防止のためにスレッド作成日から30日経過したスレッドへの投稿はできません。
© 2010- 基本情報技術者試験ドットコム All Rights Reserved.

Pagetop