Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Curso: Engenharia de Computação Disciplina: Programação I Professor: Rodolfo da Silva Villaça Primeira Lista de Exercícios Exercício 1. Sejam C(x1,y1) o centro da circunferência de raio r e também do quadrado de lados paralelos aos eixos cartesianos e inscrito na circunferência. Escreva uma função que descreva a região de pertinência do ponto P na figura abaixo, dados C(x1,y1) , r e o ponto P (x,y): Exercício 2. Seja A(x1,y1) o vértice superior esquerdo do quadrado ABCD, paralelo aos eixos cartesianos. Este quadrado, de lado 9a, é subdividido em regiões limitadas por retas horizontais e verticais, como mostra a figura abaixo. Escreva uma função em HUGS que, dado um ponto P(x,y), forneça o valor da área da região a qual o ponto P pertence, se esta região está dentro do quadrado ABCD, e caso contrário, forneça o número indicador da região na figura. 1 1 2 2 3 4 5 6 C 7 Exercício 3. Faça um programa para função f(x) a seguir: f(x) = −x ,sex<0 4x ,se0≤x<1 8−4x ,se1≤x<2 2x−4, sex≥2 Exercício 4. Faça uma função que calcula as duas raízes reais de uma equação do segundo grau ax²+bx+c = 0, dados os coeficientes a, b e c. Trate os possíveis erros. Utilize o conceito de tuplas. Exercício 5. Estenda sua solução do exercício anterior para que retorne as duas raízes complexas. Não é necessário tratar erros, ou seja, ignore o caso em que a = 0. Exercício 6. Faça uma função que, dado o resultado do cálculo da função do exercício 1, retorna uma tupla na forma (a,b,c), sendo a, b e c coeficientes válidos para a equação ax²+bx+c=0 que gerou a resposta. Exercício 7. Faça um programa semelhante ao do exercício anterior, considerando a solução do exercício 5. Exercício 8. Suponha que você tenha uma matriz da seguinte forma: a11 a12 a21 a22 sendo representada por ((a11, a12), (a21, a22)) e uma função inv2x2 m que retorna a matriz inversa e o erro numa tupla da seguinte forma: (inversível, inversa), onde inversível é True se a matriz m é inversível e False caso contrário; e inversa é a inversa da matriz original, se esta era inversível, ou ((0,0), (0,0)), caso contrário. Exercício 9. Faça uma função que, dada uma matriz m 2x2, verifique se o resultado da função inv2x2 está correta para m. OBS.: Como as operações de ponto flutuante possuem erros de aproximação, assuma algum valor razoável para o erro nas aproximações dos cálculos. Obviamente, não recalcule o resultado para verificar se está correto. Exercício 11. Faça uma função que, dados a, b e c, verifica se a função do exercício 2 calculou corretamente as raízes da equação ax²+bx+c = 0. Exercício 12. Em Haskell, a função /= retorna True se seus argumentos forem diferentes. Um programador especificou uma função para identificar se três números inteiros são todos diferentes entre si, da seguinte forma: allDifferent :: Int -> Int -> Int -> Bool allDifferent m n p = (m/=n) && (n/=p) O que está errado nessa definição? Exercício 13. Especifique corretamente uma função allDifferent :: Int -> Int -> Int -> Bool que identifique se três números inteiros são todos diferentes entre si. Exercício 14. Escreva uma função howManyEqual :: Int -> Int -> Int -> Int que retorne quantos dos três números inteiros fornecidos como argumentos são iguais. A resposta poderá ser 3 (todos iguais), 2 (dois iguais e o terceiro diferente) ou 0 (todos diferentes). Exercício 15. Usando tuplas, defina uma função chamada minimax que calcula o mínimo e o máximo de três números (ex: minimax 3 6 1 = (1,6)). Exercício 16. Um ponto em R² é dado pelas suas duas coordenadas (x1, y1), enquanto que uma reta pode ser definida por dois pontos, diferentes. a) Defina uma função que decide se uma linha é vertical; b) A equação de uma reta representada por ((x1,y1),(x2,y2)) é dada pela equação y− y1 / x−x1 = y2− y1 / x2−x1 Defina uma função que receba um ponto e uma reta como parâmetros e decida se este ponto pertence à reta.