Capítulo 02 do Livro Introdução ao Haskell
Autor: Beatriz | Publicado: 2013-09-23T18:27:00-07:00

Respostas do capítulo 02 do Livro Introdução ao Haskell
Autores: Stenio Longo Araújo
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Benedito Melo Acióly

import Data.Char-- EXEMPLOS------------------------------------------------------------------------------------------------------ Objetivo: Calcular a função nAnd&nbsp; ----------------------------------------------------------------------------------------------------nAnd :: Bool -&gt; Bool -&gt; BoolnAnd p q = not (p &amp;&amp; q)------------------------------------------------------------------------------------------------------ Objetivo: -- Verificar se um caracter é MAIÚSCULO;-- Verificar se um caracter é minúsculo.-- letra para teste entre ' '----------------------------------------------------------------------------------------------------ehMaiuscula :: Char -&gt; BoolehMaiuscula ch = ('A' &lt;= ch) &amp;&amp; (ch &lt;= 'Z') ehMinuscula :: Char -&gt; BoolehMinuscula ch = ('a' &lt;= ch) &amp;&amp; (ch &lt;= 'z') ------------------------------------------------------------------------------------------------------ Objetivo: Concatenar três strings -- palavras para teste entre " "----------------------------------------------------------------------------------------------------linhas :: String -&gt; String -&gt; String -&gt; Stringlinhas s1 s2 s3 = s1 ++ s2 ++ s3------------------------------------------------------------------------------------------------------ EXERCÍCIOS------------------------------------------------------------------------------------------------------ Objetivo: Operação nOr, que retorna false se dois valores forem false----------------------------------------------------------------------------------------------------nOr :: Bool -&gt; Bool -&gt; BoolnOr p q = not (p || q) ------------------------------------------------------------------------------------------------------ Objetivo: Comparar se três inteiros são diferentes entre si----------------------------------------------------------------------------------------------------tresDiferentes :: Int -&gt; Int -&gt; Int -&gt; BooltresDiferentes a b c &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | a /= b &amp;&amp; b /= c &amp;&amp; a /= c = True&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | otherwise = False&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ------------------------------------------------------------------------------------------------------ Objetivo: Calcular àrea de um triângulo----------------------------------------------------------------------------------------------------areaT :: Float -&gt; Float -&gt; FloatareaT base altura = ((base * altura) / 2)------------------------------------------------------------------------------------------------------ Objetivo: Calcular àrea de um círculo----------------------------------------------------------------------------------------------------areaC :: Float -&gt; Float areaC raio = (3.14 * (raio * raio))------------------------------------------------------------------------------------------------------ Objetivo: Converter uma temperatura Farenheit para Centígrados----------------------------------------------------------------------------------------------------converteT :: Float -&gt; Float converteT temperatura = (5 / 9) * (temperatura - 32)------------------------------------------------------------------------------------------------------ Objetivo: Converter Maiúscula para Minúscula----------------------------------------------------------------------------------------------------paraMinuscula :: Char -&gt; CharparaMinuscula a = chr (ord a + 32) ------------------------------------------------------------------------------------------------------ Objetivo: Converter Minúscula para Maiúscula----------------------------------------------------------------------------------------------------paraMaiuscula :: Char -&gt; CharparaMaiuscula a = chr (ord a - 32) ------------------------------------------------------------------------------------------------------ Objetivo: Calcular média de um aluno----------------------------------------------------------------------------------------------------calculaMedia :: Float -&gt; Float -&gt; Float -&gt; FloatcalculaMedia a b c = (a + b + c) / 3------------------------------------------------------------------------------------------------------ Objetivo: Definir a posição do ponto no eixo cartesiano----------------------------------------------------------------------------------------------------cartesiano :: Float -&gt; Float -&gt; Stringcartesiano x y &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | x &gt; 0 &amp;&amp; y &gt; 0 = "Primeiro Quadrante"&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | x &lt; 0 &amp;&amp; y &gt; 0 = "Segundo Quadrante"&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | x &lt; 0 &amp;&amp; y &lt; 0 = "Terceiro Quadrante"&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | x &gt; 0 &amp;&amp; y &lt; 0 = "Quarto Quadrante"&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | otherwise = "Os pontos nao esta em nenhum dos quadrantes pois eh o ponto 0."&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ------------------------------------------------------------------------------------------------------ Objetivo: Definir a unidade de um número----------------------------------------------------------------------------------------------------unidade :: Int -&gt; Int unidade a &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | a &lt; 10 = a&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | otherwise = mod a 10&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ------------------------------------------------------------------------------------------------------ Objetivo: Definir a dezena de um número----------------------------------------------------------------------------------------------------dezena :: Int -&gt; Int dezena a &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | a &lt; 100 = a&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | otherwise = mod a 100&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ------------------------------------------------------------------------------------------------------ Objetivo: Definir a centena de um número----------------------------------------------------------------------------------------------------centena :: Int -&gt; Int centena a &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | a &lt; 1000 = a&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | otherwise = mod a 1000&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ------------------------------------------------------------------------------------------------------ Objetivo: Somar algarismos----------------------------------------------------------------------------------------------------somaAl :: Int -&gt; Int somaAl a &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | a &lt; 10 = a&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | a &gt;= 10 &amp;&amp; a &lt; 100 = (mod a 10) + (div a 10)&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | a &gt;= 100 &amp;&amp; a &lt; 1000 = (mod a 10) + (mod (div a 10) 10) + (div a 100)&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | otherwise = error " Numero deve ser menor que 1000."&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ------------------------------------------------------------------------------------------------------ Objetivo: Soma lados dos triângulos----------------------------------------------------------------------------------------------------somaTri :: Int -&gt; Int -&gt; Int -&gt; String somaTri a b c &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | a == b &amp;&amp; a == c = "Triangulo Equilatero"&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | a /= b &amp;&amp; a /= c &amp;&amp; b /= c = "Triangulo Escaleno"&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | otherwise = "Triangulo Isosceles"&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; ------------------------------------------------------------------------------------------------------ Objetivo: Verificar se um número é par----------------------------------------------------------------------------------------------------ehPar :: Int -&gt; Bool ehPar a &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | mod a 2 == 0 =&nbsp; True&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; | otherwise = False&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;