C++ Funções

817 visualizações

Publicada em

Como trabalhar com funções em C++

Publicada em: Software
0 comentários
2 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
817
No SlideShare
0
A partir de incorporações
0
Número de incorporações
4
Ações
Compartilhamentos
0
Downloads
39
Comentários
0
Gostaram
2
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

C++ Funções

  1. 1. Instituto Federal do Rio Grande do Norte – IFRN Câmpus Natal – Zona Norte sexta-feira, 30 de maio de 2014 1 Funções Odair Soares / Melquisedeque Vieira
  2. 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 é? sexta-feira, 30 de maio de 2014 2
  3. 3. Funções tipo nome (parâmetros) { instrução 1; ...........; ...........; instrução n; return; } Sintaxe sexta-feira, 30 de maio de 2014 3
  4. 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 sexta-feira, 30 de maio de 2014 4
  5. 5. Funções A função main() sexta-feira, 30 de maio de 2014 5
  6. 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 sexta-feira, 30 de maio de 2014 6
  7. 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 sexta-feira, 30 de maio de 2014 7
  8. 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ções Por que usar funções? sexta-feira, 30 de maio de 2014 8
  9. 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ções Chamando uma função sexta-feira, 30 de maio de 2014 9
  10. 10. Vária funções são desenvolvidas por programadores e fornecidas gratuitamente pela linguagem C++. Ex.: Getche(), system(), printf(), setw(), Funções Chamando uma função sexta-feira, 30 de maio de 2014 10
  11. 11. celsius() Vamos começar mostrando uma função que converte a temperatura de graus Fahrenheit para graus Celsius: Funções Primeira função sexta-feira, 30 de maio de 2014 11
  12. 12. Funções Função que converte a temperatura de graus Fahrenheit para graus Celsius. sexta-feira, 30 de maio de 2014 12
  13. 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ções O protótipo de funções Tipo_retorno nome_Função (lista_de_parâmetros); sexta-feira, 30 de maio de 2014 13 Cuidado para não esquecer o ponto e vírgula!!
  14. 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ções O protótipo de funções Tipo_retorno nome_Função (lista_de_parâmetros); sexta-feira, 30 de maio de 2014 14
  15. 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ções Protótipo externo e local sexta-feira, 30 de maio de 2014 15
  16. 16. Funções Protótipo externo e local sexta-feira, 30 de maio de 2014 16
  17. 17. Funções Eliminando 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: sexta-feira, 30 de maio de 2014 17
  18. 18. Funções sexta-feira, 30 de maio de 2014 18
  19. 19. Funções Tipos 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. sexta-feira, 30 de maio de 2014 19
  20. 20. Funções O 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. sexta-feira, 30 de maio de 2014 20
  21. 21. Funções sexta-feira, 30 de maio de 2014 21
  22. 22. Funções Limitações do comando return • O comando return pode retornar somente um único valor para a função que chama. sexta-feira, 30 de maio de 2014 22
  23. 23. Funções Definiçã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 sexta-feira, 30 de maio de 2014 23
  24. 24. Funções Parâ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. sexta-feira, 30 de maio de 2014 24
  25. 25. Funções Passagem 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. sexta-feira, 30 de maio de 2014 25
  26. 26. Funções Passagem por valor sexta-feira, 30 de maio de 2014 26
  27. 27. Funções Funçõ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: sexta-feira, 30 de maio de 2014 27
  28. 28. Funções Funções que não retornam nada: Tipo void sexta-feira, 30 de maio de 2014 28
  29. 29. Funções Funçõ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. sexta-feira, 30 de maio de 2014 29
  30. 30. Funções Funções que não recebem e não retornam nada sexta-feira, 30 de maio de 2014 30
  31. 31. Funções Passando vários argumentos sexta-feira, 30 de maio de 2014 31 • 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:
  32. 32. Funções Passando vários argumentos sexta-feira, 30 de maio de 2014 32 Argumento 1 Argumento 2
  33. 33. Funções Escrevendo várias funções no mesmo programa sexta-feira, 30 de maio de 2014 33 • 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.
  34. 34. Funções sexta-feira, 30 de maio de 2014 34
  35. 35. Funções Chamadas a funções usadas como argumentos de outras funções sexta-feira, 30 de maio de 2014 35 • 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:
  36. 36. Funções sexta-feira, 30 de maio de 2014 36 Usando outras funções como argumentos
  37. 37. Funções O operador Unário de referência: & sexta-feira, 30 de maio de 2014 37 • 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.
  38. 38. Funções O operador Unário de referência: & sexta-feira, 30 de maio de 2014 38 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?
  39. 39. Funções O operador Unário de referência: & sexta-feira, 30 de maio de 2014 39 Toda referência deve obrigatoriamente ser inicializada. int n; int& A; int& A = n; ERRADO! CERTO!
  40. 40. Funções Passagem por referência sexta-feira, 30 de maio de 2014 40 • 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.
  41. 41. Funções Passagem por referência sexta-feira, 30 de maio de 2014 41 Exemplo: void reajusta20(float& p, const float& r);
  42. 42. Funções sexta-feira, 30 de maio de 2014 42 Operador Unário
  43. 43. Funções Referências constantes sexta-feira, 30 de maio de 2014 43 • 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;
  44. 44. Funções Referências constantes sexta-feira, 30 de maio de 2014 44 • 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);
  45. 45. Funções Referências constantes sexta-feira, 30 de maio de 2014 45
  46. 46. Funções Valores default para os argumentos de uma função sexta-feira, 30 de maio de 2014 46 • 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;
  47. 47. Funções Valores default para os argumentos de uma função sexta-feira, 30 de maio de 2014 47 Exemplo: void linha(int n = 20, char ch = ‘*’);
  48. 48. Funções Valores default para os argumentos de uma função sexta-feira, 30 de maio de 2014 48
  49. 49. Funções Valores default para os argumentos de uma função sexta-feira, 30 de maio de 2014 49 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
  50. 50. Funções Sobrecarga de funções sexta-feira, 30 de maio de 2014 50 • 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;
  51. 51. Funções sexta-feira, 30 de maio de 2014 51 Exemplo 1
  52. 52. Funções sexta-feira, 30 de maio de 2014 52 Exemplo 2
  53. 53. Funções sexta-feira, 30 de maio de 2014 53 Funçõ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.
  54. 54. Funções sexta-feira, 30 de maio de 2014 54 Funçõ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.
  55. 55. Funções sexta-feira, 30 de maio de 2014 55 Funçõ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.
  56. 56. Funções sexta-feira, 30 de maio de 2014 56 Funçõ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)!
  57. 57. Funções sexta-feira, 30 de maio de 2014 57 Funçõ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.
  58. 58. Funções sexta-feira, 30 de maio de 2014 58 Funçõ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.
  59. 59. Funções sexta-feira, 30 de maio de 2014 59
  60. 60. Funções sexta-feira, 30 de maio de 2014 60 Dúvidas?

×