プロが教える店舗&オフィスのセキュリティ対策術

ビジュアルベーシックのプログラミングについて質問があります。
Dim j, answer As Short
answer = 1
For j = 2 To 4
answer = answer * j
Next
Label1.Text = Str(j)
Label2.Text = Str(answer)

この文を実行してみたところ、ラベル1に5、ラベル2に24という値が出てきました。この際、jというのはどういった働きをしている変数ですか?また、answer = answer * jという式はどうやって計算したら24なんていう数値が出てくるのでしょうか。answer = 1とされているのによくわかりません。馬鹿でほんとすいません。教えてくださる方、お願いします。

A 回答 (2件)

jはいわゆるカウンタです。


For文でj=2から4まで繰り返します。

1回目のループ、j=2
answerは元々1
answer = answer * j
の計算で、= 1*2 = 2が代入されます。

2回目のループ、j=3
answerは2になっている
answer = answer * j
の計算で、= 2*3 = 6が代入されます。

3回目のループ、j=4
answerは6になっている
answer = answer * j
の計算で、= 6*4 = 24が代入されます。

3回目のループ終了時のNextでjは5に更新されます。
    • good
    • 0

まず、算数数学とは = の意味が違うことに気をつけましょう。



If a=b Then

で使われてるのは、数学と同じ「両辺が等しい」の意味です。
※ ただし、コンピュータ用語での「等しい」には、違う解釈があるので注意は必要です。

answer = answer * j
のような使われかたのときは、 「右辺の内容で、左辺の内容を置き換える」という意味になります。
answer ← answer * j
と書いた方がイメージできるかもしれません。

また、左右の answer ではそれぞれ意味が違います。
右のanswer は、その時点で 変数answerが記憶している値を意味し、
左のanswer は、右辺の結果を記憶するための場所、変数answer自体を意味します。

メモ用紙の左上に「 answer 」と書いて、真ん中に 1 と書きます。
その後、そのメモに書いてある数値1 と メモjに書いてある2 を掛けた 2 を、メモanswer に消しゴムで消した後で書き込みます。
次に、メモanswerに書いてある数値2 と メモjに書いてある3 を掛けた 6 を、メモanswer に消しゴムで消した後で書き込みます。
....
という動きです。

御自身がコンピュータになったつもりで、紙と鉛筆でやってみてはいかがでしょう?


For文は、解説書を読むと、どんな動作するかがわかります。
ですが、入門書にはあまり明記されていないことがあります。

Forループ終了時、 jは終了値+増減分となっています。(ループ途中でジャンプしない場合)
というか、Jが終了値を越えてしまったので、ループが終了になった、ということになります。
今回のループの終了値は 4 、増減は+1(Stepを省略したときのデフォルト)ですから、
ループ終了時は 4+1=5になります。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!