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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    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 éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 83
    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 !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    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 expérimenté
    Homme Profil pro
    Programmeur Delphi
    Inscrit en
    Octobre 2006
    Messages
    183
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Programmeur Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 183
    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
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    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 éprouvé
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 83
    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 !

  7. #7
    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 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.

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

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

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

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    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

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

    Informations forums :
    Inscription : Janvier 2006
    Messages : 57
    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

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 7
    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) ;
    }

  12. #12
    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 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...

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