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

FreeBASIC Dim

目次→実行時ライブラリー参考→変数の宣言DIM←オリジナル・サイト

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

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

変数を宣言します。

構文:
Dim [Shared] name1 As DataType [, name2 As DataType, ...]
または
Dim [Shared] As DataType name1 [, name2, ...]

配列を宣言します:
Dim name ( [lbound To] ubound [, ...] ) As DataType
Dim name ( Any [, Any...] ) As DataType
Dim name ( ) As DataType

変数に初期値を設定します:
Dim scalar_symbol As DataType = expression | Any
Dim array_symbol (arraybounds) As DataType = { expression [, ...] } | Any
Dim udt_symbol As DataType = ( expression [, ...] ) | Any

記述:
名前で変数を宣言して、それに対応するメモリを確保します。

変数は、-lang fb 方言で、使う前に宣言しなければなりません。また、他の方言で、Option Explicit を使う時も、変数を宣言しなければなりません。
-lang qb-lang fblite だけでは、最初に変数を宣言せずに、使うことができます。このような場合、暗黙の変数と呼ばれます。

Dim は、サポートされているデータ型、ユーザー定義型、または列挙の、どの変数についても、宣言して、割り当てるのに使うことができます。

変数や配列を、どこでどう宣言するかによって、メモリへの変数の割り当て方を変えることができます。
Storage Classes を参考ください。

複数の変数を、コンマでそれぞれの変数宣言を切り離すことによって、一つの Dim 命令文で、宣言することができます。

'' 変数宣言の例

'' 1つの変数を、一つの DIM 命令文で宣言
Dim text As String
Dim x As Double

'' 複数の変数を異なったデータ型で宣言
Dim k As Single, factor As Double, s As String

'' 複数の変数を、すべて同じデータ型で宣言
Dim As Integer mx, my, mz ,mb

'' 変数に初期値を設定する
Dim px As Double Ptr = @x



暗黙のデータ型で、変数を明示する
-lang qb-lang fblite 方言では、Dim 命令文で変数を宣言しても、名前か型接尾語でデータ型を明示しないと、既定のデータ型が、与えられます。
既定のデータ型は、-lang qb 方言では SINGLE (短精度)-lang fblite 方言では、Integer です。
既定のデータ型は、Def### 命令文を使って、ソース・リスト全体に対して、変更することができます。
(例えば、 DefInt, DefStr, DefSng)

'' -lang qbで、コンパイルします

'$lang: "qb"

'' A から N で始まるすべての変数は、既定で INTEGER データ型になります
'' 他のすべての変数は、既定で SINGLE データ型になります
DefInt I-N

'' IとJは、INTEGER です
'' XとYは、SINGLE です
'' T$ は STRING です
'' D は、DOUBLE です

Dim I, J, X, Y, T$, D As Double



配列
他のほとんどの BASIC 同様に、FreeBASICは配列をサポートします。配列のインデックスの範囲は、下限(lower bound)から上限(upper bound)までになります。
示された構文で、lbound は下限、つまりインデックスの最小値を示します。
そして、Ubound は上限、つまり、最大のインデックスを示します。
下限は、Option Base で下限を指定しなければ、デフォルトでゼロになります。

Const upperbound = 10

'' インデックスが 0〜upperbound までの配列を宣言します
'' 合計で、インデックスの数は、(upperbound + 1) になります
Dim array(upperbound) As Single


多次元配列を宣言することもできます。多次元配列は行優先順に格納されます:
最後の添え字(インデックス)が同じ値が、連続して格納されます。
多次元配列の、次元の最大数は、8です。

'' single の三元配列を宣言します
'' 単精度の浮動小数の数値です
Dim array(1 To 2, 6, 3 To 5) As Single

'' 配列宣言で、最初の次元は、1〜2 のインデックスを、
'' 2番目は、0〜6を、
'' そして、3番目は、3〜5 のインデックスを持っています。
 


配列の詳しい情報に関しては、配列の概要 を参照ください。

配列の次元を宣言するために Dim で使う値が、すべて定数だと、配列は、固定長(Option Dynamic が指定されない限り、Static サイズです)で作成されます。
一方、Option Static が有効な場合でも、1つ以上の変数を使って配列の次元を宣言すると、可変長になります。

いくつかの方法で、配列を可変長として宣言できます:
Dim を、空のインデックス・セット(Dim x())で使うか、変数のインデックスで Dim を使うか、キーワード Redim を使うか、配列境界に Any を使うか、メタコマンド $Dynamic を過ぎた所で、それを宣言します。
可変長配列は、初期化を使用できません。

Dim で定数のインデックスを持っていて、Option Dynamic を前に使っていない状態で宣言された配列は、固定長(実行時に、サイズ変更できない)であり、初期化を使用できます。

上限は、省略できます(..., 3 つの点)。
このときは、初期化で見つけた素子数に基づいて、上限が自動的に設定されます。
この様に省略を使用するとき、初期化を使わなければなりません。そして、Any は使えません。
簡単な例に関して、Ellipsis ページを参考してください。

また、固定長配列可変長配列 を参照ください。


初期化
配列、変数、文字列、およびユーザ定義型(UDT)は、作成時にデフォルトでゼロ (または Boolean の場合は False) または NULL 文字列に初期化されます。
ただし、fbc バージョン 1.20.0 以降では、STRING*N 型の固定長文字列は、スペースが埋め込まれます (そのような文字列フィールドには終端ヌル文字が含まれなくなったため)。

変数を初期化するオーバーヘッドを避けるために、DimAny 初期化を指定して、単に、変数の場所を、メモリに確保することだけをコンパイラに伝えることができます。しかし、変数は初期化されていないので、変数はゴミを含みます。
この場合、プログラマは、初期値について、仮定はできません。

固定長配列、変数、zstring、ユーザ定義型(UDT) は、変数の宣言に続けて初期化子を付け加えることによって、その宣言の時点で値を与えることができます。
配列、変数、UDT は、等号( = )を使って、通常の代入と同じように初期化されます。
「式」に似た表現での宣言を避けるのに、固定長文字列を宣言する場合など、=> 記号を使うことができます。

配列の値は、中括弧で囲まれたカンマ区切りの値で与えられます。そして、UDT の値は、括弧で囲まれたコンマ区切りの値で、与えられます。
変数を初期化するこの方法は、互いの中で入れ子にして、複雑な割り当てを行うことができます。
入れ子を作ることで、どんな次元の配列でも、初期化ができます。

'' 2×5 の要素の配列を宣言します
'' そして、初期値を設定します
Dim array(1 To 2, 1 To 5) As Integer => {{1, 2, 3, 4, 5}, {1, 2, 3, 4, 5}}


'' 簡単なUDT(ユーザ定義型)を宣言します
Type mytype
    var1 As Double
    var2 As Integer
End Type

'' 3要素配列を宣言します。そして、1番目に初期値を設定します
'' 2つのmytype要素として
Dim myvar(0 To 2) As mytype => {(1.0, 1), (2.0, 2)}


モジュールレベル、固定長、またはグローバル変数のために、初期化する値は、定数の式でなければなりません。
そうでないと、FreeBASICはコンパイル時にエラーを表示します。

注意:
文字列を使った UDT の初期化は、現時点ではサポートされていません。
データ項目初期化子または文字列を含む UDT の初期化は無効です。
組み込みのオブジェクト型から直接または間接的に派生した UDT を初期化することは無効です。


型接尾辞を備えた、明示的な変数
-lang qb-lang fblite 方言では、変数のデータ型は、型接尾語を使って指定します。( $ % # ! & )。

'' -lang qb か fbliteで、コンパイルします

'$lang: "qb"

'' $ 型接尾語を使って、文字列変数を宣言
Dim strVariable$

'' % 型接尾語を使って、整数変数を宣言
Dim intVariable%

'' & 型接尾語を使って、long 変数を宣言
Dim lngVariable&

'' ! 型接尾語を使って、単精度の浮動小数点の変数を宣言
Dim sngVariable!

'' # 型接尾語を使って、倍精度浮動小数点の変数を宣言
Dim dblVariable#



例:
Dim a As Byte
Dim b As Short
Dim c As Integer
Dim d As LongInt
Dim au As UByte
Dim bu As UShort
Dim cu As UInteger
Dim du As ULongInt
Dim e As Single
Dim f As Double
Dim g As Integer Ptr
Dim h As Byte Ptr
Dim s1 As String * 10   '' 固定長文字列
Dim s2 As String        '' 可変長文字列
Dim s3 As ZString Ptr   '' zstring

s1 = "こんにちは、世界!"
s2 = "FreeBasicから、こんにちは、世界!"
s3 = Allocate( Len( s2 ) + 1 )
*s3 = s2

Print "Byte: "; Len(a)
Print "Short: "; Len(b)
Print "Integer: "; Len(c)
Print "Longint: "; Len(d)
Print "UByte: "; Len(au)
Print "UShort: "; Len(bu)
Print "UInteger: "; Len(cu)
Print "ULongint: "; Len(du)
Print "Single: "; Len(e)
Print "Double: "; Len(f)
Print "Integer Pointer: "; Len(g)
Print "Byte Pointer: "; Len(h)
Print "Fixed String: "; Len(s1)
Print "Variable String: "; Len(s2)
Print "ZString: "; Len(*s3)

Deallocate(s3)



バージョン:
方言差:

QBからの違い:

参照:
変数の宣言に戻る
←リンク元に戻る プログラム開発関連に戻る
ページ歴史:2024-03-07 06:42:39
日本語翻訳:WATANABE Makoto、原文著作者:SysOp

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

表示-非営利-継承