Qual é a diferença entre um argumento e um parâmetro?

718

Ao falar verbalmente sobre métodos, nunca tenho certeza se deve usar a palavra argumento ou parâmetro ou qualquer outra coisa. De qualquer maneira, as outras pessoas sabem o que quero dizer, mas o que é correto e qual é a história dos termos?

Sou programador em C #, mas também me pergunto se as pessoas usam termos diferentes em diferentes idiomas.

Para o registro, eu sou autodidata sem formação em Ciência da Computação. (Por favor, não me diga para ler o Código Completo, porque estou pedindo isso em benefício de outras pessoas que ainda não têm uma cópia do maravilhoso livro de Steve McConnell .)

Sumário

O consenso geral parece ser aceitável usar esses termos de forma intercambiável em um ambiente de equipe. Exceto, talvez, quando você estiver definindo a terminologia precisa; então você também pode usar " argumento / parâmetro formal " e " argumento / parâmetro real " para desambiguar.

rohancragg
fonte
9
Eu os uso de forma intercambiável .. ninguém riu de mim ainda .. 'essa função tem 4 argumentos .. essa função usa 4 parâmetros.' parece o mesmo.
Gishu 01/10/08
54
Não há problema em usá-los de forma intercambiável, exceto quando você está tentando descrever como os parâmetros funcionam e como os argumentos são transmitidos etc. Nesse ponto, a terminologia precisa (que pode ser difícil expressar algumas vezes) é útil.
Jon Skeet
2
Há pelo menos duas versões não fechadas e independentes de idioma desta pergunta: stackoverflow.com/questions/3176310/… e stackoverflow.com/questions/427653/arguments-or-parameters . Há também outra versão em C # desta pergunta; Eu solicitei uma mesclagem.
Pops)
1
Que bom que você mencionou Steve McConnell. Eu conheci mais um cara que conhece habilidades de software junto com Robert C. Martin.
RBT
3
Acho que, independentemente de você estar em um ambiente formal ou não, você deve se esforçar para usar os termos corretos. Eu acho que é bem simples. Quando você chama um método, passa argumentos. Ao definir o método, você está definindo os parâmetros que receberão os argumentos da chamada de método / função. argumento - uma variável independente associada a uma função e determinando o valor da função. parâmetro - um limite ou limite que define o escopo de um processo ou atividade em particular.
Jsquaredz

Respostas:

906

Um parâmetro é uma variável em uma definição de método. Quando um método é chamado, os argumentos são os dados que você passa para os parâmetros do método.

public void MyMethod(string myParam) { }

...

string myArg1 = "this is my argument";
myClass.MyMethod(myArg1);
Torbjörn Hansson
fonte
196
Um mnemônico aliterativo que pode ajudar: Os argumentos são reais. ;)
thSoft 24/10
8
A resposta menciona que "Parâmetro é uma variável em uma definição de método", mas talvez seja melhor dizer "declaração de método" [se alguém estiver fazendo uma distinção entre 'declaração' e 'definição']
nandan
110
"Você define parâmetros e cria argumentos".
Greg M. Krsak
5
parâmetro => quando definimos a função, argumento => quando chamamos para esse método. (
Corrija-me se estiver
7
Parâmetros são os nomes. Argumentos são os valores.
Aziz Alto
327

Parâmetro é variável na declaração de função.

Argumento é o valor real dessa variável que é passada para a função.

Rinat Abdullin
fonte
7
Estas línguas geralmente se referem à lista de argumentos / parâmetro passado para um método como *argsou ARGVe não *params:-)
karatedog
6
*paramsseria o nome de uma variável que deve conter os nomes dos parâmetros (talvez usados ​​para introspecção).
TRSs
6
@karatedog E isso está completamente de acordo com essa distinção, na verdade. Os parâmetros são nomeados no momento da declaração, os argumentos são conhecidos apenas no momento da chamada. A sintaxe *argsdeclara um parâmetro args cujo valor é uma lista (nome e tipo conhecido no momento da declaração) dos argumentos (cujo número é conhecido apenas no momento da chamada).
Emil Lundberg
72

Já existe uma entrada da Wikipedia sobre o assunto (consulte Parâmetro ) que define e distingue os termos parâmetro e argumento . Em resumo, um parâmetro faz parte da função / procedimento / assinatura do método e um argumento é o valor real fornecido no tempo de execução e / ou no site de chamada do parâmetro.

O artigo da Wikipedia também afirma que os dois termos são frequentemente usados ​​como sinônimos (especialmente quando se pensa em código informalmente):

Embora os parâmetros também sejam comumente referidos como argumentos, os argumentos são mais apropriadamente considerados como os valores ou referências reais atribuídos às variáveis ​​de parâmetro quando a sub-rotina é chamada em tempo de execução.

Dado o exemplo de função a seguir em C, que adiciona dois números inteiros xe yseria referido como seus parâmetros:

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

Em um site de chamadas usando add, como no exemplo mostrado abaixo, 123 e 456 seriam chamados de argumentos da chamada.

int result = add(123, 456);

Além disso, algumas especificações de linguagem (ou documentação formal) optam por usar parâmetros ou argumentos exclusivamente e usam adjetivos como formal e real para desambiguar os dois casos. Por exemplo, a documentação do C / C ++ geralmente se refere a parâmetros de função como argumentos formais e argumentos de chamada de função como argumentos reais . Para um exemplo, consulte " Argumentos formais e reais " na Referência de linguagem do Visual C ++ .

Atif Aziz
fonte
+1 para explicar como eles são comumente usados, bem como suas definições formais, e também para mencionar o uso comum de argumentos / parâmetros "formais" e "reais" para distingui-los sem ambiguidade.
Caracol mecânico
Essa é uma ótima explicação, mas é quase impossível entender em comparação com a simplicidade do conceito. Um parâmetro é o que é aceito, um argumento é o que é chamado. É uma rua de mão única.
Ihodonald
69

Simples:

  • P ARAMETER → P LACEHOLDER (Isso significa que um espaço reservado pertence à nomeação da função e é usado no corpo da função)
  • A RGUMENT → A CTUAL VALUE (Isso significa um valor real que é passado pela chamada de função)
Duc Filan
fonte
3
Bom gancho de memória
Tanckom
29

Parâmetro é variável na declaração de função.

Argumento é o valor real dessa variável que é passada para a função. insira a descrição da imagem aqui

user6864832
fonte
16

O uso dos termos parâmetros e argumentos tem sido mal utilizado entre programadores e até autores. Ao lidar com métodos, o parâmetro termo é usado para identificar os espaços reservados na assinatura do método, enquanto os argumentos do termo são os valores reais que você passa para o método.

MCSD Cerfification Toolkit (Exame 70-483) Programação em C # , 1ª edição, Wrox, 2013

Cenário do caso real

// 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);
ZenLulz
fonte
10

Na edição, muitas vezes fico desanimado com o modo como as pessoas esquecem: as linguagens de estrutura são baseadas em linguagens naturais.

Em inglês

Um "parâmetro" é um espaço reservado. Eles definem o formato da resposta, no idioma falado. Por definição, é parte da chamada, limitando a resposta.

Um "argumento" é uma posição que está sendo considerada. Você argumenta sua opinião: considera uma discussão.

Principal diferença

O papel temático de um argumento é agente. O papel temático do parâmetro é destinatário.

Interações

Pense no argumento como a parte masculina, tornando o parâmetro a parte feminina. O argumento entra no parâmetro

Uso

Um parâmetro é geralmente usado em definições. Um argumento é geralmente usado em invocações.

Questões

Termine a frase para torná-la menos dissonante.

(A) Falando de uma definição:

  1. Que argumento será usado []?
  2. O que [] esse parâmetro []?

(B) Falando de uma invocação:

  1. Qual parâmetro você usará []?
  2. O que [] será [] esse parâmetro?

Respostas

(UMA)

  1. on / in / against / com este parâmetro
  2. argumentos

(B)

  1. e quais são alguns argumentos de exemplo
  2. argumento (s) ... usado em / em / contra / com

Sobreposições

Como você pode imaginar, depois de responder: na linguagem falada, essas palavras às vezes produzem respostas idênticas!

Então, como regra:

  • Geralmente, se alguém deseja informações sobre parâmetros, deseja saber mais sobre o tipo, o nome da variável etc. Eles podem ficar confusos se você der apenas argumentos de exemplo.

    • Geralmente, se alguém deseja informações sobre argumentos, deseja saber qual valor você passou para uma função ou seu (s) parâmetro (s).
Wolfpack'08
fonte
8

Este exemplo pode ajudar.

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;
}
Saurabh Rana
fonte
8

Lembre-se sempre de que: - Os argumentos são passados ​​enquanto os parâmetros são recebidos.

HEMANT GIRI
fonte
8

Os parâmetros de uma função / método descrevem para você os valores que ela usa para calcular seu resultado.

Os argumentos de uma função são os valores atribuídos a esses parâmetros durante uma chamada específica da função / método.

Johan
fonte
7

Ou pode ser ainda mais simples lembrar assim, no caso de argumentos opcionais para um método:

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

}

parameteré o parâmetro, seu valor, "argument"é o argumento :)

nawfal
fonte
7

Digamos que você é uma companhia aérea. Você constrói um avião. Você instala assentos nele. Em seguida, você enche o avião com passageiros e o envia para algum lugar. Os passageiros (ou melhor, alguma versão espaço-temporalmente alterada) desembarcam. No dia seguinte, você reutiliza o mesmo avião e os mesmos assentos, mas desta vez com passageiros diferentes.

O avião é sua função.

Os parâmetros são os assentos.

Os argumentos são os passageiros que vão nesses lugares.

XML
fonte
7

Parâmetros e argumentos

Todos os termos diferentes que têm a ver com parâmetros e argumentos podem ser confusos. No entanto, se você tiver alguns pontos simples em mente, poderá lidar facilmente com esses termos.

  1. Os parâmetros formais para uma função são listados na declaração da função e são usados ​​no corpo da definição da função. Um parâmetro formal (de qualquer tipo) é um tipo de espaço em branco ou espaço reservado preenchido com alguma coisa quando a função é chamada.
  2. Um argumento é algo que é usado para preencher um parâmetro formal. Quando você anota uma chamada de função, os argumentos são listados entre parênteses após o nome da função. Quando a chamada de função é executada, os argumentos são plugados para os parâmetros formais.
  3. Os termos chamada por valor e chamada por referência referem - se ao mecanismo usado no processo de plug-in. No método de chamada por valor, apenas o valor do argumento é usado. Nesse mecanismo de chamada por valor, o parâmetro formal é uma variável local que é inicializada com o valor do argumento correspondente. No mecanismo de chamada por referência, o argumento é uma variável e a variável inteira é usada. No mecanismo de chamada por referência, a variável argumento é substituída pelo parâmetro formal, para que qualquer alteração feita no parâmetro formal seja realmente feita na variável argumento.

Fonte: C ++ absoluto, Walter Savitch

Isso é,

insira a descrição da imagem aqui

snr
fonte
6

Os termos são um tanto intercambiáveis. A distinção descrito em outras respostas é mais apropriadamente expressa com os termos parâmetro formal para o nome usado dentro do corpo da função e parâmetro para o valor fornecido no site da chamada ( argumento formal e argumento também são comuns).

Observe também que, em matemática, o termo argumento é muito mais comum e parâmetro geralmente significa algo bem diferente (embora o parâmetro em uma equação paramétrica seja essencialmente o argumento para duas ou mais funções).

Marcelo Cantos
fonte
Mas, novamente, o termo argumento também está sobrecarregado, pelo menos em análises complexas.
Caracol mecânico
1
Eu tenho um parâmetro com a afirmação de que eles são intercambiáveis. ;)
Curinga
5

Um argumento é uma instanciação de um parâmetro.

Paul Richter
fonte
4
É a explicação que me foi dada por outro programador há muito tempo e achei que era muito clara e concisa. Eu postei aqui por esse motivo.
Paul Richter
4

Sim! Parâmetros e argumentos têm significados diferentes, que podem ser facilmente explicados da seguinte maneira:

Parâmetros da função são os nomes listados na definição da função.

Argumentos da função são os valores reais passados ​​(e recebidos pela) pela função.

anoNewb
fonte
4

Explicações simples sem código

Um "parâmetro" é uma coisa muito geral e ampla, mas um "argumento: é uma coisa muito específica e concreta. Isso é melhor ilustrado através de exemplos cotidianos:

Exemplo 1: Máquinas de venda automática - Dinheiro é o parâmetro, $ 2,00 é o argumento

A maioria das máquinas recebe uma entrada e retorna uma saída. Por exemplo, uma máquina de venda automática usa como entrada: dinheiro e retorna: bebidas com gás como saída. Nesse caso em particular, ele aceita como parâmetro: dinheiro.

Qual é então o argumento? Bem, se eu colocar $ 2,00 na máquina, o argumento é: $ 2,00 - é a entrada muito específica usada.

Exemplo 2: Carros - Gasolina é o parâmetro

Vamos considerar um carro: eles aceitam gasolina (gasolina sem chumbo) como insumo. Pode-se dizer que essas máquinas aceitam parâmetros do tipo: gasolina. O argumento seria a informação exata e concreta que coloquei no meu carro. Por exemplo, no meu caso, o argumento seria: 40 litros de gasolina sem chumbo / gasolina.

Exemplo 3 - Elaboração de Argumentos

Um argumento é um exemplo particular e específico de uma entrada. Suponha que minha máquina pegue uma pessoa como entrada e a transforme em alguém que não é mentiroso.

O que é então um argumento? O argumento será a pessoa em particular que é realmente colocada na máquina. por exemplo, se Colin Powell for colocado na máquina, o argumento seria Colin Powell.

Portanto, o parâmetro seria uma pessoa como um conceito abstrato, mas o argumento sempre seria uma pessoa em particular com um nome específico que é colocado na máquina. O argumento é específico e concreto.

Essa é a diferença. Simples.

Confuso?

Poste um comentário e eu solucionarei a explicação.

BKSpurgeon
fonte
3

Ou ainda mais simples ...

Argumentos em!

Parâmetros fora!

jpillora
fonte
3

Ambos não têm muita diferença no uso em C, ambos os termos são usados ​​na prática. Os argumentos são geralmente usados ​​com funções. O valor passado com a instrução de chamada de função é chamado de argumento, e o parâmetro seria a variável que copia o valor na definição de função (chamada como parâmetro formal).

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

No código acima num1e num2são parâmetros formais e ae bsão argumentos reais.

Bevin Sunth
fonte
3

Os tutoriais Java da Oracle definem essa distinção da seguinte maneira: "Parâmetros se referem à lista de variáveis ​​em uma declaração de método. Argumentos são os valores reais passados ​​quando o método é chamado. Quando você invoca um método, os argumentos usados ​​devem corresponder aos parâmetros da declaração em tipo e ordem ".

Uma discussão mais detalhada sobre parâmetros e argumentos: https://docs.oracle.com/javase/tutorial/java/javaOO/arguments.html

J. Clarke
fonte
3

Logicamente falando, na verdade estamos falando da mesma coisa. Mas acho que uma simples metáfora seria útil para resolver esse dilema.

Se as metáforas puderem ser chamadas de vários pontos de conexão, podemos equipará-las a pontos na parede. Nesse caso, podemos considerar parâmetros e argumentos da seguinte maneira;

Parâmetros são os soquetes do ponto de encaixe que podem assumir várias formas diferentes. Mas apenas certos tipos de plugues se encaixam neles.
Os argumentos serão os plugues reais que seriam conectados aos pontos / soquetes para ativar determinados equipamentos.

Nuwan Jayawardene
fonte
3

Parâmetro é uma variável em uma definição de função
Argumento é um valor de parâmetro

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

?>
antelove
fonte
3

De um modo geral, os termos parâmetro e argumento são usados ​​alternadamente para significar informações que são passadas para uma função.

No entanto, da perspectiva de uma função:

  • Um parâmetro é a variável listada entre parênteses na definição da função.
  • Um argumento é o valor que é enviado para a função quando é chamada.
Tiago Martins Peres
fonte
2

Quando criamos o método (função) em Java, o método é o seguinte.

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

Entre parênteses, esses são os parâmetros e, quando chamamos o método (function), passamos o valor desse parâmetro, que é chamado de argumento.

Summra Umair
fonte
2

De acordo com o livro de Joseph Alabahari "C # em poucas palavras" (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
}

Em algumas línguas humanas (em italiano, russo), os sinônimos são amplamente usados ​​para esses termos.

  • parâmetro = parâmetro formal
  • argumento = parâmetro atual

Na minha universidade, os professores usam os dois tipos de nomes.

Burzhuy
fonte
0

Os parâmetros são as variáveis ​​recebidas por uma função e, portanto, são visíveis na declaração da função. Eles contêm o nome da variável com seu tipo de dados. Argumentos são valores reais que são passados ​​para outra função. é por isso que podemos vê-los na chamada de função. Eles são apenas valores sem o tipo de dados

shreesh katti
fonte
0

Os parâmetros formais para uma função estão listados na declaração da função e são usados ​​no corpo da definição da função. Um parâmetro formal (de qualquer tipo) é um tipo de espaço em branco ou espaço reservado preenchido com alguma coisa quando a função é chamada.

Um argumento é algo que é usado para preencher um parâmetro formal. Quando você anota uma chamada de função, os argumentos são listados entre parênteses após o nome da função. Quando a chamada de função é executada, os argumentos são plugados para os parâmetros formais.

Os termos chamada por valor e chamada por referência referem - se ao mecanismo usado no processo de plug-in. No método de chamada por valor, apenas o valor do argumento é usado. Nesse mecanismo de chamada por valor, o parâmetro formal é uma variável local que é inicializada com o valor do argumento correspondente. No mecanismo de chamada por referência, o argumento é uma variável e a variável inteira é usada. No mecanismo de chamada por referência, a variável argumento é substituída pelo parâmetro formal, para que qualquer alteração feita no parâmetro formal seja realmente feita na variável argumento.

Mahm00d
fonte
0

Parâmetros são variáveis ​​que são usadas para armazenar os dados que são passados ​​para uma função para a função usar. Argumentos são os dados reais que são passados ​​para uma função quando são invocados:

// 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);
Rejaul Karim
fonte
0

Eu pensei sobre isso e percebi que minha resposta anterior estava errada. Aqui está uma definição muito melhor

{ Imagine uma caixa de ovos: um pacote de salsichas: e uma empregada } Estes representam elementos de uma função necessária para a preparação chamada: (use qualquer nome: digamos que cozinhar é o nome da minha função).

Uma empregada doméstica é um método.

(Você deve telefonar ou pedir a esse método para fazer o café da manhã) (O ato de fazer o café da manhã é uma Função chamada Cozinhar ) _

Ovos e salsichas são parâmetros:

(porque o número de ovos e o número de salsichas que você deseja comer são __variáveis_.) _

Sua decisão é um argumento:

Representa o __Valor_ do número escolhido de ovos e / ou salsichas que você está cozinhando ._

{ Mnemônico }

_ "Quando você liga para a empregada e pede que ela faça o café da manhã, ela discute com você quantos ovos e salsichas você deve comer. Ela está preocupada com o seu colesterol" __

(Argumentos, então, são os valores para a combinação de Parâmetros que você declarou e decidiu passar para sua Função)

marcusjetson
fonte