UWSC|配列変数を関数の引数と戻り値に使用【使い方まとめ】

ポク太郎です。

巨大なデータを扱う場合に配列変数は便利。同様に関数も便利。

UWSCでは、関数に対し引数として配列を渡したり、戻り値として関数から配列をもらえるので更に便利。

てなわけで、関数への配列の渡し方、関数の戻り値を配列で返す方法をまとめます。


配列を関数の引数として渡す方法

関数側定義:FUNCTION 関数名(A[])
呼び出し側:R=関数名(hairetu) ←[]なしで引数を渡します。

以下が詳細例。

FUNCTION poku(A[])
    RESULT=A[0]
FEND
関数プログラム説明(○⇒:成り立つ場合、×⇒:成り立たない場合)
1,3行目 1
3
FUNCTION poku(A[])
FEND
関数宣言:
配列変数を関数の引数としたい場合は、引数の表記を“配列[]”とします。
2行目 2     RESULT=A[0]
RESULTに関数の戻り値を代入します。
※この例では、A[0]を返すことにします。


呼び出し側は、

DIM hairetu[5]
    hairetu[0]=5
    hairetu[1]=4
    hairetu[2]=3
    hairetu[3]=2
    hairetu[4]=1
    R=poku(hairetu)
    //Rには5(つまりhairetu[0])が入る
呼び出し側説明(○⇒:成り立つ場合、×⇒:成り立たない場合)
1~8行目 1
2
3
4
5
6
7
8
DIM hairetu[5]
    hairetu[0]=5
    hairetu[1]=4
    hairetu[2]=3
    hairetu[3]=2
    hairetu[4]=1
    R=poku(hairetu)
    //Rには5(つまりhairetu[0])が入る
1行目: 関数に与えるための配列宣言
2~6行目: 配列へ値を代入
7行目: 関数呼び出し

変数Rには5(つまりhairetu[0]が入る。
※上の関数poku()A[0]を返すように書いてあるから。

配列を関数の戻り値として返す方法

関数内では:配列を定義し、RESULT=SLICE(配列名,先頭要素番号,最終要素番号)で返す。
呼び出し側:hairetu=関数名() ←配列の最大要素宣言(DIM hairetu[4]など)は不要。

以下が詳細例。

FUNCTION poku()
    DIM A[5]
    A[0]=5
    A[1]=4
    A[2]=3
    A[3]=2
    A[4]=1
    RESULT=SLICE(A,0,4)
FEND
関数プログラム説明(○⇒:成り立つ場合、×⇒:成り立たない場合)
1,9行目 1
9
FUNCTION poku()
FEND
関数宣言:
配列を戻り値として返す関数の例です。
2~7行目 2
3
4
5
6
7
    DIM A[5]
    A[0]=5
    A[1]=4
    A[2]=3
    A[3]=2
    A[4]=1
配列変数を宣言して代入しています。

※通常はこんな単純なものでなく何らかの計算結果をドカドカ配列に入れた上、戻り値として返すことになると思います。
8行目 8     RESULT=SLICE(A,0,4)
関数の戻り値として配列変数を返したい場合は、
RESULT=SLICE(配列名,先頭要素番号,最終要素番号)
とします。


呼び出し側は、

hairetu=poku()
呼び出し側プログラム説明(○⇒:成り立つ場合、×⇒:成り立たない場合)
1行目 1 hairetu=poku()
1行目を実行すると、
変数hairetu[]には、poku()関数内の記述通り代入されます。
※hairetuには、hairetu[0]=5、hairetu[1]=4、hairetu[2]=3、hairetu[3]=2、hairetu[4]=1が代入される。
呼び出し側では、配列変数の最大要素番号の宣言(DIM hairetu[4]など)は必要ないようです。


配列変数の話題
配列の最大要素を返す関数 便利!
関数の引数と戻値に配列変数
[参照渡し]配列の要素の削除と挿入・追加
本記事の内容は以下でした。
○配列を関数の引数として渡す方法
○配列を関数の戻り値として返す方法

コメント

タイトルとURLをコピーしました