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 :

Perdu dans les cours de C [Débutant(e)]


Sujet :

C

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Points : 1
    Points
    1
    Par défaut Perdu dans les cours de C
    Bonjour,

    J'ai appris quelques rudiments de C dans un livre ... Et fait les exercices (avec difficulté). Le C est le premier vrai langage de programmation que j'ai abordé (j'ai écrit des lignes de HTML mais c'est pas vraiment ça ...).
    Maintenant, je réfléchis à m'inventer moi-même des exercices de base. Exemple : faire un démineur.
    Bon, le fond je l'aperçois ... Mais la forme (la fenêtre, etc.), je n'ai aucune idée de comment faire.
    Dans mon livre il n'y a rien d'écrit.
    Je cherche partout je trouve des cours très intéressants et d'autres me menant vers ce que je cherche mais suis vite déçu par des cours soit : ne contenant rien à propos de ceci (utilise-t-on du Visual C ?, en viens-je à me demander), des ébauches à compléter ou bien des cours beaucoup trop compliqués pour moi.
    Tout ce que j'ai lu m'a donné la capacité de créer quelques petits programmes dans leur 'boîte noire', et de progresser, mais là, j'avoue que je ne sais plus par où continuer ...
    Je n'ai peut-être pas les ressources mathématiques pour programmer en C (je n'ai que 15 ans ---> seconde).
    Enfin bref,
    Quelqu'un connaît-il un site ou une formule d'apprentissage facile et pratique sur lequel il pourrait m'aiguiller ?
    Que me conseillez-vous de faire ?

    Merci de vos réponses et de votre attention,
    Cordialement,

    Faradn

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 83
    Points : 101
    Points
    101
    Par défaut
    Salut !

    Lorsque j'ai appris le C++ en cours, nous faisions des petits exercices sympas mais pas trop poussés non plus. Le but étant de s'habituer et de comprendre les règles de base de la programmation.

    Je ne sais pas ce que tu connais mais je peux te proposer 2 exos pour que tu t'exerces:

    - Faire un programme qui permet, après avoir saisi 2 nombres, de connaître quel est le plus grand des deux.

    Ex d'affichage :
    Saisir le 1er nombre: 1
    Saisir le 2e nombre: 2
    Le nombre le plus grand est 2

    - Faire un programme qui permet de saisir 3 nombres et connaître quel est le plus grand des 3 (même type d'affichage que précédemment). Cet exo est un peu plus complexe que le premier

    Bon courage !
    *Laisse l'Amour enivrer ton âme*

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Nahla_India, merci de ta réponse.
    Ce genre de programme me paraît pour l'instant facile ; j'ai terminé le premier.

    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
    #include <stdio.h>
     
    main ()
     
    {
         int a, b ;
         printf ("Donnez deux nombres entiers a comparer :\n") ;
         scanf ("%d %d", &a, &b) ;
         if (a>b)
         printf ("%d est plus grand que %d\n", a, b) ;
         else 
           if (a<b)
           printf ("%d est plus petit que %d\n", a, b) ;
           else
             printf ("%d et %d sont egaux\n", a, b) ;
         scanf("%d", &a) ; /* Pour laisser le temps à printf de s'afficher proprement */
    }
    Je me mets au second ! Merci du soutien.

  4. #4
    Membre actif
    Homme Profil pro
    Programmeur Delphi
    Inscrit en
    Octobre 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Programmeur Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 183
    Points : 227
    Points
    227
    Par défaut
    Slt
    j'ai étudié le C
    Le langage C est très bien pour apprendre les ficelles de programmation
    Lorsque tu connais et comprends les "if else" et autre boucle "for, while"
    L'étape suivante serait les fonctions et structures
    Ensuite, je te conseillerai de te familiariser ave les pointeurs...

    Dès l'instant que tu maîtrises cela, tu pourras passer au C++
    Mais attention, c'est un langage orienté objet (POO)

    Bon étude et bon développement

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Merci jaduta.
    J'ai déjà étudié et fonctions et pointeurs ; néanmoins, justement, tel était ma question (aussi floue que mes pensées) : que faire ensuite ? (il est vrai que je devrais les perfectionner, car la notion de pointeur est ... encore un peu floue également )
    Après un tel apprentissage, je me trouvais incapable de faire, par exemple, un démineur ...

    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
    #include <stdio.h>
     
    main ()
     
    {
         int a, b, c ;
         printf ("Donnez trois nombres entiers a comparer :\n") ;
         scanf ("%d %d %d", &a, &b, &c) ;
         if (a>b && a>c)
         printf ("%d est le plus grand des nombres %d, %d et %d\n", a, a, b, c) ;
           else
           if (b>a && b>c)
           printf ("%d est le plus grand des nombres %d, %d et %d\n", b, b, a, c) ;
             else
             if (c>a && c>b)
             printf ("%d est le plus grand des nombres %d, %d et %d\n", c, c, a, b) ;
               else
               printf ("Parmi les nombres que vous avez donnes, deux d'entre eux (les plus grands) sont egaux. Si ce n'est pas le cas, veuillez indiquer des nombres la prochaine fois.\n") ;
         scanf("%d", &a) ; /* Pour laisser le temps à printf de s'afficher proprement */
    }
    Pour le précédent, je me suis un peu écarté de la consigne ; je les ai comparés ; mais ça répond à peu près à ce qu'il fallait.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 83
    Points : 101
    Points
    101
    Par défaut
    Salut !

    Ca m'a l'air pas mal et tu es plutôt habile !
    Pour le deuxième, essaye maintenant de le simplifier car on peut faire plus simple
    Je regarderai dans mes cours si j'ai pas d'autres bons exos à te filer !
    Bon courage !
    *Laisse l'Amour enivrer ton âme*

  7. #7
    Expert éminent
    Avatar de Melem
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2006
    Messages
    3 656
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Janvier 2006
    Messages : 3 656
    Points : 8 389
    Points
    8 389
    Par défaut
    Citation Envoyé par Faradn
    Bonjour,

    J'ai appris quelques rudiments de C dans un livre ... Et fait les exercices (avec difficulté). Le C est le premier vrai langage de programmation que j'ai abordé (j'ai écrit des lignes de HTML mais c'est pas vraiment ça ...).
    Maintenant, je réfléchis à m'inventer moi-même des exercices de base. Exemple : faire un démineur.
    Bon, le fond je l'aperçois ... Mais la forme (la fenêtre, etc.), je n'ai aucune idée de comment faire.
    Dans mon livre il n'y a rien d'écrit.
    Je cherche partout je trouve des cours très intéressants et d'autres me menant vers ce que je cherche mais suis vite déçu par des cours soit : ne contenant rien à propos de ceci (utilise-t-on du Visual C ?, en viens-je à me demander), des ébauches à compléter ou bien des cours beaucoup trop compliqués pour moi.
    Tout ce que j'ai lu m'a donné la capacité de créer quelques petits programmes dans leur 'boîte noire', et de progresser, mais là, j'avoue que je ne sais plus par où continuer ...
    Je n'ai peut-être pas les ressources mathématiques pour programmer en C (je n'ai que 15 ans ---> seconde).
    Enfin bref,
    Quelqu'un connaît-il un site ou une formule d'apprentissage facile et pratique sur lequel il pourrait m'aiguiller ?
    Que me conseillez-vous de faire ?

    Merci de vos réponses et de votre attention,
    Cordialement,

    Faradn
    Quel est ton niveau en C actuellement? Je veux dire qu'est-ce que t'as déjà appris dans tes cours? Le C est un langage concis donc facile à apprendre mais sa maîtrise demande beaucoup du temps. Et pour arriver à le maîtriser, je te conseille de t'entraîner surtout sur le langage lui-même plutôt que sur ce que tu pourrais faire avec (analyse numérique (mathématiques), interfaces graphiques, applications multimédia, applications client/serveur, pilotes de périphériques, traitement d'images, ...). Mon site contient des ressources concernant la programmation en langage C.

  8. #8
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Merci à tous,

    Je vais essayer de simplifier le programme cette après-midi, et j'ai trouvé un autre bouquin pas mal pour apprendre le C.
    Ce que je sais, c'est environ les cours jusqu'aux chapitres sur les pointeurs. J'ai lu et fait un peu tout sur les pointeurs mais faut que je peaufine.
    Sinon j'ai abordé les chaînes aussi.

    Cordialement,

    Faradn

  9. #9
    Membre averti Avatar de GyZmoO
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2006
    Messages : 428
    Points : 301
    Points
    301
    Par défaut
    Yop a toi !

    Puisque tu débutes en C, autant prendre les bonnes habitudes desuite
    Donc évite d'utiliser scanf et tourne toi vers fgets + fonction de conversion qui va bien (strtol etc...) . Parce que tu verras que scanf quand on débute ça peut faire n'importe quoi...

    Sur ce, bonne continuation

    [EDIT] http://c.developpez.com/faq/?page=cl...EN_scanf_fgets [/EDIT]
    define: Programmeur : Celui qui résout un problème que vous n'aviez pas, d'une façon que vous ne comprenez pas.

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Faradn Voir le message
    J'ai appris quelques rudiments de C dans un livre ... Et fait les exercices (avec difficulté). Le C est le premier vrai langage de programmation que j'ai abordé .
    Maintenant, je réfléchis à m'inventer moi-même des exercices de base. Exemple : faire un démineur.
    Bon, le fond je l'aperçois ... Mais la forme (la fenêtre, etc.), je n'ai aucune idée de comment faire.
    Dans mon livre il n'y a rien d'écrit.
    Je cherche partout je trouve des cours très intéressants et d'autres me menant vers ce que je cherche mais suis vite déçu par des cours soit : ne contenant rien à propos de ceci (utilise-t-on du Visual C ?, en viens-je à me demander), des ébauches à compléter ou bien des cours beaucoup trop compliqués pour moi.
    Tout ce que j'ai lu m'a donné la capacité de créer quelques petits programmes dans leur 'boîte noire', et de progresser, mais là, j'avoue que je ne sais plus par où continuer ...
    Je n'ai peut-être pas les ressources mathématiques pour programmer en C (je n'ai que 15 ans ---> seconde).
    Enfin bref,
    Quelqu'un connaît-il un site ou une formule d'apprentissage facile et pratique sur lequel il pourrait m'aiguiller ?
    Que me conseillez-vous de faire ?
    Je crois que tu confonds 3 choses

    - La programmation
    - L'étude d'un langage de programmation
    - La réalisation d'un projet

    La connaissance d'un langage n'est pas l'apprentissage de la programmation.

    La programmation met en œuvre des concepts généraux qui sont évidemment repris (du moins en partie) par les langages de programmation, mais doivent être étudiés à part et indépendamment de tout langage d'implémentation (éventuellement en pseudo-code) :

    valeur, variable, affectation, opérateur, expression, structures de décision (if, switch), structures itératives (boucles), structures de données, fonctions, paramètres, retour, entrées/sorties, bibliothèques de fonctions.

    Mais en fait, le plus important est l'élaboration d'un projet qui consiste d'abord à le définir, de façon à ce que l'on sache clairement où l'on va et quelles sont les limites. C'est ici que sont définis les interfaces avec l'utilisateur et les comportements attendus du programme en fonction des évènements extérieurs.

    Ensuite vient la phase qui fait vraiment réfléchir et qui demande les connaissances les plus étendues : la conception. C'est là qu'on se demande 'comment on fait'. Partant de la définition du projet, il faut imaginer quelles seront les techniques mises en œuvre et comment.

    Plusieurs éléments de la définition du projet sont là pour nous guider :

    - Ca doit tourner sur quelle machine ? Quel système ?
    - Quelle est l'interface homme machine (IHM) ? Console, TUI, GUI ?

    etc.

    En fonction de ces éléments, des choix technologiques sont faits (bibliothèques, API) qu'il ne reste plus qu'à mettre en oeuvre. Pour ça, il faut d'une part lire les docs et les tutoriels pour apprendre à mettre en oeuvre ces technologies (c'est la 'formation continue' de l'informaticien), puis, à l'aide de la description des comportements attendus que l'on trouve dans le document de définition, il faut élaborer les algorithmes qui traduisent ces comportements en pseudo-code.

    On part d'une vision globale du projet, et on raffine plusieurs fois, jusqu'à obtenir un découpage en 'blocs fonctionnels' élémentaires qui sont ensuite codée et testés unitairement (c'est là, et seulement là qu'intervient le langage de programmation). Ensuite, les briques sont assemblées pour constituer le projet (intégration), et le fonctionnement global est vérifié par rapport à la définition initiale. Les écarts sont corrigés.

    Détails dans ma signature.
    Pas de Wi-Fi à la maison : CPL

  11. #11
    Membre habitué Avatar de emprex
    Homme Profil pro
    auto-entrepreneur
    Inscrit en
    Octobre 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : auto-entrepreneur
    Secteur : Services à domicile

    Informations forums :
    Inscription : Octobre 2007
    Messages : 219
    Points : 199
    Points
    199
    Par défaut
    http://c.developpez.com/cours/
    Ce site contient des exercices pour apprendre le C.
    A tester. Moi, je le trouve bien.

  12. #12
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    @ Gyzmoo :

    Je vais essayer pour l'adaptation du deuxième programme. Notamment il faut que je revoie putchar () et getchar () je m'en souviens plus tellement je travaille en parallèle sur mon JdR (pur design, un projet encadré par un forum généré automatiquement, c'est plus pratique).

    @ Emmanuel Delahaye :

    J'ai regardé votre blog. Effectivement, c'est une habitude à prendre (même si je n'ai pas l'intention de faire de ceci mon métier plus tard), même pour des petits programmes.

    Cet éclaircissement aide, je pense, à parer énormément de petites erreurs et à être sûr de ce que l'on fait plutôt que de, par tâtons, modifier le langage que l'on écrit.

    Ensuite, je n'ai quand même pas cru que 'programmer' était une notion acquise en lisant un ou deux livres ; je me dois de m'exercer, bien entendu.
    Je crois que ce qu'il y a marqué dans votre blog m'évoque quelques récits de projets d'entreprises, ce dont on m'a parlé très récemment :
    • le dialogue avec le client
    • bien définir ce que devra faire le programme à la lettre, où et quand
    • concevoir le programme sans encore utiliser de langage
    • là, on le donne aux développeurs

    En gros, c'est bien ce qu'il y a sur votre blog (évidemment, c'est un autre contexte dont je parle, c'est quelque peu différent).

    Peut-être devrais-je essayer ceci, même pour les programmes de 20 lignes ...

    En tout cas, il m'apparaît clairement que je n'ai pas encore les connaissances suffisantes et que je devrais me lancer dans la programmation d'un démineur par exemple une fois ces connaissances acquises.

    Mais grâce à vous, j'effectuerai la démarche qui conviendra.

    @ emprex :

    J'ai regardé le site ; il me semble intéressant ; je pense que leur solution de correction est très pratique ; par contre, cela n'entraîne qu'un apprentissage de connaissances du langage et, comme l'a dit Emmanuel Delahaye, ce n'est pas programmer.

    Enfin, au niveau où j'en suis, mes trois premières étapes ne prennent pas plus de 20 lignes alors autant repousser légèrement les limites de mes connaissances ...

    Merci à tous,

    Cordialement,

    Faradn

  13. #13
    Membre du Club
    Homme Profil pro
    Inscrit en
    Janvier 2006
    Messages
    57
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 57
    Points : 50
    Points
    50
    Par défaut
    Bonjour,

    Avant de passer au démineur, il y a encore pas mal de temps je pense, surtout si tu veux le faire dans un environnement graphique.

    Si tu veux quelques petits programmes, tu peux essayer de faire un jeu ou tu dois retrouver un nombre entre 0 et 100.

    Puis après pour compliquer un peu, tu fais avec un choix de niveau.

    Ensuite tu peux faire un morpion.
    Tu peux aussi faire quelques petits trucs sur la lecture de fichiers ou écriture dans ces mêmes fichiers.

    Et quand tu te sentiras d'attaque, tu pourras passer à des choses plus complexes comme une bataille navale, mais là c'est déja pas une partie de rigolade...

    Si ça t'interesse j'peux regarder dans mes cours les exo que j'ai fait.
    Bon courage

  14. #14
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    Alors voici (Merci grhum) un petit jeu (je n'ai pas fait les étapes de projet ici car à mon avis vu mon niveau de C cela ne sert à rien ; ici, ce serait très court et inutile, le jeu se cerne rapidement en quelques minutes) :

    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
    22
    23
    24
    25
    26
    27
    28
    29
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h> 
     
    main ()
     
    {
         const long MAX = 100, MIN = 1;
         int nombreMystere, a ;
         srand(time(NULL));
         nombreMystere = (rand() % (MAX - MIN + 1)) + MIN;
         do
         {
                      printf ("Quel est le nombre mystere ?\n") ;
                      scanf ("%d", &a) ;
                      if (a==nombreMystere)
                      printf ("Bravo, vous avez gagne !") ;
                       else
                       if (a>nombreMystere)
                       printf ("Non, le nombre mystere est plus bas !") ;
                        else
                        if (a<nombreMystere)
                        printf ("Non, le nombre mystere est plus haut !") ;
                          else
                          printf ("Qu'est-ce que vous m'avez mis la ?! Evidemment que c'est faux !") ;
         }
         while (a!=nombreMystere) ;
         scanf ("%d", &a) ;
    }

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

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Points : 20 985
    Points
    20 985
    Par défaut
    Citation Envoyé par Faradn Voir le message
    Alors voici (Merci grhum) un petit jeu (je n'ai pas fait les étapes de projet ici car à mon avis vu mon niveau de C cela ne sert à rien ; ici, ce serait très court et inutile, le jeu se cerne rapidement en quelques minutes) :
    Si tu raisonnes comme ça, tu peux tout de suite arrêter la programmation. Ce n'est pas fait pour toi.

    Un compilateur bien réglé signale des défauts.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Project   : Forums
    Compiler  : GNU GCC Compiler (called directly)
    Directory : C:\dev\forums\
    --------------------------------------------------------------------------------
    Switching to target: default
    Compiling: main.c
    main.c:7: warning: return type defaults to `int'
    main.c:7: warning: function declaration isn't a prototype
    main.c: In function `main':
    main.c:29: warning: control reaches end of non-void function
    Linking console executable: console.exe
    Process terminated with status 0 (0 minutes, 5 seconds)
    0 errors, 3 warnings
    Codage :
    • Pourquoi le type long pour des variables comprises entre 1 et 100 ? Le type 'naturel' int suffit.
    • scanf() est mal utilisé. Si on entre a<enter>, c'est le drame...

    Sortie :
    • Il manque un '\n'. C'est illisible

    Ton code corrigé et commenté. Les commentaires reflètent l'analyse.
    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
     
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
     
    int main (void)
    {
       const int MAX = 100, MIN = 1;
       int nombreMystere, a;
     
       /* initialisation du generateur pseudo-aleatoire */
       srand (time (NULL));
     
       /* tirage du nombre mystere */
       nombreMystere = (rand () % (MAX - MIN + 1)) + MIN;
     
       /* boucle de jeu */
       do
       {
          /* saisie */
          {
             int n;
             do
             {
                printf ("Quel est le nombre mystere ?\n");
     
                n = scanf ("%d", &a);
                /* purge */
                {
                   int c;
                   while ((c = getchar ()) != '\n' && c != EOF)
                   {
                   }
                }
                /* test de la validite de la saisie */
                if (n != 1)
                {
                   puts ("err");
                }
             }
             while (n != 1);
             /* on recommence tant qu'il y a une erreur. */
          }
     
          /* analyse du resultat et affichage */
          if (a == nombreMystere)
          {
             printf ("Bravo, vous avez gagne !\n");
          }
          else if (a > nombreMystere)
          {
             printf ("Non, le nombre mystere est plus bas !\n");
          }
          else if (a < nombreMystere)
          {
             printf ("Non, le nombre mystere est plus haut \n");
          }
          else
          {
             printf
                ("Qu'est-ce que vous m'avez mis la ?! Evidemment que c'est faux !\n");
          }
       }
       while (a != nombreMystere);
     
       return 0;
    }
    Je sais d'où vient cet exercice. L'analyse a été faite dans l'exposé de l'exo, donc, effectivement, dans ce cas, pas de problème. Mais tu connais la suite :

    - permettre de rejouer
    - compter les essais
    etc.

    Si tu le sens, vas-y directement, mais je conseille quand même l'étude préalable, même si elle fait 10 lignes... C'est pas la quantité qui compte, mais la pertinence de la démarche...
    Pas de Wi-Fi à la maison : CPL

  16. #16
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    D'accord, merci Emmanuel Delahaye.
    En fait c'est un ami qui m'a conseillé d'en apprendre plus avant de commencer à faire ça, que c'était une perte de temps ...
    J'étais mitigé, mais comme j'avais déjà fait le programme avant d'avoir lu votre blog, je me suis dit que ce n'était pas la peine de le faire après avoir écrit le programme en C.

    Je vais voir pour le compilateur bien réglé, je n'étais à vrai dire pas au courant >.<

    Merci pour la correction ; en effet, il faudra que je revoie pas mal de choses ... J'essayerai de déjà tout comprendre de la correction puis éventuellement d'y implémenter des possibilités supplémentaires.

    Merci,
    Faradn

  17. #17
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 689
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 689
    Points : 30 983
    Points
    30 983
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Emmanuel Delahaye Voir le message
    Si tu raisonnes comme ça, tu peux tout de suite arrêter la programmation. Ce n'est pas fait pour toi.
    Là je te trouve un peu dur. C'est vrai que le code contient quelques manques ou mauvaises tournures mais on sent, en le voyant, qu'elle est à l'aise dans l'abstraction des problèmes pour synthétiser une solution facilement traduisible en C. Bien sûr le C est plein de pièges et demande pas mal de rigueur mais ce n'est qu'un obstacle mineur face au travail déjà accompli...

    Citation Envoyé par Emmanuel Delahaye Voir le message
    Si tu le sens, vas-y directement, mais je conseille quand même l'étude préalable, même si elle fait 10 lignes... C'est pas la quantité qui compte, mais la pertinence de la démarche...
    C'est vrai que si on pose un problème par écrit (même shématique avec des rond et des carrés) ça peut aider. Au pire on perd 3mn...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 53
    Points : 40
    Points
    40
    Par défaut
    Si tu suis les cours à l'endroit que je pense, une fois que tu en seras arrivé à la lecture et à l'écriture dans des fichiers il y a plein d'exercices à faire pour t'entrainer à manipuler les chaines et les fichiers.

    Exercice 1 : Créer un programme qui prend un fichier A et le copie dans un fichier B.

    Exercice 2 :
    Tu peux faire la même chose sauf que cette fois, tu indiques les noms de fichiers en ligne de commande au moment de lancer le programme. (pour un système UNIX, ça donnerait ceci : ./monProgramme fichierA fichierB)

    Exercice 3 : Tu inscris des mots dans un fichier avec un retour à la ligne après chaque mot :
    PROGRAMMATION
    ORDINATEUR
    ROUGE
    etc..
    Ton programme ouvre le fichier et le range par ordre alphabetique dans un autre fichier.

    Exercice 4 : Une fois que tu maitrises tout ça, tu peux t'amuser à coder un programme de cryptage. Regarde par exemple le cryptage de Vigenère et essaye de recréer l'algorithme. Dans l'execution, le programme te demande d'entrer une clef de cryptage. Il lit un fichierA et copie sa version cryptée dans un fichierB. A la suite de ça, il faut créer le programme de décryptage qui lis le fichierB, le décrypte et ecrit la version décryptée dans le fichierC. A la fin, les fichierA et fichierC doivent être identiques.


    • L'avantage : tu n'auras pas les corrections, tu devras donc chercher par toi même et poser des questions sur les forums si vraiment tu bloques.


    • L'inconvéniant : Si tu n'obtient pas de réponse sur les forums, ça peut prendre beaucoup de temps.


    Voila à mon avis de quoi t'occuper un certain temps.

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Août 2007
    Messages
    98
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 98
    Points : 87
    Points
    87
    Par défaut
    Juste pour dire que je me suis longtemps fait plaisir en faisant comme l'auteur de ce post. Des petits programmes, sans vraiement prendre conscience de la conception qu'il y avait en amont. Je dirai même que j'ai eu un BAC +4 en informatique sans vraiement en avoir conscience.... Pendant mes cours le travail étant plus ou moins maché, quand à la manière de procéder.

    Ce n'est que récement en voulant réaliser un porjet plus conséquent que je me suis rendu compte du coté passionant qu'il y avait à réfléchir à un projet de A à Z et que je me suis aperçu que le langage importait finalement assez peu.

    Je ne pense pas que ces deux approches soient à opposer.

    Pour ma part le besoin de réfléchir plus en amont au projet m'est venu naturellement dès que j'ai ressenti les limites de ma manière de procéder.
    Pendant les années "Bricolage" je me suis familiarisé avec certains concepts, la conception n'est venue qu'après.
    Je ne pense pas qu'il faille se mettre martel en tête et se forcer à suivre une manière de procéder si on n'en ressent pas le besoin.
    Les fois ou j'ai le plus appris en info c'est lorsque j'ai ressenti le besoin de faire ainsi.

    Ceci dit si je n'avais pas découvert le plaisir de la "conception" j'aurai manqué quelque chose c'est certains, je te conseil donc de continuer à te faire plaisir.
    et de progresser à ton rythme.

Discussions similaires

  1. Perdu dans les numéros de versions de l'Application Server
    Par Christophe P. dans le forum Oracle
    Réponses: 4
    Dernier message: 28/06/2007, 15h33
  2. Perdu dans les joins
    Par kabkab dans le forum Requêtes
    Réponses: 1
    Dernier message: 15/03/2007, 23h16
  3. perdu dans les fonctions en c++ builder
    Par davidc dans le forum C++Builder
    Réponses: 2
    Dernier message: 15/02/2007, 16h22
  4. [Débutant] Perdu dans les streams
    Par Le Furet dans le forum Collection et Stream
    Réponses: 7
    Dernier message: 04/01/2007, 10h58
  5. Perdue dans les Response.Write...
    Par Tapioca dans le forum ASP
    Réponses: 4
    Dernier message: 11/07/2004, 11h54

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