Introdução a Funções



Documentos relacionados
Programação II. Introdução a Funções. Bruno Feijó Dept. de Informática, PUC-Rio

INF1005: PROGRAMAÇÃO I. Capítulo 12. Ivan Mathias Filho Funções Matemáticas

AULA 3 Alocação dinâmica de memória: Ponteiros

Orientação a Objetos

INTRODUÇÃO À PROGRAMAÇÃO II VARIÁVEIS COMPOSTAS HOMOGÊNEAS UNIDIMENSIONAIS

3. Linguagem de Programação C

3. COMPILAÇÃO E ESTRUTURA BÁSICA DE UM PROGRAMA EM C

TUTORIAL MATLAB Victor Breder 2016

Linguagem C. Introdução à Programação C. Variáveis. Identificadores. Identificadores 12/03/2011 VARIÁVEIS E TIPOS DE DADOS

Programação WEB I Funções

Maratona de Programação - Dicas Para Iniciantes

Matemática para a Economia I - 1 a lista de exercícios Prof. - Juliana Coelho

Métodos Formais. Agenda. Relações Binárias Relações e Banco de Dados Operações nas Relações Resumo Relações Funções. Relações e Funções

CÁLCULO 1 Teoria 0: Revisão Gráfico de Funções elementares Núcleo de Engenharias e Ciência da Computação. Professora: Walnice Brandão Machado

Matemática Básica Intervalos

Introdução. Software Básico Aula 3. Prof. Dr. Rogério Vargas.

Programação de Computadores I. Linguagem C Função

Algoritmo e Pseudo-código

Bacharelado em Ciência e Tecnologia Processamento da Informação. Módulos Parte III

BC1424 Algoritmos e Estruturas de Dados I Aula 02: Ponteiros, estruturas e alocação de memória

2 - Generalidades sobre funções reais de variável real

Algoritmos e Programação : Conceitos e estruturas básicas. Hudson Victoria Diniz

INTEGRAÇÃO JAVA COM ARDUINO

Montadores e Compiladores

Os eixo x e y dividem a circunferência em quatro partes congruentes chamadas quadrantes, numeradas de 1 a 4 conforme figura abaixo:

A integral indefinida

Algoritmos e Estruturas de Dados I. Variáveis Indexadas. Pedro O.S. Vaz de Melo

MC Teste de Mesa e Comandos Repetitivos

Linguagens de Programação:

Escola Secundária c/3º CEB José Macedo Fragateiro. Curso Profissional de Nível Secundário. Componente Técnica. Disciplina de

Parte 05 - Técnicas de programação (mapas de Veitch-Karnaugh)

Aula 01 Introdução Custo de um algoritmo, Funções de complexidad e Recursão

Unidade 3 Função Afim

Lista 4 Introdução à Programação Entregar até 07/05/2012

Calculando seno(x)/x com o interpretador Hall.

Teoria dos Grafos. Valeriano A. de Oliveira Socorro Rangel Departamento de Matemática Aplicada.

Bases Matemáticas. Daniel Miranda de maio de sala Bloco B página: daniel.miranda

PROGRAMAÇÃO FUNÇÕES NA LINGUAGEM C

Matemática I Capítulo 08 Função Inversa

Programação II. Tipos Estruturados. Bruno Feijó Dept. de Informática, PUC-Rio

Ficheiros binários 1. Ficheiros binários

Algoritmos e Estruturas de Dados I (DCC/003) Funções

Instituto Federal Fluminense Campus Campos Centro Programa Tecnologia Comunicação Educação (PTCE)

Os conceitos aprendidos são fundamentais, essenciais para escrever um programa macro. Mas o que é um programa macro?

Material sobre Funções AEDS 1

Objectos Gráficos 1. APROG (Civil) Aula 4. Friday, November 2, 12

Primeira Prova de Análise e otimização de Código - DCC888 -

21 Modularização - Funções e Procedimentos

Aula Extra. Depurador Code::Blocks. Monitoria de Introdução à Programação

Modularidade - Funções e Procedimentos

Linguagens e Paradigmas de Programação

SISTEMAS DIGITAIS MEMÓRIAS E CIRCUITOS DE LÓGICA PROGRAMÁVEL

Método Simplex das Duas Fases

2. Tipos Abstratos de Dados

Cálculo I -A- Humberto José Bortolossi. Aula 1 18 de agosto de Departamento de Matemática Aplicada Universidade Federal Fluminense

Verificação e validação

1. Noção de algoritmo

EXPLORANDO A RESOLUÇÃO DE PROBLEMAS COM O MAPLE

Análise Léxica. Sumário

Aparelhos de Laboratório de Electrónica

Linguagem de Programação C. Fluxo de Saída Padrão. Linguagem de Programação C. printf. Fluxo de Saída Padrão. Algoritmos e Lógica de Programação

Introdução à Programação

AGRUPAMENTO DE ESCOLAS DA SÉ GUARDA. MATEMÁTICA B Curso de Artes Visuais

Aula 6 Propagação de erros

Requisitos de Software

Introdução à Programação. Funções e Procedimentos. Prof. José Honorato F. Nunes honoratonunes@gmail.com

UNIPAC Araguari FACAE - Faculdade de Ciências Administrativas e Exatas SISTEMAS DE INFORMAÇÃO

Conceitos básicos de programação

UNIVERSIDADE FEDERAL DE PERNAMBUCO

Programação de Computadores - I. Profª Beatriz Profº Israel

ALGORITMOS E ESRUTRA DE DADOS I. Ponteiros Passagem por Valor e Referência Alocação de Memória

MANUAL DO USUÁRIO SIMPLEX. Prof. Erico Fagundes Anicet Lisboa, M. Sc.

Funções em C. Lucas Ferrari de Oliveira Professor Adjunto. Linguagem de Programação Estruturada I. Universidade Federal do Paraná

Do alto-nível ao assembly

PROGRAMAÇÃO ORIENTADA A OBJETO INTRODUÇÃO

1. Estrutura de Dados

Referências. Programação de Computadores II. Cap. 7 Cadeias de Caracteres. Caracteres. Tópicos

ÁLGEBRA BOOLEANA- LÓGICA DIGITAL

Programação 5374 : Engenharia Informática 6638 : Tecnologias e Sistemas de Informação. Cap. 7 Arrays. Arrays

Nº horas ESTRATÉGIAS RECURSOS AVALIAÇÃO

AGRUPAMENTO DE ESCOLAS DR. VIEIRA DE CARVALHO

Herança. Prof. Leonardo Barreto Campos 1

UNIVERSIDADE DO VALE DO RIO DOS SINOS - UNISINOS CENTRO DE CIÊNCIAS EXATAS E TECNOLÓGICAS - CENTRO 06. Funções, variáveis, parâmetros formais

FUNÇÕES MATEMÁTICAS NÚMERO : PI() SENO E COSSENO: SEN() E COS()

Ciclo com Contador : instrução for. for de variável := expressão to. expressão do instrução

Programação Orientada a Objetos

Proposta de resolução da Prova de Matemática A (código 635) 2ª fase. 19 de Julho de 2010

Prof.ª: Dr. Maria Lúcia Pozzatti Flôres Organização: Gilberto Raitz Junior

Análise de Sistemas de Controle no Espaço de Estados

Encapsulamento de Código: Funções e Procedimentos

1 Teoria de conjuntos e lógica

Sistemas Distribuídos Capítulo 4 - Aula 5

a 21 a a 2n... a n1 a n2... a nn

Programação II. Vetores e Alocação Dinâmica. Bruno Feijó Dept. de Informática, PUC-Rio

Relações. Antonio Alfredo Ferreira Loureiro. UFMG/ICEx/DCC MD Relações 1

Dr. Alan R. R. de Freitas

USANDO O PYTHON PARA ESCREVER PLUG-INS PARA O GIMP

Modularidade - Fun ções e Procedimentos

Proporcionar a modelagem de sistemas utilizando todos os conceitos da orientação a objeto;

Introdução a Programação de Jogos

Transcrição:

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. y z Fig I f(x) = x 2 x = 2 f(x) = 4 x z = f(x,y) = x 2 +y 2 x = 2 y = 2 z = 8 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 f: R R e para Fig II temos f: R R R, onde R é o conjunto dos números reais. Domínio Fig II f y Contradomínio x

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) Fig A Fig B Fig C 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.

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 g(f(1,2), 2) e g(h(1,2), 2) mas, não é possível, pois h não retorna valor!!! Em C, o comando return define o que retorna float g(float x, float y) float z = x*x + y*y; printf( %f^2 + %f^2 igual a %f\n,x,y,z); return z; void h(float x, float y) float z = x*x + y*y; printf( %f^2 + %f^2 igual a %f\n,x,y,z); 10+f(1,2) A sintaxe é: 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 %f\n",x,y,z); return z; int main(void) float z = 1.0; float w = 2.0; printf("%f\n",10+g(z,w)); /* imprime 15 */ return 0; 4 3 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! 2 g é chamada com o primeiro argumento igual a 1.0 e o segundo argumento igual a 2.0 1

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. float dobra(float x) x = 2 * x; return x; são variáveis distintas int main(void) float x = 5.0; printf("%f\n", dobra(x)); /* imprime 10.0 */ printf("%f\n", x); /* imprime 5.0 */ return 0; o valor de x permanece inalterado!! 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).

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!