配列の評価は、ほかの種類の変数を評価する場合と同じ方法で行います。
Fortran の配列の例 :
integer*4 arr(1:6, 4:7) |
配列を評価するには、print コマンドを使用します。静的関数
(dbx) print arr(2,4) |
dbx コマンドの print を使用して、大型の配列の一部を評価することができます。配列を評価するには、次の操作を行います。
刻みは配列の断面化を行うときに必要に応じて指定することができます (刻みのデフォルト値は 1 で、その場合は各要素を出力します)。
C、C++、Fortran では、print、display、および watch コマンドによって、配列の断面化を行うことができます。
配列の各次元を断面化するための print コマンドの完全な構文は次のとおりです。
print array-expression [first-expression .. last-expression : stride-expression] |
ここで
配列またはポインタ型に評価されるべき式
印刷される最初の要素。デフォルトは 0
印刷される最後の要素。その上限にデフォルト設定
刻み幅の長さ (スキップされる要素の数は stride-expression-1)。デフォルトは 1
最初、最後、および刻み幅の各式は、整数に評価されなければならない任意の式です。
次に例を示します。
(dbx) print arr[2..4] arr[2..4] = [2] = 2 [3] = 3 [4] = 4 (dbx) print arr[..2] arr[0..2] = [0] = 0 [1] = 1 [2] = 2 (dbx) print arr[2..6:2] arr[2..6:2] = [2] = 2 [4] = 4 [6] = 6 |
配列の各次元を断面化するための print コマンドの完全な構文は次のとおりです。
print array-expression [first-expression : last-expression : stride-expression] |
ここで
配列型に評価される式
範囲内の最初の要素は、出力される最初の要素下限にデフォルト設定
範囲内の最後の要素。ただし刻み幅が 1 でない場合、出力される最後の要素とはなりません。その上限にデフォルト設定
刻み幅。デフォルトは 1
最初、最後、および刻み幅の各式は、整数に評価されなければならない任意の式です。n 次元の断面については、カンマで各断面の定義を区切ります。
次に例を示します。
(dbx) print arr(2:6) arr(2:6) = (2) 2 (3) 3 (4) 4 (5) 5 (6) 6 (dbx) print arr(2:6:2) arr(2:6:2) = (2) 2 (4) 4 (6) 6 |
行と列を指定するには、次のように入力します。
demo% f95 -g -silent ShoSli.f demo% dbx a.out Reading symbolic information for a.out (dbx) list 1,12 1 INTEGER*4 a(3,4), col, row 2 DO row = 1,3 3 DO col = 1,4 4 a(row,col) = (row*10) + col 5 END DO 6 END DO 7 DO row = 1, 3 8 WRITE(*,’(4I3)’) (a(row,col),col=1,4) 9 END DO 10 END (dbx) stop at 7 (1) stop at "ShoSli.f":7 (dbx) run Running: a.out stopped in MAIN at line 7 in file "ShoSli.f" 7 DO row = 1, 3 |
行 3 を印刷するには、次のように入力します。
(dbx) print a(3:3,1:4) ’ShoSli’MAIN’a(3:3, 1:4) = (3,1) 31 (3,2) 32 (3,3) 33 (3,4) 34 (dbx) |
列 4 を印刷するには、次のように入力します。
(dbx) print a(1:3,4:4) ’ShoSli’MAIN’a(1:3, 1:4) = (1,4) 14 (2,4) 24 (3,4) 34 (dbx) |
2 次元の C++ の矩形配列の断面の例を示します。ここでは、刻み値が省略され、デフォルト値の 1 が使用されます。
print arr(201:203, 101:105) |
このコマンドは、大型配列の要素のブロックを出力します。stride-expression が省略され、デフォルトの刻み値である 1 が使用されていることに注意してください。
最初の 2 つの式 (201:203) は、この 2 次元配列の第 1 次元 (3 行で構成される列) を指定します。配列の断面は行 201 から始まり、行 203 で終わります。次の組の式は最初の組とコンマで区切られ、第 2 次元の配列の断面を定義します。配列の断面は列 101 から始まり、列 105 で終わります。
print コマンドで刻み幅を指定すると、配列の断面に含まれる特定の要素だけが評価されます。
配列の断面のための構文の 3 番目の式 (stride-expression) は、刻み幅の長さを指定します。stride-expression の値は印刷する要素を指定します。刻み幅のデフォルト値は 1 です。このとき、指定された配列の断面のすべての要素が評価されます。
ここに、前述の例で使用したものと同じ配列があります。今度は、print コマンドの第 2 次元の配列の断面の定義に刻み幅の値として 2 を加えます。
print arr(201:203, 101:105:2) |
図で示すとおり、刻み値として 2 を指定すると、各行を構成する要素が 1 つおきに出力されます。
print コマンドの配列の断面の定義を構成する式を省略すると、配列の宣言されたサイズに等しいデフォルト値が使用されます。このような簡易構文を使用した例を以下に示します。
1 次元配列の場合
デフォルトの境界で配列全体を出力します。
デフォルトの境界とデフォルトの刻み (1) で、配列全体を出力します。
配列全体を stride-expression で指定された刻み幅で出力します。
2 次元配列の場合、次のコマンドは配列全体を出力します。
print arr |
2 次元配列の第 2 次元を構成する要素を 2 つおきに出力します。
print arr (:,::3) |