質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Visual Studio 2012

Microsoft Visual Studio 2012は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2010の次のバージョンです

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

2回答

2323閲覧

while文の使い方

reeeo

総合スコア42

Visual Studio 2012

Microsoft Visual Studio 2012は、Microsoftによる統合開発環境(IDE)であり、多種多様なプログラミング言語に対応しています。 Visual Studio 2010の次のバージョンです

while

Whileは多くの言語で使われるコントロール構造であり、特定の条件が満たされる限り一連の命令を繰り返し実行します。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2017/07/18 06:41

編集2017/07/18 07:00

初めまして。プログラミング初心者です。
Visual StudioでWindows Formsを作成しています。
とある課題で、1~9の数字ボタンと読み上げボタンがあり、数字ボタンがそれぞれ押下されたら何らかの形で内容を保存しておき、最後に読み上げボタンを押下したらメッセージで押された順番に表示するという課題に取り組んでいます。
for文とListを使用しては出来たのですが、While文でやってほしいと指摘されたのでWhile文でのやり方がよくわからないので困っています。お願いします。

Private num As Integer = 0 Private btn() As Integer Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click ReDim Preserve btn(num + 1) btn(num) = 1 num = num + 1 End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click ReDim Preserve btn(num + 1) btn(num) = 2 num = num + 1 End Sub Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click ReDim Preserve btn(num + 1) btn(num) = 3 num = num + 1 End Sub

.
.
.
.
'読み上げボタン
Private Sub Button11_Click(sender As Object, e As EventArgs) Handles Button11.Click
Dim msg As String = ""
Dim count As Integer = 1
For i = 0 To num - 1 Step +1
msg = (count & "回目:" & btn(i) & "が押されました。" & vbCrLf)
MsgBox(msg)
count += 1
Next

End Sub

End Class

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/07/18 06:56

何を作っているか(Windows Forms? WPF? ASP.NET Web Forms? その他?)ぐらいは書きませんか?
reeeo

2017/07/18 06:58

申し訳ございません。Windows Formsです。
takito

2017/07/18 08:23

While文の使い方を習っていないのでしょうか?それとも、習ったけど理解できていないのでしょうか?そもそもFor文を誰かに説明できる程度に理解していますか?
guest

回答2

0

For構文は、以下のような構造をしています。

For ループ関数 = ループ関数の初期値 To ループの終了条件(最後のループのループ関数の値) Step ループ関数の増分 'ここに、ループで繰り返し実行されるコードを書く Next

それに対して、While構文は以下のような構造になります。

ループ関数 = ループ関数の初期値 While ループの継続条件 'ここに、ループで繰り返し実行されるコードを書く ループ関数 = ループ関数 + ループ関数の増分 End While

違いは、次の2点です。

  1. ループ関数に増分を加えるコードを書かないといけない (For文だとStepで増分を書くだけで、増分が1ならStep以下を省略できる)。
  2. While文は判定式(結果が、TrueかFalseになる式)を書かないといけない(For文ならToの後に値を書くだけだが)。

質問のコードをFor構文の部分

For i = 0 To num - 1 Step +1 msg = (count & "回目:" & btn(i) & "が押されました。" & vbCrLf) MsgBox(msg) count += 1 Next

をWhile構文で書き換えてみると

i = 0 while (i < num) '判りやすいように条件式を括弧でくくりました。括弧は無くてもOKです。 msg = (count & "回目:" & btn(i) & "が押されました。" & vbCrLf) MsgBox(msg) i += 1 End While

となります。

"count += 1"の行は、ループ関数を増やそうとした名残だと思われますが、変数countが使われるところが無いので削りました。

投稿2017/07/18 08:18

coco_bauer

総合スコア6915

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

reeeo

2017/07/18 08:57

詳しくありがとうございました!とても参考になりました。
guest

0

ベストアンサー

別に無理にwhile使わなくていいと思うのですが・・・(個人的には配列の拡張の方が気になる)
まぁ、なんらかの意図があるので答えは控えますので、リファレンスの場所を・・・

とくに難しくないです。
終了条件(継続条件)の修正と、stepの部分を自前で計算すればいいです。

forループ
whileループ

あ、回答でてましたね。

投稿2017/07/18 08:21

編集2017/07/18 08:24
momon-ga

総合スコア4820

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

reeeo

2017/07/18 08:58

解決しました。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問