Você está na página 1de 23

ECT2303 – Linguagem de Programação

Aula 08 þ Funções III

Einstein Santos

UFRN

24 de agosto de 2018

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de agosto de 2018 1 / 23


Sumário

1 O operador unário de referência: &

2 Passagem por valor e passagem por referência

3 Valores default para os argumentos de uma função

4 Sobrecarga de funções

5 Exercícios

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de agosto de 2018 2 / 23


Sumário

1 O operador unário de referência: &

2 Passagem por valor e passagem por referência

3 Valores default para os argumentos de uma função

4 Sobrecarga de funções

5 Exercícios

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de agosto de 2018 3 / 23


O operador unário de referência: &
Definição

Referência é um outro nome para uma variável já existente.


Toda referência deve obrigatoriamente ser inicializada.

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de agosto de 2018 4 / 23


O operador unário de referência: &
Exemplo

1 int n ;
2
3 int & A = n ;
4
5 n = 5;
6
7 cout << A << endl ;
8
9 A = 8;
10
11 cout << n << endl ;

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de agosto de 2018 5 / 23


O operador unário de referência: &
Exemplo

1 int n ;
2
3 int & A = n ;
4
5 n = 5;
6
7 cout << A << endl ; // 5
8
9 A = 8;
10
11 cout << n << endl ; // 8

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de agosto de 2018 6 / 23


Sumário

1 O operador unário de referência: &

2 Passagem por valor e passagem por referência

3 Valores default para os argumentos de uma função

4 Sobrecarga de funções

5 Exercícios

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de agosto de 2018 7 / 23


Passagem por valor e passagem por referência
Passagem por valor – Definição

Quando argumentos são passados por valor, a função chamada cria


variáveis e copia nelas o valor dos argumentos passados.
Dessa forma, a função não tem acesso às variáveis originais da função
que a chamou.
Portanto, ela não poderá efetuar qualquer modificação nelas.

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de agosto de 2018 8 / 23


Passagem por valor e passagem por referência
Passagem por referência – Definição

Quando argumentos são passados por referência a função pode aces-


sar as variáveis da função que a chamou.
Esse mecanismo possibilita que uma função retorne mais de um valor
para a função que chama.
Os valores a serem retornados são colocados em referências de va-
riáveis da função chamadora.

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de agosto de 2018 9 / 23


Passagem por valor e passagem por referência
Exemplo – Enunciado

. Escreva um programa em C++ que utilize uma função que realize a


troca dos valores de duas variáveis e exiba os valores trocados na
função main.

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de agosto de 2018 10 / 23


Passagem por valor e passagem por referência
Exemplo – Implementação

1 # include < iostream >


2
3 using n a m e s p a c e std ;
4
5 void troca ( int & , int & ) ;
6
7 int main ()
8 {
1 void troca ( int & a , int & b )
9 int x , y ;
2 {
10
3 int aux ;
11 cout <<" Digite dois valores : " ;
4
12 cin >>x > > y ;
5 aux = a ;
13
6 a = b;
14 cout <<" x = " <<x <<" y = " <<y
7 b = aux ;
<< endl ;
8 }
15
16 troca (x , y ) ;
17
18 cout <<" x = " <<x <<" y = " <<y
<< endl ;
19
20 return 0;
21 }

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de agosto de 2018 11 / 23


Sumário

1 O operador unário de referência: &

2 Passagem por valor e passagem por referência

3 Valores default para os argumentos de uma função

4 Sobrecarga de funções

5 Exercícios

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de agosto de 2018 12 / 23


Valores default para os argumentos de uma função
Definição

Uma função pode ser chamada sem serem especificados nenhum de


seus argumentos.
O protótipo de uma função pode fornecer valores default para esses
argumentos não especificados.
Valores default podem ser especificados para um, alguns ou todos os
argumentos da função.
Se forem omitidos os argumentos correspondentes na chamada à fun-
ção, os valores default serão automaticamente usados.
Se os argumentos correspondentes forem especificados na chamada
à função, estes serão respeitados e usados.

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de agosto de 2018 13 / 23


Valores default para os argumentos de uma função
Exemplo

1 # include < iostream >


2
3 using n a m e s p a c e std ;
4
5 void linha ( int n =10 , char ch = ’* ’) ;
6
7 int main ()
8 { 1 void linha ( int n , char ch )
9 linha () ; 2 {
10 cout << endl ; 3 for ( int i =0; i < n ; i ++)
11 4 cout << ch ;
12 linha (15) ; 5 }
13 cout << endl ;
14
15 linha (20 , ’+ ’) ;
16 cout << endl ;
17
18 return 0;
19 }

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de agosto de 2018 14 / 23


Valores default para os argumentos de uma função
Exemplo

1 # include < iostream >


2
3 using n a m e s p a c e std ;
4
5 void linha ( int n =10 , char ch = ’* ’) ;
6
7 int main ()
8 { 1 void linha ( int n , char ch )
9 linha () ; // ********** 2 {
10 cout << endl ; 3 for ( int i =0; i < n ; i ++)
11 4 cout << ch ;
12 linha (15) ; // ******** ** ** * ** 5 }
13 cout << endl ;
14
15 linha (20 , ’+ ’) ; // + + + + + + + + + + + + + + + + + + + +
16 cout << endl ;
17
18 return 0;
19 }

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de agosto de 2018 15 / 23


Valores default para os argumentos de uma função
Observação

Obs.:
* Se um argumento for omitido, todos os subsequentes deverão ser.
* Após a primeira especificação com valor default, todos os parâmetros se-
guintes devem ser especificados com valores default.
Ex.:
1 linha ( , ’+ ’) ; // Erro
2
3 linha ( int n = 20 , char ch ) ; // Erro
4
5 linha ( int n , char ch = ’* ’) ; // Correto

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de agosto de 2018 16 / 23


Sumário

1 O operador unário de referência: &

2 Passagem por valor e passagem por referência

3 Valores default para os argumentos de uma função

4 Sobrecarga de funções

5 Exercícios

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de agosto de 2018 17 / 23


Sobrecarga de funções
Definição

Sobrecarregar funções significa criar uma família de funções com o


mesmo nome, mas com a lista de argumentos diferentes.
Funções sobrecarregadas devem ter a lista de argumentos diferentes
ou em número ou em tipo.

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de agosto de 2018 18 / 23


Sobrecarga de funções
Exemplo

1 # include < iostream >


2 1 int cubo ( int n )
3 using n a m e s p a c e std ; 2 {
4 3 return n * n * n ;
5 int cubo ( int ) ; 4 }
6 float cubo ( float ) ; 5
7 double cubo ( double ) ; 6 float cubo ( float n )
8 7 {
9 int main () 8 return n * n * n ;
10 { 9 }
11 cout << cubo (876) << endl ; 10
12 cout << cubo (12.34) << endl ; 11 double cubo ( double n )
13 cout << cubo ( double (4567.35) ) << endl ; 12 {
14 13 return n * n * n ;
15 return 0; 14 }
16 }

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de agosto de 2018 19 / 23


Sumário

1 O operador unário de referência: &

2 Passagem por valor e passagem por referência

3 Valores default para os argumentos de uma função

4 Sobrecarga de funções

5 Exercícios

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de agosto de 2018 20 / 23


Exercícios

1. Escreva um programa em C++ completo que utilize uma função que


calcule o produtório dos divisores de um número inteiro lido na função
main. O resultado deve ser exibido na tela na função main.
2. Reescreva o programa anterior acrescentando o cálculo e exibição do
somatório dos não divisores do número inteiro lido. Apenas uma fun-
ção auxiliar deve ser utilizada.

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de agosto de 2018 21 / 23


Exercícios
3. Para evitar erros de digitação em números de grande importância,
como código de uma conta bancária, geralmente se adiciona ao nú-
mero um dígito verificador. Por exemplo, o número 1841 é utilizado
normalmente como 18414, onde o 4 é o dígito verificador. Ele é calcu-
lado da seguinte forma:
1 Cada algarismo do número é multiplicado por um peso começando de
2 da direita para a esquerda. Para cada algarismo o peso é acrescido
de 1. Soma-se os produtos obtidos. Ex.: 1x5 + 8x4 + 4x3 + 1x2 = 51.
2 Calcula-se o resto da divisão desta soma por 11. Ex.: 51%11 = 7.
3 Subtrai-se de 11 o resto obtido. Ex.: 11 − 7 = 4.
4 Se o valor obtido for 10 ou 11, o dígito verificador será o 0, nos outros
casos, o dígito verificador é o próprio valor encontrado.
Escreva um programa em C++ que leia um número indeterminado de
valores inteiros de 1 a 9999. Para cada número imprima o seu corres-
pondente dígito verificador. O programa é encerrado ao ser fornecido
um número fora da faixa estabelecida (1 a 9999). Para obter o valor
do dígito verificador crie uma função auxiliar.

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de agosto de 2018 22 / 23


Funções III

Fim da aula 08

Einstein Santos (UFRN) ECT2303 – Linguagem de Programação 24 de agosto de 2018 23 / 23

Você também pode gostar