Introdução à Programação: uma Abordagem Funcional

Slides:



Advertisements
Apresentações semelhantes
Introdução à Programação Funções Matemáticas
Advertisements

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 Engenharia de Computação Prof.ª Claudia Boeres e Prof. Estefhan Dazzi Wandekoken 2010/1.

Pseudo-código: sintaxe
Programação de Computadores
Engenharia Informática Programação I & Estruturas de Dados e Algoritmos 2001/ Capítulo 2 Tipos de Dados.
Introdução à Programação: uma Abordagem Funcional PD I – Engenharia Elétrica Prof.ª Claudia Boeres 2008/2.
Introdução à Programação Apresentação da Disciplina 1º Semestre 2010 > PUCPR > Design Digital Bruno C. de Paula.
Potenciação.
REGRAS DE OPERAÇÕES COM POTÊNCIAS
ASSUNTOS ABORDADOS Potenciação Radiciação.
Matemática Financeira Revisão
Construção de Algoritmos 1
Rafael Pinto Frederico Corrêa
Algoritmos Escher.
Disciplina: AAM Profa. Ana Watanabe vol.3
Etec Dr. Emilio Hernandez Aguilar
Linguagem C.
Unidades de Armazenamento
7 - Funções pré-definidas
Funções Matemática.
Programação Baseada em Objectos Desenho de TAD
4 - Para cada uma das operações abaixo informe quais são operações
Revisão de Potências de dez,
Linguagem Haskell Riocemar S. de Santana.
Conjuntos numéricos e os números reais
Introdução a Computação e Cálculo Numérico
Introdução a Computação e Cálculo Numérico
AGORA É COM VOCÊ... Simplifique a expressão:. AGORA É COM VOCÊ... Simplifique a expressão:
Linguagens de Programação
O QUE FOI ESTUDADO NESTA AULA:
Linguagens imperativas: Aula prática
AGORA É COM VOCÊ! Simplifique os radicais. AGORA É COM VOCÊ! Simplifique os radicais.
ENGENHARIA AMBIENTAL QUÍMICA APLICADA.
Fábio de Oliveira Borges
Algarismos Significativos
Expressões e Instrução de Atribuição
Aritmética do computador e erros
Operadores e Atribuições Capítulo 3
Lógica de Programação/ Algoritmos Engenharia Produção 2014
Paradigmas de Programação - prof Gláucya Carreiro Boechat1 Elaborando um Programa Prof.: Gláucya Carreiro Boechat Universidade.
Sistemas de Numeração.
Professora: Lucélia Alves de Oliveira
Tipos de Dados Operadores
MSc. Marcelo Torres – professortorres.com.br. Linguagem de Programação 01 - Introdução à Linguagem C MSc. Marcelo Torres – professortorres.com.br.
Aula prática 2 Operadores e Expressões Comandos de Decisão Comentários
Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery.
Campus de Caraguatatuba Aula 9: Noções Básicas sobre Erros (3)
Funções Matemáticas e de String
Wellington Felix.  Criada por Brian Kernighan e Denis Ritchie, na década de 1970, para uso em um computador DEC PDP-11 em Unix  C++ é uma extensão da.
Programação Funcional
CONJUNTO DOS NÚMEROS INTEIROS
FUNDAMENTOS DE COMPUTAÇÃO
Haskell Programação Funcional Diego Lima Rubem Moreira.
Computação Eletrônica Variáveis Reais e Booleanas.
Fundamentos de linguagens de programação
Linguagem C.
Departamento de Informática Universidade Federal do Espírito Santo
Programação de Computadores - 1
Métodos Numéricos Computacionais
INTRODUÇÃO AOS MÉTODOS NUMÉRICOS Professor: Dr. Edwin B. Mitacc Meza
NOTAÇÃO CIENTÍFICA 1º/2015 AULA Nº 1 CURSO: Engenharia Civil
PARADIGMAS DE LINGUAGENS EXPRESSÕES E INSTRUÇÕES DE ATRIBUIÇÃO
Tipos de Dados, Variáveis, Expressões Lógicas e Aritméticas
Programação estruturada unidade 2
VARIÁVEIS Desenvolvido pelo Mestrando Rodrigo Moreira Barreto – VHLab (Virtual Humans Simulation Laboratory – PUCRS) 1 Desenvolvido por: Rodrigo Moreira.
Naturais (N) N = {0,1,2,3,4,...} Problemas do conjunto:
Programação Funcional
Transcrição da apresentação:

Introdução à Programação: uma Abordagem Funcional Programação I Engenharia de Computação Prof.ª Claudia Boeres e Prof. Estefhan Dazzi Wandekokem 2010/1 Theme created by Sakari Koivunen and Henrik Omma Released under the LGPL license. 1 1

O que é um tipo de dado? um conjunto de valores, munido de um conjunto de operações sobre esses valores. Exemplo: S = {0,1,2,3, ...}, munido das operações de adição (a) e multiplicação (m). cada operação possui um tipo, indicando o domínio e o contradomínio. Exemplo: o domínio de a é S X S e o contradomínio é S. Assinatura de a e de m: a :: (S x) x → x → x m :: (S x)  x → x → x 2 2

Tipos de dados Básicos: numéricos, booleanos, caracteres Compostos: tuplas e listas 3 3

Linguagem fortemente tipada Em Haskell, conhecendo-se o tipo das operações e funções que compõem uma expressão podemos determinar o tipo do valor que dela resultará Em linguagens de programação isto equivale a dizer que a linguagem é fortemente tipada. 4

Tipos Numéricos Tipo de dados fundamental na computação Inteiros e reais Tratamentos de números pelo computador: requer adaptações e simplificações. Em HUGS é possível visualizar o tipo da expressão avaliada através do comando :set +t 5

Exemplos > :set +t > 2^20 1048576 :: Integer > :set -t > 2^100 1267650600228229401496703205376 6

Números Inteiros tipo Integer: representação de números com uma quantidade ilimitada de algarismos. a memória do computador é finita: limites de representação são impostos; o limite pode estar bem longe e podemos não atingí-lo em nossas aplicações. > 2^1000 1071508607186267320948425049060001810561404811705533 607443750388370351051124936122493198378815695858127 59467291755314682518714528569231404359845775746985 748039345677748242309854210746050623711418779541821 530464749835819412673987675591655439460770629145711 96477686542167660429831652624386837205668069376 7

Números Inteiros Tipo Int: representação de inteiros mais restrita (intervalo fixo e reduzido de valores); Economia de memória do computador e tempo de processamento; Para que um número seja representado como tipo Int, devemos indicar explicitamente 8

Exemplos > 1234567890::Int 1234567890 :: Int > 12345678901::Int Program error: arithmetic overflow > 1089979879870979879 1089979879870979879 :: Integer > 1089979879870979879::Int 9

Operações sobre inteiros Nome Descrição + Adição * Multiplicação - Subtração div, quot divisão inteira ^ Potência rem resto da divisão inteira entre dois inteiros mod módulo da divisão inteira entre dois inteiros abs valor absoluto signum produz -1, 0 ou 1, indicando se o número é negativo, zero ou positivo 10

Números Reais Tipo Float: representação dos números reais Para a representação, considera-se a magnitude e a precisão de um número; Precisão: nos diz quantos algarismos significativos são usados; Magnitude: nos diz qual o maior expoente admitido; Exemplo: uma determinada implementação pode utilizar 6 algarismos significativos: o número 123456.789 seria representado pelo número 123457.0, onde o 6 foi arredondado para 7. A magnitude permite a representação tanto de números bem pequenos e bem grandes. 99999999999999999999999999999 → 1.0e+29 0.00000000009999999999999999999999999999 → 1.0e-010 11

Exemplos > 0.12345678901234567890123456789012345678 90 0.123456789012346 :: Double A representação científica é utilizada quando necessário: > 1234567890123456789012345678.9 1.23456789012346e+027 :: Double 12

A constante pi > pi 3.14159265358979 :: Double 13

Operações sobre reais Nome Descrição + Adição * Multiplicação - Subtração / Divisão ^ potência (o expoente tem que ser Int e positivo) sin Seno cos Coseno tan Tangente sqrt raiz quadrada log logaritmo na base e logBase logaritmo na base escolhida exp potência na base e 14

Conversão de tipos > 3 + 5 8 :: Integer > 3 + 5.0 8.0 :: Double 15

Conversão de tipos Existem funções específicas para conversão de tipos: a função truncate converte um real x para o menor inteiro menor ou igual x. > truncate pi 3 :: Integer a função round converte um real x para o inteiro mais próximo de x, ou seja: round x = truncate (x + 0.5) > round pi > round (exp 1) 16

Conversão de tipos As funções fromInteger e fromRational também servem para conversão de tipos: fromInteger  :: (Num a) => Integer -> a fromRational :: (Fractional a) => Rational -> a 17

Precedência dos operadores 1ª) div, mod, abs, sqrt e qualquer outra função 2ª) ^ 3ª) * / 4ª) +, - 18

Exemplos > 2 + 3 * 5 17 > (2 + 3) * 5 25 > 2 + 3 * 5 17 > (2 + 3) * 5 25 > 3 * mod 10 4 + 5 11 > 3 ^ mod 10 4 9 > 4 ^ mod (div 20 4) 2 4 19

(- x)^y ou - (x^y) e nunca -x^y ou x^-y Ordem de associação Quando há ocorrência de operadores de mesma precedência leva-se em consideração a ordem de associação que pode ser à direita ou à esquerda. a) O operador unário deve ser sempre representado entre parênteses quando utilizado junto com outro operador (- x)^y ou - (x^y) e nunca -x^y ou x^-y b) A potência, quando repetida em uma expressão, é avaliada da direita para a esquerda 2^3^3 = 2^(3^3) c) Os demais operadores, na situação acima, são avaliados da esquerda para a direita 2 - 3 - 5 = (2 - 3) – 5 e 2 + 3 + 3 = (2 + 3) + 3 20

Exemplos >3 - 7 - 2 - 6 > 3 * 7 + 4 25 > 3 * ( 7 + 4) 33 >3 - 7 - 2 - 6 > 3 * 7 + 4 25 > 3 * ( 7 + 4) 33 > 3 ^ ( 1 + 3) 81 21

mediaB x y = truncate ((x + y) / 2) Tipos de novas definições de funções As funções abaixo são de que tipo? mediaA x y = (x + y) / 2 e mediaB x y = truncate ((x + y) / 2) 22

Hierarquia de tipos Eq, Ord: tudo menos I/O Num: Int, Integer, Float, Double Real: Int, Integer, Float, Double Fractional: Float, Double RealFrac: Float, Double Floating: Float, Double RealFloat: Float, Double Integral: Int, Integer 23