Difference between revisions of "EN/Documentation/BASIC Guide/Arrays"

From Apache OpenOffice Wiki
Jump to: navigation, search
(New page: {{DISPLAYTITLE:配列}} {{EN/Documentation/BASICGuideTOC/v2 |ShowPrevNext=block |ShowPrevPage=block |PrevPage=Documentation/BASIC Guide/Date |NextPage=Documentation/BASIC Guide/Scope of Va...)
 
 
(One intermediate revision by one other user not shown)
Line 1: Line 1:
{{DISPLAYTITLE:配列}}
+
{{DISPLAYTITLE:Matrici}}
 
{{EN/Documentation/BASICGuideTOC/v2
 
{{EN/Documentation/BASICGuideTOC/v2
 
|ShowPrevNext=block
 
|ShowPrevNext=block
Line 8: Line 8:
 
}}
 
}}
 
   
 
   
{{OOo}} Basic では、単純型変数 (スカラー) の他に、配列 (データフィールド) もサポートしています。1 つのデータフィールド内には複数の値を格納することが可能で、これらの各要素に対してはインデックス指定によりアクセスします。
+
Oltre alle variabili semplici (scalari), {{OOo}} Basic supporta anche i campi di dati (matrici). Un campo di dati contiene diverse variabili identificate con un indice.
  
==1 次元配列==
+
==Matrici semplici==
  
配列の宣言法は、通常の変数と基本的には同じです。ただし、配列名に続けて、配列の要素数をかっこで囲んで指定する点が異なります。配列は次のようにして宣言します。
+
Una dichiarazione di matrice è simile a quella di una variabile semplice ma, a differenza di questa, il nome della matrice è seguito da parentesi che contengono le specifiche del numero di elementi. L'espressione
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 18: Line 18:
 
</source>
 
</source>
  
この場合の配列は、<tt>MyArray(0)</tt><tt>MyArray(1)</tt><tt>MyArray(2)</tt><tt>MyArray(3)</tt> という 4 つの要素を持つ、バリアント型変数として宣言されます。
+
dichiara una matrice con quattro variabili del tipo variante, ossia <tt>MyArray(0)</tt>, <tt>MyArray(1)</tt>, <tt>MyArray(2)</tt> e <tt>MyArray(3)</tt>.
  
また配列を宣言する際には、特定の変数型を指定することも可能です。たとえば次の例では 4 つの整数変数をとるよう配列を宣言しています。
+
In una matrice potete dichiarare anche variabili di tipo specifico. La riga seguente, ad esempio, dichiara una matrice con quattro variabili intere:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 26: Line 26:
 
</source>
 
</source>
  
これまでに説明した配列宣言の例では、インデックスの開始値として、標準値である 0 が使われています。このようなインデックスの開始および終了値は、配列 (データフィールド) の宣言時に指定することができます。次の例は 6 つの整数値を取るデータフィールドを作成するものですが、宣言をする際にインデックス範囲を 5 から 10 とするよう指定しています。
+
In questi esempi, l'indice per la matrice inizia sempre con valore iniziale standard di zero. In alternativa, per la dichiarazione del campo di dati potete specificare un intervallo di validità con valori iniziali e finali. L'esempio seguente dichiara un campo di dati con sei valori interi e indirizzabile utilizzando gli indici da 5 a 10:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 32: Line 32:
 
</source>
 
</source>
  
インデックス値には、正の値以外を使うことも可能です。次の例では、インデックス範囲に負の値を指定していますが、これも有効な宣言として処理されます。
+
Gli indici non devono essere necessariamente valori positivi. L'esempio seguente mostra una dichiarazione corretta, ma con limiti dei campi di dati negativi:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 38: Line 38:
 
</source>
 
</source>
  
この場合、データフィールド (配列) のインデックス値は -10 から -5 までの整数値を取り、合計 6 つの要素を持つことになります。
+
L'esempio dichiara un campo di dati intero con 6 valori che possono essere identificati utilizzando gli indici da -10 a -5.
  
データフィールド (配列) のインデックスについては、次の 3 つの制限があります。
+
Per la definizione degli indici dei campi di dati dovete osservare tre limiti:
  
*インデックスとして使用可能な最小値は -32768 まで。
+
* L'indice più piccolo possibile è -32768.
*インデックスとして使用可能な最大値は 32767 まで。
+
* L'indice più grande possibile è 32767.
*要素数 (データフィールドの次元) の最大値は 16368 まで。
+
* Il numero massimo di elementi (all'interno di una dimensione del campo di dati) è 16368.
  
{{Documentation/Note|VBA のデータフィールドでは、これ以外の制限が課されている場合もあります。次元ごとに取りうる最大の要素数についても、同様の制限が当てはまります。実際に有効とされる値については、VBA の関連マニュアルを参照してください。}}
+
{{Note|Per gli indici dei campi di dati in VBA si applicano talvolta limiti diversi. Lo stesso si applica anche al numero massimo di elementi possibile per ogni dimensione. }}I valori validi possono essere reperiti nella documentazione VBA pertinente.
  
==インデックスの開始値に関する設定==
+
==Valore specificato per l'indice iniziale==
  
通常、データフィールド (配列) のインデックスには、0 から始まる値が割り当てられます。この開始値については、次のように指定することにより、すべてのデータフィールド宣言において 1 とするよう変更できます。
+
L'indice iniziale di un campo di dati inizia generalmente con il valore 0. In alternativa, è possibile modificare l'indice iniziale per tutte le dichiarazioni dei campi di dati sul
 +
valore 1 utilizzando la chiamata:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 56: Line 57:
 
</source>
 
</source>
  
この変更をモジュール内のすべての配列宣言に対して適用させるには、モジュールのヘッダ部で指定する必要があります。ただしこの変更は、{{OOo}} API で指定する UNO シーケンスに対しては無効で、これらのインデックスは常に 0 から始められます。このため Option Base 1 を指定すると、インデックスの開始値が混在する危険性があります。
+
La chiamata deve essere inclusa nell'intestazione di un modulo se si desidera applicarla a tutte le dichiarazioni di matrice del modulo. Tuttavia, questa chiamata non incide sulle sequenze UNO definite tramite l'API di {{OOo}} il cui indice inizia sempre con 0. Per maggiore chiarezza, evitare l'uso di Option Base 1.
  
<tt>Option Base 1</tt> による設定は、インデックスの開始値を変更するだけであり、配列の要素数には影響しません。たとえば、次のサンプルコードのように配列を宣言したとします。
+
Il numero di elementi della matrice non è influenzato dall'uso di <tt>Option Base 1</tt>; viene modificato solo l'indice iniziale. La dichiarazione
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 66: Line 67:
 
</source>
 
</source>
  
この場合、<tt>MyInteger(1)</tt><tt>MyInteger(2)</tt><tt>MyInteger(3)</tt><tt>MyInteger(4)</tt> という 4 つの要素を持つ配列が作成されます。
+
crea 4 variabili intere che possono essere descritte con le espressioni <tt>MyInteger(1)</tt>, <tt>MyInteger(2)</tt>, <tt>MyInteger(3)</tt> e <tt>MyInteger(4)</tt>.
  
{{Documentation/Note|VBA の場合とは異なり、{{OOo}} Basic での <tt>Option Base 1</tt> による設定は、配列の要素数には影響しません。{{OOo}} Basic の場合、この設定は単にインデックスの開始値を変更するだけです。たとえば <tt>MyInteger(3)</tt> と宣言すると、VBA では 1 から 3 のインデックス値を取る 3 つの要素が確保されますが、{{OOo}} Basic では 1 から 4 のインデックス値を取る 4 つの要素が確保されます。<tt>Option Compatible</tt> を使用すると、{{OOo}} Basic は、VBA と同様に動作します。}}
+
{{Note|In {{OOo}} Basic, l'espressione <tt>Option Base 1</tt> non incide sul numero di
 +
elementi della matrice come in VBA. In {{OOo}} Basic è invece l'indice iniziale a
 +
spostarsi. Mentre la dichiarazione <tt>MyInteger(3)</tt> in VBA crea tre valori interi con gli
 +
indici da 1 a 3, la stessa dichiarazione in {{OOo}} crea quattro valori interi con
 +
gli indici da 1 a 4. Usando <tt>Option Compatible</tt>, {{OOo}} Basic si comporta come VBA.}}
  
==多次元データフィールド==
+
==Campi di dati a più dimensioni==
  
{{OOo}} Basic では 1 次元データフィールド (配列) の他に、多次元データフィールドもサポートしています。個々の次元の指定は、コンマ記号で区切ります。次のサンプルコードは、これらの使用例です。
+
Oltre ai campi di dati a una dimensione, {{OOo}} Basic supporta anche i campi di dati a più dimensioni. Le dimensioni corrispondenti sono separate per mezzo di virgole. L'esempio
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 78: Line 83:
 
</source>
 
</source>
  
ここでは 2 次元の配列を作成し、個々の次元に 6 つの要素 (インデックス値の 0 から 5) を確保しています。この配列全体としては 6 × 6 = 36 個の値を格納することができます。
+
definisce una matrice intera con due dimensioni, ciascuna con 6 indici (possono essere identificati con gli indici da 0 a 5). L'intera matrice può registrare un totale di 6 x 6 = 36 valori interi.
  
{{OOo}} Basic では、数百次元にも及ぶ多次元配列を宣言することも可能ですが、実際には使用可能なメモリ量により、次元数に制限が課されることになります。
+
Sebbene sia possibile definire centinaia di dimensioni nelle matrici di {{OOo}} Basic, la quantità di memoria disponibile limita il numero di dimensioni possibili.
  
==データフィールドのサイズの動的変更==
+
==Modifiche dinamiche nelle dimensioni dei campi di dati==
  
これまでに説明した例では、特定のサイズを持つデータフィールド (配列) を扱ってきました。このような配列以外にも、データフィールドのサイズを動的に変更させることが可能です。たとえば、A という文字で開始するテキストで、すべての単語を含む配列を定義することができます。これらの単語の数は最初はわからないため、後でフィールドの上限を変更する必要があります。このような配列を作成するには、{{OOo}} Basic では次のように宣言します。
+
Gli esempi precedenti sono basati sui campi di dati con una dimensione specificata. Potete però definire anche matrici in cui la dimensione dei campi di dati varia dinamicamente. Ad esempio, potete definire una matrice per contenere tutte le parole di un testo che iniziano con la lettera A. Poiché il numero di queste parole è inizialmente sconosciuto, dovete essere in grado di modificare successivamente i limiti del campo. Per procedere in tal senso in {{OOo}} Basic, utilizzate la chiamata
 +
seguente:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 90: Line 96:
 
</source>
 
</source>
  
{{Documentation/Note|VBA の場合は <tt>Dim MyArray()</tt> による動的配列のサイズ変更のみが行えますが、{{OOo}} Basic の場合は <tt>ReDim</tt> により動的および静的配列のサイズを変更できます。}}
+
{{Note|A differenza di VBA, in cui potete utilizzare solo matrici dinamiche con l'istruzione <tt>Dim MyArray()</tt>, {{OOo}} Basic permette di modificare le matrici sia statiche che dinamiche con l'istruzione <tt>ReDim</tt>.}}
  
次のサンプルコードでは、最初に作成した配列のサイズを何度か変更して、それぞれ 11 個および 21 個の値を格納できるようにします。
+
L'esempio seguente modifica la dimensione della matrice iniziale in modo che possa registrare 11 o 21 valori:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 102: Line 108:
 
</source>
 
</source>
  
配列のサイズを変更する際には、これまでの節で説明したすべてのオプションを指定できます。これには、多次元データフィールド化するための指定や、インデックスの開始および終了値の指定などが該当します。なお、データフィールドのサイズを変更すると、格納していたすべてのデータが消失されます。変更前の値を保持させるには、<tt>Preserve</tt> コマンドを使用します。
+
Quando ripristinate le dimensioni di una matrice, potete utilizzare una qualsiasi delle opzioni descritte nelle sezioni precedenti. Questo include la dichiarazione di campi di dati a più dimensioni e l'indicazione di valori iniziali e finali espliciti. Modificando le dimensioni del campo di dati, tutti i contenuti vanno persi. Per conservare i valori originali, avvaletevi del comando <tt>Preserve</tt>:
  
 
<source lang="oobas">
 
<source lang="oobas">
Line 113: Line 119:
 
</source>
 
</source>
  
<tt>Preserve</tt> コマンドを使用する場合は、配列の次元数および変数型が、サイズ変更の前後で同じになっている必要があります。
+
Quando usate <tt>Preserve</tt>, accertatevi che il numero di dimensioni e il tipo di variabili rimanga lo stesso.
  
{{Documentation/Note|VBA <tt>Preserve</tt> コマンドを使用すると、データフィールドの最終次元の上限値だけしか変更できませんが、{{OOo}} Basic では他の次元も変更できます。}}
+
{{Note|A differenza di VBA, in cui l'uso di <tt>Preserve</tt> vi permette di modificare solo il limite superiore dell'ultima dimensione del campo di dati, {{OOo}} Basic vi permette di modificare anche le altre dimensioni.}}
  
<tt>ReDim</tt> <tt>Preserve</tt> を併用する場合、データフィールドのデータ型はオリジナルのものから変更することはできません。
+
Se utilizzate <tt>ReDim</tt> con <tt>Preserve</tt>, dovete utilizzare lo stesso tipo di dati specificato nella dichiarazione del campo di dati originale.
  
 
{{PDL1}}
 
{{PDL1}}
 
{{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/Arrays}}
 
{{InterWiki_Languages_BasicGuide|articletitle=Documentation/BASIC Guide/Arrays}}

Latest revision as of 14:44, 6 July 2018

Template:EN/Documentation/BASICGuideTOC/v2

Oltre alle variabili semplici (scalari), Apache OpenOffice Basic supporta anche i campi di dati (matrici). Un campo di dati contiene diverse variabili identificate con un indice.

Matrici semplici

Una dichiarazione di matrice è simile a quella di una variabile semplice ma, a differenza di questa, il nome della matrice è seguito da parentesi che contengono le specifiche del numero di elementi. L'espressione

Dim MyArray(3)

dichiara una matrice con quattro variabili del tipo variante, ossia MyArray(0), MyArray(1), MyArray(2) e MyArray(3).

In una matrice potete dichiarare anche variabili di tipo specifico. La riga seguente, ad esempio, dichiara una matrice con quattro variabili intere:

Dim MyInteger(3) As Integer

In questi esempi, l'indice per la matrice inizia sempre con valore iniziale standard di zero. In alternativa, per la dichiarazione del campo di dati potete specificare un intervallo di validità con valori iniziali e finali. L'esempio seguente dichiara un campo di dati con sei valori interi e indirizzabile utilizzando gli indici da 5 a 10:

Dim MyInteger(5 To 10)

Gli indici non devono essere necessariamente valori positivi. L'esempio seguente mostra una dichiarazione corretta, ma con limiti dei campi di dati negativi:

Dim MyInteger(-10 To -5)

L'esempio dichiara un campo di dati intero con 6 valori che possono essere identificati utilizzando gli indici da -10 a -5.

Per la definizione degli indici dei campi di dati dovete osservare tre limiti:

  • L'indice più piccolo possibile è -32768.
  • L'indice più grande possibile è 32767.
  • Il numero massimo di elementi (all'interno di una dimensione del campo di dati) è 16368.
Documentation note.png Per gli indici dei campi di dati in VBA si applicano talvolta limiti diversi. Lo stesso si applica anche al numero massimo di elementi possibile per ogni dimensione.
I valori validi possono essere reperiti nella documentazione VBA pertinente.

Valore specificato per l'indice iniziale

L'indice iniziale di un campo di dati inizia generalmente con il valore 0. In alternativa, è possibile modificare l'indice iniziale per tutte le dichiarazioni dei campi di dati sul valore 1 utilizzando la chiamata:

Option Base 1

La chiamata deve essere inclusa nell'intestazione di un modulo se si desidera applicarla a tutte le dichiarazioni di matrice del modulo. Tuttavia, questa chiamata non incide sulle sequenze UNO definite tramite l'API di Apache OpenOffice il cui indice inizia sempre con 0. Per maggiore chiarezza, evitare l'uso di Option Base 1.

Il numero di elementi della matrice non è influenzato dall'uso di Option Base 1; viene modificato solo l'indice iniziale. La dichiarazione

Option Base 1
' ...
Dim MyInteger(3)

crea 4 variabili intere che possono essere descritte con le espressioni MyInteger(1), MyInteger(2), MyInteger(3) e MyInteger(4).

Documentation note.png In Apache OpenOffice Basic, l'espressione Option Base 1 non incide sul numero di

elementi della matrice come in VBA. In Apache OpenOffice Basic è invece l'indice iniziale a spostarsi. Mentre la dichiarazione MyInteger(3) in VBA crea tre valori interi con gli indici da 1 a 3, la stessa dichiarazione in Apache OpenOffice crea quattro valori interi con gli indici da 1 a 4. Usando Option Compatible, Apache OpenOffice Basic si comporta come VBA.

Campi di dati a più dimensioni

Oltre ai campi di dati a una dimensione, Apache OpenOffice Basic supporta anche i campi di dati a più dimensioni. Le dimensioni corrispondenti sono separate per mezzo di virgole. L'esempio

Dim MyIntArray(5, 5)

definisce una matrice intera con due dimensioni, ciascuna con 6 indici (possono essere identificati con gli indici da 0 a 5). L'intera matrice può registrare un totale di 6 x 6 = 36 valori interi.

Sebbene sia possibile definire centinaia di dimensioni nelle matrici di Apache OpenOffice Basic, la quantità di memoria disponibile limita il numero di dimensioni possibili.

Modifiche dinamiche nelle dimensioni dei campi di dati

Gli esempi precedenti sono basati sui campi di dati con una dimensione specificata. Potete però definire anche matrici in cui la dimensione dei campi di dati varia dinamicamente. Ad esempio, potete definire una matrice per contenere tutte le parole di un testo che iniziano con la lettera A. Poiché il numero di queste parole è inizialmente sconosciuto, dovete essere in grado di modificare successivamente i limiti del campo. Per procedere in tal senso in Apache OpenOffice Basic, utilizzate la chiamata seguente:

ReDim MyArray(10)
Documentation note.png A differenza di VBA, in cui potete utilizzare solo matrici dinamiche con l'istruzione Dim MyArray(), Apache OpenOffice Basic permette di modificare le matrici sia statiche che dinamiche con l'istruzione ReDim.

L'esempio seguente modifica la dimensione della matrice iniziale in modo che possa registrare 11 o 21 valori:

Dim MyArray(4) As Integer ' Declaration with five elements 
' ...
ReDim MyArray(10) As Integer ' Increase to 11 elements
' ... 
ReDim MyArray(20) As Integer ' Increase to 21 elements

Quando ripristinate le dimensioni di una matrice, potete utilizzare una qualsiasi delle opzioni descritte nelle sezioni precedenti. Questo include la dichiarazione di campi di dati a più dimensioni e l'indicazione di valori iniziali e finali espliciti. Modificando le dimensioni del campo di dati, tutti i contenuti vanno persi. Per conservare i valori originali, avvaletevi del comando Preserve:

Dim MyArray(10) As Integer ' Defining the initial 
' dimensions
' ... 
ReDim Preserve MyArray(20) As Integer ' Increase in 
' data field, while
' retaining content

Quando usate Preserve, accertatevi che il numero di dimensioni e il tipo di variabili rimanga lo stesso.

Documentation note.png A differenza di VBA, in cui l'uso di Preserve vi permette di modificare solo il limite superiore dell'ultima dimensione del campo di dati, Apache OpenOffice Basic vi permette di modificare anche le altre dimensioni.

Se utilizzate ReDim con Preserve, dovete utilizzare lo stesso tipo di dati specificato nella dichiarazione del campo di dati originale.

Content on this page is licensed under the Public Documentation License (PDL).
Personal tools