Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.

Slides:



Advertisements
Apresentações semelhantes
Departamento de Informática Universidade Federal do Espírito Santo
Advertisements

Introdução à Programação: uma Abordagem Funcional
Introdução à Programação: uma Abordagem Funcional
Introdução à Programação: uma Abordagem Funcional
Introdução à Programação: uma Abordagem Funcional
Introdução à Programação: uma Abordagem Funcional Programação I Engenharia de Computação Prof.ª Claudia Boeres 2009/1.
Introdução à Programação: uma Abordagem Funcional Programação I Engenharia de Computação Prof.ª Claudia Boeres 2009/1.
Departamento de Informática Universidade Federal do Espírito Santo
Introdução à Programação: uma Abordagem Funcional PD I – Engenharia Elétrica Prof.ª Claudia Boeres 2008/2.
Introdução à Programação: uma Abordagem Funcional PD I – Engenharia Elétrica Prof.ª Claudia Boeres 2008/2.
Introdução à Programação: uma Abordagem Funcional Programação I Eng. de Computação Prof.ª Claudia Boeres e Prof. Estefhan Dazzi 2010/1.
Departamento de Informática Universidade Federal do Espírito Santo
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.
Introdução à Programação: uma Abordagem Funcional Programação I Engenharia de Computação Prof.ª Claudia Boeres e Prof. Estefhan Dazzi Wandekoken 2010/1.
Departamento de Informática Universidade Federal do Espírito Santo
Tipos Explícitos e Tipos Polimórficos para LF1
Programação de Computadores
Introdução à Programação: uma Abordagem Funcional PD I – Engenharia Elétrica Prof.ª Claudia Boeres 2008/2.
Introdução à Programação: uma Abordagem Funcional PD I – Engenharia Elétrica Prof.ª Claudia Boeres 2008/2.
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.
Departamento de Informática Universidade Federal do Espírito Santo
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 32 Departamento de Informática Centro.
Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro.
O USO DO SOFTWARE LIVRE JOOMLA NO DESENVOLVIMENTO DE WEB SITES FOCANDO A USABILIDADE NA SOCIEDADE DA INFORMAÇÃO Maria Irene da Fonseca e Sá Anne Caroline.
Escola Básica de Santa Catarina
Universidade Federal do Pará Serviço Público Federal Centro de Ciências Exatas e Naturais Departamento de Informática Abril/2001.
Funções em C Universidade do Estado de Santa Catarina
Wagner Santos C. de Jesus
Wagner Santos C. de Jesus
Dividir-e-Conquistar
Universidade Federal do Espírito Santo
Introdução ao -calculus
Introdução à Programação: uma Abordagem Funcional Programação I Engenharia de Computação Professores Claudia Boeres e Estefhan Dazzi Wandekoken 2010/1.
UNIVERSIDADE FEDERAL DE UBERLÂNDIA FACULDADE DE MATEMÁTICA
Aula 03 Revisão de Expressões Comando de Seleção
Semana 03: Comandos de desvio de fluxo. Expressões lógicas.
I- Introdução Motivação.
Prof.Alfredo Parteli Gomes
LISTAS DUPLAMENTE ENCADEADAS
Prof. Natalia Castro Fernandes Engenharia de Telecomunicações – UFF 2º semestre/2012.
ZEROS REAIS DE FUNÇÕES REAIS
Exercicios de revisão Exercicio tirados de
BCC /01 Funções. Material Didático Unificado. 1 BCC701 – Programação de Computadores I Universidade Federal de Ouro Preto Departamento de Ciência.
Material Didático Proposto 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Comissão para Coordenação das Atividades Pedagógicas.
Programação Funcional
Semana 03 Comandos de desvio de fluxo. Expressões lógicas.
Aula 3 – Chapter 1 Signals and Systems
PROGRAMAÇÃO - INTRODUÇÃO George Gomes Cabral. DECOMPOSIÇÃO Dividir para conquistar: Paradigma básico para tratamento de grandes problemas. Nossa meta.
Wagner Santos C. de Jesus
BCC /01 Aula Teórica 09 Funções Material Didático Proposto. 1 BCC701 – Programação de Computadores I Universidade Federal de Ouro Preto Departamento.
Prof. Renato de Oliveira Bastos
Material Didático Proposto 1 Universidade Federal de Ouro Preto - UFOP Departamento de Computação - DECOM Comissão para Coordenação das Atividades Pedagógicas.
Programação e Aplicações Gráficas
Aula 10. Pontifícia Universidade Católica de Goiás PUC GOIÁS Departamento de Computação Informática e Computação Professor: MSc. Mário Oliveira Orsi Cesar.
CES-10 INTRODUÇÃO À COMPUTAÇÃO Aulas Práticas – 2013
Programação Lógica com Prolog
INTRODUÇÃO A PROGRAMAÇÃO EM C THOBER CORADI DETOFENO, MSC. Aula 09 JOINVILLE 2013 Universidade do Estado de Santa Catarina – CCT/UDESC.
Haskell Programação Funcional Diego Lima Rubem Moreira.
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Semântica de Linguagens de Programação
Matemática Discreta I BCC101
INSTITUTO FEDERAL DO ESPÍRITO SANTO CURSO TÉCNICO EM INFORMÁTICA
Departamento de Informática Universidade Federal do Espírito Santo
Cálculo 1 Introdução a Limites e Continuidades
Desenvolvimento WEB Prof. Renato de Oliveira Bastos
FUNÇÃO EXPONENCIAL.
S = { } F(x) > 0 e g(x) > 0 I) 2x – 10 > 0 2x > 10 5
Estrutura de Dados Prof. André Cypriano M. Costa
SEMÂNTICA DENOTACIONAL Alexandre Mota
Transcrição da apresentação:

Introdução à Programação uma Abordagem Funcional Programação I Prof.ª Claudia Boeres CT VII - Sala 34 Departamento de Informática Centro Tecnológico Universidade Federal do Espírito Santo Co-Autoria: Clebson Oliveira

Validação de Dados Como sabemos, toda função tem um domínio e um contradomínio. No interpretador do Haskell, quando tentamos avaliar uma instância de uma definição, usando valores fora desse domínio, podemos receber como resposta mensagens nem sempre esclarecedoras; Quando se trata do usuário de nosso programa, este tipo de mensagem é ainda mais indesejável; Os programadores, que descrevem as funções, podem discernir com mais facilidade a natureza dos problemas que ocorrem durante o seu desenvolvimento; O mesmo não se pode esperar de alguém que não tem conhecimento dos elementos internos às descrições das nossas funções.

Tipos de Erro Tipicamente os erros são de duas naturezas. Pode ser que o tipo da instância esteja correto, mas nossa definição use alguma função primitiva que não se aplica ao valor da instância:

Tipos de Erro Outro tipo de problema ocorre quando o tipo de algum parâmetro da nossa instância não casa com o tipo inferido pelo interpretador. Por exemplo, se usamos um valor do tipo Float para y, obtemos:

Caracterização do Problema Desejamos construir uma função que seja uma extensão da função original (fx) e ao mesmo tempo lhe sirva como uma casca de proteção contra as violações de domínio;

Uma solução geral bastante conveniente é construir um novo contradomínio (NCD) para fx (extensão de f), formado por pares onde o primeiro elemento é do tipo boolean e o segundo do contradomínio de f: NCD(fx) = (boolean, CD(f)) Projeto da Solução

Para valores de x no domínio de f, teremos: fx x = (True, f x ) Para os valores de x fora do domínio teremos: fx x = (False, k ) » onde k é um valor qualquer pertencente ao contradomínio de f. Projeto da Solução

fx x y z = if invalido x y z then (False,0) else (True, f x y z) where invalido x y z =... f x y z = div x y + z Solução

Sabemos que o universo é definido pelos tipos dos três parâmetros (a, b, c), é maior que o domínio da função; Ou seja, a função não está definida para instâncias de a, b e c, onde se verifica a seguinte desigualdade: (b^2) + (4 * a * c) < 0 Exemplo – Raízes do 2º grau

Solução 1: re2gx a b c = (not (delta < 0), if delta < 0 then (0,0) else (x1, x2)) where delta = (b ^ 2) - (4 * a * c) x1 = ((-b) + sqrt delta) / (2 * a) x2 = ((-b) - sqrt delta) / (2 * a) Exemplo – Raízes do 2º grau

Solução 2: re2gx a b c = if delta < 0 then (False, (0, 0)) else (True, (x1, x2)) where delta = (b ^ 2) - (4 * a * c) x1 = ((-b) + sqrt delta) / (2 * a) x2 = ((-b) - sqrt delta) / (2 * a) Exemplo – Raízes do 2º grau

Faça uma função estendida para: f x y = 1/(x+y) Exercício fx x y = if invalido x y then (False,0) else (True, f x y) where invalido x y = x+y == 0 f x y = 1/(x+y)