Numérique et Sciences Informatiques1ère

Structurer un plan de développement
Exercices corrigés

Maîtrisez la structuration d'un plan de développement : analyse de problème, décomposition, algorithmique, conception de solution et planification de projet grâce à ces 5 exercices détaillés.

Concepts & Exercices
Plan_{développement} = Analyse + Décomposition + Algorithmique + Conception + Validation
Structure fondamentale d'un plan de développement
Analyse du problème
Entrées → Traitement → Sorties
Identifier les données, les traitements et les résultats attendus
Décomposition
Diviser pour régner
Séparer le problème en sous-problèmes indépendants
Algorithmique
Séquence d'instructions
Solution logique et structurée du problème
Concepts clés :
  • Analyse fonctionnelle : Comprendre les besoins
  • Décomposition modulaire : Diviser en modules
  • Algorithme : Suite d'étapes précises
  • Validation : Tester et vérifier la solution
Exercice 1
Analyser et structurer un algorithme de calcul de moyenne
Exercice 2
Décomposer un programme de gestion de bibliothèque
Exercice 3
Structurer un programme de conversion de température
Exercice 4
Planifier un système de gestion de contacts
Exercice 5
Conception d'un jeu de devinettes
Corrigé : Exercices 1 à 3
1 Calcul de moyenne
Définition :

Problème : Calculer la moyenne de 3 notes numériques

Méthode de structuration :
  1. Analyser les entrées (3 notes), le traitement (moyenne) et la sortie (résultat)
  2. Décomposer en étapes : lecture des notes, calcul, affichage
  3. Créer l'algorithme correspondant
  4. Valider la solution avec des exemples concrets
1
Lecture des 3 notes
2
Calcul de la somme
3
Division par 3
4
Affichage du résultat
Étape 1 : Analyse du problème

Entrées : 3 notes (n1, n2, n3)
Traitement : moyenne = (n1 + n2 + n3) / 3
Sortie : valeur de la moyenne

Étape 2 : Décomposition en sous-tâches

• Saisie des notes
• Calcul de la somme
• Division par 3
• Affichage du résultat

Étape 3 : Algorithme
ALGORITHME Moyenne
Variables n1, n2, n3, somme, moyenne : Réel
DEBUT
  AFFICHER "Entrez la première note : "
  LIRE n1
  AFFICHER "Entrez la deuxième note : "
  LIRE n2
  AFFICHER "Entrez la troisième note : "
  LIRE n3
  somme ← n1 + n2 + n3
  moyenne ← somme / 3
  AFFICHER "La moyenne est : ", moyenne
FIN
Algorithme complet pour le calcul de moyenne
Solution structurée :

Plan de développement complet avec analyse, décomposition, algorithme et validation

Règles appliquées :

Analyse fonctionnelle : Identifier clairement les entrées, traitements et sorties

Décomposition : Diviser le problème en étapes simples

Algorithmique : Écrire des instructions précises et ordonnées

2 Gestion de bibliothèque
Définition :

Problème : Décomposer un programme de gestion de bibliothèque en modules

1
Gestion des livres
2
Gestion des emprunts
3
Gestion des usagers
4
Interface utilisateur
Étape 1 : Identification des modules principaux

• Module Livres : Ajouter, supprimer, rechercher des livres
• Module Usagers : Enregistrer, modifier, supprimer des usagers
• Module Emprunts : Gérer les emprunts et retours
• Module Interface : Menu principal, saisie des données

Étape 2 : Relations entre modules

• Les usagers peuvent emprunter des livres
• Les emprunts lient les usagers aux livres
• L'interface permet d'accéder aux autres modules

Étape 3 : Structure du programme
Module Bibliothèque
├── Module Livres
│   ├── Ajouter_Livre(nom, auteur, isbn)
│   ├── Supprimer_Livre(isbn)
│   └── Rechercher_Livre(critère)
├── Module Usagers
│   ├── Enregistrer_Usager(id, nom, email)
│   └── Modifier_Usager(id, nom, email)
├── Module Emprunts
│   ├── Emprunter_Livre(usager_id, livre_isbn)
│   └── Retourner_Livre(usager_id, livre_isbn)
└── Module Interface
    ├── Afficher_Menu()
    └── Traiter_Choix(option)
Structure modulaire complète de la bibliothèque
Solution structurée :

Modularisation claire avec responsabilités bien définies pour chaque module

Règles appliquées :

Décomposition modulaire : Diviser en modules fonctionnels

Cohésion : Chaque module a une responsabilité unique

Couplage faible : Modules indépendants autant que possible

3 Conversion de température
Définition :

Problème : Structurer un programme de conversion entre Celsius et Fahrenheit

°F = °C × \frac{9}{5} + 32
°C = (°F - 32) × \frac{5}{9}
Étape 1 : Analyse du problème

Entrées : Température et unité d'origine
Traitement : Application de la formule de conversion
Sortie : Température convertie dans l'autre unité

Étape 2 : Décomposition fonctionnelle

• Fonction de conversion C→F
• Fonction de conversion F→C
• Fonction de choix de conversion
• Fonction d'affichage du résultat

Étape 3 : Algorithme détaillé
FONCTION CelsiusVersFahrenheit(temp_celsius) : Réel
  RETOURNER temp_celsius * 9/5 + 32
FIN

FONCTION FahrenheitVersCelsius(temp_fahrenheit) : Réel
  RETOURNER (temp_fahrenheit - 32) * 5/9
FIN

ALGORITHME ConversionTemperature
Variable temperature : Réel
Variable unite_origine : Chaîne
Variable unite_destination : Chaîne
Variable resultat : Réel

DEBUT
  AFFICHER "Entrez la température : "
  LIRE temperature
  AFFICHER "Unité d'origine (C ou F) : "
  LIRE unite_origine
  AFFICHER "Unité destination (C ou F) : "
  LIRE unite_destination
  
  SI unite_origine = "C" ET unite_destination = "F" ALORS
    resultat ← CelsiusVersFahrenheit(temperature)
  SINON SI unite_origine = "F" ET unite_destination = "C" ALORS
    resultat ← FahrenheitVersCelsius(temperature)
  FIN SI
  
  AFFICHER "Résultat : ", resultat, " ", unite_destination
FIN
Programme de conversion de température structuré
Solution structurée :

Approche modulaire avec fonctions spécifiques et gestion des cas

Règles appliquées :

Fonctionnalité claire : Chaque fonction a un rôle précis

Gestion des cas : Traiter toutes les combinaisons possibles

Validation : Vérifier la cohérence des unités

Corrigé : Exercices 4 à 5
4 Système de contacts
Définition :

Problème : Planifier un système de gestion de contacts

1
Modèle de données (Contact)
2
Liste de contacts
3
Fonctions CRUD
4
Interface utilisateur
Étape 1 : Analyse des besoins

• Stocker nom, prénom, email, téléphone
• Pouvoir ajouter, modifier, supprimer des contacts
• Rechercher un contact
• Afficher la liste complète

Étape 2 : Modèle de données

Structure Contact :
• nom (chaîne)
• prenom (chaîne)
• email (chaîne)
• telephone (chaîne)

Étape 3 : Planification du développement
Structure Contact
  nom : Chaîne
  prenom : Chaîne
  email : Chaîne
  telephone : Chaîne
Fin Structure

Variables liste_contacts : Tableau de Contact
Variables taille_liste : Entier

FONCTION AjouterContact(nom, prenom, email, telephone) : Booléen
  SI taille_liste < MAX_CONTACTS ALORS
    liste_contacts[taille_liste].nom ← nom
    liste_contacts[taille_liste].prenom ← prenom
    liste_contacts[taille_liste].email ← email
    liste_contacts[taille_liste].telephone ← telephone
    taille_liste ← taille_liste + 1
    RETOURNER VRAI
  SINON
    RETOURNER FAUX
  FIN SI
FIN

// Autres fonctions : RechercherContact, ModifierContact, SupprimerContact, AfficherListe
Plan de développement complet pour le système de contacts
Solution structurée :

Architecture claire avec modèle de données et fonctions de gestion

Règles appliquées :

Modélisation : Créer une structure de données adaptée

CRUD : Implémenter les opérations de base (Create, Read, Update, Delete)

Sécurité : Gérer les limites de stockage

5 Jeu de devinettes
Définition :

Problème : Conception d'un jeu de devinettes (nombre mystère)

1
Génération du nombre mystère
2
Boucle de jeu
3
Comparaison réponse
4
Fin de partie
Étape 1 : Analyse du jeu

• Le programme génère un nombre aléatoire
• L'utilisateur propose des nombres
• Le programme indique "trop grand", "trop petit" ou "gagné"
• Le jeu se termine quand le nombre est trouvé

Étape 2 : Décomposition en modules

• Module génération : Générer un nombre aléatoire
• Module jeu : Boucle principale du jeu
• Module comparaison : Comparer la proposition au nombre mystère
• Module affichage : Donner des indications à l'utilisateur

Étape 3 : Algorithme complet
ALGORITHME JeuDevinette
Variables nombre_mystere, proposition, tentative, limite_basse, limite_haute : Entier
Variables trouve : Booléen

DEBUT
  // Initialisation
  nombre_mystere ← GENERER_ALEATOIRE(1, 100)
  tentative ← 0
  trouve ← FAUX
  limite_basse ← 1
  limite_haute ← 100
  
  AFFICHER "Devinez un nombre entre 1 et 100"
  
  TANT QUE trouve = FAUX ET tentative < 10 FAIRE
    tentative ← tentative + 1
    AFFICHER "Tentative ", tentative, "/10"
    AFFICHER "Proposez un nombre : "
    LIRE proposition
    
    SI proposition = nombre_mystere ALORS
      trouve ← VRAI
      AFFICHER "Bravo ! Vous avez trouvé en ", tentative, " tentatives."
    SINON SI proposition < nombre_mystere ALORS
      AFFICHER "Trop petit !"
      limite_basse ← proposition + 1
    SINON
      AFFICHER "Trop grand !"
      limite_haute ← proposition - 1
    FIN SI
    
    AFFICHER "Indice : le nombre est entre ", limite_basse, " et ", limite_haute
  FIN TANT QUE
  
  SI trouve = FAUX ALORS
    AFFICHER "Perdu ! Le nombre était : ", nombre_mystere
  FIN SI
FIN
Jeu de devinettes complètement structuré
Solution structurée :

Architecture complète avec boucle de jeu, gestion des tentatives et retour utilisateur

Règles appliquées :

Boucle de jeu : Maintenir le jeu actif jusqu'à la condition de fin

Contrôle des tentatives : Limiter le nombre d'essais

Feedback : Donner des indications pour guider l'utilisateur

Cours bien détaillé
Plan_{développement} = \sum_{i=1}^{n} Module_i
Décomposition modulaire
🎯
Analyse fonctionnelle : Comprendre ce que doit faire le programme.
🔧
Décomposition : Diviser le problème en sous-problèmes gérables.
📊
Algorithmique : Créer des suites d'instructions précises.
🔄
Itération : Améliorer le plan en plusieurs versions successives.
💡
Conseil : Commencer par identifier les entrées, sorties et traitements
🔍
Attention : Ne pas mélanger les responsabilités des différents modules
Astuce : Utiliser des schémas pour représenter la structure
📋
Méthode : Documenter chaque étape du plan de développement
Vérification : Tester chaque module indépendamment
Méthodes de structuration :
  • Analyse descendante : Du général au spécifique
  • Décomposition fonctionnelle : Par tâches à accomplir
  • Modularisation : Regroupement par fonctionnalité
  • Top-down : Structure hiérarchique du haut vers le bas
Règles importantes :
  • Chaque module doit avoir une seule responsabilité claire
  • Les modules doivent être aussi indépendants que possible
  • Les interfaces entre modules doivent être simples et claires
  • La documentation accompagne chaque étape du développement
Points clés à retenir :
  • Diviser pour mieux résoudre : La décomposition rend les problèmes plus gérables
  • Modularité : Créer des composants réutilisables et testables
  • Documentation : Garder une trace claire de chaque décision
  • Validation continue : Tester régulièrement chaque partie du système
Structurer un plan de développement Conception et décomposition de problèmes