2017年9月23日土曜日

[UWSC]関数の定義と呼び出し方[使い方まとめ]

UWSCという開発ソフトを使って作り上げる作業を実際にやってみるカテゴリ。準備した自作関数や使い方、トラブルを記事にしていきます。得るものがあれば幸いです。
関数を定義し呼び出すための手順をまとめました。関数を別ファイルに置くことも可能です。

記事の内容

○わかりやすいプログラムを構築するために
関数とプロシージャなどの各部品
関数やモジュールなどの部品ファイルを取り込む方法

スマホで閲覧されている方へ
このブログは画面横幅を広くしてあります。スマホ解像度での閲覧は厳しいと思いますので、ウェブバージョンへどうぞ。

ポク太郎です。

このブログで散々自作関数を作成しているのですが、定義の仕方や呼び出し方などをまとめて、記事にしておきます。(記事にしておかないといけないと思いつつ失念しておりました。)


関数とモジュール、その他

プログラムを組み上げる際に重要なのは、色んな場面で使い回し可能な“一部品”を作成し、それを組み立てて処理を実現するように努めます。こうすることで、修正の際にその“一部品”を修正するのみで済む、また、プログラムを見やすくできます。

このように“一部品”ごとを作り上げ、膨大なソースコードの可読性を上げるよう作り上げたプログラムが良いプログラム。

現在の開発環境は、上記のことをしやすくするための機能を大抵は標準装備しています。以下に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)
                (色んな処理)
                RESULT=ほにゃらら
   FEND
ENDMODULE
クラスCLASS
クラスとは
他の環境ではクラスというのは、クラスからパラメータ値などの異なるインスタンス(実体)を生み出すことのできる元。UWSCのクラスは異なるとの情報があり、まだよくわからず。
構文:
CLASS クラス名
                PUBLIC 変数1

   FUNCTION 関数1名(引数1,引数2,…,引数n)
                (色んな処理)
                RESULT=ほにゃらら
   FEND

   PROCEDURE プロシージャ1名(引数1,引数2,…,引数n)
                (色んな処理)
                RESULT=ほにゃらら
   FEND
ENDCLASS

上記を使って各“一部品”を作っていきます。


CALLで関数のあるファイルを取り込む

見やすくするための“一部品”なので、1つのテキストファイル内に納めないといけないものではありません。

例えば、
ファイルA … 文字列の検索や切り出しなど、文字列を扱う関数
ファイルB … 画像認識に関連する関数
ファイルC … 別の人が作った関数

このようにまとめてもOK。わかりやすければいいんです。


関数やモジュールなどを集めた“部品ファイル.uws”が以下だったとします。

部品ファイル.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)
            (色々な処理)
            RESULT=1
   FEND
ENDMODULE


メインプログラム.uws”の先頭で、使用したい関数のある“部品ファイル.uws”をCALLします。

メインプログラム.uws
1
2
3
//部品を使用したいプログラムのソースファイル

CALL 部品ファイル.uws      //-------------部品呼び出し

こうすることで、“メインプログラム.uws”を実行した際に、“部品ファイル.uws”中の関数が取り込まれるようになります。

上記は、“メインプログラム.uws”と“部品ファイル.uws”が同じフォルダ内にある場合です。次の項では、フォルダ構成も整理してわかりやすい管理を目指します。


関数ファイルを別フォルダに置く

CALL文後ろのファイル指定は相対パスも使用できるので、以下のようなフォルダ構成にすることも可能です。

下表の“部品ファイル.uws”が各関数の置かれたファイル。CALL文を書くのは“メインプログラム.uws”上。

ですので、いずれも“メインプログラム.uws”から見てどこにあるのかという指定をします。

部品ファイルの指定の仕方
・メインプログラムと同じ位置に置く
CALL 部品ファイル.uws
UWSC
フォルダ
プログラムフォルダメインプログラム.uws
部品ファイル.uws
・メインプログラムと同じ位置のフォルダ内に置く
CALL 部品フォルダ/部品ファイル.uws
UWSC
フォルダ
部品フォルダ
部品ファイル.uws

メインプログラム.uws
・メインプログラムのあるフォルダと部品のあるフォルダを並べて置く
CALL ../部品フォルダ/部品ファイル.uws
UWSC
フォルダ
部品フォルダ部品ファイル.uws
プログラムフォルダメインプログラム.uws


Windowsを自動化!UWSC逆引き本

Excel VBAでIEを思いのままに操作できるプログラミング術 Excel 2013/2010/2007/2003対応



記事の内容

記事の内容は伝わりましたでしょうか。
○わかりやすいプログラムを構築するために
関数とプロシージャなどの各部品
関数やモジュールなどの部品ファイルを取り込む方法


【関連記事】
人気![UWSC]firefoxやchromeを操作できるか試してみる関数
[UWSC]BMP画像の幅と高さを得る関数
人気![UWSC]配列変数と関数[使い方まとめ]
[UWSC]ファイル操作の関数


スポンサーリンク



↓ ランキングに参加しています!(Ctrlキーを押しながら) ↓

blogramのブログランキング

ポク太郎の「俺の説明聞いてくれ」 コンテンツ
ポク太郎の「俺の説明聞いてくれ」最キラー記事 IT関連
電気回路やプログラムの記事。元々のメインコンテンツ。
UWSC奮闘記
プログラミングのできる子に
デジタルの世界って
映画・ドラマ・芸能
ハリウッドが主のエンターテイメントの記事。最近は似顔絵多し。
戦士の息抜き
ブログ運営
AnalyticsやSerchConsolなどの使い方、アクセスアップに関する話題。
アドセンス関連
他のGoogleツール
その他
アホのもくろみ
アホの雑記
取りとめもなく好き勝手に書く記事。不本意にも一番人気だったり。
役に立つかも
休むに似たり
好き勝手に書く
落書き漫画
何故人気なのか全く解らない数コマ漫画。結局最大コンテンツに。
物思いに耽る
免責事項 ホームへ戻る

スポンサーリンク





0 件のコメント:

コメントを投稿