Baixe o app para aproveitar ainda mais
Prévia do material em texto
* Haskell aula 12 Tuplas: Exercício resolvido. Prof. Msc Aurélio Andrade de Menezes Júnior. * Tuplas: exercício resolvido O exercício mostrado a seguir tem como objetivo ilustrar os principais pontos sobre o uso de tuplas. * Tuplas: exercício resolvido O problema descreve uma quantidade de registros de pessoas, em que três argumentos definem cada registro. Os argumentos são nome, idade e sexo de uma dada pessoa. Assim o conceito de tipos compostos com tuplas é usado como artifício para definir um conjunto de dados em uma única função. * Tuplas: exercício resolvido Inicialmente um tipo é criado como: Type Meu_tipo = (String, Float, Char) Em seguida uma função é usada para armazenar tais dados. Para tanto há duas opções: * Tuplas: exercício resolvido * O primeiro modo consiste em cadastrar um registro em uma função com um argumento diferente, tal como: --pessoa :: Float -> (String, Float, Char) --utilizando o tipo definido anteriormente pessoa :: Float -> Meu tipo --retorna uma tupla_3 a partir do rg passado pessoa 1 = (“Joao Silva”, 12, ‘m’) pessoa 2 = (“Jonas Souza”, 81, ‘m’) pessoa 3 = (“Joice Silva”, 21, ‘f’) pessoa 4 = (“Janete Souza”, 55, ‘f’) pessoa 5 = (“Jocileide Strauss”, 21, ‘f’) pessoa 9999 = (“Nao há mais ninguém”, 0, ‘x’) * Tuplas: exercício resolvido Uma segunda forma utiliza o conceito de guardas: --pessoa :: Float -> (String, Float, Char) --utilizando o tipo definido anteriormente pessoa :: Float -> Meu tipo --retorna uma tupla_3 a partir do rg passado pessoa rg | rg ==1 = (“Joao Silva”, 12, ‘m’) | rg == 2 = (“Jonas Souza”, 81, ‘m’) | rg == 3 = (“Joice Silva”, 21, ‘f’) | rg == 4 = (“Janete Souza”, 55, ‘f’) | rg == 5 = (“Jocileide Strauss”, 21, ‘f’) | otherwise= (“Nao há mais ninguém”, 0, ‘x’) * Tuplas: exercício resolvido Uma vez definido este conjunto de pessoas, são obtidos os dados desses registros com o uso de funções auxiliares. * Tuplas: exercício resolvido Por exemplo, a função menor_idade retorna a menor idade da pessoa do registro 1 até o número que é passado como argumento neta função. A função é definida como: menor_idade :: Float -> Meu_tipo menor_idade x |x==1 = pessoa 1 | otherwise = menor (pessoa x) (menor_idade (x-1)) * Tuplas: exercício resolvido * Tuplas: exercício resolvido * Tuplas: exercício resolvido * Tuplas: exercício resolvido * Tuplas: exercício resolvido * Tuplas: exercício resolvido * Tuplas: exercício resolvido * Dúvidas
Compartilhar