IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Algorithmes et structures de données Discussion :

Proposition d'un découpage fonctionnel pour un problème


Sujet :

Algorithmes et structures de données

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Points : 7
    Points
    7
    Par défaut Proposition d'un découpage fonctionnel pour un problème
    Bonsoir,

    Je suis actuellement en classe prépa d'une école d'ingénieurs (1ère année, je viens d'avoir mon bac) en nouvelles technologies et je débute en programmation : le prof d'info nous a donné un exercice en pseudo-code (nous programmons en C, mais pour introduire de nouvelles notions, nous les voyons d'abord en pseudo-code puis ensuite leur traduction en C) et je vous avoue que quelque chose me bloque un peu.

    Cet exercice a pour but de s'exercer sur l'une des dernières notions d'algorithmie que nous avons vue, les types composés.

    L'énoncé est le suivant :
    "Un restaurant propose des menus a la carte. Le patron du restaurant souhaite que le
    client puisse voir le menu avec 3 entrées au choix, le plat principal avec 4 choix possibles
    (deux viandes et deux poissons) et deux desserts au choix. Le prix de chaque plat doit
    être indiqué sur le menu.
    Chaque plat est numéroté de la facon suivante :
    | 0x pour les entrées ou x désigne le numéro de l'entrée (entre 1 et 3)
    | 1x pour les plats ou x désigne le numéro du plat principal (entre 1 et 4)
    | 2x pour les desserts ou x désigne le numéro du dessert (entre 1 et 2)
    Sur le menu, les plats sont affichés avec leur nom. A vous de trouver un moyen de faire
    correspondre le numéro du plat avec son nom.

    1. Déclarer un nouveau type choix composé d'un entier (correspondant au numéro
    du plat) et d'un réel correspondant au prix du plat ;

    2. Proposer un découpage fonctionnel permettant :
    | d'afficher le menu avec tous les choix possibles
    | de permettre au client d'entrer son choix pour chaque partie du repas (entrée,
    plat, dessert)
    | de lui afficher le prix total du menu une fois son choix eff ectué."

    Pour le 1) je n'ai pas de souci, on fait simplement :
    choix : 1 type composé de
    <
    n : 1 entier
    p : 1 réel
    >

    C'est pour la suite que j'ai du mal à saisir (pour rappel, dans un découpage fonctionnel on demande simplement la déclaration des fonctions nécessaires pour résoudre le problème ainsi que leur rôle, leurs entrées et leurs sorties, et pas l'algo des différentes fonctions)

    Ce que je ne saisis pas, c'est que je voulais justement pour faire correspondre le numéro du plat avec son nom déclarer un type composé du nom du plat, son prix et son numéro mais dans la 1ère question ils nous font déclarer un type composé uniquement du numéro et du prix.. Il doit donc falloir faire avec ce type composé-là et trouver un autre moyen mais que je ne vois pas pour l'instant.

    Auriez-vous des idées à me proposer ?
    Merci d'avance, cordialement.

  2. #2
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    On peut se baser sur:
    - un type "Article" composé du nom et du prix.
    - 3 Tableaux "Entrées", "Plats" et "Desserts".
    Le numéro de plat correspondra à l'indice du plat dans son tableau.

    Les fonctions seront :
    1. Construire_Menu, avec comme paramètres les tableaux Entrées, Plats et Desserts (crée les differents articles et les ajoute à chaque tableau)
    2. Afficher_Article, avec comme paramètre un élément de tableau,
    3. Afficher_Tableau, avec comme paramètre un tableau et un titre (boucle avec appel à Afficher_Article)
    4. Afficher_Menu, avec comme paramètres les tableaux Entrées,Plats et Desserts (appel successifs à Afficher_Tableau)
    5. Choisir_Tableau, avec comme paramètre un tableau et une question, renvoie un nombre,
    6. Choisir_Menu, avec comme paramètres les tableaux Entrées,Plats et Desserts (appels successifs à Choisir_Tableau), renvoie les 3 nombres,
    7. Afficher_Prix, avec comme paramètres les tableaux Entrées,Plats et Desserts et les 3 choix du "client".


    Les tableaux peuvent être remplacés par des listes.
    Si au lieu des 3 tableaux, on utilise une liste de liste, complétée par une liste de 3 chaines "Entrées", "Plats" et "Desserts", on peut remplacer les "appels successifs" par une boucle sur les 3 parties du menu.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Invité
    Invité(e)
    Par défaut
    hello,

    une variante

    considérons tousLesPlats: le tableau contenants tous les plats possibles

    | d'afficher le menu avec tous les choix possibles
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    void AfficherMenu(tousLesPlats)

    | de permettre au client d'entrer son choix pour chaque partie du repas (entrée,
    plat, dessert)
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    /**
     n'affiche que les plats dans tousLesPlats qui sont de type entrée
    */
    void AfficherEntrée(tousLesPlats)
    void AfficherPlat(tousLesPlats)
    void AfficherDessert(tousLesPlats)
    /* retourne vrai si le plat a pu etre saisi
     le plat peut etre saisi si code est de la forme 0x, x dans ...
     */
    bool SaisirEntrée(code)
    /* retourne vrai si ...
    */
    bool SaisirPlat(code)
    bool SaisirDessert(code)

    | de lui afficher le prix total du menu une fois son choix effectué."
    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    void AfficherMontant()

    cette approche est (je sais pas si elle est conforme du point de vue académique fonctionnel machin) différente par rapport notamment aux points 6,7 de Graffito.
    Est-il nécessaire de garder la trace des choix de l'utilisateur?

    J'ai abordé le problème du point de vue d'une interface (ou il n'est pas nécessaire de connaitre les choix de l'utilisateur pour afficher le montant correspondant à ses choix), mais est-ce correct du point de vue du découpage fonctionnel?)
    Dernière modification par Invité ; 11/11/2014 à 12h43. Motif: Coloration syntaxique [code=C] ... [/code]

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2014
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : France, Loire (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Mai 2014
    Messages : 11
    Points : 7
    Points
    7
    Par défaut
    Bonsoir à vous,

    En ce qui concerne ta réponse Graffito, c'est vrai que ta solution est tout à fait correcte mais (c'est d'ailleurs de ma faute j'ai oublié de le préciser dans mon message) le souci c'est que nous n'avons pas encore vu les tableaux ni les listes donc je ne pense pas que le prof attendre quelque chose de ce type, et comme nous programmons en C il veut que nos fonctions retournent une seule variable.. (je parle de la fonction Choisir_Menu) donc du coup je ne pense pas que ce soit la solution qu'il attende

    Du coup c'est pareil pour ta solution, galerien69 qui utilise des tableaux et je t'avoue que je n'ai pas trop saisi pourquoi ta fonction AfficherMontant ne prend aucun paramètre en entrée ^^

    Merci pour votre aide en tout cas

Discussions similaires

  1. Quelle approche pour ce problème de conception bien spécifique ?
    Par wokmichel dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 23/10/2006, 08h50
  2. Réponses: 39
    Dernier message: 21/10/2006, 13h53
  3. Recherche de pistes pour un problème d'optimisation
    Par TiKeuj dans le forum Algorithmes et structures de données
    Réponses: 6
    Dernier message: 15/08/2005, 15h50
  4. Développeur Fonctionnel pour vous c'est quoi ?
    Par petit_skarab dans le forum Structure
    Réponses: 1
    Dernier message: 22/04/2005, 16h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo