Programação 2
Evelin Carvalho Freire de Amorim 10 de abril de 2012
Nas aulas anteriores vimos os tipos numéricos (inteiro e real) e booleano. Nesta aula veremos três tipos de dados restantes do Haskell: caracteres, tuplas e listas.
1
Caracteres
Caracteres não são tão interessantes matematicamante, porém na computação podemos utilizar os caracteres para, por exemplo, processar palavras. Por qual motivo poderíamos querer processar palavras? Existem vários problemas que envolvem processar palavras: 1. Comparar duas palavras e vericar se as duas são iguais; 2. Contar o número de letrar em uma palavra; 3. etc. Em Haskell nós temos o tipo caracter para representar símbolos de uma palavra. Qualquer símbolo entre aspas simples é considerado um caracter. seguir alguns exemplos: O tipo caracter é denido pela palavra
Char.
Veja a
Exemplo: 'a' '@' '1'
Para processar caracteres de forma mais fácil foram criados vários padrões que associam um caracter a um número. Um dos primeiros padrões e o mais difundido foi o ASCII. São 128 caracteres associados a algum número. Veja na Figura 1 a tabela Ascii. Esta tabela já foi extendida para comportar símbolos de outras línguas.
Figura 1: Tabela ASCII
1
A seguinte função em Haskell determina se um determinado caracter é um número.
ehNum :: Char -> Bool ehNum x = '0' [2,1]
1:[] 2:[1]
Veja que o elemento sempre é adicionado no início da lista. Agora digamos que queremos a cauda da lista, então denimos a função a seguir.
cauda :: [a] -> [a] cauda (x:xs) = xs
Primeiro vamos olhar a assinatura de tipo da função acima. Ele deve receber como entrada uma lista que possui elementos do tipo
a
e a saída é uma lista com elementos do tipo
a.
Então se chamamos a
função acima devemos colocar uma lista, como a seguir 1 2 3 cauda [1,2,3,4,5]
⇒ ⇒
cauda 1:[2,3,4,5] [2,3,4,5] A segunda é possui um racícionio um
Na primeira linha fazemos a