SlideShare uma empresa Scribd logo
1 de 60
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
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
Funções
tipo nome (parâmetros) {
instrução 1;
...........;
...........;
instrução n;
return;
}
Sintaxe
sexta-feira, 30 de maio de 2014 3
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
Funções
A função main()
sexta-feira, 30 de maio de 2014 5
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
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
• 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
• 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
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
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
Funções
Função que
converte a
temperatura
de graus
Fahrenheit
para graus
Celsius.
sexta-feira, 30 de maio de 2014 12
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!!
• 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
•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
Funções
Protótipo externo e local
sexta-feira, 30 de maio de 2014 16
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
Funções
sexta-feira, 30 de maio de 2014 18
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
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
Funções
sexta-feira, 30 de maio de 2014 21
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
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
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
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
Funções
Passagem por valor
sexta-feira, 30 de maio de 2014 26
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
Funções
Funções que não retornam nada: Tipo void
sexta-feira, 30 de maio de 2014 28
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
Funções
Funções que não recebem e não retornam nada
sexta-feira, 30 de maio de 2014 30
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:
Funções
Passando vários argumentos
sexta-feira, 30 de maio de 2014 32
Argumento 1
Argumento 2
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.
Funções
sexta-feira, 30 de maio de 2014 34
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:
Funções
sexta-feira, 30 de maio de 2014 36
Usando outras funções
como argumentos
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.
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?
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!
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.
Funções
Passagem por referência
sexta-feira, 30 de maio de 2014 41
Exemplo:
void reajusta20(float& p, const float& r);
Funções
sexta-feira, 30 de maio de 2014 42
Operador Unário
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;
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);
Funções
Referências constantes
sexta-feira, 30 de maio de 2014 45
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;
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 = ‘*’);
Funções
Valores default para os argumentos de uma
função
sexta-feira, 30 de maio de 2014 48
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
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;
Funções
sexta-feira, 30 de maio de 2014 51
Exemplo 1
Funções
sexta-feira, 30 de maio de 2014 52
Exemplo 2
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.
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.
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.
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)!
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.
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.
Funções
sexta-feira, 30 de maio de 2014 59
Funções
sexta-feira, 30 de maio de 2014 60
Dúvidas?

Mais conteúdo relacionado

Mais procurados

Logica Algoritmo 08 Recursividade
Logica Algoritmo 08 RecursividadeLogica Algoritmo 08 Recursividade
Logica Algoritmo 08 Recursividade
Regis Magalhães
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-
Mauro Pereira
 
Apresentação programação orientada à objetos
Apresentação   programação orientada à objetosApresentação   programação orientada à objetos
Apresentação programação orientada à objetos
soncino
 

Mais procurados (20)

Aula 6 - Constantes e variáveis
Aula 6 - Constantes e variáveisAula 6 - Constantes e variáveis
Aula 6 - Constantes e variáveis
 
Banco de dados exercícios resolvidos
Banco de dados exercícios resolvidosBanco de dados exercícios resolvidos
Banco de dados exercícios resolvidos
 
Introdução à programação
Introdução à programação Introdução à programação
Introdução à programação
 
Python - Introdução
Python - IntroduçãoPython - Introdução
Python - Introdução
 
Logica Algoritmo 08 Recursividade
Logica Algoritmo 08 RecursividadeLogica Algoritmo 08 Recursividade
Logica Algoritmo 08 Recursividade
 
Conceitos básicos de Matrizes em C++
Conceitos básicos de Matrizes em C++Conceitos básicos de Matrizes em C++
Conceitos básicos de Matrizes em C++
 
Programação Orientação a Objetos - Herança
Programação Orientação a Objetos - HerançaProgramação Orientação a Objetos - Herança
Programação Orientação a Objetos - Herança
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-
 
Programação Orientado a Objetos
Programação Orientado a ObjetosProgramação Orientado a Objetos
Programação Orientado a Objetos
 
Introdução ao SQL
Introdução ao SQLIntrodução ao SQL
Introdução ao SQL
 
Aula Lógica de Programação - cap1
Aula Lógica de Programação - cap1 Aula Lógica de Programação - cap1
Aula Lógica de Programação - cap1
 
Apresentação programação orientada à objetos
Apresentação   programação orientada à objetosApresentação   programação orientada à objetos
Apresentação programação orientada à objetos
 
Banco de dados - Mapeamento MER - Relacional
Banco de dados - Mapeamento MER - RelacionalBanco de dados - Mapeamento MER - Relacional
Banco de dados - Mapeamento MER - Relacional
 
Linguagem C 09 Ponteiros
Linguagem C 09 PonteirosLinguagem C 09 Ponteiros
Linguagem C 09 Ponteiros
 
6 estruturas de dados heterogêneas
6  estruturas de dados heterogêneas6  estruturas de dados heterogêneas
6 estruturas de dados heterogêneas
 
Aula02
Aula02Aula02
Aula02
 
Visualg
VisualgVisualg
Visualg
 
Introdução à Programação
Introdução à ProgramaçãoIntrodução à Programação
Introdução à Programação
 
Variáveis e portugol
Variáveis e portugolVariáveis e portugol
Variáveis e portugol
 
BD I - Aula 08 A - Algebra Relacional
BD I - Aula 08 A - Algebra RelacionalBD I - Aula 08 A - Algebra Relacional
BD I - Aula 08 A - Algebra Relacional
 

Destaque

Aula 12 - Exercícios vetores unidimensionais
Aula 12 - Exercícios vetores unidimensionaisAula 12 - Exercícios vetores unidimensionais
Aula 12 - Exercícios vetores unidimensionais
Pacc UAB
 
Aula 13 - Matrizes
Aula 13 - MatrizesAula 13 - Matrizes
Aula 13 - Matrizes
Pacc UAB
 

Destaque (14)

SubProgramas
SubProgramasSubProgramas
SubProgramas
 
Aula 02 - Classes em C++ ( Parte 1 )
Aula 02 - Classes em C++ ( Parte 1 )Aula 02 - Classes em C++ ( Parte 1 )
Aula 02 - Classes em C++ ( Parte 1 )
 
Aula c++ estruturas de dados
Aula c++   estruturas de dadosAula c++   estruturas de dados
Aula c++ estruturas de dados
 
Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++
 
Presentation on C++ Programming Language
Presentation on C++ Programming LanguagePresentation on C++ Programming Language
Presentation on C++ Programming Language
 
Apresentação c++ UFC-Quixadá
Apresentação c++ UFC-QuixadáApresentação c++ UFC-Quixadá
Apresentação c++ UFC-Quixadá
 
599026
599026599026
599026
 
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
Estrutura de dados - Aula de Revisão (Linguagem C/C++, Função, Vetor, Matriz,...
 
TRABALHO PARADIGMAS - C++
TRABALHO PARADIGMAS - C++TRABALHO PARADIGMAS - C++
TRABALHO PARADIGMAS - C++
 
Aula 12 - Exercícios vetores unidimensionais
Aula 12 - Exercícios vetores unidimensionaisAula 12 - Exercícios vetores unidimensionais
Aula 12 - Exercícios vetores unidimensionais
 
Aula 13 - Matrizes
Aula 13 - MatrizesAula 13 - Matrizes
Aula 13 - Matrizes
 
Aula1 c++ builder
Aula1   c++ builderAula1   c++ builder
Aula1 c++ builder
 
C++ Presentation
C++ PresentationC++ Presentation
C++ Presentation
 
C++ programming
C++ programmingC++ programming
C++ programming
 

Semelhante a C++ Funções

Semelhante a C++ Funções (20)

PHP - Funções
PHP - FunçõesPHP - Funções
PHP - Funções
 
Aula 4
Aula 4Aula 4
Aula 4
 
aula intro de Python sobre Funcoes.pdf
aula intro de  Python sobre  Funcoes.pdfaula intro de  Python sobre  Funcoes.pdf
aula intro de Python sobre Funcoes.pdf
 
Introdução à programação funcional
Introdução à programação funcionalIntrodução à programação funcional
Introdução à programação funcional
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturada
 
Utilizando funções em C: modularizando os programas.
Utilizando funções em C: modularizando os programas.Utilizando funções em C: modularizando os programas.
Utilizando funções em C: modularizando os programas.
 
Aula 8 - Modularização e Funções.pptx
Aula 8 - Modularização e Funções.pptxAula 8 - Modularização e Funções.pptx
Aula 8 - Modularização e Funções.pptx
 
Subalgoritmos Profª Letíca Lopes
Subalgoritmos Profª Letíca LopesSubalgoritmos Profª Letíca Lopes
Subalgoritmos Profª Letíca Lopes
 
Aula 4 | Funções
Aula 4 | Funções Aula 4 | Funções
Aula 4 | Funções
 
Algoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
Algoritmos - Aula 15 - Modularizacao e Escopo de VariaveisAlgoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
Algoritmos - Aula 15 - Modularizacao e Escopo de Variaveis
 
Aula de Funções - 1ª Parte (2015_04_26 22_22_50 UTC).pdf
Aula de Funções - 1ª Parte (2015_04_26 22_22_50 UTC).pdfAula de Funções - 1ª Parte (2015_04_26 22_22_50 UTC).pdf
Aula de Funções - 1ª Parte (2015_04_26 22_22_50 UTC).pdf
 
Funções PHP - Criação de sites II
Funções PHP - Criação de sites II Funções PHP - Criação de sites II
Funções PHP - Criação de sites II
 
TWP40 Revisão Geral 3
TWP40 Revisão Geral 3TWP40 Revisão Geral 3
TWP40 Revisão Geral 3
 
Funções em C - Prof. Yandre
Funções em C - Prof. YandreFunções em C - Prof. Yandre
Funções em C - Prof. Yandre
 
Funções e procedimentos
Funções e procedimentosFunções e procedimentos
Funções e procedimentos
 
Funções em C
Funções em CFunções em C
Funções em C
 
Atualização Java 8 (2014)
Atualização Java 8 (2014)Atualização Java 8 (2014)
Atualização Java 8 (2014)
 
Funções em C
Funções em CFunções em C
Funções em C
 
Unidade06
Unidade06Unidade06
Unidade06
 
Aula14 - Funções em PHP
Aula14 - Funções em PHPAula14 - Funções em PHP
Aula14 - Funções em PHP
 

C++ Funções

  • 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. 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. Funções tipo nome (parâmetros) { instrução 1; ...........; ...........; instrução n; return; } Sintaxe sexta-feira, 30 de maio de 2014 3
  • 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
  • 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. 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. • 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. • 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. 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. 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. Funções Função que converte a temperatura de graus Fahrenheit para graus Celsius. sexta-feira, 30 de maio de 2014 12
  • 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. • 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. •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. Funções Protótipo externo e local sexta-feira, 30 de maio de 2014 16
  • 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. Funções sexta-feira, 30 de maio de 2014 18
  • 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. 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. Funções sexta-feira, 30 de maio de 2014 21
  • 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. 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. 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. 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
  • 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. Funções Funções que não retornam nada: Tipo void sexta-feira, 30 de maio de 2014 28
  • 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. Funções Funções que não recebem e não retornam nada sexta-feira, 30 de maio de 2014 30
  • 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. Funções Passando vários argumentos sexta-feira, 30 de maio de 2014 32 Argumento 1 Argumento 2
  • 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. Funções sexta-feira, 30 de maio de 2014 34
  • 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. Funções sexta-feira, 30 de maio de 2014 36 Usando outras funções como argumentos
  • 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. 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. 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. 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. Funções Passagem por referência sexta-feira, 30 de maio de 2014 41 Exemplo: void reajusta20(float& p, const float& r);
  • 42. Funções sexta-feira, 30 de maio de 2014 42 Operador Unário
  • 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. 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);
  • 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. 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. Funções Valores default para os argumentos de uma função sexta-feira, 30 de maio de 2014 48
  • 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. 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. Funções sexta-feira, 30 de maio de 2014 51 Exemplo 1
  • 52. Funções sexta-feira, 30 de maio de 2014 52 Exemplo 2
  • 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. 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. 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. 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. 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. 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. Funções sexta-feira, 30 de maio de 2014 59
  • 60. Funções sexta-feira, 30 de maio de 2014 60 Dúvidas?