- ベストアンサー
VB2010コードの意味とは?
- VB2010を使って学習しているあなた。テキストに紹介されているサンプルプログラムを作っている最中に、For ~ Next の中の意味がわからなくなりました。
- 具体的には、乱数を発生させてボタンにランダムに文字を表示させるゲームで、 For 〜 Next の中に入力されている内容の意味を詳しく知りたいとのことです。
- 解答の条件は、入力された文字列が「こんばんは」と一致することです。入力欄の文字が一致しなかった場合は「不正解」と表示されます。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
プログラムの頭から「'答えを文字列の配列に変換」までで、 moji(0) = 'こ' moji(1) = 'ん' moji(2) = 'ば' moji(3) = 'ん' moji(4) = 'は' になっていますね。 さてforの中身は。 まず、 入れ替え元のindex番号 n1 (0から4の間) 入れ替え先のindex番号 n2 (0から4の間) を乱数で選びます。 そして次の3行で、moji(n1) と moji(n2) を入れ替えています。 なぜ m を介しているかというと……。 moji(0) と moji(1) を入れ替えることを考えてみましょう。 いきなり moji(0) = moji(1) を実行してしまうと、 moji(0) = 'ん' moji(1) = 'ん' になっちゃいます。 だから、m = moji(0) として'こ'を保存しておけば、続く2行で moji(0) = moji(1) ' moji(0)='ん' moji(1) = m ' moji(1)='こ' と、入れ替えられるわけです。 for~next文で、それを10回繰り返して、シャッフルしているというわけです。 (n1 と n2 が等しい場合、その1回はシャッフルされてないことになりますが、まあ大きな影響は無いでしょう)
その他の回答 (1)
- seastar3
- ベストアンサー率69% (99/142)
まず、オブジェクト指向プログラミングの独特の記述法を説明します。 オブジェクトの実体名 = new オブジェクト名 例 VBプログラムでエクセルシートを操るとき、 プログラム上のエクセルブック名 = New Excel.Application プログラム上のエクセルブック名.操作命令( ) といった形で、名前を付けて実体化したオブジェクト(インスタンス)の命令を使う形を取ります。 質問のコードの場合、 乱数のオブジェクトRANDOMにrndと名前を付けて、乱数発生命令 next( )を働かせています。 rnt.next(5)とすれば、0以上5未満の乱数が発生するので、0番から4番までの配列の添字の指定ができます。 例えば、4番と1番の文字を入れ替えよとか、0番と2番の文字を入れ替えよとか、気まぐれに入れ替えをします。この気まぐれな入れ替えを10回すると語群の順番は大きく入れ替わります。 このようにして、5つの語群の順番を入れ替えてしまう動作をします。
お礼
ありがとうございます。実は何で 1 to 10 なんだろう…といろいろ試していた ところです。助かりました。
お礼
ありがとうございます。すっきりしました。 テキストには詳しく解説がなかったので4日間ぐらい悩んでました。 丁寧に答えていただきありがとうございました。