FreeBASIC マニュアルのトップに戻る

FreeBASIC Select Case 命令文

目次→教本→いっしょに学ぼうThe Select Case Statement←オリジナル・サイト

Select Case 命令文 左にメニュー・フレームが表示されていない場合は、ここをクリックして下さい

←リンク元に戻る プログラム開発関連に戻る

Select Caseブロックは、If-ElseIf の階段を最適化したものと見なすことができます。大体同じようなやり方で働いています。
標準のSelect Caseは、<式> に標準のデータ型のいずれかを使用できます。そして、特化されている Select Case As Const 形式は、整数値のために最適化されています。

このコードの断片は、一般的な select case の構文を示しています。
式は、通常、標準のデータ型のどれかか、または、型 か 配列 の個々の要素であることができる変数です。

Select Case <式>
    Case <リスト>
        <命令文>
        <命令文>
        ...
    Case Else
        <命令文>
        <命令文>
        ...
End Select


Case 命令文の <リスト> 節は、下のいずれかの形式が使えます。

下の断片は、これらの異なった形式が、プログラムでどう使われるかを示しています。
Case 47

Case 47 To 59

Case Is > 60

Case 47, 48, 53

Case keycode


Select Case As Const は、0 〜 4097 の範囲の整数式で働くように設計された、Select 命令文の、より速いバージョンです。
Select Case As Const <整数_式>
    Case <リスト>
        <命令文>
        <命令文>
        ...
    Case Else
        <命令文>
        <命令文>
        ...
End Select



Select Case As Const のための <リスト> 命令文形式は、値か、値の列挙に制限されます。
すなわち、演算子の式は、Case As Const の中に許容されていません。

Case ブロックが実行されるとき、Case キーワードに続く命令文で次のCaseキーワード(または、End Select)までが、実行されます。
どの場合でも、Case の中の、1つのブロックの命令文だけが、実行されます。
Case Else があると、Else ブロックの中の命令文は、Select命令文の <式> 部分に合致する Case がない場合に、この、Else ブロックの中の命令文が、実行されます。

下のプログラムは、Select Case 命令文ブロックの使例です。
'キー入力の Ascii コード
Dim As Integer keycode

'esc キーが押されるまで、繰返します
Do
    keycode = Asc (Inkey)
    Select Case As Const keycode
        Case 48 To 57
            Print "あなたは数字キーを押しました"
        Case 65 To 90
            Print "あなたは大文字アルファベットを押しました"
        Case 97 To 122
            Print "あなたは小文字キーを押しました"
        End Select
        Sleep 1
Loop Until keycode = 27 '27 は、Escape の ASCII コードです

End


プログラムでは、あなたがキーを押すと、値は、Asc 関数を使って、数に翻訳されます。
これは、いつも 4097 未満の整数値になるので(ASCII 文字コードの範囲は、0 〜 255)、Select Case as Const 形式が使えます。

コンパイラは、実行するブロックを確認するために、Case 範囲に対して、keycode の値をチェックします。
keycode が、特定の範囲に落ちると、Print 命令文が実行されます。そして、プログラムの流れは、End Selectに続く、次の行を続行します。
keycode が、どの Case 範囲にも合致しないと、プログラムは、End Select に続く、次の行を続行します。

Select Case は、通常、If-Elseif の階段から翻訳できます。

これを示すために、上のプログラムは、If-ElseIf の階段を使って、下のように書き変えることができます。
'押したキーの Ascii コード'
Dim As Integer keycode

'esc キーが押されるまで、繰り返します
Do
    keycode = Asc (Inkey)
    If (keycode >= 48) And (keycode <= 57) Then
        Print "数値キーが押されました"
    ElseIf (keycode >= 65) And (keycode <= 90) Then
        Print "大文字キーが押されました"
    ElseIf (keycode >= 97) And (keycode <= 122) Then
        Print "小文字キーが押されました"
    End If
    Sleep 1
Loop Until keycode = 27 '27 は、Escapeの ASCII コードです

End


2つのプログラムを比較すると、論理は全く同じですが、Select Case は、If-ElseIf の階段より、はるかに読み易く、理解しやすいことが、分かるでしょう。

いっしょに学ぼう に戻る

最終、Sancho3によるレビュー(2018年2月06日)

←リンク元に戻る プログラム開発関連に戻る

ページ歴史:2018-02-10 13:35:43
日本語翻訳:WATANABE Makoto、原文著作者:WikiRick(Rick Clark aka rdc)

ホームページのトップに戻る

表示-非営利-継承