引数とパラメーターの違いは何ですか?

2008-10-01 parameters language-agnostic arguments terminology

メソッドについて口頭で話すとき、 引数またはパラメーターという単語を使用するか、それとも他の何かを使用するかはわかりません。他の人は私が何を意味するのかを知っていますが、何が正しいのですか、そして用語の歴史は何ですか?

私はC#プログラマーですが、人々が異なる言語で異なる用語を使用しているかどうかも疑問に思います。

記録のために、私はコンピュータサイエンスのバックグラウンドなしで独学しています。 ( コードコンプリートを読むように言わないでください。これは、 Steve McConnellのすばらしい本のコピーをまだ持っていない他の人々の利益のためにお願いしているからです。)

概要

一般的なコンセンサスは、チーム環境でこれらの用語を互換的に使用することで問題ないようです。正確な用語を定義している場合を除いて、次に、「 正式な引数/パラメーター」と「 実際の引数/パラメーター」を使用して明確化することもできます。

Answers

関数の宣言ではパラメーターは可変です。

引数は、関数に渡されるこの変数の実際の値です。

パラメータは、関数を呼び出すときに入力する必要があるものです。あなたがそれに入れたのは議論です。

単純に設定します。引数はパラメーターに入り、引数はパラメーターの値です。

もう少し情報: http://en.wikipedia.org/wiki/Parameter_(computer_science)#Parameters_and_arguments

パラメータは、メソッド定義の変数です。メソッドが呼び出されると、引数はメソッドのパラメーターに渡すデータになります。

public void MyMethod(string myParam) { }

...

string myArg1 = "this is my argument";
myClass.MyMethod(myArg1);

関数/メソッドのパラメーターは、結果の計算に使用する値を説明します。

関数の引数は、関数/メソッドの特定の呼び出し中にこれらのパラメーターに割り当てられた値です。

サブジェクト( パラメーターを参照)には、 パラメーター引数という用語を定義および区別するWikipediaのエントリが既にあります 。簡単に言うと、パラメータは関数/プロシージャ/メソッドシグネチャの一部であり、引数は実行時および/または呼び出しサイトでパラメータに提供される実際の値です。

ウィキペディアの記事では、2つの用語は同義語で使用されることが多いと述べています(特にコードについて非公式に推論する場合)。

パラメータも一般的ですが 引数と呼ばれる、引数 より適切に考えられている 割り当てられた実際の値または参照 パラメータ変数に サブルーチンは実行時に呼び出されます。

2つの整数を追加するCの次の関数例を考えると、 xyはそのパラメーターと呼ばれます。

int add(int x, int y) {
    return x + y;
}

以下に示す例のように、 addを使用add呼び出しサイトでは、 123および456が呼び出しの引数として参照されます。

int result = add(123, 456);

また、一部の言語仕様(または正式なドキュメント)は、 パラメーターまたは引数を排他的に使用し、2つのケースを明確にするために代わりに正式および実際のよう形容詞を使用することを選択します。たとえば、C / C ++のドキュメントでは、関数パラメーター正式な引数と呼び、関数呼び出し引数実際の引数と呼びます 。例については、 『 Visual C ++言語リファレンス 』の「 正式な引数と実際の引数 」を参照してください

用語は多少交換可能です。他の回答で説明されている区別は、関数の本体の内部で使用される名前の仮パラメーターと、呼び出しサイトで提供される値のパラメーターという用語でより適切に表現されます( 仮引数引数も共通です)。

また、数学では、 引数という用語ははるかに一般的であり、 パラメーターは通常、まったく異なるものを意味します (ただし、パラメトリック方程式のパラメーターは、基本的に2つ以上の関数の引数です)。

またはもっと簡単に...

の引数!

パラメータがアウトです!

この例は役立つかもしれません。

int main () {
   int x = 5; 
   int y = 4;

   sum(x, y); // **x and y are arguments**
}

int sum(int one, int two) { // **one and two are parameters**
   return one + two;
}

どちらもCでの使用法に大きな違いはなく、両方の用語が使用されます 実際には。 ほとんどの場合、引数は関数で使用されます。関数呼び出しステートメントで渡される値は引数と呼ばれます。パラメータは、関数定義の値をコピーする変数です(仮パラメータと呼ばれます)。

int main ()
{
   /* local variable definition */
   int a = 100;
   int b = 200;
   int ret;

   /* calling a function to get max value */
   ret = max(a, b);

   printf( "Max value is : %d\n", ret );

   return 0;
}

/* function returning the max between two numbers */
int max(int num1, int num2) 
{
   /* local variable declaration */
   int result;

   if (num1 > num2)
      result = num1;
   else
      result = num2;

   return result; 
}

上記のコードでは、 num1num2は仮パラメーターで、 abは実引数です。

または、メソッドのオプションの引数の場合は、次のように覚えておくとさらに簡単です。

public void Method(string parameter = "argument") 
{

}

parameterはパラメータ、その値、 "argument"は引数です:)

あなたが航空会社だとしましょう。あなたは飛行機を作ります。そこに座席を設置します。次に、飛行機を乗客で満たし、どこかに送ります。乗客(またはむしろ、その時空間的に変更されたバージョン)は下船します。翌日、同じ飛行機と同じ座席を再利用しますが、今回は乗客が異なります。

飛行機はあなたの機能です。

パラメータは座席です。

議論はそれらの席に行く乗客です。

引数は、パラメーターのインスタンス化です。

編集において、私は人々が忘れる方法にしばしば延期されます。構造言語は自然言語に基づいています。

英語で

「パラメーター」はプレースホルダーです。彼らは音声フォーマットで応答フォーマットを設定しました。当然のことながら、それは通話の当事者であり、応答を制限します。

「議論」は考慮されているポジションです。あなたは自分の意見を主張します:あなたは議論を考慮します。

主な違い

議論の主題の役割はエージェントです。パラメータの主題の役割は受信者です。

相互作用

引数を男性の部分と考え、パラメータを女性の部分にします。引数はパラメーターに入ります。

使用法

パラメータは通常 、定義で使用されます。引数は通常 、呼び出しで使用されます。

ご質問

文章を終わりにして、不和を少なくします。

(A)定義と言えば:

  1. どの引数が使用されます[]?
  2. このパラメータは何ですか[]?

(B)呼び出しについて言えば:

  1. どのパラメータを使用しますか、[]?
  2. このパラメーターは[]になります[]。

答え

(A)

  1. on / in / against / with this parameter
  2. 引数...を取る

(B)

  1. そして、いくつかの例の引数は何ですか
  2. 引数...で使用されます/ in / against / with

オーバーラップ

ご想像のとおり、答えた後:話し言葉では、これらの単語は同じ応答を生成することがあります!

したがって、原則として:

  • 通常、誰かがパラメータ情報を必要とする場合、タイプや変数名などについて詳しく知りたいと考えます。例の引数のみを指定すると混乱する可能性があります。

    • 通常、引数情報が必要な場合は、関数またはそのパラメーターに渡した値を知りたいと思っています。

パラメータおよび引数という用語の使用は誤用されています プログラマーや作家の間でさえもだ。対処するとき メソッドでは、 パラメータという用語は、プレースホルダを識別するために使用されます メソッドのシグネチャ。 引数という用語は実際の メソッドに渡す値。

MCSD Cerfification Toolkit(試験70-483)C#でのプログラミング 、第1版、Wrox、2013

実際のケースシナリオ

// Define a method with two parameters
int Sum(int num1, int num2)
{
   return num1 + num2;
}

// Call the method using two arguments
var ret = Sum(2, 3);

コードなしの簡単な説明

「パラメータ」は非常に一般的で広範なものですが、「引数:は非常に具体的で具体的なものです。これは日常の例で最もよく説明されています。

例1:自動販売機-お金がパラメーター、$ 2.00が引数

ほとんどのマシンは入力を受け取り、出力を返します。たとえば、自動販売機は入力としてお金を受け取り、出力として炭酸飲料を返します。その特定のケースでは、パラメーターとして受け入れます:money。

それでは議論は何ですか?まあ、マシンに$ 2.00を入れると、引数は次のようになります。$ 2.00-使用される非常に具体的な入力です。

例2:車-ガソリンがパラメータです

車について考えてみましょう。ガソリン(無鉛ガソリン)を入力として受け入れます。これらのマシンは、ガソリンのタイプのパラメーターを受け入れると言えます 。議論は私が私の車に入れた正確で具体的な入力です。例:私の場合、議論は次のようになります:無鉛ガソリン/ガソリン40リットル。

例3-引数の詳細

引数は、入力の特定の具体例です。私のマシンが人を入力として受け取り、それらをうそつきではない人に変えたとします。

それでは議論は何ですか?議論は、実際に機械に入れられる特定の人です。たとえば、Colin Powellがマシンに組み込まれている場合、引数はColin Powellになります。

したがって、パラメーターは抽象的な概念としての人ですが、引数は常に、マシンに入れられる特定の名前を持つ特定の人になります。議論は具体的で具体的です。

それが違いです。シンプル。

混乱していますか?

コメントを投稿して、説明を修正します。

OracleのJavaチュートリアルでは、この区別を次のように定義しています。 「パラメータとは、メソッド宣言内の変数のリストを指します。引数は、メソッドが呼び出されるときに渡される実際の値です。メソッドを呼び出すとき、使用される引数は、宣言のパラメータの型と順序と一致している必要があります。」

パラメータと引数の詳細な説明: https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html

Javaでメソッド(関数)を作成すると、このようなメソッドになります。

data-type name of the method (data-type variable-name)

括弧内はこれらがパラメーターであり、メソッド(関数)を呼び出すときに、このパラメーターの値を渡します。これを引数と呼びます。

パラメータは関数が受け取る変数であるため、関数宣言で見ることができ、データ名と変数名が含まれています。 引数は、別の関数に渡される実際の値です。それが関数呼び出しでそれらを見ることができる理由です。それらはデータ型のない単なる値です

パラメータと引数

パラメータと引数に関係するすべての異なる用語 混乱する可能性があります。ただし、いくつか簡単な点を覚えておけば、 これらの用語を簡単に処理できます。

  1. 関数の仮パラメーターは関数宣言にリストされ、関数定義の本体で使用されます。あ (あらゆる種類の)仮パラメーターは、一種のブランクまたはプレースホルダーであり、 関数が呼び出されると、何かが入力されます。
  2. 引数は、仮パラメーターを埋めるために使用されるものです。 関数呼び出しを書き留めると、引数は次のようにリストされます 関数名の後の括弧。関数呼び出しが 実行されると、引数は仮パラメーターにプラグインされます。
  3. 値による 呼び出しと参照による呼び出しという用語 、メカニズムを指します。 プラグインプロセスで使用されます。値による呼び出し方法 引数の値のみが使用されます。この値渡し メカニズム、仮パラメーターはローカル変数です。 対応する引数の値に初期化されます。の中に 参照による呼び出しメカニズム、引数は変数であり、 変数全体が使用されます。参照渡しメカニズムでは、 引数変数が仮パラメーターの代わりに使用されるため、 仮パラメーターに加えられた変更は、実際には 引数変数。

出典:Absolute C ++、Walter Savitch

あれは、

ここに画像の説明を入力してください

シンプル:

  • P ARAMETER→ P LACEHOLDER(これは、プレースホルダーが関数の名前に属し、関数本体で使用されることを意味します)
  • A RGUMENT→A CTUAL VALUE(これは関数呼び出しによって渡された実際の値を意味します)

論理的に言えば、私たちは実際に同じことについて話しています。 しかし、このジレンマを解決するには、単純なメタファーが役立つと思います。

メタファーをさまざまな接続ポイントと呼ぶことができる場合、それらを壁のプラグポイントと同等と見なすことができます。 この場合、パラメーターと引数を次のように考えることができます。

パラメータは、さまざまな異なる形状をとることができるプラグポイントのソケットです。しかし、特定のタイプのプラグのみがそれらに適合します。
引数は、特定の機器をアクティブにするためにプラグポイント/ソケットに接続される実際のプラグになります。

関数の仮パラメーターは関数宣言にリストされ、関数定義の本体で使用されます。 (任意の種類の)仮パラメーターは、関数が呼び出されたときに何かで埋められる一種のブランクまたはプレースホルダーです。

引数は、仮パラメーターを埋めるために使用されるものです。関数呼び出しを書き留めると、引数は関数名の後の括弧内にリストされます。関数呼び出しが実行されると、仮パラメーターの引数がプラグインされます。

値による 呼び出しと参照による呼び出しという用語は、プラグインプロセスで使用されるメカニズムを指します。値による呼び出し方法では、引数の値のみが使用されます。この値による呼び出しメカニズムでは、仮パラメーターは、対応する引数の値に初期化されるローカル変数です。参照による呼び出しメカニズムでは、引数は変数であり、変数全体が使用されます。参照による呼び出しメカニズムでは、引数変数が仮パラメーターの代わりに使用されるため、仮パラメーターに加えられた変更は、実際には引数変数に対して行われます。

はい!パラメータと引数には異なる意味があり、次のように簡単に説明できます。

関数パラメーターは、関数定義にリストされている名前です。

関数の引数は、関数に渡される(および関数が受け取る)実際の値です。

パラメータは、関数が使用する関数に渡されるデータを格納するために使用される変数です。 引数は、呼び出されたときに関数に渡される実際のデータです。

// x and y are parameters in this function declaration
function add(x, y) {
  // function body
  var sum = x + y;
  return sum; // return statement
}

// 1 and 2 are passed into the function as arguments
var sum = add(1, 2);

常にそれを覚えておいてください: パラメータが受信される間、引数が渡されます。

私はそれをじっくり考えて、私の以前の答えが間違っていることに気付きました。これははるかに良い定義です

{ 卵のカートンを想像してみてください:ソーセージリンクのパック:メイド }これらは、準備に必要なFunctionの要素を表します:(任意の名前を使用:Cookingが私の関数の名前だとしましょう)。

メイドは方法です。

(あなたは__call_するか、このメソッドに朝食を作るように頼む必要があります)(朝食を作る行為はCookingと呼ばれる関数です )_

卵とソーセージはパラメータです:

(食べたい卵の数とソーセージの数は__variable_であるためです。)_

あなたの決定は議論です:

選択した数の調理中の卵やソーセージの__Value_を表します。_

{ 記憶法 }

_「メイドに電話して朝食を作るように頼むとき、彼女はあなたが食べるべき卵とソーセージの数についてあなたと__議論_します。彼女はあなたのコレステロールを心配しています」__

(つまり、引数は、宣言して関数に渡すことを決定したパラメーターの組み合わせの値です)

ジョセフのアラバハリの本「C#in a Nutshell」(C#7.0、p。49)によれば、

static void Foo (int x)
{
    x = x + 1; // When you're talking in context of this method x is parameter
    Console.WriteLine (x);
}
static void Main()
{
    Foo (8); // an argument of 8. 
             // When you're talking from the outer scope point of view
}

一部の人間の言語(イタリア語、ロシア語)では、これらの用語に同義語が広く使用されています。

  • パラメーター = 仮パラメーター
  • 引数 = 実パラメータ

私の大学では、教授は両方の種類の名前を使用しています。

パラメータ(コンピュータプログラミング)で完全に説明されています-ウィキペディア

大まかに言うと、パラメーターはタイプであり、引数はインスタンスです。

関数定義f(x) = x*xでは、変数xはパラメーターです。関数呼び出しf(2) 、値 `` 2は関数の引数です。

パラメータ-ウィキペディア

コンピュータープログラミングでは、 パラメーターの 2つの概念が一般的に使用され、 パラメーターおよび引数と呼ばれます 。より正式には、 仮パラメーター実際のパラメーターと呼ばれます

たとえば、次のような関数の定義では

y = f(x) = x + 2,

xは、定義された関数の仮パラメーターパラメーター )です。

次のように、関数が特定の値に対して評価されるとき

f(3): or, y = f(3) = 3 + 2 = 5,

定義された関数による評価のための実際のパラメーター引数 )です。これは、定義された関数の仮パラメーターの代わりに使用される所定の値(実際の値)です。 (通常の使用法では、 パラメーター引数という用語が誤って入れ替えられ、誤って使用される場合があります。)

基本に戻る必要があります。コンストラクタとメソッドの両方にパラメータと引数があります。多くの人はコンストラクタに特別な種類のメソッドを呼び出します。これは 、メソッドがパラメータとして宣言されている方法です。

      type name(parameters){
           //body of method
          }

そして、これはコンストラクタが宣言された方法であり、 パラメータが使用さます

classname(parameters){
//body
}

次に、立方体の体積を計算するコード例を見てみましょう。

public class cuboid {
    double width;
    double height;
    double depth;

      cuboid(double w,double h,double d) { 
      //Here w,h and d are parameters of constructor
       this.width=w;
       this.height=h;
       this.depth=d;
       }

        public double volume() {
        double v;
        v=width*height*depth;
        return v;
        }
        public static void main(String args[]){
           cuboid c1=new cuboid(10,20,30);
           //Here 10,20 and 30 are arguments of a constructor
           double vol;
           vol=c1.volume();
           System.out.println("Volume is:"+vol);

           }
    }

これで、後でコードのどこかでオブジェクトのコンストラクター/メソッドを呼び出すときに、パラメーターではなく引数が渡されることを理解できました。パラメーターは、論理オブジェクトが定義されている場所に制限されますが、物理オブジェクトがオブジェクトが実際に作成されます。

関数の宣言ではパラメーターは可変です。

引数は、関数に渡されるこの変数の実際の値です。 ここに画像の説明を入力してください

パラメータは関数定義の変数です
引数はパラメータのです

<?php

    /* define function */
    function myFunction($parameter1, $parameter2)
    {
        echo "This is value of paramater 1: {$parameter1} <br />";
        echo "This is value of paramater 2: {$parameter2} <br />";
    }

    /* call function with arguments*/
    myFunction(1, 2);

?>

私の背景と主な環境はCなので、実際のC標準と重要なリファレンスブックから、そのトピックについていくつかのステートメント/引用を提供します。Cの開発者の1人からも引用されます。 Cの標準:


Brian W. KernighanおよびDennis M. RitchieによるCプログラミング言語(第2版)(1988年4月):

ページ25、セクション1.7-関数

通常、関数定義の括弧で囲まれたリストで指定された変数にはパラメーターを使用し、関数の呼び出しで使用される値には引数を使用します。 正式な引数実際の引数という用語は、同じ区別のために使用されることがあります。

ISO / IEC 9899:2018(C18):

3.3

引数

実引数

非推奨:実パラメータ

関数呼び出し式の括弧で囲まれたコンマ区切りリスト内の式、または関数のようなマクロ呼び出しの括弧で囲まれたコンマ区切りリスト内の一連の前処理トークン。


3.16

パラメータ

仮パラメーター

非推奨:仮引数

関数への入り口で値を取得する関数宣言または定義の一部として宣言されたオブジェクト、または関数のようなマクロ定義のマクロ名の直後の括弧で囲まれたコンマ区切りのリストからの識別子。

一般的に、パラメータと引数という用語は、関数に渡される情報を意味するために交換可能に使用されます。

しかし、関数の観点からは次のとおりです。

  • パラメーターは、関数定義の括弧内にリストされている変数です。
  • 引数は、関数が呼び出されたときに関数に送信される値です。
  • パラメータ
    • 関数にすでに「組み込まれている」値。
    • パラメータを変更して、関数を他のものに使用することができます。
  • 議論
    • 関数への入力
    • 関数の結果に影響を与える変数。

ソース

Related