Haskell : Figures Geometriques

Exercices Corriges en Haskell : Figures Geometriques

On voudrait écrire un module Haskell pour la manipulation des figures géométriques suivantes : les carrés, les rectangles et les cercles. Un cercle est définit par son centre qui est de type Point et son rayon.

1- Proposer les types Carre, Rectangle et Cercle correspondants

2- Donner les types des constructeurs de données de vos différents types

3- Proposer une classe de type FigureGeometrique contenant les signatures des fonctions surface et perimetre qui permettent d’évaluer la surface et le périmètre des figures géométriques

4- Créer les instances de FigureGeometrique pour les types Carre, Rectangle et Cercle

5- Ecrire une fonction evaluerSurfaces qui prend une liste de FigureGeometrique en paramètre et renvoie la liste de leurs surfaces respectives

Correction :

1)

Les types Carre, Rectangle et Cercle peuvent être définis comme suit :

data Point = Point { x :: Double, y :: Double } deriving (Show)

data Carre = Carre { carreCentre :: Point, carreCote :: Double } deriving (Show)
data Rectangle = Rectangle { rectangleCentre :: Point, rectangleLongueur :: Double, rectangleLargeur :: Double } deriving (Show)
data Cercle = Cercle { cercleCentre :: Point, cercleRayon :: Double } deriving (Show)

2)

Les constructeurs de données pour les différents types peuvent être définis comme suit :

-- Constructeur de données pour Carre
creerCarre :: Double -> Point -> Carre
creerCarre cote centre = Carre centre cote

-- Constructeur de données pour Rectangle
creerRectangle :: Double -> Double -> Point -> Rectangle
creerRectangle longueur largeur centre = Rectangle centre longueur largeur

-- Constructeur de données pour Cercle
creerCercle :: Double -> Point -> Cercle
creerCercle rayon centre = Cercle centre rayon

3)

La classe de type FigureGeometrique peut être définie comme suit :

class FigureGeometrique a where
  surface :: a -> Double
  perimetre :: a -> Double

4)

Les instances de FigureGeometrique pour les types Carre, Rectangle et Cercle peuvent être définies comme suit :

-- Instance de FigureGeometrique pour Carre
instance FigureGeometrique Carre where
  surface c = (carreCote c) ^ 2
  perimetre c = 4 * (carreCote c)

-- Instance de FigureGeometrique pour Rectangle
instance FigureGeometrique Rectangle where
  surface r = (rectangleLongueur r) * (rectangleLargeur r)
  perimetre r = 2 * (rectangleLongueur r) + 2 * (rectangleLargeur r)

-- Instance de FigureGeometrique pour Cercle
instance FigureGeometrique Cercle where
  surface c = pi * ((cercleRayon c) ^ 2)
  perimetre c = 2 * pi * (cercleRayon c)

5)

La fonction evaluerSurfaces peut être définie comme suit :

evaluerSurfaces :: FigureGeometrique a => [a] -> [Double]
evaluerSurfaces = map surface

Si vous avez trouvé les exercices corrigés en Haskell de JoëlYk intéressants et utiles, pourquoi ne pas les partager avec d'autres personnes qui pourraient également en bénéficier ? Partagez ce lien sur les réseaux sociaux ou envoyez-le à vos amis et collègues. Vous pourriez aider quelqu'un à améliorer ses compétences en programmation ou à trouver des solutions à des problèmes complexes. N'oubliez pas que la connaissance doit être partagée pour grandir. Merci pour votre soutien et votre partage !

Contact WhatsApp : +237 658395978 | Réaliser Par Joël_Yk

  • 1 vote. Moyenne 5 sur 5.

Ajouter un commentaire

Anti-spam