Trabalho Pr´ atico 1

Paradigmas da Programa¸ c˜ ao 1 (LESI) / Programa¸ c˜ ao Funcional (LMCC) 2005/2006 Introdu¸ c˜ ao
Constitui¸ c˜ ao dos grupos de trabalho Os grupos dever˜ ao ser formados por trˆ es elementos (idealmente os elementos de um grupo dever˜ ao frequentar o mesmo turno pr´ atico). Data de entrega 4 de Novembro. O trabalho ser´ a entregue durante as aulas da semana de 31 de Outubro a

Enunciado
Considere que o tipo InfoNutricional ´ e utilizado para representar informa¸ c˜ ao nutricional sobre alimentos: type InfoNutricional = (String, Int, Float, Float) O primeiro parˆ ametro representa o nome do alimento, o segundo parˆ ametro o valor cal´ orico, o terceiro parˆ ametro a quantidade de l´ ıpidos e o quarto parˆ ametro a quantidade de gl´ ıcidos por 100 gramas do alimento. Por exemplo, sabendo que 100 gramas de X tˆ em 100 Kcal, 15.5 gramas de l´ ıpidos e 10 gramas de gl´ ıcidos, X seria representado pelo tuplo (”x”, 100, 15.5, 10.0). Considere ainda que uma refei¸ c˜ ao consiste numa lista de pares (alimento, quantidade utilizada na refei¸ c˜ ao). Escreva, em Haskell, o m´ odulo Nutricao que dever´ a: 1. Definir os tipos InfoNutricional e Refeicao. 2. Definir as contantes almoco :: 3. Definir as seguites fun¸ c˜ oes: (a) maisCalorico :: [InfoNutricional] -> InfoNutricional - - calcula qual o alimento mais cal´ orico de uma lista de alimentos. (b) getInfoNutricional :: [InfoNutricional] -> String -> InfoNutricional - - determina a informa¸ c˜ ao existente para um dado alimento. (c) totalCalorias :: [InfoNutricional] -> Refeicao -> Int - - com base na informa¸ c˜ ao nutricional, calcula o total de calorias de uma refei¸ c˜ ao (d) saudaveis rec :: Float -> [InfoNutricional] -> Refeicao -> [String] - - calcula quais os alimentos de uma refei¸ c˜ ao que tˆ em teor de l´ ıpidos inferior a um valor dado (escreva a fun¸ c˜ ao utilizando recursividade). (e) saudaveis nrec :: Float -> [InfoNutricional] -> Refeicao -> [String] - - igual ao anterior mas escreva a fun¸ c˜ ao utilizando listas por compreens˜ ao. (f) saudaveis5 :: [InfoNutricional] -> Refeicao -> [String] - - igual ao anterior mas calcula quais os alimentos de uma refei¸ c˜ ao que tˆ em teor de l´ ıpidos inferior a 5.0. Refeicao e dispensa :: [InfoNutricional].