Pascal-functions

提供:Dev Guides
移動先:案内検索

パスカル-関数

サブプログラム

サブプログラムは、特定のタスクを実行するプログラム単位/モジュールです。 これらのサブプログラムは結合されて、より大きなプログラムを形成します。 これは基本的に「モジュラーデザイン」と呼ばれます。サブプログラムは、呼び出し側プログラムと呼ばれるサブプログラム/プログラムによって呼び出すことができます。

パスカルは2種類のサブプログラムを提供します-

  • 関数-これらのサブプログラムは単一の値を返します。
  • 手順-これらのサブプログラムは値を直接返しません。

関数

  • 関数*は、一緒にタスクを実行するステートメントのグループです。 すべてのPascalプログラムには、プログラム自体である少なくとも1つの関数があり、最も単純なプログラムはすべて、追加の関数を定義できます。

関数*宣言*は、関数の名前、戻り値の型、およびパラメーターについてコンパイラーに通知します。 関数 definition は、関数の実際の本体を提供します。

Pascal標準ライブラリは、プログラムが呼び出すことができる多数の組み込み関数を提供します。 たとえば、関数* AppendStr()は2つの文字列を追加します。関数 New()*は、メモリを変数やさらに多くの関数に動的に割り当てます。

関数を定義する

Pascalでは、 function はfunctionキーワードを使用して定義されます。 関数定義の一般的な形式は次のとおりです-

function name(argument(s): type1; argument(s): type2; ...): function_type;
local declarations;

begin
   ...
   < statements >
   ...
   name:= expression;
end;

Pascalの関数定義は、関数 header 、ローカル declarations 、および関数 body で構成されています。 関数ヘッダーは、キーワードfunctionと、関数に指定された name で構成されます。 ここに関数のすべての部分があります-

  • 引数-引数は、呼び出し側プログラムと関数識別子の間のリンクを確立し、仮パラメータとも呼ばれます。 パラメーターはプレースホルダーのようなものです。 関数が呼び出されると、パラメーターに値を渡します。 この値は、実パラメーターまたは引数と呼ばれます。 パラメータリストは、関数のパラメータのタイプ、順序、および数を参照します。 このような仮パラメータの使用はオプションです。 これらのパラメーターには、標準データ型、ユーザー定義データ型、またはサブレンジデータ型があります。 +関数ステートメントに表示される仮パラメータリストは、単純変数または添え字付き変数、配列または構造化変数、またはサブプログラムです。
  • 戻り値の型-すべての関数は値を返す必要があるため、すべての関数に型を割り当てる必要があります。 function-type は、関数が返す値のデータ型です。 標準のユーザー定義のスカラー型またはサブレンジ型の場合がありますが、構造化型にすることはできません。
  • ローカル宣言-ローカル宣言は、ラベル、定数、変数、関数、およびプロシージャの宣言を参照します。これらは、関数の本体のみに適用されます。
  • 関数本体-関数本体には、関数の動作を定義するステートメントのコレクションが含まれています。 予約語beginとendで常に囲まれている必要があります。 これは、すべての計算が行われる関数の一部です。 関数名に値を割り当てる関数本体には、タイプ- name:= expression; の割り当てステートメントが必要です。 この値は、関数が実行されたときに返されます。 本文の最後のステートメントは、終了ステートメントでなければなりません。

以下は、パスカルで関数を定義する方法を示す例です-

( *function returning the max between two numbers* )
function max(num1, num2: integer): integer;

var
   ( *local variable declaration* )
   result: integer;

begin
   if (num1 > num2) then
      result := num1

   else
      result := num2;
   max := result;
end;

関数宣言

関数*宣言*は、関数名と関数の呼び出し方法をコンパイラーに伝えます。 関数の実際の本体は個別に定義できます。

関数宣言には次の部分があります-

function name(argument(s): type1; argument(s): type2; ...): function_type;

上で定義された関数max()の場合、以下は関数宣言です-

function max(num1, num2: integer): integer;

あるソースファイルで関数を定義し、別のファイルでその関数を呼び出す場合、関数宣言が必要です。 そのような場合、関数を呼び出すファイルの先頭で関数を宣言する必要があります。

関数を呼び出す

関数を作成するときに、関数が何をする必要があるかを定義します。 関数を使用するには、その関数を呼び出して定義済みのタスクを実行する必要があります。 プログラムが関数を呼び出すと、プログラム制御は呼び出された関数に転送されます。 呼び出された関数は定義されたタスクを実行し、returnステートメントが実行されるか、最後のendステートメントに到達すると、プログラム制御をメインプログラムに戻します。

関数を呼び出すには、必要なパラメーターと関数名を渡すだけで済みます。関数が値を返す場合、戻り値を保存できます。 以下は、使用法を示す簡単な例です-

program exFunction;
var
   a, b, ret : integer;

(*function definition *)
function max(num1, num2: integer): integer;
var
   ( *local variable declaration* )
   result: integer;

begin
   if (num1 > num2) then
      result := num1

   else
      result := num2;
   max := result;
end;

begin
   a := 100;
   b := 200;
   ( *calling a function to get max value* )
   ret := max(a, b);

   writeln( 'Max value is : ', ret );
end.

上記のコードをコンパイルして実行すると、次の結果が生成されます-

Max value is : 200