Escreva um programa completo em C++ com duas funções alternativas especificadas a seguir, cada uma simplesmente triplicando a variável count definida em main. Depois, compare as duas técnicas. Essas duas funções são:

a) a função tripleByValue, que passa uma cópia de count por valor, triplica a cópia e retorna o novo valor, e

b) a função tripleByReference, que passa count por referência por meio de um parâmetro de referência e triplica o valor original de count por meio de seu alias (ou seja, o parâmetro de referência).

Passo 1

Fala Galera!!! Tudo certo? Espero que sim!! Bora para mais um exercício.

Vamos escrever um programa que calcular o valor triplo de um numero utilizando esse valor como referências em duas funções separadas.

A primeira função é a função tripleByValue, que passa uma cópia de count por valor, triplica a cópia e retorna o novo valor. A segunda é a função tripleByReference, que passa count por referência por meio de um parâmetro de referência e triplica o valor original de count por meio do parâmetro de referência.

Passo 2

Primeiro vamos escrever as duas funções para depois chamar elas dentro da função principal main() que irá pedir para o usuário inserir os valores para ser triplicado. A função tripleByValue ficará da seguinte forma:

//função tripleByValue

int tripleByValue (int countCopy){

return countCopy *=3;

}

E a função tripleByReference:

//função tripleByReference

void tripleByReference( int &paramRef){

paramRef *= 3;

}

Passo 3

Agora vamos escrever o restante do nosso código que começará declarando o arquivo de cabeçalho, o uso dos namespace e os protótipos das funções. Em seguida iremos chamar as duas funções criadas dentro do main() e exibir o resultados dos valores. O código ficará da seguinte forma:

//arquivo de cabeçalho

#include

// namespace

using std::cout;

using std::endl;

using std::cin;

// protótipo das funções

int tripleByValue( int );

void tripleByReference( int &);

int main(){

// declaração das variaveis

int count, &countRef = count;

//prompt para inserir os valores

cout

cin >> count;

cout

cout

cout

cout

tripleByReference(countRef);

cout

return 0 ;

}

Passo 4

Agora vamos analisar a saída do nosso programa, inserindo o valor 10 como entrada

Fazendo a comparação entre as duas funções, podemos chegar as seguintes conclusões:

Chama por valor (tripleByValue):

1) Uma nova localização da memória é criada para utilização dentro da sub-rotina e a memória é liberada assim que a sub-rotina termina.

2) As alterações à variável não são afetadas fora da sub-rotina

3) O compilador obtém a cópia da variável e, portanto, qualquer alteração feita no valor em uma função não reflete de volta

Chamada por referência (tripleByReference):

1) O ponteiro é passado para o local de memória

2) Alterações na variável enquanto na sub-rotina afetam a variável fora da sub-rotina

3) o compilador trabalha na variável original e, portanto, as alterações no valor refletem de volta

E assim finalizamos nosso exercício galera!!! Até o próximo.

Resposta

Código completo: