Bağımsız değişken ve parametre arasındaki fark nedir?


719

Sözlü olarak yöntemler hakkında konuşurken, argüman veya parametre kelimesini mi yoksa başka bir şeyi mi kullanacağımdan asla emin değilim . Her iki şekilde de diğer insanlar ne demek istediğimi biliyorlar, ama doğru olan nedir ve terimlerin tarihi nedir?

Ben bir C # programcısıyım, ancak insanların farklı dillerde farklı terimler kullanıp kullanmadığını da merak ediyorum.

Kayıt için Bilgisayar Bilimi'nde arka plan olmadan kendi kendime öğrettim. (Lütfen Bana Kod Tamamlama'yı okumamı söyleme çünkü bunu Steve McConnell'in muhteşem kitabının bir kopyası olmayan diğer insanların yararına istiyorum .)

özet

Genel fikir birliği, bu terimleri bir ekip ortamında birbirinin yerine kullanmanın uygun olduğu gibi görünüyor. Belki de kesin terminolojiyi tanımlarken; ayrıştırmak için " resmi bağımsız değişken / parametre" ve " gerçek bağımsız değişken / parametre" kullanabilirsiniz.


9
Bunları birbirinin yerine kullanıyorum .. Henüz kimse bana gülmedi. 'Bu fonksiyonun 4 argümanı var .. Bu fonksiyon 4 parametre alıyor.' kulağa aynı geliyor.
Gishu

54
Parametrelerin nasıl çalıştığını ve argümanların nasıl aktarıldığını vb. Açıklamak istediğinizde, bunları birbirinin yerine kullanmak uygundur. Bu noktada kesin terminoloji (bazen ifade etmek acı verici olabilir) yararlıdır.
Jon Skeet

2
Bu sorunun en az iki kapatılmamış, dile özgü olmayan sürümü vardır: stackoverflow.com/questions/3176310/… ve stackoverflow.com/questions/427653/arguments-or-parameters . Bu sorunun başka bir C # sürümü daha var; Birleştirme istedim.
Pops

1
Steve McConnell'den bahsetmene sevindim. Robert C. Martin ile birlikte yazılım işçiliğini bilen bir adam daha tanıyordum.
RBT

3
Resmi bir ortamda olsanız da olmasanız da, doğru terimleri kullanmaya çalışmalısınız. Bence oldukça basit. Bir yöntemi çağırdığınızda, bağımsız değişkenler iletirsiniz. Yöntemi tanımladığınızda, yöntem / işlev çağrısından bağımsız değişkenleri alacak parametreleri tanımlarsınız. argüman - bir işlevle ilişkili ve işlevin değerini belirleyen bağımsız bir değişken. parametre - belirli bir işlem veya etkinliğin kapsamını tanımlayan bir sınır veya sınır.
jsquaredz

Yanıtlar:


907

Parametre, yöntem tanımındaki bir değişkendir. Bir yöntem çağrıldığında, bağımsız değişkenler yöntemin parametrelerine ilettiğiniz verilerdir.

public void MyMethod(string myParam) { }

...

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

196
Yardımcı olabilecek bir anımsatıcı anımsatıcı: Bağımsız Değişkenler Gerçek. ;)
thSoft

8
Yanıt, "Parametre yöntem tanımında bir değişkendir" den bahseder, ancak "yöntem bildirimi" demek daha iyi olabilir [birisi 'bildirim' ve 'tanım' arasında bir ayrım
yapıyorsa

110
"Parametreleri tanımlarsınız ve argümanlar yaparsınız."
Greg M. Krsak

5
parametresi => işlevi tanımladığımızda, argüman => bu yöntemi çağırdığımızda. (
YANLIŞSA BENİ DÜZELT

7
Parametreler İsimlerdir. Bağımsız Değişkenler Değerlerdir.
Aziz Alto

327

Parametre işlev bildiriminde değişkendir.

Bağımsız değişken, işleve iletilen bu değişkenin gerçek değeridir.


7
Bu diller genellikle bir yönteme geçirilen bağımsız değişken / parametre listesine bakın *argsveya ARGVdeğil *params:-)
karatedog

6
*paramsparametre adlarını tutması amaçlanan bir değişkenin adı olabilir (belki de içgözlem için kullanılır).
trss

6
@karatedog Ve aslında bu ayrımla tamamen aynı. Parametreler bildirim zamanında adlandırılır, argümanlar yalnızca çağrı zamanında bilinir. Sözdizimi , değeri bağımsız değişkenlerin bir listesi (bildirim zamanında bilinen ad ve tür) (numarası yalnızca çağrı zamanında bilinen ) olan *argsbir parametre bildirir . args
Emil Lundberg

72

Konu üzerinde , terms parametresini ve bağımsız değişkeni tanımlayan ve ayıran bir Wikipedia girdisi zaten var (bkz. Parametre ) . Kısacası, bir parametre fonksiyon / prosedür / yöntem imzasının bir parçasıdır ve bir argüman parametre için çalışma zamanında ve / veya çağrı yerinde sağlanan gerçek değerdir.

Wikipedia makalesinde ayrıca iki terimin eşanlamlı olarak kullanıldığı belirtilmektedir (özellikle kod hakkında gayri resmi olarak akıl yürütürken):

Her ne kadar parametreler yaygın olarak argümanlar olarak adlandırılsa da, argümanlar daha doğru bir şekilde, alt program çalışma zamanında çağrıldığında parametre değişkenlerine atanan gerçek değerler veya referanslar olarak düşünülür.

İki tamsayılar ekler, C Aşağıdaki örnek işlevi göz önüne alındığında xve yonun parametreleri olarak anılacaktır olurdu:

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

addAşağıda gösterilen örnek gibi bir çağrı yerinde 123 ve 456'ya çağrının argümanları denir .

int result = add(123, 456);

Ayrıca, bazı dil özellikleri (veya resmi belgeler) yalnızca parametre veya bağımsız değişkeni kullanmayı ve iki durum arasında ayrım yapmak için biçimsel ve gerçek gibi sıfatları kullanmayı seçer . Örneğin, C / C ++ belgelerine genellikle fonksiyon belirtir parametreler olarak formel argümanlar ve fonksiyon çağrısı argümanlar olarak gerçek argümanlar . Bir örnek için, Visual C ++ Dil Başvurusu'ndakiResmi ve Gerçek Değişkenler ” konusuna bakın .


+1'nin yaygın olarak nasıl kullanıldıklarını ve bunların resmi tanımlarını açıklamak için ve ayrıca belirsizlikleri ayırmak için "resmi" ve "gerçek" argümanların / parametrelerin ortak kullanımından bahsetmek için.
Mekanik salyangoz

Bu harika bir açıklama ama kavramın sadeliğine kıyasla anlaşılması neredeyse imkansız. Parametre kabul edilen, argüman denilen şeydir. Burası tek yönlü bir sokak.
ihodonald

69

Basit:

  • P ARAMETRE → P LACEHOLDER (Bu, bir yer tutucunun işlev adlandırmasına ait olduğu ve işlev gövdesinde kullanılabileceği anlamına gelir)
  • Bir RGUMENT → bir CTUAL DEĞER (Bu araçlar işlev arama tarafından geçirilen bir gerçek değer)

3
Güzel bellek kancası
Tanckom


30

Parametre işlev bildiriminde değişkendir.

Bağımsız değişken, işleve iletilen bu değişkenin gerçek değeridir. resim açıklamasını buraya girin


16

Parametrelerin ve argümanların kullanımı, programcılar ve hatta yazarlar arasında bir şekilde yanlış kullanılmıştır. Yöntemlerle uğraşırken, parametre parametresi yöntem imzasındaki yer tutucuları tanımlamak için kullanılırken, argüman terimi, yönteme ilettiğiniz gerçek değerlerdir.

MCSD Sertifikalandırma Araç Seti (Sınav 70-483) C # Programlama , 1. baskı, Wrox, 2013

Gerçek dünya vaka senaryosu

// 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);

10

Düzenlemede, çoğu zaman insanların nasıl unuttuğunu söylerim: yapı dilleri doğal dillere dayanır.

İngilizcede

"Parametre" bir yer tutucudur. Yanıt biçimini konuşma dilinde ayarlarlar. Tanım gereği, yanıtı sınırlandıran çağrıya taraftır.

Bir "argüman" dikkate alınan bir konumdur. Fikrinizi savunuyorsunuz: bir argüman olarak değerlendiriyorsunuz.

Asıl fark

Bir argümanın tematik rolü ajandır. Parametrenin tematik rolü alıcıdır.

Etkileşimler

Argümanı erkek kısmı olarak düşünün ve parametreyi kadın kısmı yapın. Argüman parametreye gider.

kullanım

Tanımlarda genellikle bir parametre kullanılır. Bir argüman genellikle çağrılarda kullanılır.

Sorular

Daha az uyumsuz hale getirmek için cümleyi bitirin.

(A) Bir tanımdan bahsetmek gerekirse:

  1. Hangi argüman kullanılacak []?
  2. Bu parametre [] hangi [] olacak?

(B) Bir çağrıdan bahsetmek:

  1. Hangi parametreyi kullanacaksınız, []?
  2. Bu parametre [] ne olacak?

Yanıtlar

(A)

  1. on / in / bu parametreye karşı / ile
  2. argümanlar ... al

(B)

  1. ve bazı örnek argümanlar nelerdir
  2. argümanlar ... üzerinde / içinde / alında / ile birlikte kullanılan

Çakışmaları

Tahmin edebileceğiniz gibi, cevapladıktan sonra: sözlü dilde, bu kelimeler bazen aynı yanıtları üretecektir!

Yani, kural olarak:

  • Genellikle birileri parametre bilgileri isterse, tür, değişken adı vb. Hakkında daha fazla bilgi edinmek isterler. Yalnızca örnek bağımsız değişkenler verirseniz bunlar karışabilir.

    • Genellikle birisi argüman bilgisi isterse, bir işleve veya parametresine / parametrelerine hangi değeri ilettiğinizi bilmek ister.

8

Bu örnek yardımcı olabilir.

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;
}

8

Daima şunu unutmayın: - Parametreler alınırken argümanlar iletilir.


8

Parametreler bir işlev / yöntem size onun sonucu hesaplamak için kullandığı değerler tanımlar.

Argümanlar işlev işlevi / yöntemin özel bir çağrı sırasında, bu parametreleri atanır değerlerdir.


7

Veya bir yöntem için isteğe bağlı bağımsız değişkenler söz konusu olduğunda hatırlamak daha da kolay olabilir:

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

}

parameterparametre, değeri, "argument"argümandır :)


7

Diyelim ki bir havayolunuz. Bir uçak inşa ediyorsunuz. İçine koltuklar monte edersiniz. Sonra uçağı yolcularla doldurup bir yere gönderiyorsunuz. Yolcular (veya daha doğrusu, bazı uzaysal olarak değiştirilmiş versiyonları) iniyorlar. Ertesi gün, aynı uçağı ve aynı koltukları tekrar kullanıyorsunuz, ancak bu sefer farklı yolcularla.

Uçak sizin işlevinizdir.

Parametreler koltuklardır.

Argümanlar bu koltuklara giden yolcular.


7

Parametreler ve Bağımsız Değişkenler

Parametreler ve argümanlar ile ilgili tüm farklı terimler kafa karıştırıcı olabilir. Ancak, birkaç basit noktayı aklınızda tutarsanız, bu terimleri kolayca ele alabileceksiniz.

  1. Biçimsel parametreler bir fonksiyon için işlev bildiriminde listelenen ve fonksiyon tanımlamasının gövdesini kullanılmaktadır. Resmi bir parametre (herhangi bir türden), işlev çağrıldığında bir şeyle doldurulmuş bir tür boş veya yer tutucudur.
  2. Bağımsız değişken , resmi bir parametreyi doldurmak için kullanılan bir şeydir. Bir işlev çağrısını yazdığınızda, bağımsız değişkenler işlev adından sonra parantez içinde listelenir. İşlev çağrısı yürütüldüğünde, resmi parametreler için argümanlar eklenir.
  3. Değere göre çağrı ve referansa göre çağrı terimleri, takma işleminde kullanılan mekanizmayı ifade eder. Call-by-value yönteminde yalnızca bağımsız değişkenin değeri kullanılır. Bu değere göre çağrı mekanizmasında, resmi parametre karşılık gelen bağımsız değişkenin değerine başlatılan yerel bir değişkendir. Referansa göre çağrı mekanizmasında argüman bir değişkendir ve değişkenin tamamı kullanılır. Referansa göre çağrı mekanizmasında, argüman değişkeni formal parametresi ile değiştirilir, böylece formal parametrede yapılan herhangi bir değişiklik aslında argüman değişkeninde yapılır.

Kaynak: Mutlak C ++, Walter Savitch

Yani,

resim açıklamasını buraya girin


6

Terimler biraz değiştirilebilir. Diğer yanıtlar açıklanan fark daha uygun şartlar ile ifade edilir biçimsel parametre işlevi ve vücut içinde kullanılan adı parametre çağrı yerinde sağlanan değer ( resmi bağımsız değişken ve bağımsız değişkeni de yaygındır).

Ayrıca unutmayın, matematik terimi argümanı çok daha yaygındır ve parametre (gerçi genellikle oldukça farklı bir şey ifade parametre bir parametrik denkleminde temelde argüman iki veya daha fazla fonksiyonlara).


Fakat daha sonra , en azından karmaşık analizde, argüman terimi de aşırı yüklenir.
Mekanik salyangoz

1
Çekişmeli olduklarına dair çekişmeli bir parametre var. ;)
Joker

5

Bağımsız değişken, bir parametrenin somutlaştırılmasıdır.


4
Uzun zaman önce başka bir programcı tarafından bana verilen açıklama ve bunun çok açık ve özlü olduğunu düşündüm. Bu nedenle buraya gönderdim.
Paul Richter

4

Evet! Parametreler ve Bağımsız Değişkenler, aşağıdaki gibi kolayca açıklanabilecek farklı anlamlara sahiptir:

İşlev Parametreleri , işlev tanımında listelenen adlardır.

İşlev Bağımsız Değişkenleri işleve iletilen (ve alınan) gerçek değerlerdir.


4

Kodsuz Basit Açıklamalar

"Parametre" çok genel, geniş bir şeydir, ama "argüman: çok spesifik, somut bir şeydir. Bu en iyi şekilde günlük örneklerle açıklanabilir:

Örnek 1: Otomatik Satış Makineleri - Para parametredir, $ 2.00 bağımsız değişkendir

Çoğu makine girdi alır ve çıktı verir. Örneğin bir satış makinesi girdi olarak alır: para ve çıktı olarak: gazlı içecekler çıktı olarak. Bu durumda, parametre olarak kabul eder: para.

O zaman argüman nedir? Makineye $ 2.00 koyarsam, argüman: $ 2.00 - kullanılan çok spesifik girdidir.

Örnek 2: Arabalar - Benzin parametredir

Bir arabayı düşünelim: benzin (kurşunsuz benzin) girdi olarak kabul ediyorlar. Bu makinelerin şu tür parametreleri kabul ettiği söylenebilir : benzin. Argüman arabama koyduğum kesin ve somut girdidir. Örneğin, benim durumumda, argüman şöyle: 40 litre kurşunsuz benzin / benzin.

Örnek 3 - Bağımsız Değişkenlerin Ayrıntılandırılması

Bağımsız değişken, girdinin özel ve özel bir örneğidir. Makinemin bir kişiyi girdi olarak aldığını ve onları yalancı olmayan birine dönüştürdüğünü varsayalım.

O zaman bir tartışma nedir? Argüman, aslında makineye konan belirli kişi olacaktır. örneğin, Colin Powell makineye konulursa, argüman Colin Powell olur.

Yani parametre soyut bir kavram olarak bir kişinin olurdu, ama argüman her zaman olacağını belirli kişi bir ile belirli isim makinesinin içine konur. Argüman spesifik ve somuttur.

Aradaki fark bu. Basit.

Şaşkın?

Bir yorum gönderin, açıklamayı düzeltirim.


3

Veya daha da basit ...

Bağımsız Değişkenler!

Parametreler bitti!


3

İkisinin de C kullanımında fazla bir farkı yoktur, her iki terim de pratikte kullanılır. Çoğunlukla argümanlar genellikle işlevlerle birlikte kullanılır. Function call deyimi ile iletilen değere bağımsız değişken denir ve parametre, işlev tanımındaki (resmi parametre olarak adlandırılır) değeri kopyalayan değişken olacaktır.

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; 
}

Yukarıdaki kod num1ve num2resmi parametreler ve ave bgerçek bağımsız değişkenlerdir.


3

Oracle'ın Java öğreticileri bu ayrımı bu şekilde tanımlar: "Parametreler, bir yöntem bildirimindeki değişkenler listesini ifade eder. Bağımsız değişkenler, yöntem çağrıldığında geçirilen gerçek değerlerdir. Bir yöntemi çağırdığınızda, kullanılan argümanlar bildirimin parametreleriyle eşleşmelidir tür ve sırada. "

Parametreler ve argümanlar hakkında daha ayrıntılı bir tartışma: https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html


3

Mantıken konuşursak, aslında aynı şeyden bahsediyoruz. Ama bence bu ikilemi çözmek için basit bir metafor yararlı olacaktır.

Metaforlara çeşitli bağlantı noktaları denilebiliyorsa, bunları duvardaki fiş noktalarına eşitleyebiliriz. Bu durumda parametreleri ve bağımsız değişkenleri şu şekilde değerlendirebiliriz;

Parametreler , çeşitli farklı şekiller alabilen fiş noktasının soketleridir. Ancak sadece belirli fiş türleri bunlara uygundur.
Argümanlar , bazı ekipmanları etkinleştirmek için fiş noktalarına / soketlerine takılacak gerçek fişler olacaktır.


3

Parametre işlev tanımındaki bir değişkendir
Bağımsız değişken parametrenin bir değeridir

<?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);

?>

3

Genel olarak konuşursak, parametre ve argüman terimleri birbirinin yerine kullanılır ve bir fonksiyona aktarılan bilgi anlamına gelir.

Yine de, bir işlevin bakış açısından:

  • Bir parametre işlev tanımında parantez içinde belirtilen değişkendir.
  • Bağımsız değişken , çağrıldığında işleve gönderilen değerdir.

2

Java yöntemini (işlev) oluşturduğumuzda, böyle bir yöntem ..

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

Parantez içinde bunlar parametrelerdir ve method (fonksiyon) dediğimizde bu parametrenin argüman olarak adlandırılan değerini iletiriz.


2

Joseph'in Alabahari kitabına göre "Kısaca C #" (C # 7.0, s. 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
}

Bazı insan dillerinde (afaik İtalyanca, Rusça) eş anlamlılar bu terimler için yaygın olarak kullanılmaktadır.

  • parametre = resmi parametre
  • argument = gerçek parametre

Üniversitemde profesörler her iki ismi de kullanıyor.


0

Parametreler bir işlev tarafından alınan değişkenlerdir, bu nedenle işlev bildiriminde görünürler. Veri türleriyle değişken adını içerirler. Bağımsız değişkenler, başka bir işleve iletilen gerçek değerlerdir. bu yüzden onları işlev çağrısında görebiliriz. Onlar sadece veri türleri olmadan değerlerdir


0

Bir fonksiyonun resmi parametreleri fonksiyon bildiriminde listelenir ve fonksiyon tanımının gövdesinde kullanılır. Resmi bir parametre (herhangi bir türden), işlev çağrıldığında bir şeyle doldurulmuş bir tür boş veya yer tutucudur.

Bağımsız değişken , resmi bir parametreyi doldurmak için kullanılan bir şeydir. Bir işlev çağrısını yazdığınızda, bağımsız değişkenler işlev adından sonra parantez içinde listelenir. İşlev çağrısı yürütüldüğünde, resmi parametreler için argümanlar eklenir.

Değere göre çağrı ve referansa göre çağrı terimleri, takma işleminde kullanılan mekanizmayı ifade eder. Call-by-value yönteminde yalnızca bağımsız değişkenin değeri kullanılır. Bu değere göre çağrı mekanizmasında, resmi parametre karşılık gelen bağımsız değişkenin değerine başlatılan yerel bir değişkendir. Referansa göre çağrı mekanizmasında argüman bir değişkendir ve değişkenin tamamı kullanılır. Referansa göre çağrı mekanizmasında, argüman değişkeni formal parametresi ile değiştirilir, böylece formal parametrede yapılan herhangi bir değişiklik aslında argüman değişkeninde yapılır.


0

Parametreler , işlevin kullanması için bir işleve iletilen verileri depolamak için kullanılan değişkenlerdir. Bağımsız değişkenler çağrıldığında bir işleve iletilen gerçek verilerdir:

// 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);

0

Bunu düşündüm ve önceki cevabımın yanlış olduğunu fark ettim. İşte çok daha iyi bir tanım

{ Bir karton kutu düşünün: Bir paket sosis bağlantısı: Ve bir hizmetçi } Bunlar, şu hazırlık için gerekli olan bir Fonksiyonun unsurlarını temsil eder: (herhangi bir ad kullanın: Yemek pişirme fonksiyonumun adıdır).

Hizmetçi bir yöntemdir.

(Bunu __call_ veya bu sormalıdır yöntemi (kahvaltı yapma eylemi bir make kahvaltıya) Fonksiyonu denir Pişirme ) _

Yumurta ve sosis Parametrelerdir:

(çünkü yumurta sayısı ve yemek istediğiniz sosis sayısı __değişken_'dir.) _

Kararınız bir Argüman:

Yemek yaptığınız seçilen yumurta ve / veya sosis sayısının __Value_ değerini temsil eder ._

{ Anımsatıcı }

_ "Hizmetçiyi aradığınızda ve kahvaltı yapmasını istediğinde, kaç tane yumurta ve sosis yemeniz gerektiği konusunda sizinle __argues_. Kolesterolünüzden endişe ediyor" __

(Bu durumda bağımsız değişkenler, beyan ettiğiniz ve İşlevinize geçmeye karar verdiğiniz Parametrelerin kombinasyonu için değerlerdir)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.