SAK 図書館

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

VB 入門編5 - 制御構造、判定、判断、分岐、ループ、if、select case、for、do

■制御構造

  ・通常プログラムは上から下に向かって順に実行される。
    流れを分岐されたり、効率の良い繰り返しを行うために制御構造がある。
    制御には、論理値 boolean 評価が多用される。
    VB の True は -1 で、C 言語の TRUE は 1 と評価が異なるので注意する。
    Windows API や C 言語 DLL を呼ばなければ、あまり気にすることもない。

    True   -1
    False  0

  ・実際の if では、-1 が真となり、それ以外は偽りとなる。
    C 言語では、0 が偽りとなり、それ以外は真となる。
    C 言語の if (a) {} と同じ構文を VB で実現する場合は、
    if a <> false then とする必要がある。
    これも VB の中だけなら、あまり気にすることはない。

■if 文 (判断)

  ・条件評価によって、実行コードを分岐する。
    elseif も使えるが、select case を使う方が見やすい。
    1 行 if 構文もある。

    dim a as long

    a = 100

    if a = 100 then msgbox msgbox "真"

    if a = 100 then
      msgbox "真"
    end if

    if a = 100 then
      msgbox "真"
    else
      msgbox "偽"
    end if

    if a >= 50 and a <= 100 then
      msgbox "真"
    end if

  ・boolean 値の評価は、次のようにする。

    dim b as boolean

    b = true

    if b then
      msgbox "真"
    else
      msgbox "偽"
    end if

    if b = false then
      msgbox "真"
    else
      msgbox "偽"
    end if

  ・if を使ったループは、次のようにする。
    但し、通常はループ構造を使用して、if でのループは組まない。
    ラベルや goto も使わないのが常識である。

    dim i as long

    cls
    i = 1
:loop
    if i <= 10 then
      print i
      i = i + 1
      goto loop
    end if

  ・文字列の条件評価構文も基本的に数値評価と同じである。

    dim s as string

    s = "abc"

    if s = abc" then
      msgbox "真"
    end if

    if s > "aaa" then
      msgbox "真"
    end if

■select case (多重分岐)

  ・条件評価によって、実行コードを多重分岐する。
    C 言語や JAVA のように break なしで次の case コードを実行するような
    制御はできない。

    dim a as long

    a = 100

    select case a
      case 100
        msgbox "分岐1"
      case 200
        msgbox "分岐2"
      case else
        msgbox "分岐その他"
    end select

    select case a
      case 100, 200
        msgbox "分岐1"
      case 300, 400
        msgbox "分岐2"
      case else
        msgbox "分岐その他"
    end select

  ・複雑な条件評価は、次のようにする。

    dim a as long

    a = 100

    select case true
      case a >= 50 and a < 100
        msgbox "分岐1"
      case a >= 100 and a < 150
        msgbox "分岐2"
      case else
        msgbox "分岐その他"
    end select

■for (ループ)

  ・特定回数繰り返しコードを実行する。
    for ループ脱出には exit for を使用することができる。
    次の例では、10 回ループし、1 〜 10 の数値を加算する。

    dim a as long
    dim i as long

    a = 0
    for i = 1 to 10
      a = a + i
    next
    cls
    print a

  ・増分は、step で指定できる。
    この例では、1, 3, 5, 7, 9 が加算される。

    dim a as long
    dim i as long

    a = 0
    for i = 1 to 10 step 2
      a = a + i
    next
    cls
    print a

  ・マイナス増分は、step - で指定できる。
    この例では、10 〜 1 を加算する。

    dim a as long
    dim i as long

    a = 0
    for i = 10 to 1 step -1
      a = a + i
    next
    cls
    print a

  ・for ループを使用した配列サーチは、次のようにする。

    dim dtkey(9) as string
    dim dttxt(9) as string
    dim dtmax as long
    dim shkey as string
    dim i as long

    dtmax = -1
    dtmax = dtmax + 1 : dtkey(dtmax) = "a001" : dttxt(dtmax) = "あいうえお"
    dtmax = dtmax + 1 : dtkey(dtmax) = "b002" : dttxt(dtmax) = "かきくけこ"
    dtmax = dtmax + 1 : dtkey(dtmax) = "c003" : dttxt(dtmax) = "さしすせそ"
    dtmax = dtmax + 1 : dtkey(dtmax) = "d004" : dttxt(dtmax) = "たちつてと"
    dtmax = dtmax + 1 : dtkey(dtmax) = "e005" : dttxt(dtmax) = "なにぬねの"

    shkey = "d004"

    for i = 0 to dtmax
      if dtkey(i) = shkey then exit for
    next
    if i > dtmax then
      msgbox "見つかりませんでした。"
    else
      msgbox dtkey(i) & " - " & dttxt(i) & " を見つけました。"
    end if

■do (ループ)

  ・特定評価条件で繰り返しコードを実行する。
    do ループ脱出には exit do を使用することができる。
    until 条件は終了条件であり、while 条件にするとループ条件になる。
    次の例は、文字列変数 s の "ab" を場所と切り出した文字を表示する。
    評価式は目的に応じて、loop の後に書くこともできる。

    dim s as string
    dim a as string
    dim i as long
    dim j as long

    s = "abcdabefabgh"
    a = "ab"
    cls
    j = len(a)
    i = 1 - j
    do until i = 0
      i = instr(i + j, s, a)
      if i > 0 then print i & " " & mid(s, i, j)
    loop

  ・制御構造の詳細は、次の資料を参照のこと。

    VB 基礎編 (その三) 制御構造(判定、ループ)

■VB 入門編資料
■VB 基礎編資料
■VB ビジュアル編資料
■VB テクニック編資料
| VB | SQL | Perl | PHP | ASP | JSP | C | PC | HP | FAQ | フリーソフト |

SAK Streets メインストリート 図書館・カフェ 一覧 SAK Streets 検索



Copyright (C) 1999-2017 Y.SAK