-
ID:JT3bFE さんの質問

プログラム初心者です。

(問題)
a = 8;
for (i = 0; i < 2; i++) {
a = a / 2;
}
を実行したとき、aの値はいくら?

という問題があり、
解答は2ということなのですが、何故、2になるのでしょうか??

例題では下記のような説明があり、
a = 0;
for (i = 0; i < 4; i++) {
a = a + 1;
}

{ a = a + 1; }を4回繰り返します。
1回目はa = 0 + 1;でaの値は1になり、
2回目はa = 1 + 1;でaの値は2になります。
4回目はa = 3 + 1;となるので、ループが終わったときにはaの値は4になります。

この説明だけでは、理解出来ず困っておりす。
ご教示頂けましたら幸いです。

みんなの回答 5 件

ID:yECKUT さんの回答

みんな答えちゃダメだ。高校生のプログラム実習の課題だ。

ID:b.r5VH

そうだとしたら、教えかたの下手な教師の被害者だと思えて逆に助けたくなるわい。

ID:Z37HFO

答え聞いてるだけなら自分で考えるべきだけど、答えは分かってて、解き方を聞いてるんだから大人なら教えてあげるべきじゃない?

ID:b.r5VH さんの回答

なんで理解できないのかが、理解できない…
トピ主はどこが理解できないのか細かく説明してみ。
ちなみに、ほとんどのプログラミング言語での「=」は数学の「=」とは意味が違うからね。右辺の値を左辺の変数に入れる、という「操作」をする「命令」みたいなもんだよ。

ID:qfub9B さんの回答

ループが一周するタイミングでalertとかconsole.log出してみたら分かりやすいと思います。

a = 8;
for (i = 0; i < 2; i++) {
a = a / 2;
console.log(a);
}
てな感じで。

ID:RHevHG さんの回答

プログラミングやったことないデザイナーだけど
a / 2 の処理を2回繰り返す、ってことかな。
aの最初の値が8だから、それを/2で2回繰り返すと…。

ID:Z37HFO さんの回答

for 文の意味がわかってないと思うので説明
for (ループ開始前の処理;ループ判定処理;ループが1回終わった際の処理)
この問題だと、はじめに i = 0 とする。i を 1ずつ足していく(i ++)。i < 2 の間くりかえす。という意味。

① a = 8;
② for (i = 0; i < 2; i++) {
③  a = a / 2;
  }
だと、① a = 8 → ②1回目(i = 0) → ③ a = 4 ( 8 / 2 ) → ②2回目 ( i = 1 ) → ③ a = 2 ( 4 / 2 ) → ②3回目 ( i = 2 ) → i < 2 を満たさないので、③の処理はせず終了
よって、答えは「2」です。

ID:JT3bFE

皆様ご教示頂き有難うございました!!
for文の意味を理解しておりませんでした。
ご丁寧にご説明頂いたおかげで、理解を深めることが出来ました。

ID:OnBCIR

え~~~~~~~~~~~~~!!!???

最終更新日:2014-12-16 (3,652 views)

関連するトピックス

ページ上部に戻る