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

Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação CGercélia Ramos
 
Apresentação recursividade rev2
Apresentação recursividade rev2Apresentação recursividade rev2
Apresentação recursividade rev2Rogerio Oliveira
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POODaniel Brandão
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-Mauro Pereira
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Adriano Teixeira de Souza
 
Excel Básico
Excel BásicoExcel Básico
Excel Básicoaprcds
 
Exercício resolvido normalização
Exercício resolvido normalizaçãoExercício resolvido normalização
Exercício resolvido normalizaçãoTicianne Darin
 
Linguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesLinguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesElaine Cecília Gatto
 
Algoritmos e Programação: Estruturas de repetição
Algoritmos e Programação: Estruturas de repetiçãoAlgoritmos e Programação: Estruturas de repetição
Algoritmos e Programação: Estruturas de repetiçãoAlex Camargo
 
Introdução à Teoria dos Grafos
Introdução à Teoria dos GrafosIntrodução à Teoria dos Grafos
Introdução à Teoria dos GrafosBianca Dantas
 

Mais procurados (20)

Introdução a php
Introdução a phpIntrodução a php
Introdução a php
 
Introdução a Linguagem de Programação C
Introdução a Linguagem de Programação CIntrodução a Linguagem de Programação C
Introdução a Linguagem de Programação C
 
Apresentação da UML
Apresentação da UMLApresentação da UML
Apresentação da UML
 
PHP - Arrays
PHP - ArraysPHP - Arrays
PHP - Arrays
 
Apresentação recursividade rev2
Apresentação recursividade rev2Apresentação recursividade rev2
Apresentação recursividade rev2
 
Aula 1 - Introdução a POO
Aula 1 -  Introdução a POOAula 1 -  Introdução a POO
Aula 1 - Introdução a POO
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
Lista de exercicios algoritmos resolvida-
Lista de exercicios   algoritmos  resolvida-Lista de exercicios   algoritmos  resolvida-
Lista de exercicios algoritmos resolvida-
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)
 
Excel Básico
Excel BásicoExcel Básico
Excel Básico
 
Aula01-JavaScript
Aula01-JavaScriptAula01-JavaScript
Aula01-JavaScript
 
Exercício resolvido normalização
Exercício resolvido normalizaçãoExercício resolvido normalização
Exercício resolvido normalização
 
Linguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e FunçõesLinguagem C - Vetores, Matrizes e Funções
Linguagem C - Vetores, Matrizes e Funções
 
POO - Aula 09 - Herança
POO - Aula 09 - HerançaPOO - Aula 09 - Herança
POO - Aula 09 - Herança
 
Fundamentos da Engenharia de Software
Fundamentos da Engenharia de SoftwareFundamentos da Engenharia de Software
Fundamentos da Engenharia de Software
 
Aula01 - Logica de Programação
Aula01 - Logica de ProgramaçãoAula01 - Logica de Programação
Aula01 - Logica de Programação
 
Sistemas Operacionais
Sistemas OperacionaisSistemas Operacionais
Sistemas Operacionais
 
Algoritmos e Programação: Estruturas de repetição
Algoritmos e Programação: Estruturas de repetiçãoAlgoritmos e Programação: Estruturas de repetição
Algoritmos e Programação: Estruturas de repetição
 
Apostila Lazarus
Apostila LazarusApostila Lazarus
Apostila Lazarus
 
Introdução à Teoria dos Grafos
Introdução à Teoria dos GrafosIntrodução à Teoria dos Grafos
Introdução à Teoria dos Grafos
 

Destaque

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 )PeslPinguim
 
Aula c++ estruturas de dados
Aula c++   estruturas de dadosAula c++   estruturas de dados
Aula c++ estruturas de dadosJean Martina
 
Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++Aula 01 - Introdução ao C++
Aula 01 - Introdução ao C++PeslPinguim
 
Presentation on C++ Programming Language
Presentation on C++ Programming LanguagePresentation on C++ Programming Language
Presentation on C++ Programming Languagesatvirsandhu9
 
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,...Leinylson Fontinele
 
TRABALHO PARADIGMAS - C++
TRABALHO PARADIGMAS - C++TRABALHO PARADIGMAS - C++
TRABALHO PARADIGMAS - C++Ellen Diana
 
Aula 12 - Exercícios vetores unidimensionais
Aula 12 - Exercícios vetores unidimensionaisAula 12 - Exercícios vetores unidimensionais
Aula 12 - Exercícios vetores unidimensionaisPacc UAB
 
Aula 13 - Matrizes
Aula 13 - MatrizesAula 13 - Matrizes
Aula 13 - MatrizesPacc 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 IFRN apresenta funções em C

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.pdfGabrielEduardo16342
 
Introdução à programação funcional
Introdução à programação funcionalIntrodução à programação funcional
Introdução à programação funcionalGabriel Schade Cardoso
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturadadiogoa21
 
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.SchoolByte
 
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.pptxItamarGoncalves2
 
Subalgoritmos Profª Letíca Lopes
Subalgoritmos Profª Letíca LopesSubalgoritmos Profª Letíca Lopes
Subalgoritmos Profª Letíca Lopesmarcosnem
 
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 VariaveisRodrigo Kiyoshi Saito
 
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).pdfMauricio Wieler
 
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 info_cimol
 
Funções em C - Prof. Yandre
Funções em C - Prof. YandreFunções em C - Prof. Yandre
Funções em C - Prof. Yandremarcosnem
 
Atualização Java 8 (2014)
Atualização Java 8 (2014)Atualização Java 8 (2014)
Atualização Java 8 (2014)Helder da Rocha
 

Semelhante a IFRN apresenta funções em C (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
 

IFRN apresenta funções em C

  • 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?