関数を定義し呼び出すための手順をまとめました。関数を別ファイルに置くことも可能です。
○わかりやすいプログラムを構築するために
関数やモジュールなどの部品ファイルを取り込む方法
ポク太郎です。
このブログで散々自作関数を作成しているのですが、定義の仕方や呼び出し方などをまとめて、記事にしておきます。(記事にしておかないといけないと思いつつ失念しておりました。)
関数とモジュール、その他
このように“一部品”ごとを作り上げ、膨大なソースコードの可読性を上げるよう作り上げたプログラムが良いプログラム。
現在の開発環境は、上記のことをしやすくするための機能を大抵は標準装備しています。以下にUWSCで装備されているものをよく使う順に抜粋します。
関数FUNCTION | |
関数とは 引数を渡せて、戻り値を返せる処理の塊。ローカル変数を内部で宣言できる。 | |
構文: FUNCTION 関数名(引数1,引数2,…,引数n) (色んな処理) RESULT=ほにゃらら FEND | |
プロシージャPROCEDURE(筆者は使用せず) | |
プロシージャとは 引数を渡せて、戻り値を返せない処理の塊。ローカル変数を内部で宣言できる。 ※筆者は使用せず。すべて“関数”で作成し、RESULTでダミーの変数(0とか1とか)を返しておく。特にUWSCの場合は、呼び出し側で n=関数名(引数) とするところを、 関数名(引数) と書くと、戻り値を無視してくれるため意識する必要がないので。 | |
構文: PROCEDURE プロシージャ名(引数1,引数2,…,引数n) (色んな処理) FEND | |
モジュールMODULE | |
モジュールとは 複数のグローバル変数、関数、プロシージャを一塊にしたブロック。内部の関数、プロシージャ内では通常と同様にローカル変数を宣言できる。 | |
構文: MODULE モジュール名 PUBLIC 変数1 FUNCTION 関数1名(引数1,引数2,…,引数n) (色んな処理) RESULT=ほにゃらら FEND PROCEDURE プロシージャ1名(引数1,引数2,…,引数n) (色んな処理) FEND ENDMODULE | |
クラスCLASS | |
クラスとは 他の環境ではクラスというのは、クラスからパラメータ値などの異なるインスタンス(実体)を生み出すことのできる元。UWSCのクラスは異なるとの情報があり、まだよくわからず。 | |
構文: CLASS クラス名 PUBLIC 変数1 FUNCTION 関数1名(引数1,引数2,…,引数n) (色んな処理) RESULT=ほにゃらら FEND PROCEDURE プロシージャ1名(引数1,引数2,…,引数n) (色んな処理) FEND ENDCLASS |
上記を使って各“一部品”を作っていきます。
CALLで関数のあるファイルを取り込む
例えば、
ファイルB … 画像認識に関連する関数
ファイルC … 別の人が作った関数
このようにまとめてもOK。わかりやすければいいんです。
関数やモジュールなどを集めた“部品ファイル.uws”が以下だったとします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | FUNCTION 関数名(引数1,引数2,…,引数n) (色々な処理) RESULT=ほにゃらら FEND PROCEDURE 関数名(引数1,引数2,…,引数n) (色々な処理) FEND MODULE モジュール名 PUBLIC 変数 FUNCTION 関数2(引数1,引数2,…,引数n) |
“メインプログラム.uws”の先頭で、使用したい関数のある“部品ファイル.uws”をCALLします。
1 2 3 | //部品を使用したいプログラムのソースファイル CALL 部品ファイル.uws //–––––––––––––部品呼び出し |
こうすることで、“メインプログラム.uws”を実行した際に、“部品ファイル.uws”中の関数が取り込まれるようになります。
上記は、“メインプログラム.uws”と“部品ファイル.uws”が同じフォルダ内にある場合です。次の項では、フォルダ構成も整理してわかりやすい管理を目指します。
関数ファイルを別フォルダに置く
表でフォルダ構成を、黄色がフォルダのつもり。
“部品ファイル.uws”が各関数の置かれたファイル。CALL文を書くのは“メインプログラム.uws”上。
ですので、“メインプログラム.uws”から見てどこ?という指定をします。その指定の記述方法が青色。
・メインプログラムと同じ位置に置く CALL 部品ファイル.uws | ||
UWSC フォルダ | プログラムフォルダ | メインプログラム.uws 部品ファイル.uws |
・メインプログラムと同じ位置のフォルダ内に置く CALL 部品フォルダ/部品ファイル.uws | ||
UWSC フォルダ | 部品フォルダ | 部品ファイル.uws |
メインプログラム.uws | - | |
・メインプログラムのあるフォルダと部品のあるフォルダを並べて置く CALL ../部品フォルダ/部品ファイル.uws ※「../」←一つ上位のディレクトリを指定する記述方法です。 | ||
UWSC フォルダ | 部品フォルダ | 部品ファイル.uws |
プログラムフォルダ | メインプログラム.uws |
○わかりやすいプログラムを構築するために
関数やモジュールなどの部品ファイルを取り込む方法
コメント