SlideShare uma empresa Scribd logo
1 de 24
Baixar para ler offline
Funções são os blocos de construção da linguagem C++,
com os quais podemos construir programas melhores e mais
facilmente compreensíveis.

Quando os programas tornam-se maiores e mais complexos,
pode-se melhorar a clareza e compreensão do trabalho
dividindo-o em partes menores, que chamamos de funções.

Todo programa possui ao menos uma função: a função main,
a qual podemos chamar de “corpo” do programa, onde estão
localizados todos os comandos e chamadas de outras
funções que são executadas pelo programa.
Dividindo o programa em funções separadas, deixando para
a função main somente a tarefa de organizar as chamadas
das demais funções, podemos trabalhar mais facilmente com
o programa, modificando e corrigindo funções
individualmente.

À medida que o tamanho e a complexidade do programa
aumentam, aumenta também a possibilidade de erros, já se o
mesmo for dividido em blocos menores e organizados, fica
mais fácil encontrar e evitar erros.
Basicamente, uma função funciona da seguinte forma:

   • é feita uma chamada para esta função durante a
   execução do programa;
   • o programa é interrompido temporariamente, e “pula”
   para esta função executando seus comandos;
   • quando a função termina, ou seja, quando seus
   comandos acabam (ou quando o comando return é
   encontrado), o programa volta ao ponto onde foi
   interrompido para continuar sua execução normal.
Uma função pode receber dados do programa para executar
seus comandos (estes dados são chamados de parâmetros
ou argumentos), e pode também retornar dados para o
programa (o que chamamos de retorno de função).
Declarando uma Função

Antes de utilizar uma função em um programa é preciso
declará-la, ou seja, especificar para o compilador exatamente
o que faz esta função e que tipo de dados ela recebe e
retorna.

Podemos dividir o processo de declarar uma função em duas
etapas distintas: o protótipo da função e a definição da
função.
Protótipo de uma Função
O protótipo de uma função tem a mesma função de uma
declaração de variáveis: dizer ao compilador quais tipos de
variáveis estarão envolvidos na função.

Isso permite que o compilador saiba trabalhar corretamente
com os valores que entram e saem da função, fazendo
conversões de tipos sempre que necessário.
A sintaxe da declaração de um protótipo de função é a
seguinte:

<tipo_da_função> <nome> ( <tipo_de_parâmetro> <nome_da_variável>);
O tipo da função denominará qual será o tipo de valor que
esta função retorna.

Uma função pode retornar qualquer tipo de valor, seja inteiro,
fracionário ou nenhum valor. Quando uma função não retorna
nenhum valor para o programa, seu tipo é void.

 Esse tipo de função executará seus comandos normalmente,
mas não retornará nenhum valor para o programa quando
terminar.
O tipo de parâmetro serve para determinar o tipo de variáveis
que a função receberá como parâmetros.

Assim como o tipo da função, qualquer tipo de variável pode
ser utilizado como parâmetro. Uma função que não recebe
parâmetros de entrada deve ter a palavra chave void entre
parênteses.

É possível ter vários parâmetros na mesma função,
separando-os com vírgulas.
Alguns exemplos de protótipo de função:

int livro (unsigned int paginas);

float divide (float dividendo, float divisor);

void imprime ( void );

float divide (float, float)
Definição de uma Função
O protótipo de uma função diz para o compilador quais os
tipos de variáveis ela usará.

Já a definição de uma função diz ao compilador exatamente
o que a função faz. A sintaxe da definição de uma função é a
seguinte:

<tipo da função> <nome> ( <tipo do parâmetro> <nome do parâmetro>)
{
comandos da função;
}
A primeira linha da definição de uma função é idêntica ao protótipo, com a
exceção de que somos obrigados a declarar nomes para as variáveis de
parâmetro e que a linha não termina em um ponto-e-vírgula, e sim em
uma abre-chaves.

Dentro das chaves estarão todos os comandos pertencentes a função,
inclusive declaração de variáveis locais, chamadas para outras funções e
chamadas de retorno. Por exemplo:

int cubo ( int valor) {
        int resultado;
        resultado = valor*valor*valor;
        return resultado;
}
Retorno de uma função

O comando return é utilizado para terminar a execução de
uma função e retornar um valor para o programa. Sua sintaxe
é a seguinte:

return <variável ou expressão>;
O comando return aceita qualquer constante, variável ou
expressão geral que o programador precise retornar para o
programa principal, desde que este valor seja igual ou
convertível para o tipo da função (já estabelecido no protótipo
da função).

É importante notar que o valor retornado não pode ser uma
matriz; porém, é possível retornar uma matriz indiretamente,
desde que ela faça parte de uma estrutura ou objeto (tipos de
dados que serão estudados mais adiante).
Por exemplo, considere a função compara_valores, mostrada
a seguir:

int compara_valores(int primeiro, int segundo)
{
       if (primeiro == segundo)
               return (0);
       else if (primeiro > segundo)
               return (1);
       else if (primeiro < segundo)
               return (2);
}
Variáveis Locais

A Linguagem C++ permite declarar variáveis dentro de suas
funções. Essas variáveis são chamadas de variáveis locais,
pois seus nomes e valores somente têm significado dentro da
função que contém a declaração da variável.
Chamada por Valor

Os programas passam informações para funções usando
parâmetros. Quando um parâmetro é passado a uma função, a
Linguagem C++ usa uma técnica conhecida como chamada por
valor para fornecer à função uma cópia dos valores dos
parâmetros.

Usando a chamada por valor, quaisquer modificações que a função
fizer nos parâmetros existem apenas dentro da própria função.
Quando a função termina, o valor das variáveis que a função
chamadora passou para a função não é modificada dentro da
função chamadora.
Chamada por Referência

Usando a chamada por valor, as funções não podem
modificar o valor de uma variável passada para uma função.

Quando as funções alteram o valor de um parâmetro, os
programas precisam passar o parâmetro para a função
usando chamada por referência.
A diferença entre chamada por valor e chamada por
referência é que, usando a chamada por valor, as funções
recebem uma cópia do valor de um parâmetro.

Por outro lado, com a chamada por referência, as funções
recebem o endereço de memória da variável.

Portanto, as funções podem alterar o valor armazenado na
posição de memória específica (em outras palavras, o valor
da variável); alterações essas que permanecem após a
função terminar.
Para usar a chamada por referência, seu programa precisar
usar ponteiros.

Por ora tudo o que precisamos saber é que um ponteiro
armazena um endereço de memória, assim como uma
variável armazena um valor.

Mais adiante (quando forem alunos menos bobinhos),
aprenderemos sobre ponteiros e suas aplicações em C++,
incluindo o funcionamento de uma chamada de função por
referência.
Sobrecarga de Função

 Em C ++, uma vez que o mecanismo de prototipagem
permite identificar uma função por seu nome e seus
argumentos (assinatura da função), é possível criar funções
com mesmo nome (sobrecarga).

Este mecanismo é frequentemente utilizado na programação
orientada a objetos.
Ex.:

int soma(int, int);

float soma(float, float);

int soma(int, float);
Parâmetros Padrão (Default)

Outra novidade introduzida por C++ no manuseio de funções
é a possibilidade de definir-se um valor padrão para
parâmetros de uma função.

Isto é, podemos definir um parâmetro para uma função e
estabelecer um valor padrão para ele, da seguinte forma:

void mensagem (int x = 1);
Quando chamamos a função e enviamos um valor como
parâmetro para ela, a função é executada normalmente,
utilizando o valor de x que enviamos.

Porém, caso não enviássemos um valor x como parâmetro
para esta função, isto é, fizéssemos a seguinte declaração no
programa:

mensagem( );
Automaticamente a função substituiria x por 1, como
especificamos no protótipo da função.


Caso não tivéssemos definido um valor padrão para o
parâmetro x, o compilador nos retornaria um erro de
parâmetros insuficientes para que a função seja executada

Mais conteúdo relacionado

Mais procurados

Funções em C - Prof. Yandre
Funções em C - Prof. YandreFunções em C - Prof. Yandre
Funções em C - Prof. Yandremarcosnem
 
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...Rogério Moraes de Carvalho
 
Subalgoritmos Profª Letíca Lopes
Subalgoritmos Profª Letíca LopesSubalgoritmos Profª Letíca Lopes
Subalgoritmos Profª Letíca Lopesmarcosnem
 
Algoritmos e Lógica de Programação
Algoritmos e Lógica de ProgramaçãoAlgoritmos e Lógica de Programação
Algoritmos e Lógica de ProgramaçãoJose Augusto Cintra
 
XVII SAMET - Prof. Marcello Macarthy [Mini-curso Fortran - 5ª feira 02.12.2010]
XVII SAMET - Prof. Marcello Macarthy [Mini-curso Fortran - 5ª feira 02.12.2010]XVII SAMET - Prof. Marcello Macarthy [Mini-curso Fortran - 5ª feira 02.12.2010]
XVII SAMET - Prof. Marcello Macarthy [Mini-curso Fortran - 5ª feira 02.12.2010]Dafmet Ufpel
 
Algoritmo e Complexidade - texto Aula1.docx
Algoritmo e Complexidade - texto Aula1.docxAlgoritmo e Complexidade - texto Aula1.docx
Algoritmo e Complexidade - texto Aula1.docxLdiaSilva39
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação CJose Augusto Cintra
 
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...Rogério Moraes de Carvalho
 
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...Rogério Moraes de Carvalho
 

Mais procurados (20)

Funções em C - Prof. Yandre
Funções em C - Prof. YandreFunções em C - Prof. Yandre
Funções em C - Prof. Yandre
 
Php m18
Php m18Php m18
Php m18
 
Man UAL
Man UALMan UAL
Man UAL
 
Manual robotec
Manual robotecManual robotec
Manual robotec
 
Interface
InterfaceInterface
Interface
 
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
 
Aula12- PHP
Aula12- PHPAula12- PHP
Aula12- PHP
 
Subalgoritmos Profª Letíca Lopes
Subalgoritmos Profª Letíca LopesSubalgoritmos Profª Letíca Lopes
Subalgoritmos Profª Letíca Lopes
 
Aula11 - PHP
Aula11 - PHPAula11 - PHP
Aula11 - PHP
 
Introdução ao Java 5
Introdução ao Java 5Introdução ao Java 5
Introdução ao Java 5
 
Algoritmos e Lógica de Programação
Algoritmos e Lógica de ProgramaçãoAlgoritmos e Lógica de Programação
Algoritmos e Lógica de Programação
 
XVII SAMET - Prof. Marcello Macarthy [Mini-curso Fortran - 5ª feira 02.12.2010]
XVII SAMET - Prof. Marcello Macarthy [Mini-curso Fortran - 5ª feira 02.12.2010]XVII SAMET - Prof. Marcello Macarthy [Mini-curso Fortran - 5ª feira 02.12.2010]
XVII SAMET - Prof. Marcello Macarthy [Mini-curso Fortran - 5ª feira 02.12.2010]
 
Algoritmo e Complexidade - texto Aula1.docx
Algoritmo e Complexidade - texto Aula1.docxAlgoritmo e Complexidade - texto Aula1.docx
Algoritmo e Complexidade - texto Aula1.docx
 
Final e aastract
Final e aastractFinal e aastract
Final e aastract
 
Ud2
Ud2Ud2
Ud2
 
Introdução à Linguagem de Programação C
Introdução à Linguagem de Programação CIntrodução à Linguagem de Programação C
Introdução à Linguagem de Programação C
 
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
The Developer's Conference (TDC) 2013 - São Paulo: Programação assíncrona com...
 
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
TechEd Brasil 2011: DEV 303 - Atualizando suas habilidades de programação com...
 
Java4
Java4Java4
Java4
 
Java1
Java1Java1
Java1
 

Destaque

01 Orientacao A Objetos Programacao
01   Orientacao A Objetos   Programacao01   Orientacao A Objetos   Programacao
01 Orientacao A Objetos Programacaotaniamaciel
 
Apw2 be er_adelaidepacheco_apresentação
Apw2 be er_adelaidepacheco_apresentaçãoApw2 be er_adelaidepacheco_apresentação
Apw2 be er_adelaidepacheco_apresentaçãoadelaidepacheco64
 
Daylishes (Team 22) - Lessons Learned #1
Daylishes (Team 22) - Lessons Learned #1Daylishes (Team 22) - Lessons Learned #1
Daylishes (Team 22) - Lessons Learned #1Daylishes
 
las claves del exito de la educacion en finlandeza
las claves del exito de la educacion en finlandezalas claves del exito de la educacion en finlandeza
las claves del exito de la educacion en finlandezanomy11
 
Sofia gett ytbqutwuqtwuytqwyqtuwrqwuyq
Sofia gett ytbqutwuqtwuytqwyqtuwrqwuyqSofia gett ytbqutwuqtwuytqwyqtuwrqwuyq
Sofia gett ytbqutwuqtwuytqwyqtuwrqwuyqsofiaswaggy
 
Lámparas #TerritorioHELLA
Lámparas #TerritorioHELLALámparas #TerritorioHELLA
Lámparas #TerritorioHELLAHELLA Spain
 
Slide share manual
Slide share manualSlide share manual
Slide share manualm_afercc
 
Media kit stardoll
Media kit stardollMedia kit stardoll
Media kit stardollgamebizmidia
 
VII SACEM - Semana Acadêmica da Engenharia de Materiais
VII SACEM - Semana Acadêmica da Engenharia de MateriaisVII SACEM - Semana Acadêmica da Engenharia de Materiais
VII SACEM - Semana Acadêmica da Engenharia de MateriaisStéfani Do Nascimento
 
Projeto de lei Casamento Civil Igualitário
Projeto de lei Casamento Civil IgualitárioProjeto de lei Casamento Civil Igualitário
Projeto de lei Casamento Civil IgualitárioMariana Pacheco
 
As Manifestações Populares na Sociedade Brasileira: Relações Políticas do Pas...
As Manifestações Populares na Sociedade Brasileira: Relações Políticas do Pas...As Manifestações Populares na Sociedade Brasileira: Relações Políticas do Pas...
As Manifestações Populares na Sociedade Brasileira: Relações Políticas do Pas...Ana Patricia Fernandes Oliveira
 
Calentamiento global
Calentamiento globalCalentamiento global
Calentamiento globalOmarhc
 
Redes sociales y el mercado digital
Redes sociales y el mercado digitalRedes sociales y el mercado digital
Redes sociales y el mercado digitalmartirami
 
Paisajes y fotografias
Paisajes y fotografiasPaisajes y fotografias
Paisajes y fotografiasSofiacubides
 

Destaque (20)

01 Orientacao A Objetos Programacao
01   Orientacao A Objetos   Programacao01   Orientacao A Objetos   Programacao
01 Orientacao A Objetos Programacao
 
Apw2 be er_adelaidepacheco_apresentação
Apw2 be er_adelaidepacheco_apresentaçãoApw2 be er_adelaidepacheco_apresentação
Apw2 be er_adelaidepacheco_apresentação
 
Daylishes (Team 22) - Lessons Learned #1
Daylishes (Team 22) - Lessons Learned #1Daylishes (Team 22) - Lessons Learned #1
Daylishes (Team 22) - Lessons Learned #1
 
las claves del exito de la educacion en finlandeza
las claves del exito de la educacion en finlandezalas claves del exito de la educacion en finlandeza
las claves del exito de la educacion en finlandeza
 
Sofia gett ytbqutwuqtwuytqwyqtuwrqwuyq
Sofia gett ytbqutwuqtwuytqwyqtuwrqwuyqSofia gett ytbqutwuqtwuytqwyqtuwrqwuyq
Sofia gett ytbqutwuqtwuytqwyqtuwrqwuyq
 
Lámparas #TerritorioHELLA
Lámparas #TerritorioHELLALámparas #TerritorioHELLA
Lámparas #TerritorioHELLA
 
Slide share manual
Slide share manualSlide share manual
Slide share manual
 
Satelites
SatelitesSatelites
Satelites
 
Media kit stardoll
Media kit stardollMedia kit stardoll
Media kit stardoll
 
VII SACEM - Semana Acadêmica da Engenharia de Materiais
VII SACEM - Semana Acadêmica da Engenharia de MateriaisVII SACEM - Semana Acadêmica da Engenharia de Materiais
VII SACEM - Semana Acadêmica da Engenharia de Materiais
 
Projeto de lei Casamento Civil Igualitário
Projeto de lei Casamento Civil IgualitárioProjeto de lei Casamento Civil Igualitário
Projeto de lei Casamento Civil Igualitário
 
Proyecto administración
Proyecto administración Proyecto administración
Proyecto administración
 
As Manifestações Populares na Sociedade Brasileira: Relações Políticas do Pas...
As Manifestações Populares na Sociedade Brasileira: Relações Políticas do Pas...As Manifestações Populares na Sociedade Brasileira: Relações Políticas do Pas...
As Manifestações Populares na Sociedade Brasileira: Relações Políticas do Pas...
 
Anelideos
AnelideosAnelideos
Anelideos
 
Vida de Platon
Vida de PlatonVida de Platon
Vida de Platon
 
Anteproyecto
AnteproyectoAnteproyecto
Anteproyecto
 
Calentamiento global
Calentamiento globalCalentamiento global
Calentamiento global
 
Presentación1
Presentación1Presentación1
Presentación1
 
Redes sociales y el mercado digital
Redes sociales y el mercado digitalRedes sociales y el mercado digital
Redes sociales y el mercado digital
 
Paisajes y fotografias
Paisajes y fotografiasPaisajes y fotografias
Paisajes y fotografias
 

Semelhante a 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.pdfGabrielEduardo16342
 
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
 
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
 
Introdução à programação funcional
Introdução à programação funcionalIntrodução à programação funcional
Introdução à programação funcionalGabriel Schade Cardoso
 
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Os Fantasmas !
 
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
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturadadiogoa21
 
Programação em C (2).pdf
Programação em C (2).pdfProgramação em C (2).pdf
Programação em C (2).pdfJoseAlberto78419
 
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
 
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetrosAlgoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetrosAlex Camargo
 
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetrosAlgoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetrosAlex Camargo
 
Funções inline e Recursivas
Funções inline e RecursivasFunções inline e Recursivas
Funções inline e RecursivasKadzuwa Kuyeri
 
RevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptxRevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptxClaudia Ferlin
 

Semelhante a Aula 4 (20)

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
 
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
 
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
 
Introdução à programação funcional
Introdução à programação funcionalIntrodução à programação funcional
Introdução à programação funcional
 
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
Capítulo 11 Livro Algoritmos e Programação de Computadores Autores JR., Diler...
 
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
 
Aula 4 | Funções
Aula 4 | Funções Aula 4 | Funções
Aula 4 | Funções
 
Apostila de-arduino
Apostila de-arduinoApostila de-arduino
Apostila de-arduino
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturada
 
Programação em C (2).pdf
Programação em C (2).pdfProgramação em C (2).pdf
Programação em C (2).pdf
 
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.
 
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetrosAlgoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
 
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetrosAlgoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
Algoritmos e Programação: Subalgoritmos, funções e passagem de parâmetros
 
Aula 7 -_aed_-_sub_algoritmos
Aula 7 -_aed_-_sub_algoritmosAula 7 -_aed_-_sub_algoritmos
Aula 7 -_aed_-_sub_algoritmos
 
Aula 7 aed - sub algoritmos
Aula 7   aed - sub algoritmosAula 7   aed - sub algoritmos
Aula 7 aed - sub algoritmos
 
Aula 7 -_aed_-_sub_algoritmos
Aula 7 -_aed_-_sub_algoritmosAula 7 -_aed_-_sub_algoritmos
Aula 7 -_aed_-_sub_algoritmos
 
Funções inline e Recursivas
Funções inline e RecursivasFunções inline e Recursivas
Funções inline e Recursivas
 
PHP - Funções
PHP - FunçõesPHP - Funções
PHP - Funções
 
RevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptxRevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptx
 
Aula05-JavaScript
Aula05-JavaScriptAula05-JavaScript
Aula05-JavaScript
 

Mais de EvelyneBorges

Adm 02 - perfil, habilidades,papéis e classificação dos administradores
Adm    02 - perfil, habilidades,papéis e classificação dos administradoresAdm    02 - perfil, habilidades,papéis e classificação dos administradores
Adm 02 - perfil, habilidades,papéis e classificação dos administradoresEvelyneBorges
 
Adm 01 -o que é administração -
Adm   01 -o que é administração -Adm   01 -o que é administração -
Adm 01 -o que é administração -EvelyneBorges
 
Ucb matriz curricular de sistemas da informacao - bacharel
Ucb   matriz curricular de sistemas da informacao - bacharelUcb   matriz curricular de sistemas da informacao - bacharel
Ucb matriz curricular de sistemas da informacao - bacharelEvelyneBorges
 
Facitec matriz curricular de sistemas da informacao - bacharel
Facitec   matriz curricular de sistemas da informacao - bacharelFacitec   matriz curricular de sistemas da informacao - bacharel
Facitec matriz curricular de sistemas da informacao - bacharelEvelyneBorges
 
Upis matriz curricular de sistemas da inormacao - bacharel
Upis   matriz curricular de sistemas da inormacao - bacharelUpis   matriz curricular de sistemas da inormacao - bacharel
Upis matriz curricular de sistemas da inormacao - bacharelEvelyneBorges
 
0000364 aula 5 estruturas de decisão
0000364 aula 5   estruturas de decisão0000364 aula 5   estruturas de decisão
0000364 aula 5 estruturas de decisãoEvelyneBorges
 
Matematica financeira
Matematica financeiraMatematica financeira
Matematica financeiraEvelyneBorges
 

Mais de EvelyneBorges (20)

Prova
ProvaProva
Prova
 
Juroscompostos
JuroscompostosJuroscompostos
Juroscompostos
 
Adm 02 - perfil, habilidades,papéis e classificação dos administradores
Adm    02 - perfil, habilidades,papéis e classificação dos administradoresAdm    02 - perfil, habilidades,papéis e classificação dos administradores
Adm 02 - perfil, habilidades,papéis e classificação dos administradores
 
Adm 01 -o que é administração -
Adm   01 -o que é administração -Adm   01 -o que é administração -
Adm 01 -o que é administração -
 
Ucb matriz curricular de sistemas da informacao - bacharel
Ucb   matriz curricular de sistemas da informacao - bacharelUcb   matriz curricular de sistemas da informacao - bacharel
Ucb matriz curricular de sistemas da informacao - bacharel
 
Facitec matriz curricular de sistemas da informacao - bacharel
Facitec   matriz curricular de sistemas da informacao - bacharelFacitec   matriz curricular de sistemas da informacao - bacharel
Facitec matriz curricular de sistemas da informacao - bacharel
 
Upis matriz curricular de sistemas da inormacao - bacharel
Upis   matriz curricular de sistemas da inormacao - bacharelUpis   matriz curricular de sistemas da inormacao - bacharel
Upis matriz curricular de sistemas da inormacao - bacharel
 
Exercícios lista 2
Exercícios   lista 2Exercícios   lista 2
Exercícios lista 2
 
0000364 aula 5 estruturas de decisão
0000364 aula 5   estruturas de decisão0000364 aula 5   estruturas de decisão
0000364 aula 5 estruturas de decisão
 
Exerc f.financeira
Exerc f.financeiraExerc f.financeira
Exerc f.financeira
 
Matematica financeira
Matematica financeiraMatematica financeira
Matematica financeira
 
Switchcase
SwitchcaseSwitchcase
Switchcase
 
Exercícios lista 1
Exercícios   lista 1Exercícios   lista 1
Exercícios lista 1
 
Aula 2
Aula 2Aula 2
Aula 2
 
Aula 1
Aula 1Aula 1
Aula 1
 
Função financeira
Função financeiraFunção financeira
Função financeira
 
Modulo iv
Modulo ivModulo iv
Modulo iv
 
Modulo iii
Modulo iiiModulo iii
Modulo iii
 
Modulo ii
Modulo iiModulo ii
Modulo ii
 
Modulo i
Modulo iModulo i
Modulo i
 

Aula 4

  • 1. Funções são os blocos de construção da linguagem C++, com os quais podemos construir programas melhores e mais facilmente compreensíveis. Quando os programas tornam-se maiores e mais complexos, pode-se melhorar a clareza e compreensão do trabalho dividindo-o em partes menores, que chamamos de funções. Todo programa possui ao menos uma função: a função main, a qual podemos chamar de “corpo” do programa, onde estão localizados todos os comandos e chamadas de outras funções que são executadas pelo programa.
  • 2. Dividindo o programa em funções separadas, deixando para a função main somente a tarefa de organizar as chamadas das demais funções, podemos trabalhar mais facilmente com o programa, modificando e corrigindo funções individualmente. À medida que o tamanho e a complexidade do programa aumentam, aumenta também a possibilidade de erros, já se o mesmo for dividido em blocos menores e organizados, fica mais fácil encontrar e evitar erros.
  • 3. Basicamente, uma função funciona da seguinte forma: • é feita uma chamada para esta função durante a execução do programa; • o programa é interrompido temporariamente, e “pula” para esta função executando seus comandos; • quando a função termina, ou seja, quando seus comandos acabam (ou quando o comando return é encontrado), o programa volta ao ponto onde foi interrompido para continuar sua execução normal.
  • 4. Uma função pode receber dados do programa para executar seus comandos (estes dados são chamados de parâmetros ou argumentos), e pode também retornar dados para o programa (o que chamamos de retorno de função).
  • 5. Declarando uma Função Antes de utilizar uma função em um programa é preciso declará-la, ou seja, especificar para o compilador exatamente o que faz esta função e que tipo de dados ela recebe e retorna. Podemos dividir o processo de declarar uma função em duas etapas distintas: o protótipo da função e a definição da função.
  • 6. Protótipo de uma Função O protótipo de uma função tem a mesma função de uma declaração de variáveis: dizer ao compilador quais tipos de variáveis estarão envolvidos na função. Isso permite que o compilador saiba trabalhar corretamente com os valores que entram e saem da função, fazendo conversões de tipos sempre que necessário. A sintaxe da declaração de um protótipo de função é a seguinte: <tipo_da_função> <nome> ( <tipo_de_parâmetro> <nome_da_variável>);
  • 7. O tipo da função denominará qual será o tipo de valor que esta função retorna. Uma função pode retornar qualquer tipo de valor, seja inteiro, fracionário ou nenhum valor. Quando uma função não retorna nenhum valor para o programa, seu tipo é void. Esse tipo de função executará seus comandos normalmente, mas não retornará nenhum valor para o programa quando terminar.
  • 8. O tipo de parâmetro serve para determinar o tipo de variáveis que a função receberá como parâmetros. Assim como o tipo da função, qualquer tipo de variável pode ser utilizado como parâmetro. Uma função que não recebe parâmetros de entrada deve ter a palavra chave void entre parênteses. É possível ter vários parâmetros na mesma função, separando-os com vírgulas.
  • 9. Alguns exemplos de protótipo de função: int livro (unsigned int paginas); float divide (float dividendo, float divisor); void imprime ( void ); float divide (float, float)
  • 10. Definição de uma Função O protótipo de uma função diz para o compilador quais os tipos de variáveis ela usará. Já a definição de uma função diz ao compilador exatamente o que a função faz. A sintaxe da definição de uma função é a seguinte: <tipo da função> <nome> ( <tipo do parâmetro> <nome do parâmetro>) { comandos da função; }
  • 11. A primeira linha da definição de uma função é idêntica ao protótipo, com a exceção de que somos obrigados a declarar nomes para as variáveis de parâmetro e que a linha não termina em um ponto-e-vírgula, e sim em uma abre-chaves. Dentro das chaves estarão todos os comandos pertencentes a função, inclusive declaração de variáveis locais, chamadas para outras funções e chamadas de retorno. Por exemplo: int cubo ( int valor) { int resultado; resultado = valor*valor*valor; return resultado; }
  • 12. Retorno de uma função O comando return é utilizado para terminar a execução de uma função e retornar um valor para o programa. Sua sintaxe é a seguinte: return <variável ou expressão>;
  • 13. O comando return aceita qualquer constante, variável ou expressão geral que o programador precise retornar para o programa principal, desde que este valor seja igual ou convertível para o tipo da função (já estabelecido no protótipo da função). É importante notar que o valor retornado não pode ser uma matriz; porém, é possível retornar uma matriz indiretamente, desde que ela faça parte de uma estrutura ou objeto (tipos de dados que serão estudados mais adiante).
  • 14. Por exemplo, considere a função compara_valores, mostrada a seguir: int compara_valores(int primeiro, int segundo) { if (primeiro == segundo) return (0); else if (primeiro > segundo) return (1); else if (primeiro < segundo) return (2); }
  • 15. Variáveis Locais A Linguagem C++ permite declarar variáveis dentro de suas funções. Essas variáveis são chamadas de variáveis locais, pois seus nomes e valores somente têm significado dentro da função que contém a declaração da variável.
  • 16. Chamada por Valor Os programas passam informações para funções usando parâmetros. Quando um parâmetro é passado a uma função, a Linguagem C++ usa uma técnica conhecida como chamada por valor para fornecer à função uma cópia dos valores dos parâmetros. Usando a chamada por valor, quaisquer modificações que a função fizer nos parâmetros existem apenas dentro da própria função. Quando a função termina, o valor das variáveis que a função chamadora passou para a função não é modificada dentro da função chamadora.
  • 17. Chamada por Referência Usando a chamada por valor, as funções não podem modificar o valor de uma variável passada para uma função. Quando as funções alteram o valor de um parâmetro, os programas precisam passar o parâmetro para a função usando chamada por referência.
  • 18. A diferença entre chamada por valor e chamada por referência é que, usando a chamada por valor, as funções recebem uma cópia do valor de um parâmetro. Por outro lado, com a chamada por referência, as funções recebem o endereço de memória da variável. Portanto, as funções podem alterar o valor armazenado na posição de memória específica (em outras palavras, o valor da variável); alterações essas que permanecem após a função terminar.
  • 19. Para usar a chamada por referência, seu programa precisar usar ponteiros. Por ora tudo o que precisamos saber é que um ponteiro armazena um endereço de memória, assim como uma variável armazena um valor. Mais adiante (quando forem alunos menos bobinhos), aprenderemos sobre ponteiros e suas aplicações em C++, incluindo o funcionamento de uma chamada de função por referência.
  • 20. Sobrecarga de Função Em C ++, uma vez que o mecanismo de prototipagem permite identificar uma função por seu nome e seus argumentos (assinatura da função), é possível criar funções com mesmo nome (sobrecarga). Este mecanismo é frequentemente utilizado na programação orientada a objetos.
  • 21. Ex.: int soma(int, int); float soma(float, float); int soma(int, float);
  • 22. Parâmetros Padrão (Default) Outra novidade introduzida por C++ no manuseio de funções é a possibilidade de definir-se um valor padrão para parâmetros de uma função. Isto é, podemos definir um parâmetro para uma função e estabelecer um valor padrão para ele, da seguinte forma: void mensagem (int x = 1);
  • 23. Quando chamamos a função e enviamos um valor como parâmetro para ela, a função é executada normalmente, utilizando o valor de x que enviamos. Porém, caso não enviássemos um valor x como parâmetro para esta função, isto é, fizéssemos a seguinte declaração no programa: mensagem( );
  • 24. Automaticamente a função substituiria x por 1, como especificamos no protótipo da função. Caso não tivéssemos definido um valor padrão para o parâmetro x, o compilador nos retornaria um erro de parâmetros insuficientes para que a função seja executada