☀️
420-1G2-HU Logique de programmation
  • 👋Bienvenue dans le cours de logique de programmation!
  • Bases de la logique de programmation
    • Concepts de la programmation
    • Les opérateurs
      • Exercices
    • Les commentaires
  • Les données
    • Les données et types simples
    • Les variables, les constantes et les opérations de base
    • Les opérations d'écriture et de lecture
    • Les opérations sur les chaînes de caractères
    • Laboratoire 1 - données
    • Laboratoire 2 - données
  • Les collections de données
    • Les listes
    • Les opérations sur les listes
    • Laboratoire listes - solution
    • Les dictionnaires
      • Exercices
  • Différents types de traitements
    • Structures logiques séquentielle
    • Structures logiques conditionnelles (if/else/elif)
    • Structures logiques répétitives (boucles)
      • Exercices de base
      • Laboratoire boucles - solution
  • Modularisation
    • Création et appels des fonctions
    • La documentation des fonctions
    • Annotation de types dans les fonctions
    • Laboratoire - fonctions (niveau débutant)
    • Révision express fonctions
    • Les modules
      • Laboratoire
  • La portée des variables
  • Débogage
    • 🫂Le débogueur, c'est ton ami!
      • Introductions aux outils de débogage
      • Techniques de débogage
    • Les erreurs et exceptions
      • Introduction aux notions d’erreurs
      • Les exceptions et leurs gestion
      • Exercices de base - avec solutions
      • Laboratoire débogage et gestion des erreurs -solution
  • Tests unitaires
    • Tests unitaires
    • Exercice
  • Cryptographie
    • Introduction à la cryptographie
  • Les fichiers
    • Accès aux fichiers
  • Résolution de problèmes
    • Résolution de problèmes : exercice introductif
    • Étapes d'analyse et de résolution de problèmes
  • Activités avec Légos
    • Introduction à la programmation
    • Consolidation sur les fonctions avec des blocs
    • Pratiquer les boucles avec des blocs
  • Laboratoires
    • Simulation combat - dragon vs chevalier
    • Simulateur de bataille - Les anneaux du pouvoir
    • Jeu de cartes
    • Lien logique mathématique
      • Algèbre de Boole
    • Crypto variée
    • Après Noël
  • git - système de gestion de versions
    • Introduction à Git
    • Étapes de création des dépôts Git
  • Classes inversées
    • Résolution de problèmes, fonctions et traitements conditionnels
  • Examens
    • Examen 2 - 2023
    • Examen 3 - 2023
    • Examen 2 - 2024
  • Révision
    • Fonctions, gestion d'erreurs et tests unitaires
    • Résolution de problème
  • Trucs utiles
    • Check-list
Powered by GitBook
On this page
  • Contexte
  • Spécifications du programme
  • Instructions
  • Exigences supplémentaires
  • Pour aller plus loin (optionnel)
  • Code fourni
  • Inventaire sous forme de fichier
  • Lecture du JSON
  • Écriture dans un fichier JSON (partie optionnelle)
  • Ressources
  1. Révision

Résolution de problème

Temps estimé : environ 4h (sans les parties optionnelles) si vous avez fait l'exercice sur l'inventaire de jeux

Contexte

Pendant la fin de session, comme vous avez beaucoup de temps libre (!) et un appartement à payer, vous décidez d'acheter et de vendre des voitures miniatures. Comme vous suivez un cours de programmation, vous voulez créer un programme qui vous permet de gérer votre inventaire afin de maximiser votre temps d'étude et vos profits.

Spécifications du programme

Votre programme doit :

  • Utiliser la structure de données utilisée dans inventaire.json

  • Extraire l'inventaire du fichier inventaire.json (voir code fourni) au début du programme

  • Permettre l'ajout d'une voiture à l'inventaire (ex. quand vous achetez une nouvelle voiture)

  • Permettre la vente d'une voiture et afficher le profit réalisé sur cette vente

Informations à conserver sur les voitures :

  • Un numéro unique (voir le format dans fichier .json)

  • Modèle

  • Couleur

  • Année

  • Prix d'achat (0 par défaut)

  • Prix de vente

  • Date d'achat

  • Date de vente

Instructions

  1. Séparer l'énoncé en fonctions (nom, responsabilités)

  2. Faire un organigramme du programme (les organigrammes sont à l'examen final) - vous pouvez le faire valider en classe

  3. Déterminer les structures de données à utiliser

  4. Définir les signatures des fonctions

  5. Écrire le pseudo-code et/ou faire un organigramme au besoin

  6. Transformer le pseudo-code en code

Exigences supplémentaires

  • Utiliser le module DateTime pour la manipulation des dates

  • Ajouter de la validation et de la gestion d'erreurs au programme

  • Écrire des tests pour au moins 1 fonction comprenant la vérification du fonctionnement normal et la vérification de la gestion d'erreurs

Pour aller plus loin (optionnel)

  • Quand une voiture est vendue, affichez depuis combien de jours elle était dans l’inventaire.

  • Ajouter une fonctionnalité de recherche selon [marque, modèle, couleur, prix, vendu ou non, etc] et qui affiche toutes les voitures correspondant au critère désiré.

  • Afficher le profit total de toutes les ventes effectuées

  • Avant de quitter, mettre à jour l'inventaire dans le fichier inventaire.json

Code fourni

Inventaire sous forme de fichier

Créer un nouveau fichier inventaire.json dans l'IDE et y copier-coller le contenu

{
    "1G6K": {
        "modele": "Ford Econoline E350",
        "couleur": "turquoise",
        "annee": 2021,
	"prix_achat": 22,
        "prix_vente": 65,
        "date_achat": "2023-11-01",
        "date_vente": "2023-11-21"
    },
    "5GAK": {
        "modele": "Tesla Modèle Y",
        "couleur": "bleu ciel",
        "annee": 2020,
        "prix_achat": 0,
        "prix_vente": 17,
        "date_achat": "2022-11-01",
	"date_vente": ""
    },
    "19UU": {
        "modele": "Lotus Esprit",
        "couleur": "jaune néon",
        "annee": 2009,
        "prix_achat": 14,
        "prix_vente": 38,
        "date_achat": "2021-10-20",
        "date_vente": ""
    },
    "5NPE": {
        "modele": "Dodge Charger",
        "couleur": "orange brûlé",
        "annee": 1970,
	"prix_achat": 40,
        "prix_vente": 52,
        "date_achat": "2023-11-01",
        "date_vente": "2023-12-01"
    }
}

Lecture du JSON

with open("inventaire.json", "r", encoding="utf-8") as inventaire:
    return json.load(inventaire)

Écriture dans un fichier JSON (partie optionnelle)

with open("inventaire.json", "w", encoding="utf-8") as inventaire:
    json.dump(nouvel_inventaire, inventaire, ensure_ascii=False, indent=4)

Ressources

Note : L'exercice est tiré et adapté des exercices de Rémy Corriveau - merci !

PreviousFonctions, gestion d'erreurs et tests unitairesNextCheck-list

Last updated 9 months ago

Documentation officielle de DateTime:

Documentation officielle sur la lecture et l'écriture de fichiers :

Documentation officielle sur la manipulation de fichiers JSON:

https://docs.python.org/3/library/datetime.html
https://docs.python.org/3.12/library/functions.html#open
https://docs.python.org/3/library/json.html
Page cover image