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

C Discussion :

Programme et sous-programme


Sujet :

C

  1. #1
    Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 3
    Par défaut Programme et sous-programme
    Bonjour à tous,
    je suis nouveau sur le forum et j aurais une petite question. Je me suis mis gentillement à faire de la programmation en C et je ne comprend pas comme intégrer différentes "couches", différents sous-programmes.
    Un exemple:
    Je lance un programme qui me donne l'invite suivante:
    ------------------------------------------------------
    Calculatrice
    1. Addition
    2. Soustraction
    3. Division
    4. Multiplication

    Choix [ ]
    ------------------------------------------------------

    j ai entendu parler d'une commande goto mais qui est apparement très très tabou...

    Merci pour l'intéret que vous avez eu pour ma question, à bientot je l'espère.

  2. #2
    Rédacteur

    Avatar de khayyam90
    Homme Profil pro
    Architecte de système d’information
    Inscrit en
    Janvier 2004
    Messages
    10 371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Architecte de système d’information

    Informations forums :
    Inscription : Janvier 2004
    Messages : 10 371
    Par défaut
    commande goto ?
    à ne pas utiliser.

    le principe pour ton programme de calculatrice doit être le suivant
    • invite de choix
    • saisie d'un choix par l'utilisateur (+ vérification qu'il n'a pas rentré n'importe quoi + traitement des erreurs possibles)
    • appel de la fonction (du sous-programme) qui va bien selon ce que l'utilisateur a rentré
    • affichage de l'invite suivante (la même ou une différente selon ce que tu veux faire)

  3. #3
    Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 3
    Par défaut
    Merci pour ta réponse si rapide.

    " commande goto ?
    à ne pas utiliser. "

    C est ce que j'avais cru comprendre dans les autres posti oui..
    --------------------------------------------------------------
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    main()
    {
    char choix;
     
    printf("Calculatrice\n");
    printf("1. Addition\n");
    ...
    printf("Choix [ ]\b\b");
    scanf("%c", &choix);
    pour le début, je voyais ca un peu comme ca... mais pour la suite, je suis un peu embêter. Je peux mettre un "if" pour vérifier que la réponse est correcte mais par exemple si la réponse est 1 comment je fais pour dire au programme de prendre la "fonction" addition. C est là mon problème, en fait...

  4. #4
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par ancotech927
    Merci pour ta réponse si rapide.

    " commande goto ?
    à ne pas utiliser. "

    C est ce que j'avais cru comprendre dans les autres posti oui..
    --------------------------------------------------------------
    main()
    {
    char choix;

    printf("Calculatrice\n");
    printf("1. Addition\n");
    ...
    printf("Choix [ ]\b\b");
    scanf("%c", &choix);

    pour le début, je voyais ca un peu comme ca... mais pour la suite, je suis un peu embêter. Je peux mettre un "if" pour vérifier que la réponse est correcte mais par exemple si la réponse est 1 comment je fais pour dire au programme de prendre la "fonction" addition. C est là mon problème, en fait...
    Je te conseille de lire cette page
    http://emmanuel-delahaye.developpez....tes.htm#saisie

  5. #5
    Membre éprouvé
    Avatar de granquet
    Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    1 201
    Détails du profil
    Informations personnelles :
    Localisation : France, Pyrénées Orientales (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2005
    Messages : 1 201

  6. #6
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 33

    Informations forums :
    Inscription : Octobre 2005
    Messages : 141
    Par défaut
    Au lieu d'utiliser plein de if (et de faire plein de copier/coller qui vont provoquer beaucoup de bugs), un switch est recommandé (pour faire un menu surtout).

    Rapidement, si tu ne connais pas, ça s'utilise comme cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    char c;
     
    /* ... */
     
    switch (c)
    {
        case '+':
            /* ... */
            laFonctionChargeeDeFaireLAddition(premierNombre, deuxiemeNombre);
            break;
     
        case '*':
            /* ... */
            laFonctionChargeeDeFaireLaMultiplication(premierNombre, deuxiemeNombre);
            break;
     
        default:
            printf("Erreur !");
    }
     
    /* ... */
    Kr00pS

  7. #7
    Candidat au Club
    Inscrit en
    Avril 2006
    Messages
    3
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 3
    Par défaut
    Merci pour vos messages,
    je suis aller voir les liens:
    - Skyrunner --> j'utiliserai désormais le fgets(), merci pour le lien
    - Dark_Ebola --> c'est pour le début du programme que tu m'as dirigé sur ce lien? J'ai malheureusement pas bien compris.
    - Kr00pS --> j'ai déjà entendu parler de cette fonction, merci. Ce que je me demande c'est que si on a une fonction très longue ou une partie différente de programme à mettre (par exemple si je veux intégrer une fonction de calculatrice, une pour un carnet d'adresse par exemple...) entre un "switch".... ca risque d'etre un peu long si je dois mettre tout le code non?

    Merci d'éclairer mes lanternes obscures...

  8. #8
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par ancotech927
    - Dark_Ebola --> c'est pour le début du programme que tu m'as dirigé sur ce lien? J'ai malheureusement pas bien compris.
    main() retourne int. Tu n'avais pas mis de type. En C90, le type retour implicite est autorisé, et oui, c'est int. En C99, le type doit être explicite. Tu es donc encouragé à écrire
    - Kr00pS --> j'ai déjà entendu parler de cette fonction, merci. Ce que je
    <...>
    switch-case n'est pas une fonction mais une structure de code formé des instructions switch et case et break.

    Ca s'utilise quant il y a des choix multiples. Le sélecteur doit être de type int. Pour les autres cas, on utilise des if-else if-else enchainés...

  9. #9
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    141
    Détails du profil
    Informations personnelles :
    Âge : 33

    Informations forums :
    Inscription : Octobre 2005
    Messages : 141
    Par défaut
    Citation Envoyé par ancotech927
    Merci pour vos messages,
    je suis aller voir les liens:
    - Skyrunner --> j'utiliserai désormais le fgets(), merci pour le lien
    - Dark_Ebola --> c'est pour le début du programme que tu m'as dirigé sur ce lien? J'ai malheureusement pas bien compris.
    - Kr00pS --> j'ai déjà entendu parler de cette fonction, merci. Ce que je me demande c'est que si on a une fonction très longue ou une partie différente de programme à mettre (par exemple si je veux intégrer une fonction de calculatrice, une pour un carnet d'adresse par exemple...) entre un "switch".... ca risque d'etre un peu long si je dois mettre tout le code non?

    Merci d'éclairer mes lanternes obscures...
    Imaginons, dès le lancement du programme, l'utilisateur doit choisir entre le mode calculatrice, carnet d'adresse. S'il n'y a que 2 choix, l'utilisation de if (et else if) ne dérange pas mais dans la cas contraire, un switch est plus que recommandé..

    Dans ton switch, case 1, par exemple, tu vas mettre une fonction principale nommée bouclePrincipalCalculatrice et dans celle-ci tu mets toute s tes fonctions concernant la calculatrice.

    Et, non, si tu découpes ton code en plusieurs fonctions; Tu n'auras aucun problème..

    Si tu veux un exemple de ce qu'il ne faut surtout pas faire, voici ma calculatrice que j'ai programmé quand je débutais vraiment (j'ai la flemme de la refaire avec des fonctions, toussa). Elle fonctionne mais ça n'empêche pas qu'elle soit codé et fini à l'arrache (quand je regarde l'expression de certaines phrases, je devais être franchement fatigué ) [Il y a sûrement de grosses erreurs, voici un exemple du copier/coller abusif..]

    Kr00pS

  10. #10
    Membre Expert
    Inscrit en
    Décembre 2004
    Messages
    1 478
    Détails du profil
    Informations forums :
    Inscription : Décembre 2004
    Messages : 1 478
    Par défaut
    Citation Envoyé par Kr00pS
    Imaginons, dès le lancement du programme, l'utilisateur doit choisir entre le mode calculatrice, carnet d'adresse. S'il n'y a que 2 choix, l'utilisation de if (et else if) ne dérange pas mais dans la cas contraire, un switch est plus que recommandé..
    Quand on debute, oui. Apres, on utilise des tableaux de pointeurs de fonctions pour choisir le contexte. C'est tout de meme plus souple et maintenable qu'une serie de if/else et switch/case.

Discussions similaires

  1. programme et sous-programmes
    Par Jasmine80 dans le forum Langage
    Réponses: 6
    Dernier message: 10/12/2010, 12h10
  2. Plusieurs sous-programmes ou un programme avec plein de conditions ?
    Par svagrim dans le forum Langages de programmation
    Réponses: 13
    Dernier message: 09/07/2007, 19h26
  3. Réponses: 2
    Dernier message: 04/06/2004, 10h36
  4. [langage] les sous programmes
    Par giverny dans le forum Langage
    Réponses: 6
    Dernier message: 21/07/2003, 19h24

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