Module 2 - Exercice

← Retour au module principal

Exercice pratique en Swift

Se familiariser avec les éléments de base du langage Swift

Exercice 1 : Gestion d’une liste de tâches (To-Do List)

Objectif

Créer une classe en Swift pour gérer une liste de tâches avec des fonctionnalités avancées telles que l’ajout, la suppression, le marquage comme terminé, et l’affichage détaillé des tâches.

Instructions

  1. Créer la classe ToDoList
    • • Déclarez une propriété privée nommée tasks.
    • • Cette propriété sera un tableau contenant des tuples (description: String, isCompleted: Bool).
    • • Ajoutez un initialiseur qui crée un tableau vide.
  2. Ajouter des méthodes de base
    • addTask(description: String) : ajoute une nouvelle tâche avec le statut “non terminée”.
    • completeTask(index: Int) : marque une tâche comme terminée si l’index est valide.
    • removeTask(index: Int) : supprime une tâche si l’index est valide.
    • showTasks() : affiche chaque tâche avec son numéro, sa description et un emoji : ✅ si elle est terminée, ⏳ sinon.
  3. Ajouter des méthodes avancées
    • clearCompletedTasks() : supprime toutes les tâches terminées.
    • searchTask(keyword: String) : affiche toutes les tâches dont la description contient un mot-clé.
  4. Tester la classe
    • - Créez une instance de ToDoList.
    • - Ajoutez au moins 5 tâches.
    • - Marquez certaines tâches comme terminées.
    • - Affichez la liste complète.
    • - Supprimez une tâche.
    • - Recherchez une tâche spécifique par mot-clé.
    • - Supprimez toutes les tâches terminées.
    • - Affichez la liste finale.

Exemple de résultat attendu

Liste initiale :

  1. ⏳ Faire les courses
  2. ⏳ Réviser pour l'examen
  3. ⏳ Appeler le médecin
  4. ⏳ Nettoyer la maison
  5. ⏳ Lire un chapitre de livre
      
Après avoir marqué “Faire les courses” et “Appeler le médecin” comme terminées :

  1. ✅ Faire les courses
  2. ⏳ Réviser pour l'examen
  3. ✅ Appeler le médecin
  4. ⏳ Nettoyer la maison
  5. ⏳ Lire un chapitre de livre
      
Après avoir recherché “maison” :

  Résultats de la recherche :
  4. ⏳ Nettoyer la maison
      
Après avoir supprimé les tâches terminées :

  1. ⏳ Réviser pour l'examen
  2. ⏳ Nettoyer la maison
  3. ⏳ Lire un chapitre de livre
      

Télécharger la solution (Xcode playground) Télécharger la solution (fichier .swift)

⚠️ Le fichier .swift peut être ouvert dans un éditeur de code comme Visual Studio Code. Cependant, pour pouvoir l’exécuter, vous devez installer le compilateur.

Exercice 2 : Application de Conversion d’Unités

Objectif

Créer une application de conversion d’unités en utilisant des fonctions en Swift, avec une interface utilisateur interactive via la console.

Instructions

  1. Définir les fonctions de conversion
    • - convertToCelsius : Prend une température en Fahrenheit et renvoie son équivalent en Celsius.
    • - convertToFeet : Prend une longueur en mètres et renvoie son équivalent en pieds.
    • - convertToKilograms : Prend un poids en livres et renvoie son équivalent en kilogrammes.
  2. Créer un menu interactif
    • - Implémentez un menu permettant à l’utilisateur de choisir la conversion souhaitée :
      1. Fahrenheit → Celsius
      2. Mètres → Pieds
      3. Livres → Kilogrammes
    • - Ajoutez une option pour quitter l’application.
  3. Valider les entrées utilisateur
    • - Assurez-vous que l’utilisateur saisit des nombres valides pour les conversions.
    • - Gérez les erreurs et affichez des messages clairs en cas d’entrée invalide.
  4. Tester les conversions
    • - Proposez plusieurs scénarios de test pour valider que les conversions fonctionnent correctement.

Exemple de résultat attendu

Menu principal :

  Bienvenue dans l'application de conversion d'unités !
  Veuillez choisir une option :
  1. Convertir Fahrenheit en Celsius
  2. Convertir Mètres en Pieds
  3. Convertir Livres en Kilogrammes
  4. Quitter
      
Entrée utilisateur : 1

  Entrez la température en Fahrenheit : 98.6
  Résultat : 98.6°F = 37.0°C
      
Entrée utilisateur : 2

  Entrez la longueur en mètres : 10
  Résultat : 10.0 m = 32.81 pieds
      
Entrée utilisateur : 3

  Entrez le poids en livres : 150
  Résultat : 150.0 lb = 68.04 kg
      
Entrée utilisateur : 4

  Merci d'avoir utilisé l'application de conversion. À bientôt !
      

Télécharger la solution (Xcode playground) Télécharger la solution (fichier .swift)

⚠️ Le fichier .swift peut être ouvert dans un éditeur de code comme Visual Studio Code. Cependant, pour pouvoir l’exécuter, vous devez installer le compilateur.

Exercice 3 : Hiérarchie de classes pour les formes géométriques

Objectif

Créer une hiérarchie de classes en Swift pour représenter différentes formes géométriques, en appliquant les principes d’héritage et de polymorphisme.

Instructions

  1. Créer une classe de base Shape
    • - Propriétés :
      • name : une chaîne représentant le nom de la forme.
      • area : une propriété calculée pour retourner l’aire (initialisée à 0.0 dans la classe de base).
    • - Méthodes :
      • Une méthode displayInfo() pour afficher le nom de la forme et son aire.
  2. Créer les sous-classes de Shape
    • - Circle :
      • Propriété : radius (rayon, de type Double).
      • Méthode : Implémentez la méthode pour calculer l’aire d’un cercle ( Aire = π * rayon² ).
    • - Rectangle :
      • Propriétés : width (largeur) et height (hauteur), toutes deux de type Double.
      • Méthode : Redéfinir area pour calculer l’aire ( Aire = largeur * hauteur ).
  3. Surchargez displayInfo() dans chaque sous-classe
    • - Incluez les propriétés spécifiques (par exemple, le rayon pour un cercle).
  4. Ajouter une sous-classe bonus
    • - Triangle :
      • Propriétés : base (base) et height (hauteur).
      • Méthode : Redéfinir area pour calculer l’aire ( Aire = 0.5 x base x hauteur ).
  5. Créer des instances et tester
    • - Instanciez des objets des classes Circle, Rectangle et Triangle.
    • - Calculez leurs aires et affichez les informations.

Exemple de résultat attendu


  // Tester les classes
  let circle = Circle(radius: 5.0)
  circle.displayInfo()

  let rectangle = Rectangle(width: 10.0, height: 4.0)
  rectangle.displayInfo()

  let triangle = Triangle(base: 6.0, height: 3.0)
  triangle.displayInfo()
      
Résultat :

  Forme : Cercle, Rayon : 5.0, Aire : 78.54
  Forme : Rectangle, Largeur : 10.0, Hauteur : 4.0, Aire : 40.00
  Forme : Triangle, Base : 6.0, Hauteur : 3.0, Aire : 9.00
      

Télécharger la solution (Xcode playground) Télécharger la solution (fichier .swift)

⚠️ Le fichier .swift peut être ouvert dans un éditeur de code comme Visual Studio Code. Cependant, pour pouvoir l’exécuter, vous devez installer le compilateur.

Protocoles et Héritage de protocole

Objectif : Pratiquer la déclaration et l'héritage de protocoles en Swift.

Contexte

Tu dois modéliser des animaux dans un zoo à l’aide de protocoles.

Instructions

  1. Crée un protocole Identifiable avec une propriété nom: String.
  2. Crée un protocole Animal qui hérite de Identifiable et ajoute une méthode faireDuBruit().
  3. Crée un protocole Volant qui hérite de Animal et ajoute une méthode voler().
  4. Crée trois structures :
    • Chien et Chat qui adoptent Animal
    • Oiseau qui adopte Volant
  5. Crée un tableau [Animal] contenant des animaux et appelle la méthode faireDuBruit() pour chacun.
  6. Crée un second tableau [Volant] contenant seulement des oiseaux et appelle voler() pour chacun.

Bonus : Ajoute une méthode description() dans le protocole Animal qui retourne une chaîne de caractères présentant l’animal.


Télécharger la solution (Xcode playground) Télécharger la solution (fichier .swift)

⚠️ Le fichier .swift peut être ouvert dans un éditeur de code comme Visual Studio Code. Cependant, pour pouvoir l’exécuter, vous devez installer le compilateur.