A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Introdução à Programação: uma Abordagem Funcional Programação I Engenharia de Computação Prof.ª Claudia Boeres e Prof. Estefhan Dazzi Wandekokem 2010/1.

Apresentações semelhantes


Apresentação em tema: "Introdução à Programação: uma Abordagem Funcional Programação I Engenharia de Computação Prof.ª Claudia Boeres e Prof. Estefhan Dazzi Wandekokem 2010/1."— Transcrição da apresentação:

1 Introdução à Programação: uma Abordagem Funcional Programação I Engenharia de Computação Prof.ª Claudia Boeres e Prof. Estefhan Dazzi Wandekokem 2010/1

2 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

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

4 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.

5 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

6 Exemplos > :set +t > 2^ :: Integer > :set -t > 2^

7 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^

8 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

9 Exemplos > ::Int :: Int > ::Int Program error: arithmetic overflow > :: Integer > ::Int Program error: arithmetic overflow

10 Operações sobre inteiros NomeDescrição +Adição *Multiplicação -Subtração div, quotdivisão inteira ^Potência remresto da divisão inteira entre dois inteiros modmódulo da divisão inteira entre dois inteiros absvalor absoluto signumproduz -1, 0 ou 1, indicando se o número é negativo, zero ou positivo

11 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 seria representado pelo número , onde o 6 foi arredondado para 7. A magnitude permite a representação tanto de números bem pequenos e bem grandes. Exemplo: e e-010

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

13 A constante pi > pi :: Double

14 Operações sobre reais NomeDescrição +Adição *Multiplicação -Subtração /Divisão ^potência (o expoente tem que ser Int e positivo) sinSeno cosCoseno tanTangente sqrtraiz quadrada loglogaritmo na base e logBase logaritmo na base escolhida exppotência na base e

15 Conversão de tipos > :: Integer > :: Double

16 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 3 :: Integer > round (exp 1) 3 :: Integer

17 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

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

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

20 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 e = (2 + 3) + 3

21 Exemplos > > 3 * > 3 * ( 7 + 4) 33 > 3 ^ ( 1 + 3) 81

22 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)

23 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


Carregar ppt "Introdução à Programação: uma Abordagem Funcional Programação I Engenharia de Computação Prof.ª Claudia Boeres e Prof. Estefhan Dazzi Wandekokem 2010/1."

Apresentações semelhantes


Anúncios Google