Ajude nosso projeto a se manter online.

Enviando dados para Funções em C++ - Parâmetros e Argumentos

Neste tutorial, vamos aprender como enviar dados para as funções, em linguagem de programação C++.

Enviando Dados para Funções

No tutorial passado, de nosso curso de C++, aprendemos como as funções retornam informações para quem as invocou, através do comando return.

As funções podem receber informações através do uso de parâmetros, que é uma variável especial, declarada no cabeçalho da função, que ficará responsável por armazenar os valores que serão passados para estas funções. Esses valores são os argumentos.

Para usarmos os argumentos (ou seja, passarmos algum valor para funções trabalharem), devemos informar a lista de parâmetros, dentro dos parêntesis da declaração da função.

Por exemplo, uma função que retorna um inteiro, recebe um inteiro e se chama func, se declara assim:

  • int func(int var) { ... }


Para invocar, passando o número 2112, por exemplo, fazemos:

  • func(2112);


var é o parâmetro, já 2112 é um argumento.

Agora uma função que não retorna nada, se chama func2 e recebe um inteiro, um float e um booleano:

  • void func2(int var, float num, bool status) { ... }


Se quisermos passar o inteiro 1, o float 21.12 e o booleano true, para dentro desta função, fazemos:

  • func2(1, 21.12, true);


Lista de parâmetros: var, num e status
Argumentos (valores): 1, 21.12 e true

Veja a ordem: um inteiro, um float e um booleano! Respeite a ordem da lista de parâmetros do cabeçalho da função!

Exemplo de parâmetros e argumentos em C++

Vamos criar uma função que recebe um número qualquer, e retorna ele ao quadrado:
#include <iostream>
using namespace std;

float quadrado(float num)
{
    return num*num;
}

int main()
{
    float var;

    cout<<"Numero para elevar ao quadrado: ";
    cin >> var;

    cout<<var<<"*"<<var<<" = " << quadrado(var)<<endl;
}
Note que passamos a variável var, que é um float, para a função quadrado(), que recebe um float como argumento.

Embora tenhamos passado a variável var, o que acontece na verdade, por debaixo dos panos, é que passamos um número, um valor, que foi digitado pelo usuário.

Se passarmos var = 5, o que vai pra função é 5.
É como se tivéssemos feito: quadrado(5);

Dentro da função, esse valor é armazzenado no parâmetro num, ok?
A função não 'vê' a variável var, nem sabe de sua existência, só pega seu valor e copia para a variável float num.

Parâmetros e Argumentos em C++

Vamos agora criar uma função que recebe um número, eleva ele ao cubo e retorna esse valor.
#include <iostream>
using namespace std;

float cubo(float num)
{
    num = num*num*num;

    return num;
}

int main()
{
    float num;

    cout<<"Numero para elevar ao cubo: ";
    cin >> num;

    cout<<"Numero informado: "<<num<<endl;
    cout<<"Cubo: "<< cubo(num)<<endl;
    cout<<"Valor de num: "<<num<<endl;
}
Fizemos um teste nesse exemplo.
O parâmetro é num, dentro da função.
Ao invocar a função, também passar uma variável de nome num.

Dentro da função, alteramos o valor de num.
Antes, era num, depois passa a ser (num*num*num), e retornamos esse novo valor de num.

Na main(), vamos exibir o número que o usuário digitar (num), o cubo (invocando a função cubo() ), e depois exibimos novamente o valor de num.

Para num=4, o resultado é:
Como passar um argumento em uma função no C++

Note que o valor de num foi alterado SOMENTE dentro da função!
Quando passamos um argumento pra uma função, a função faz uma cópia dele e atribui ao parâmetro específico. Dentro da função, você alterou o valor do parâmetro, a variável num original, não é alterada!

Ah...agora você já consegue entender um pouco mais a main():
int main(){
...
   return 0;
}

Ou seja, ela é uma função que não recebe nenhum argumento (pois não tem parâmetro) e retorna um inteiro, no caso, ela retorna 0.

Dois adendos:

  1. Universalmente, quando uma função retorna 0, é porque deu tudo certo, tudo ok. Quando seu código funcionar ok, deverá retorna 0
  2. Nesse caso específico, a main() não tem parâmetros, mas tem versões dela recebendo argumentos sim, veremos mais adiante em nosso curso

Nenhum comentário:

Postar um comentário