60
Instituto Federal do Rio Grande do Norte – IFRN Câmpus Natal – Zona Norte 26/10/22 1 Funções Odair Soares / Melquisedeque Vieira

C++ Funções

Embed Size (px)

DESCRIPTION

Como trabalhar com funções em C++

Citation preview

Page 1: C++ Funções

quinta-feira, 13 de abril de 2023

1

Instituto Federal do Rio Grande do Norte – IFRNCâmpus Natal – Zona Norte

Funções

Odair Soares / Melquisedeque Vieira

Page 2: C++ Funções

quinta-feira, 13 de abril de 2023

2

Funções

• Uma função é um conjunto de instruções desenhadas para cumprir determinada tarefa e agrupadas em uma unidade com um nome para referi-la.

• Qualquer sequência de instruções que apareça mais de uma vez no programa é candidata a ser uma função;

• O código de uma função é agregado ao programa uma única vez e pode ser executado muitas vezes no decorrer do programa.

O que é?

Page 3: C++ Funções

quinta-feira, 13 de abril de 2023

3

Funções

tipo nome (parâmetros) { instrução 1; ...........; ...........; instrução n;

return; }

Sintaxe

Page 4: C++ Funções

quinta-feira, 13 de abril de 2023

4

Funções

• Para dar um nome a uma função você deve seguir as mesmas orientações determinadas para os nomes de variáveis;

• O nome de uma função pode ser qualquer um, com exceção de main, reservado para a função que inicia a execução do programa;

• Em todo programa deve existir uma e uma única função chamada de main;

• O programa termina quando for encerrada a execução da função main.

O nome das funções

Page 5: C++ Funções

quinta-feira, 13 de abril de 2023

5

FunçõesA função main()

Page 6: C++ Funções

quinta-feira, 13 de abril de 2023

6

Funções

• Permite que o compilador saiba que se trata de uma função;

• Podem estar vazios ou não. Trataremos deste assunto nos próximos slides.

Os parênteses após o nome das funções

Page 7: C++ Funções

quinta-feira, 13 de abril de 2023

7

Funções

• Toda função C++ deve começar com uma chave de abertura de bloco { e terminar com uma chave de fechamento de bloco }. As chaves delimitam o corpo da função.

Chaves

Page 8: C++ Funções

quinta-feira, 13 de abril de 2023

8

• Permite que outros programadores utilizem em seus programas;

• É como contratar uma mão-de-obra externa para executar uma certa tarefa;

• Reduz o tamanho do programa;

FunçõesPor que usar funções?

Page 9: C++ Funções

quinta-feira, 13 de abril de 2023

9

• quando o controle do programa encontra uma instrução que inclui o nome de uma função, a função é chamada.

• Chamar uma função é o meio pelo qual solicitamos que o programa desvie o controle e passe a executar as instruções da função e, ao término desta, volte o controle para a posição seguinte à da chamada à função;

FunçõesChamando uma função

Page 10: C++ Funções

quinta-feira, 13 de abril de 2023

10

Vária funções são desenvolvidas por programadores e fornecidas gratuitamente pela linguagem C++.

Ex.:

Getche(), system(), printf(), setw(),

FunçõesChamando uma função

Page 11: C++ Funções

quinta-feira, 13 de abril de 2023

11

celsius()

Vamos começar mostrando uma função que converte a temperatura de graus Fahrenheit para graus Celsius:

FunçõesPrimeira função

Page 12: C++ Funções

quinta-feira, 13 de abril de 2023

12

Funções

Função que converte a

temperatura de graus

Fahrenheit para graus

Celsius.

Page 13: C++ Funções

quinta-feira, 13 de abril de 2023

13

O propósito principal de escrita de protótipos de funções é o de fornecer ao compilador as informações necessárias sobre o tipo da função, o número e o tipo dos argumentos.

FunçõesO protótipo de funções

Tipo_retorno nome_Função (lista_de_parâmetros);

Cuidado para não esquecer o ponto

e vírgula!!

Page 14: C++ Funções

quinta-feira, 13 de abril de 2023

14

• Deve preceder sua definição e sua chamada;

• É a declaração de uma função;

• É colocado, em geral, no início do programa;

• Estabelece o tipo da função e os argumentos que ela recebe.

FunçõesO protótipo de funções

Tipo_retorno nome_Função (lista_de_parâmetros);

Page 15: C++ Funções

quinta-feira, 13 de abril de 2023

15

•Externo: Escrito antes de qualquer função. É feita uma única vez e é visível para todas as funções que a chamam.

•Local:É escrita no corpo da função que a chama e

antes da sua chamada.

FunçõesProtótipo externo e local

Page 16: C++ Funções

quinta-feira, 13 de abril de 2023

16

FunçõesProtótipo externo e local

Page 17: C++ Funções

quinta-feira, 13 de abril de 2023

17

FunçõesEliminando o protótipo de funções

• Se a função for escrita antes da instrução de sua chamada, seu protótipo não será obrigatório.

• O exemplo anterior poderia ser escrito da seguinte maneira:

Page 18: C++ Funções

quinta-feira, 13 de abril de 2023

18

Funções

Page 19: C++ Funções

quinta-feira, 13 de abril de 2023

19

FunçõesTipos de funções

• É definido pelo valor que ela retorna por meio do comando return.

• Uma função é do tipo int quando retorna um valor do tipo int.

• Em C++, os tipos de funções são os mesmos de variáveis, exceto quando a função não retorna nada. Nesse caso, ela é do tipo void.

Page 20: C++ Funções

quinta-feira, 13 de abril de 2023

20

FunçõesO comando return

• Em funções do tipo void, o comando return não é obrigatório;

• O valor de retorno de uma função é acessado na instrução de chamada por meio do nome da função seguido de parênteses contendo ou não argumentos. Ex.:

c = celsius(f); //Chamada à função

• Esse valor poder ser atribuído a uma variável ou fazer parte de alguma expressão;

• Várias instruções return podem fazer parte de uma função, mas apenas uma será executada.

Page 21: C++ Funções

quinta-feira, 13 de abril de 2023

21

Funções

Page 22: C++ Funções

quinta-feira, 13 de abril de 2023

22

FunçõesLimitações do comando return

• O comando return pode retornar somente um único valor para a função que chama.

Page 23: C++ Funções

quinta-feira, 13 de abril de 2023

23

FunçõesDefinição da função

O código C++ que descreve o que a função faz é chamado de definição da função. Sua forma geral é a seguinte:

tipo nome (declaração dos parâmetros){

Instruções;}

• Cabeçalho

• Corpo

Page 24: C++ Funções

quinta-feira, 13 de abril de 2023

24

FunçõesParâmetros da função

• As variáveis que receberão as informações enviadas a uma função são chamadas de parâmetros;

• Devem ser declaradas entre parênteses, no cabeçalho de sua definição;

• Podem se utilizados livremente no corpo da função;

• São acessados somente pela função onde foram declarados.

Page 25: C++ Funções

quinta-feira, 13 de abril de 2023

25

FunçõesPassagem por valor

• A função recebe apenas uma cópia do valor passado para ela e o guarda em uma variável local existente no seu corpo;

• O valor da variável original não é alterado porque a função não tem acesso a mesma.

Page 26: C++ Funções

quinta-feira, 13 de abril de 2023

26

FunçõesPassagem por valor

Page 27: C++ Funções

quinta-feira, 13 de abril de 2023

27

FunçõesFunções que não retornam nada: Tipo void

• Uma função que não retorna nada é do tipo void. Como exemplo, escreveremos uma função que desenha uma linha com um certo número de asteriscos:

Page 28: C++ Funções

quinta-feira, 13 de abril de 2023

28

FunçõesFunções que não retornam nada: Tipo void

Page 29: C++ Funções

quinta-feira, 13 de abril de 2023

29

FunçõesFunções que não recebem e não retornam nada

• Quando uma função não recebe nenhum argumento, devemos especificar no seu protótipo, entre parênteses, com void.

• A função seguinte usa o caractere ‘\a’, chamado de BELL, para tocar o alto-falante. Observe que ela não recebe e não retorna nada.

Page 30: C++ Funções

quinta-feira, 13 de abril de 2023

30

FunçõesFunções que não recebem e não retornam nada

Page 31: C++ Funções

quinta-feira, 13 de abril de 2023

31

FunçõesPassando vários argumentos

• Vários argumentos podem ser passados entre parênteses separados por vírgula, na chamada da função;

• A seguir, temos um exemplo de programa que passa dois argumentos para uma função:

Page 32: C++ Funções

quinta-feira, 13 de abril de 2023

32

FunçõesPassando vários argumentos Argumento 1

Argumento 2

Page 33: C++ Funções

quinta-feira, 13 de abril de 2023

33

FunçõesEscrevendo várias funções no mesmo programa

• Você pode escrever quantas funções quiser no mesmo programa;

• Qualquer função poder chamar uma outra função;

• Em C++, não é permitido definir uma função dentro de outra função.

Page 34: C++ Funções

quinta-feira, 13 de abril de 2023

34

Funções

Page 35: C++ Funções

quinta-feira, 13 de abril de 2023

35

FunçõesChamadas a funções usadas como argumentos de

outras funções

• Podemos também chamar uma função como argumento para outra função.

• A sintaxe é a mesma utilizada na chamada de variáveis como argumentos para funções.

• Exemplo:

Page 36: C++ Funções

quinta-feira, 13 de abril de 2023

36

Funções

Usando outras funções como argumentos

Page 37: C++ Funções

quinta-feira, 13 de abril de 2023

37

FunçõesO operador Unário de referência: &

• Com o operador de referência, podemos montar novos tipos de dados chamados de referências;

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

• Como usar: int n;int& A = n;

Se o valor de A for alterado, o valor de n também será alterado.

Se o valor de n for alterado, o valor de A também será alterado.

Indica que A é um outro nome para n.

Page 38: C++ Funções

quinta-feira, 13 de abril de 2023

38

FunçõesO operador Unário de referência: &

Não é um cópia da variável a que se refere, é a mesma variável sob nomes diferentes.

int n;int& A = n;N = 5;cout << A;A = 8;cout << n;

Nas instruções:

Que valores são impressos?

Page 39: C++ Funções

quinta-feira, 13 de abril de 2023

39

FunçõesO operador Unário de referência: &

Toda referência deve obrigatoriamente ser inicializada.

int n;int& A;int& A = n;

ERRADO!

CERTO!

Page 40: C++ Funções

quinta-feira, 13 de abril de 2023

40

FunçõesPassagem por referência

• Um dos usos de referências é na passagem de argumentos para funções;

• A principal vantagem da passagem por referência, é a de que a função pode acessar as variáveis da função que chamou;

• Isso 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 variáveis da função chamadora.

Page 41: C++ Funções

quinta-feira, 13 de abril de 2023

41

FunçõesPassagem por referência

Exemplo:

void reajusta20(float& p, const float& r);

Page 42: C++ Funções

quinta-feira, 13 de abril de 2023

42

FunçõesOperador Unário

Page 43: C++ Funções

quinta-feira, 13 de abril de 2023

43

FunçõesReferências constantes

• Você pode combinar a palavra-chave const com a declaração de uma referência;

• Essas declarações fazem de A um nome “read-only” para n;

int n = 456;const int& A = n;

Page 44: C++ Funções

quinta-feira, 13 de abril de 2023

44

FunçõesReferências constantes

• Utilizamos referências constantes quando não precisamos alterar o valor das variáveis enviadas como argumentos;

• O uso de referências constantes é um meio de economia de memória.

Exemplo:

void imprime_Quadrado(const double& n, const double& m);

Page 45: C++ Funções

quinta-feira, 13 de abril de 2023

45

FunçõesReferências constantes

Page 46: C++ Funções

quinta-feira, 13 de abril de 2023

46

FunçõesValores default para os argumentos de uma funçã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;

• Se forem omitidos os argumentos correspondentes na chamada à função, os valores default serão automaticamente usados;

• Se forem especificados, estes serão respeitados e usados;

Page 47: C++ Funções

quinta-feira, 13 de abril de 2023

47

FunçõesValores default para os argumentos de uma função

Exemplo:

void linha(int n = 20, char ch = ‘*’);

Page 48: C++ Funções

quinta-feira, 13 de abril de 2023

48

FunçõesValores default para os argumentos de uma função

Page 49: C++ Funções

quinta-feira, 13 de abril de 2023

49

FunçõesValores default para os argumentos de uma função

Se um argumento for omitido, todos os subsequentes deverão sê-lo:

linha(,‘*’); //ERRO

Após a primeira especificação com valor default, todos os parâmetros seguintes devem ser especificados com valor default:

linha(int n = 20, char ch); //ERRO

linha(int n, char ch = ‘*’); //CORRETO

Page 50: C++ Funções

quinta-feira, 13 de abril de 2023

50

FunçõesSobrecarga de funções

• Significa criar uma família de funções com o mesmo nome;

• Mas devem ter a lista de argumentos diferentes ou em número ou em tipo;

• É por meio dos argumentos que o sistema reconhece qual função deverá ser chamada;

Page 51: C++ Funções

quinta-feira, 13 de abril de 2023

51

Funções

Exemplo 1

Page 52: C++ Funções

quinta-feira, 13 de abril de 2023

52

Funções

Exemplo 2

Page 53: C++ Funções

quinta-feira, 13 de abril de 2023

53

FunçõesFunções inline

• Escrevemos funções inline exatamente da mesma maneira como escrevemos funções comuns, exceto pela inclusão do qualificador inline no início da definição da função.

• A palavra chave inline, quando colocada no início do cabeçalho da definição de uma função, causa a inserção de uma nova cópia da função em todo lugar onde ela é chamada;

• A definição de uma função inline deve preceder a primeira chamada a ela.

Page 54: C++ Funções

quinta-feira, 13 de abril de 2023

54

FunçõesFunções inline: quando usar?

• Quando escrevemos funções pequenas, podemos poupar tempo de execução colocando o código da função diretamente no programa. Se a função é muito pequena (uma ou duas instruções), as instruções necessárias à sua chamada podem ocupar mais espaço de memória que as instruções do seu próprio código. Em casos semelhantes, é aconselhável criar funções inline.

Page 55: C++ Funções

quinta-feira, 13 de abril de 2023

55

FunçõesFunções recursivas

• Uma função é recursiva quando dentro dela está presente uma instrução de chamada a ela própria.

• Três pontos devem ser lembrados quando queremos escrever uma função recursiva:

1. Definir o problema em termos recursivos;

2. Encontrar a condição básica;

3. Toda vez que a função é chamada recursivamente, deve estar mais próxima de satisfazer a condição básica.

Page 56: C++ Funções

quinta-feira, 13 de abril de 2023

56

FunçõesFunções recursivas

1. Definir o problema em termos recursivos

Isso significa definir o problema usando ele mesmo na definição. O fatorial de um número n qualquer pode ser definido por meio da seguinte expressão:

n! = n * (n - 1)!

Page 57: C++ Funções

quinta-feira, 13 de abril de 2023

57

FunçõesFunções recursivas

2. Encontrar a condição básica:

Toda função recursiva deve ter uma condição de término chamada de condição básica. A função fatorial(), quando chamada, verifica se n é zero. Se essa condição for satisfeita, interrompe a recursão.

Page 58: C++ Funções

quinta-feira, 13 de abril de 2023

58

FunçõesFunções recursivas

3. Cada vez que a função é chamada recursivamente, deve estar mais próxima de satisfazer a condição básica:

Isso garante que o programa não girará em uma sequência infindável de chamadas. Em nossa função, a cada chamada a função, o valor de n estará mais próximo de zero.

Page 59: C++ Funções

quinta-feira, 13 de abril de 2023

59

Funções

Page 60: C++ Funções

quinta-feira, 13 de abril de 2023

60

Funções

Dúvidas?