Difference between revisions of "Array/ja"

From Lazarus wiki
Jump to navigationJump to search
 
(17 intermediate revisions by 2 users not shown)
Line 1: Line 1:
 
{{Array}}
 
{{Array}}
  
An '''array''' is a type that groups a number of [[Variable|variables]] of the same type. Examples are an array of [[Char|char]], an array of [[Integer|integer]], and an array of [[Real|real]]. In fact, any type, including user defined types, may be used in an array. However, the elements of an array are always of the same type. Different types cannot be grouped into an array. For this purpose, see [[Record|record]]s.
+
'''配列''' は、同じ種類の [[Variable/ja|変数]] の集合です。 例えば、 [[Char/ja|char]] や、 [[Integer/ja|integer]] , [[Real/ja|real]] の配列です。 実際、ユーザー定義型を含むどのような種類の変数も、配列の形に扱うことができます。 しかしながら、 配列の要素は同じ種類でなくてはいけません。 つまり、異なる種類の変数は、ひとつの配列の中に集めることはできません。 この目的のためには、 [[Record/ja|record]] を用いてください。
  
Arrays reflect the mathematical concept of
+
配列は、数学的には以下の反映となります。
* [[vector]]s (one-dimensional array) and
+
* [[vector/ja|ベクトル]] (1次元配列)
* matrices (two-dimensional array)
+
* マトリックス (2次元配列)
  
==静的配列==
+
== 静的配列 ==
The declaration works similar to that for simple types, but you need to add the number of elements via an index range, as well as the array element type.
+
宣言部は単純な種類と似ていますが、配列の要素の種類と、インデックスの範囲を指定して要素数を設定する必要があります。
  
<syntaxhighlight>
+
<syntaxhighlight lang="pascal">
 
program
 
program
 
...
 
...
Line 19: Line 19:
 
</syntaxhighlight>   
 
</syntaxhighlight>   
  
'''startindex''' must be less than or equal to '''endindex''', and both must resolve to an integer constant, either an integer value or a [[Const|const]] value that is an integer. Either or both numbers may be negative or zero.
+
'''startindex''' '''endindex''' と等しいか、それより小さい必要があります。 そしていずれも [[Integer/ja|Integer]] 定数( [[Integer|Integer]]、または [[Const|const]])である必要があります。 また、片方または両方の値がマイナスまたは0(ゼロ)の値を持つことができます。
  
===1次元配列===
+
=== 1次元配列 ===
One-dimensional array example:
+
1次元配列の参考例を以下に示します。:
  
<syntaxhighlight>
+
<syntaxhighlight lang="pascal">
 
type
 
type
 
   simple_integer_array = array [1..10] of integer;
 
   simple_integer_array = array [1..10] of integer;
Line 32: Line 32:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
===多次元配列===
+
=== 多次元配列 ===
[[Multidimensional arrays]] are supported such as [x..y,z..t] and so on.
+
[[Basic Pascal Tutorial/Chapter 5/Multidimensional arrays/ja|多次元配列]] は、 [x..y,z..t] などの表記をします。
  
Multidimensional array example:
+
多次元配列の参考例を以下に示します。:
  
<syntaxhighlight>
+
<syntaxhighlight lang="pascal">
 
type
 
type
 
   more_complex_array = array [0..5,1..3] of extended;
 
   more_complex_array = array [0..5,1..3] of extended;
Line 45: Line 45:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
 +
== 動的配列 ==
 +
プログラムのコンパイル時に配列の要素数が未定の場合、 [[Dynamic array/ja|'''動的配列''']] が利用できます。 動的配列は、プログラムの実行時に、その要素数を増減させることができます。
  
==動的配列==
+
== 配列要素へのアクセス ==
If it is not possible to know the exact number of array elements needed at the time of the program compilation, the [[Dynamic array|dynamic array]] type can be used. A dynamic array can grow or shrink in size during program execution.
+
配列の要素にアクセスするには、配列変数の名前に、要素の位置をブラケット(かっこ:[])の間に挟んで示した記述をすることが必要です。 こうすることで、配列の要素を普通の変数と同じように使用できます。 しかし、もしもパラメーターを使用したいのであれば、あなたは '''構造体''' を使わなくてはいけません。 なぜならおそらくエラーかバグになるからです。(わたしはわかりません。これが何を意味しているか;元文まま)
  
==Element Access==
+
<syntaxhighlight lang="pascal">
To access an array element you need to include the element position between brackets ([]) along with the name of the array variable. The element can then be used like a simple variable. But if you want to use parameters you MUST use a structure because else it will cause errors or bugs... (I do not understand, what is meant here).
 
 
 
<syntaxhighlight>
 
 
Var
 
Var
 
   my_array  : array[1..3] of Integer;
 
   my_array  : array[1..3] of Integer;
Line 67: Line 66:
 
</syntaxhighlight>
 
</syntaxhighlight>
  
==Array Literals==
+
== 配列の定数 ==
There are two formats used for array literals, depending on where they are placed. In the variable declaration section, you can initialize static arrays (it is not possible with [[Dynamic array|dynamic arrays]]) with a series of values placed inside ''parentheses''. In a statement block you can create an anonymous array with a series of values inside of ''brackets''. For example:
+
配列の定数には、それがどこに位置するかによって、2つの書式があります。 変数宣言部にある場合、静的配列は ''丸かっこ()'' 内の値によって初期化できます( [[Dynamic array/ja|動的配列]] ではできません) 。 ステートメントブロック内では、 ''角括弧[]'' 内の値のみで、変数名を指定しない配列を作ることができます。 例を以下に示します。:
  
<syntaxhighlight>
+
<syntaxhighlight lang="pascal">
 
Var
 
Var
   // initialize static integer array via array literal
+
   // 静的integer配列を、配列定数を用いて初期化する
 
   Numbers : array [1..3] of Integer = (1, 2, 3);
 
   Numbers : array [1..3] of Integer = (1, 2, 3);
 
    
 
    
Line 86: Line 85:
 
begin
 
begin
 
     Writeln( Numbers[2] );
 
     Writeln( Numbers[2] );
     // create three item anonymous string array via an array literal
+
     // 配列定数を用いて、3要素からなる文字列配列(変数名の指定無し)を作る
 
     PrintArray( ['one', 'two', 'three'] );
 
     PrintArray( ['one', 'two', 'three'] );
 
end.
 
end.
 
</syntaxhighlight>
 
</syntaxhighlight>
Output:<br/>
+
出力:<br/>
 
'''2'''<br/>
 
'''2'''<br/>
 
'''one two three'''
 
'''one two three'''

Latest revision as of 04:55, 25 January 2023

Deutsch (de) English (en) español (es) suomi (fi) français (fr) Bahasa Indonesia (id) 日本語 (ja) русский (ru) 中文(中国大陆)‎ (zh_CN)

配列 は、同じ種類の 変数 の集合です。 例えば、 char や、 integer や, real の配列です。 実際、ユーザー定義型を含むどのような種類の変数も、配列の形に扱うことができます。 しかしながら、 配列の要素は同じ種類でなくてはいけません。 つまり、異なる種類の変数は、ひとつの配列の中に集めることはできません。 この目的のためには、 record を用いてください。

配列は、数学的には以下の反映となります。

  • ベクトル (1次元配列)
  • マトリックス (2次元配列)

静的配列

宣言部は単純な種類と似ていますが、配列の要素の種類と、インデックスの範囲を指定して要素数を設定する必要があります。

program
...
var 
  variablename: array [startindex..endindex] of type;
begin
  ...

startindexendindex と等しいか、それより小さい必要があります。 そしていずれも Integer 定数( Integer、または const)である必要があります。 また、片方または両方の値がマイナスまたは0(ゼロ)の値を持つことができます。

1次元配列

1次元配列の参考例を以下に示します。:

type
  simple_integer_array = array [1..10] of integer;
 
var
  Numbers: simple_integer_array;

多次元配列

多次元配列 は、 [x..y,z..t] などの表記をします。

多次元配列の参考例を以下に示します。:

type
  more_complex_array = array [0..5,1..3] of extended;
 
var
  specialmatrix: more_complex_array;

動的配列

プログラムのコンパイル時に配列の要素数が未定の場合、 動的配列 が利用できます。 動的配列は、プログラムの実行時に、その要素数を増減させることができます。

配列要素へのアクセス

配列の要素にアクセスするには、配列変数の名前に、要素の位置をブラケット(かっこ:[])の間に挟んで示した記述をすることが必要です。 こうすることで、配列の要素を普通の変数と同じように使用できます。 しかし、もしもパラメーターを使用したいのであれば、あなたは 構造体 を使わなくてはいけません。 なぜならおそらくエラーかバグになるからです。(わたしはわかりません。これが何を意味しているか;元文まま)

Var
   my_array   : array[1..3] of Integer;
   my_matrix  : array[1..5,1..5] of Integer;
   some_value : Integer;
...
begin
   my_array[2]    := a + 2;
   my_matrix[2,3] := some_value;
   ...
   some_value := my_array[2];
   some_value := my_matrix[4,3];
end.

配列の定数

配列の定数には、それがどこに位置するかによって、2つの書式があります。 変数宣言部にある場合、静的配列は 丸かっこ() 内の値によって初期化できます( 動的配列 ではできません) 。 ステートメントブロック内では、 角括弧[] 内の値のみで、変数名を指定しない配列を作ることができます。 例を以下に示します。:

Var
   // 静的integer配列を、配列定数を用いて初期化する
   Numbers : array [1..3] of Integer = (1, 2, 3);
   
procedure PrintArray(input : array of String);
var 
   i : integer;
begin
    for i := 1 to length(input) do
       write(input[i - 1],' ');
    writeln;
end;

begin
    Writeln( Numbers[2] );
    // 配列定数を用いて、3要素からなる文字列配列(変数名の指定無し)を作る
    PrintArray( ['one', 'two', 'three'] );
end.

出力:
2
one two three



navigation bar: data types
simple data types

boolean byte cardinal char currency double dword extended int8 int16 int32 int64 integer longint real shortint single smallint pointer qword word

complex data types

array class object record set string shortstring