VB.NETの制御構造とは?初心者でもわかる条件分岐と繰り返しの基本を完全解説!
生徒
「先生、VB.NETでプログラムの流れを制御する方法ってありますか?」
先生
「いい質問ですね。VB.NETでは『制御構造(せいぎょこうぞう)』という仕組みを使って、プログラムの流れを自由に変えることができます。」
生徒
「制御構造って難しそうですね…。どんなものなんですか?」
先生
「大丈夫ですよ。制御構造は大きく分けて『条件分岐』と『繰り返し』の2種類しかありません。今日はこの2つの基本をゆっくり学びましょう。」
1. VB.NETの制御構造とは?
VB.NETの制御構造(control flow)とは、プログラムの実行の流れを制御する仕組みのことです。普段、私たちは「もし雨なら傘を持つ」「暑ければクーラーをつける」など、条件によって行動を変えていますよね。プログラムでも同じように、条件に応じて動きを変えたり、同じ処理を繰り返したりすることができます。
制御構造は、主に次の3つに分けられます。
- 順次処理:上から順番に命令を実行する。
- 分岐処理:条件によって実行する処理を変える(
If文やSelect Case)。 - 繰り返し処理:同じ処理を何度も行う(
For文やWhile文)。
2. 条件分岐(If文・ElseIf文・Else文)
まずはVB.NETのIf文を使った条件分岐を見てみましょう。条件分岐とは、「もし〇〇なら△△する」というように、条件によって処理を変える構文(こうぶん)のことです。
たとえば「点数が60点以上なら合格、そうでなければ不合格」といった処理を作ることができます。
Dim score As Integer = 75
If score >= 60 Then
Console.WriteLine("合格です!")
Else
Console.WriteLine("不合格です…")
End If
上の例では、変数scoreが60以上なら「合格です!」と表示し、それ以外なら「不合格です…」と表示します。
合格です!
ElseIfを使うと、条件をさらに細かく分けることができます。
Dim score As Integer = 85
If score >= 90 Then
Console.WriteLine("とてもよくできました!")
ElseIf score >= 60 Then
Console.WriteLine("合格です!")
Else
Console.WriteLine("不合格です…")
End If
合格です!
このようにIf、ElseIf、Elseを使い分けることで、複数の条件に応じた処理を実行できます。
3. Select Case文(複数の条件を簡単に書ける)
もし条件がたくさんある場合、Ifを何度も書くと読みづらくなります。そんなときに便利なのがSelect Case文です。
たとえば、点数に応じて評価を表示するプログラムは次のように書けます。
Dim score As Integer = 80
Select Case score
Case Is >= 90
Console.WriteLine("Aランク")
Case Is >= 70
Console.WriteLine("Bランク")
Case Is >= 50
Console.WriteLine("Cランク")
Case Else
Console.WriteLine("Dランク")
End Select
Bランク
Select Caseは「条件が多いとき」にとても読みやすくなるので、VB.NETでよく使われる構文です。
4. 繰り返し処理(For文・While文)
次に、同じ処理を何度も繰り返す繰り返し処理について学びましょう。例えば、「1から5までの数字を順番に表示したい」ときに使えます。
4-1. For文の基本
For文は「決まった回数だけ繰り返す」ときに使います。
For i As Integer = 1 To 5
Console.WriteLine(i)
Next
1
2
3
4
5
For i As Integer = 1 To 5は、「変数iを1から5まで1ずつ増やしながら繰り返す」という意味です。
4-2. While文の基本
While文は、「条件が真(True)の間、ずっと繰り返す」構文です。回数が決まっていないときに使います。
Dim i As Integer = 1
While i <= 3
Console.WriteLine("こんにちは!")
i += 1
End While
こんにちは!
こんにちは!
こんにちは!
i += 1は「iに1を足す」という意味です。これをしないと、永遠に繰り返してしまうので注意しましょう。
5. ネスト(入れ子)した制御構造
VB.NETでは、制御構造の中にさらに制御構造を書くこともできます。これを「ネスト」と呼びます。例えば、For文の中にIf文を入れて、偶数だけを表示することも可能です。
For i As Integer = 1 To 5
If i Mod 2 = 0 Then
Console.WriteLine(i & " は偶数です")
End If
Next
2 は偶数です
4 は偶数です
このように、条件分岐と繰り返しを組み合わせることで、より複雑な処理をシンプルに書くことができます。
6. VB.NETの制御構造を使うコツ
制御構造を使うときのコツは、「プログラムの流れを日本語で考える」ことです。いきなりコードを書くのではなく、「もし○○なら」「~の間くりかえす」といった言葉で考えると理解が深まります。
- 条件を「Yes/No」で答えられるように整理する
- 繰り返しには「いつ終わるのか」の条件を決める
- インデント(字下げ)をそろえて読みやすくする
こうしたポイントを意識するだけで、VB.NETの制御構造はぐっと分かりやすくなります。
まとめ
ここまでVB.NETにおける制御構造の基本について詳しく解説してきました。プログラムの三大要素である「順次」「分岐」「繰り返し」を理解することは、プログラミング学習における最初の大きな壁であり、同時に最も重要な土台となります。VB.NETは他のプログラミング言語に比べて、構文が自然な英語(例えば If...Then や For...Next など)に近く、初心者の方でも直感的に流れを把握しやすいのが大きな特徴です。
条件分岐(If文やSelect Case文)を使えば、ユーザーの入力内容や計算結果に応じて柔軟に動作を変えるシステムが作れますし、繰り返し処理(For文やWhile文)を活用すれば、膨大なデータを一瞬で処理するような効率的なプログラムを作成することが可能になります。これらの構文を単体で使うだけでなく、組み合わせて「ネスト」させることで、現実世界の複雑な仕組みをコードとして表現できるようになっていきます。
現場で役立つ実践的なサンプルプログラム
学んだ内容を復習するために、少し実践的なコードを書いてみましょう。以下のサンプルは、1から10までの数字を順番にチェックし、その数字が「3の倍数かどうか」を判定して表示するプログラムです。For文とIf文、そして数値計算を組み合わせた、非常に実用的な例です。
' 1から10までのループ処理
For i As Integer = 1 To 10
' 3で割った余りが0なら3の倍数
If i Mod 3 = 0 Then
Console.WriteLine(i & " は3の倍数です。アホになります。")
Else
Console.WriteLine(i & " は3の倍数ではありません。")
End If
Next
実行結果は以下のようになります。余りを求める Mod 演算子は、プログラミングの現場で「特定の周期で処理を行いたいとき」に非常によく使われるテクニックですので、あわせて覚えておくと便利ですよ。
1 は3 deは倍数ではありません。
2 は3 の倍数ではありません。
3 は3 の倍数です。アホになります。
4 は3 の倍数ではありません。
5 は3 の倍数ではありません。
6 は3 の倍数です。アホになります。
7 は3 の倍数ではありません。
8 は3 の倍数ではありません。
9 は3 の倍数です。アホになります。
10 は3 の倍数ではありません。
エラーを防ぐためのポイント
制御構造を書く際に初心者が陥りやすいミスについても触れておきます。最も注意すべきは「無限ループ」です。特に While 文を使用する際、終了条件がいつまでも満たされないコードを書いてしまうと、プログラムがフリーズしたような状態になってしまいます。
また、If 文が重なりすぎて「ネストが深くなりすぎる」のも避けたいポイントです。あまりに深くなると、後からコードを見返したときに「どのElseがどのIfに対応しているのか」がわからなくなってしまいます。そんな時は、条件を整理して Select Case に書き換えたり、処理を別のメソッドに切り出したりすることを検討してみてください。
VB.NETの学習は、まずはこの制御構造を完璧に使いこなせるようになることが近道です。最初は小さなサンプルコードを自分で書き換えて、実行結果がどう変わるかを試行錯誤してみてください。その積み重ねが、将来的に大規模なWebアプリケーションやデスクトップアプリを開発するための確かな力になります。
生徒
「先生、ありがとうございました!If文とかFor文って、プログラミングのパズルを組み立てているみたいで面白いですね。」
先生
「そう言ってもらえると嬉しいです。実はどんなに巨大で複雑なソフトウェアも、元を辿ればこの『もし~なら』と『~を繰り返す』の組み合わせだけでできているんですよ。」
生徒
「えっ、そうなんですか!?でも、If文の中にIf文を入れる『ネスト』をやってみたら、だんだん混乱してきちゃって…。」
先生
「最初はみんなそうです。コードを書くときに『インデント(字下げ)』をしっかり意識していますか?VB.NETはVisual Studioなどの開発環境が自動で形を整えてくれますが、構造を意識して書くだけでミスはぐっと減りますよ。」
生徒
「確かに、ずれているとどこで終わるのか分からなくなりますね。あと、Select Case文はIf文よりもスッキリ書けていいなと思いました。」
先生
「いいところに気づきましたね。同じ結果になるコードでも、読みやすさを考えて書き方を選ぶのが『プロの書き方』への第一歩です。次は配列やリストを使って、大量のデータを一気にFor文で回す方法を勉強してみましょうか。」
生徒
「はい!もっと色々なことができるようになりたいので、頑張ります!」