Exercícios Resolvidos de Templates

Ver Teoria

Enunciado

Desenvolva um template que troque o valor de duas variáveis.

Passo 1

Vamos nessa!

Essa é uma questão simples e direta: construir um template para efetuar uma função de troca.

Lembre-se, uma função de troca deve receber o endereço de memória de duas variáveis, e então trocar os conteúdos existentes em cada endereço.

Então vamos começar com o cabeçalho da questão:

Passo 2

Vamos criar o template da função. Para criar um template a gente usa estrura:

t e m p l a t e < t y p e n a m e   N o m e T i p o > t i p o D a F u n c a o   n o m e D a F u n c a o (   p a r a m e t r o s   )

Vamos usar o nome T para o nosso tipo, e o nome da função será t r o c a . A função não precisa de retorno, então o tipo será v o i d . Como parâmetros vamos receber duas variáveis por referência, para ter acesso ao endereço de memória.

Importante: os dois parâmetros que vamos receber devem usar o mesmo tipo genérico T ! Pois se as variáveis forem de tipos diferentes não vai ser possível executar a troca de valores, pois será necessário efetuar conversões, o que resulta em perda de dados!

Agora vamos desenvolver o algoritmo da função.

Primeiro vamos declarar uma variável temporária que vai segurar o valor atual de a .

Depois, sobrescrevemos o valor atual de a com o valor de b .

E pra finalizar, sobrescrevemos b com o valor antigo a que está guardado na variável temporária.

Detalhe, como os valores de a e b foram passados por referência, automaticamente as alterações realizadas dentro da função, serão refletidas nas variáveis que estão fora da função!

Passo 3

Show de bola! Agora é só executar a função!

Vamos declarar duas variáveis a e b com os valores 10 e 5 . E pra deixar bem legal, vamos imprimir o conteúdo dessas variáveis para o usuário.

Em seguida, vamos aplicar a função troca:

E imprimimos o resultado final:

E o resultado é:

Legal né! Lembrando que isso é um template. Então podemos usar variáveis de qualquer tipo e vamos obter um resultado semelhante!

Resposta