SlideShare uma empresa Scribd logo
1 de 7
Baixar para ler offline
Introdução a Funções
Funções Matemáticas
• função é uma relação de um ou vários valores de argumentos de entrada em um
ÚNICO resultado de saída.
• O conjunto de todos os valores de entrada de uma função é chamado de DOMÍNIO
da função. O conjunto de todos os resultados é chamado de IMAGEM da função.
Normalmente a IMAGEM é um subconjunto de um conjunto de resultados
possíveis chamado de CONTRADOMÍNIO. A notação é: f: DomínioContradomínio.
Para Fig I temos e para Fig II temos , onde R é o conjunto
dos números reais.
x = 2
y = 2
 z = 8z = f(x,y) = x2+y2
f(x) = x2
x = 2  f(x) = 4
x
y
f: R  R f: R  R  R
z
y x
Fig I
Fig II
Domínio Contradomíniof
Funções e Procedimentos
• Uma função matemática lembra uma máquina que recebe valores para os seus
argumentos de entrada, processa-os e retorna um valor como saída (Figs A e B).
• Em computação nós estendemos este conceito permitindo que estas “máquinas”
produzam “efeitos colaterais” (como escrever uma mensagem no papel) (Fig. C).
Eventualmente, até admitimos que a “máquina” não retorna valor (Fig. D)
• Neste caso, podemos dizer que as máquinas deixam de ser equivalentes a funções
matemáticas (i.e. deixam de ser FUNCIONAIS) e passam a ser PROCEDIMENTAIS,
no sentido de que seguem um procedimento, claro, sequencial e com possíveis
efeitos colaterais que afetam o ambiente.
Fig A Fig B Fig C Fig D
Funções e Procedimentos
• Em C, um procedimento (retornando ou não valores) continua sendo chamado de
função (function).
• “Funções” que não retornam valor não podem ser usadas em expressões ou como
argumentos de outra função.
– Por exemplo, é possível termos e
– mas, não é possível , pois h não retorna valor !!!
• Em C, o comando return define o que retorna
• A sintaxe é:
g(f(1,2), 2)
g(h(1,2), 2)
10+f(1,2)
float g(float x, float y)
{
float z = x*x + y*y;
printf(“%f^2 + %f^2 igual a %fn“,x,y,z);
return z;
}
void h(float x, float y)
{
float z = x*x + y*y;
printf(“%f^2 + %f^2 igual a %fn“,x,y,z);
}
tipo_de_retorno nomeFuncao(lista_de_argumentos)
{
corpo da função
}
Usando Funções
• Funções em C recebem VALORES (e não nomes de variáveis) e retornam VALORES.
float g(float x, float y)
{
float z = x*x + y*y;
printf("%f^2 + %f^2 igual a %fn",x,y,z);
return z;
}
int main(void)
{
float z = 1.0;
float w = 2.0;
printf("%fn",10+g(z,w)); /* imprime 15 */
return 0;
}
g é chamada com o primeiro
argumento igual a 1.0 e o
segundo argumento igual a 2.0
Numa área local e isolada de
memória, x recebe o valor de 1.0 e
y recebe o valor de 2.0 e g retorna
o valor calculado de 5.0. Ao
terminar, esta memória local
é totalmente apagada !
1
2
3
4
Usando Funções
• Como são valores que são passados para a função, ela desconhece as variáveis que
continham estes valores. Os nomes podem coincidir, mas são variáveis distintas.
• Há uma maneira de fazer com que uma função em C altere o valor de uma variável
que pertence ao código que a chamou. Este “efeito colateral” a torna um
PROCEDIMENTO. Isto será visto mais adiante.
• A possibilidade de alterar valores de variáveis que pertencem a outras funções,
torna as funções em C muito poderosas, mas também requerem atenção redobrada
(pois alteram o ambiente).
float dobra(float x)
{
x = 2 * x;
return x;
}
int main(void)
{
float x = 5.0;
printf("%fn", dobra(x)); /* imprime 10.0 */
printf("%fn", x); /* imprime 5.0 */
return 0;
}
são variáveis distintas
o valor de x permanece
inalterado !!
Considerações Importantes
• Algumas linguagens de programação, chamadas LINGUAGENS FUNCIONAIS,
como Lisp e Haskell, consideram o ato de computar como sendo o ato de avaliar
funções matemáticas, sem que o estado do mundo (e.g. variáveis) seja alterado.
Lisp, por exemplo, é uma linguagem que pode ser entendida como sendo
simplesmente expressões dentro de expressões que sempre retornam valor. Em
oposição, temos linguagens de programação denominadas de Linguagens
Procedimentais (tais como C, C++ e Java), que definem PROCEDIMENTOS, isto é:
comandos imperativos em uma ordem específica que podem alterar o estado do
mundo (e.g. mudanças de valores de variáveis ou efeitos colaterais de uma
maneira geral). Porém, todas as linguagens permitem uma fuga para o estilo que
lhe é oposto por natureza. Por exemplo, podemos escrever procedimentos em Lisp
e funções matemáticas em C.
• Procedimentos são instrumentos poderosos, mas devem ser usados com cautela,
porque as mudanças do estado do mundo podem ser sutis, silenciosas, e erros
catastróficos podem passar desapercebidos.
• ... Programar é uma arte poderosa e iniciantes são “aprendizes de feiticeiro” que
devem treinar bastante todas as técnicas !

Mais conteúdo relacionado

Mais procurados

Mais procurados (16)

Introdução à linguagem c
Introdução à linguagem cIntrodução à linguagem c
Introdução à linguagem c
 
Semana 14
Semana 14Semana 14
Semana 14
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória
 
SciLab -Tutorial
SciLab -TutorialSciLab -Tutorial
SciLab -Tutorial
 
Funções - Revisão
Funções - RevisãoFunções - Revisão
Funções - Revisão
 
F sharp e o paradigma funcional
F sharp e o paradigma funcionalF sharp e o paradigma funcional
F sharp e o paradigma funcional
 
Modularização
ModularizaçãoModularização
Modularização
 
Programação funcional
Programação funcionalProgramação funcional
Programação funcional
 
Função exponencial
Função exponencialFunção exponencial
Função exponencial
 
Aula14
Aula14Aula14
Aula14
 
12 algoritmos e funcoes recursivas
12   algoritmos e funcoes recursivas12   algoritmos e funcoes recursivas
12 algoritmos e funcoes recursivas
 
Aula 7 -_aed_-_sub_algoritmos
Aula 7 -_aed_-_sub_algoritmosAula 7 -_aed_-_sub_algoritmos
Aula 7 -_aed_-_sub_algoritmos
 
Ponteiros de Função
Ponteiros de FunçãoPonteiros de Função
Ponteiros de Função
 
Java 05
Java 05Java 05
Java 05
 
Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros Linguagem C - Funções e ponteiros
Linguagem C - Funções e ponteiros
 
Resumo de Função exponencial
Resumo de Função exponencialResumo de Função exponencial
Resumo de Função exponencial
 

Semelhante a Introdução às Funções Matemáticas

Aula01
Aula01Aula01
Aula01vdlos
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturadadiogoa21
 
Programando em python funcoes
Programando em python   funcoesProgramando em python   funcoes
Programando em python funcoessamuelthiago
 
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)Filipe Chagas Ferraz
 
RevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptxRevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptxClaudia Ferlin
 
Paradigmas de linguagens de programacao - aula#10
Paradigmas de linguagens de programacao - aula#10Paradigmas de linguagens de programacao - aula#10
Paradigmas de linguagens de programacao - aula#10Ismar Silveira
 
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
 
Paradigma Funcional - Caso de Estudo Haskell
Paradigma Funcional - Caso de Estudo HaskellParadigma Funcional - Caso de Estudo Haskell
Paradigma Funcional - Caso de Estudo HaskellSérgio Souza Costa
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao cprofwtelles
 

Semelhante a Introdução às Funções Matemáticas (20)

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
 
Aula01
Aula01Aula01
Aula01
 
mod3-programação-estruturada
mod3-programação-estruturadamod3-programação-estruturada
mod3-programação-estruturada
 
Programando em python funcoes
Programando em python   funcoesProgramando em python   funcoes
Programando em python funcoes
 
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)
Aula - Funções (Curso de Python Básico -- FATEC SENAI MT)
 
RevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptxRevisãoCompactaFuncoesPonteiro.pptx
RevisãoCompactaFuncoesPonteiro.pptx
 
Introdução ao paradigma funcional com scala
Introdução ao paradigma funcional com scalaIntrodução ao paradigma funcional com scala
Introdução ao paradigma funcional com scala
 
Programando em Python - Funções
Programando em Python -  FunçõesProgramando em Python -  Funções
Programando em Python - Funções
 
Funções em C
Funções em CFunções em C
Funções em C
 
Comandos e expressões
Comandos e expressõesComandos e expressões
Comandos e expressões
 
Paradigmas de linguagens de programacao - aula#10
Paradigmas de linguagens de programacao - aula#10Paradigmas de linguagens de programacao - aula#10
Paradigmas de linguagens de programacao - aula#10
 
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
 
Paradigma Funcional - Caso de Estudo Haskell
Paradigma Funcional - Caso de Estudo HaskellParadigma Funcional - Caso de Estudo Haskell
Paradigma Funcional - Caso de Estudo Haskell
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 
Aula5 introducao c
Aula5 introducao cAula5 introducao c
Aula5 introducao c
 
Utilizandoo winplot
Utilizandoo winplotUtilizandoo winplot
Utilizandoo winplot
 
07-lambda.pdf
07-lambda.pdf07-lambda.pdf
07-lambda.pdf
 
Aula 1 | Introdução a C++
Aula 1 | Introdução a C++Aula 1 | Introdução a C++
Aula 1 | Introdução a C++
 
Aula 4 | Funções
Aula 4 | Funções Aula 4 | Funções
Aula 4 | Funções
 

Introdução às Funções Matemáticas

  • 2. Funções Matemáticas • função é uma relação de um ou vários valores de argumentos de entrada em um ÚNICO resultado de saída. • O conjunto de todos os valores de entrada de uma função é chamado de DOMÍNIO da função. O conjunto de todos os resultados é chamado de IMAGEM da função. Normalmente a IMAGEM é um subconjunto de um conjunto de resultados possíveis chamado de CONTRADOMÍNIO. A notação é: f: DomínioContradomínio. Para Fig I temos e para Fig II temos , onde R é o conjunto dos números reais. x = 2 y = 2  z = 8z = f(x,y) = x2+y2 f(x) = x2 x = 2  f(x) = 4 x y f: R  R f: R  R  R z y x Fig I Fig II Domínio Contradomíniof
  • 3. Funções e Procedimentos • Uma função matemática lembra uma máquina que recebe valores para os seus argumentos de entrada, processa-os e retorna um valor como saída (Figs A e B). • Em computação nós estendemos este conceito permitindo que estas “máquinas” produzam “efeitos colaterais” (como escrever uma mensagem no papel) (Fig. C). Eventualmente, até admitimos que a “máquina” não retorna valor (Fig. D) • Neste caso, podemos dizer que as máquinas deixam de ser equivalentes a funções matemáticas (i.e. deixam de ser FUNCIONAIS) e passam a ser PROCEDIMENTAIS, no sentido de que seguem um procedimento, claro, sequencial e com possíveis efeitos colaterais que afetam o ambiente. Fig A Fig B Fig C Fig D
  • 4. Funções e Procedimentos • Em C, um procedimento (retornando ou não valores) continua sendo chamado de função (function). • “Funções” que não retornam valor não podem ser usadas em expressões ou como argumentos de outra função. – Por exemplo, é possível termos e – mas, não é possível , pois h não retorna valor !!! • Em C, o comando return define o que retorna • A sintaxe é: g(f(1,2), 2) g(h(1,2), 2) 10+f(1,2) float g(float x, float y) { float z = x*x + y*y; printf(“%f^2 + %f^2 igual a %fn“,x,y,z); return z; } void h(float x, float y) { float z = x*x + y*y; printf(“%f^2 + %f^2 igual a %fn“,x,y,z); } tipo_de_retorno nomeFuncao(lista_de_argumentos) { corpo da função }
  • 5. Usando Funções • Funções em C recebem VALORES (e não nomes de variáveis) e retornam VALORES. float g(float x, float y) { float z = x*x + y*y; printf("%f^2 + %f^2 igual a %fn",x,y,z); return z; } int main(void) { float z = 1.0; float w = 2.0; printf("%fn",10+g(z,w)); /* imprime 15 */ return 0; } g é chamada com o primeiro argumento igual a 1.0 e o segundo argumento igual a 2.0 Numa área local e isolada de memória, x recebe o valor de 1.0 e y recebe o valor de 2.0 e g retorna o valor calculado de 5.0. Ao terminar, esta memória local é totalmente apagada ! 1 2 3 4
  • 6. Usando Funções • Como são valores que são passados para a função, ela desconhece as variáveis que continham estes valores. Os nomes podem coincidir, mas são variáveis distintas. • Há uma maneira de fazer com que uma função em C altere o valor de uma variável que pertence ao código que a chamou. Este “efeito colateral” a torna um PROCEDIMENTO. Isto será visto mais adiante. • A possibilidade de alterar valores de variáveis que pertencem a outras funções, torna as funções em C muito poderosas, mas também requerem atenção redobrada (pois alteram o ambiente). float dobra(float x) { x = 2 * x; return x; } int main(void) { float x = 5.0; printf("%fn", dobra(x)); /* imprime 10.0 */ printf("%fn", x); /* imprime 5.0 */ return 0; } são variáveis distintas o valor de x permanece inalterado !!
  • 7. Considerações Importantes • Algumas linguagens de programação, chamadas LINGUAGENS FUNCIONAIS, como Lisp e Haskell, consideram o ato de computar como sendo o ato de avaliar funções matemáticas, sem que o estado do mundo (e.g. variáveis) seja alterado. Lisp, por exemplo, é uma linguagem que pode ser entendida como sendo simplesmente expressões dentro de expressões que sempre retornam valor. Em oposição, temos linguagens de programação denominadas de Linguagens Procedimentais (tais como C, C++ e Java), que definem PROCEDIMENTOS, isto é: comandos imperativos em uma ordem específica que podem alterar o estado do mundo (e.g. mudanças de valores de variáveis ou efeitos colaterais de uma maneira geral). Porém, todas as linguagens permitem uma fuga para o estilo que lhe é oposto por natureza. Por exemplo, podemos escrever procedimentos em Lisp e funções matemáticas em C. • Procedimentos são instrumentos poderosos, mas devem ser usados com cautela, porque as mudanças do estado do mundo podem ser sutis, silenciosas, e erros catastróficos podem passar desapercebidos. • ... Programar é uma arte poderosa e iniciantes são “aprendizes de feiticeiro” que devem treinar bastante todas as técnicas !