Mon premier petit bout de code

15 sujets de 1 à 15 (sur un total de 41)

  • Tiki

      #235902

      #include <stdio.h>
      #include <stdlib.h>

      int main()
      {
      int age=0;
      int resultat=0;
      int encore=0;
      do
      {
      printf(“Quel est ton age ? \n”,age);
      scanf(“%d”,&age);
      if(age>=18)
      {
      printf(“tu es majeur!\n”);
      age++;
      resultat=age-18;
      printf(“tu etais mineur il y a %d an(s)\n”,resultat);
      }
      else
      {
      printf(“tu es mineur !\n”);
      resultat=18-age;
      printf(“Tu seras majeur dans %d an(s)\n”,resultat);
      }
      printf(“Veux-tu recommencer ? 1.yes or 2.no \n”,encore);
      scanf(“%d”,&encore);
      }
      while (encore==1);
      return 0;
      }

      C’est mon premier truc qui fait autre chose que de dire “Bonjour”.
      Évidemment, c’est pas grand chose et très améliorable, mais j’en suis fier quand même. J’ai laissé un peu l’info de coté ces derniers mois, et je m’y remet depuis 5 jours.
      Bien sur, si je le poste ici, c’est surtout pour avoir vos avis concernant les maladresses et comment les améliorer pour progresser.

      Merci.

      Tiki

      Anonyme

        #235905

        J’ai rien compris mais je dis bravo quand même 😀

        Anonyme

          #235906

          pas mal 🙂

          tu peux condenser les lignes :

          age++;
          resultat=age-18;

          en une seule ligne, en factorisant tes deux operations

          sinon c est cool

          faut continuer

          Anonyme

            #235910

            yeahhh c’est toujours un grand moment son premier code fonctionnel ^^bienvenue dans la team des codeurs fou ^^
            attention le code peux vite devenir une drogue.

            Même si la c’est simple et lisible , prend l’habitude de commenter ton code , plus tu commentera et moins tu te prendra la tête quand tu reviendra sur ton code ^^
            Apres dans quelques années tu n’auras plus besoin de commenter car tu lira le code aussi bien que NEO ^^

            AmiDARK

              #235913

              Oula … D’un coup je me suis senti revenir presque 30 ans en arrière lors de mes premiers programmes en BASIC-1 :p
              Quoi ? Je fais les 40 cet été ? Meeuuuhh nonn !!! C’est pas grave docteur ! :p

               

              huggyone76

                #235917

                Raelito a raison, surtout en C il y a de grands spécialistes du “condensage”. Sauf que :

                * Ca n’apporte rien une fois compilé

                * Tu perds en lisibilité.

                Eventuellement, tu pourrais ne même pas avoir besoin d’initialiser tes entiers comme tu le fais au début. Mais c’est une base pour quelque chose de propre… Tu as le choix ! 🙂

                Remarque, c’est comme ton >=18, tu pourrais mettre un >17, ça suffit… 😀

                Allez, bravo en tout cas, il faut un début à tout !!! (Et ça me rappelle mes années d’ingénieur développement… ô joie… :D).

                A500+ACA500 - A600+Vampire 2+indivision ECS - A1200+Vampire V2 1200 - Mac Mini 1.42 sous MOS - Just CPC 128k - CPC 6128 - Atari STE 4Mo/CosmosEx - Atari Falcon CT60/SuperVidel 🙂
                C64C + 1541-II + Lecteur K7 + SD - Sharp X68000 CZ-601C 4Mo + CF - Sharp X68000 CZ-611C 10Mo + CF + ext. MIDI

                Bison bourré

                  #235920

                  je te lance un défi jeune codeurwan :

                  afficher les 15 premier nombre premier 🙂   (par calcul)

                  Les conseils de bison bourré : "Fonceeez !"

                  sayasupacrew

                    #235931

                    punaise extras !

                    moi qui rêve de faire la même chose.

                    si on pouvais connaitre plus de choses sur ce tu as mis au premier poste,

                    quel language utilise tu ?
                    comment fonctione t-il ?

                    Sy

                    https://www.youtube.com/@sayasupa

                    huggyone76

                      #235932

                      C’est du C, rien de bien sorcier là-dedans.

                      ‘ Déclarations des bibliothèques standards à utiliser

                      #include <stdio.h>
                      #include <stdlib.h>

                      ‘ Procédure principale (main)

                      int main()
                      {

                      ‘ Initialisation de 3 variables entières misent à zéro
                      int age=0;
                      int resultat=0;
                      int encore=0;

                      ‘ Début de la boucle “do…while’ qui se fait au moins une fois en entier et se termine quand la condition qui se trouve sur la ligne while (tant que…) soit vérifiée

                      do
                      {

                      ‘ Ecrit la phrase “Quel est ton age ?” avec un retour à la ligne et la réponse sera mise dans la variable “age”
                      printf(« Quel est ton age ? \n »,age);
                      scanf(« %d »,&age);

                      ‘ Si age est supérieur ou égal à 18…
                      if(age>=18)
                      {

                      ‘ Le prog écrit “tu es majeur!”
                      printf(« tu es majeur!\n »);

                      ‘On augmente age de 1
                      age++;

                      ‘ On met dans “resultat” la valeur de “age-18”
                      resultat=age-18;

                      ‘On écrit “tu étais mineur il y a ” (valeur de resultat) “an(s)”
                      printf(« tu etais mineur il y a %d an(s)\n »,resultat);
                      }

                      Si la valeur de age n’est pas supérieure ou égale à 18 alors…
                      else
                      {

                      ‘ On affiche “tu es mineur!”
                      printf(« tu es mineur !\n »);

                      ‘L’inverse de tout à l’heure pour écrire dans combien de temps tu seras majeur
                      resultat=18-age;
                      printf(« Tu seras majeur dans %d an(s)\n »,resultat);
                      }

                      ‘ On affiche un message pour savoir si tu veux recommencer ou pas
                      printf(« Veux-tu recommencer ? 1.yes or 2.no \n »,encore);

                      ‘ On met la valeur de la réponse dans la variable “encore”
                      scanf(« %d »,&encore);
                      }

                      ‘Condition pour recommencer (reprendre la boucle au “do” du début), c’est que tu répondes “1” qui correspond à “yes” dans la question. Toute autre réponse termine la boucle.
                      while (encore==1);

                      ‘On termine le programme.
                      return 0;
                      }

                       

                      Simple le C, non ? 🙂

                      A500+ACA500 - A600+Vampire 2+indivision ECS - A1200+Vampire V2 1200 - Mac Mini 1.42 sous MOS - Just CPC 128k - CPC 6128 - Atari STE 4Mo/CosmosEx - Atari Falcon CT60/SuperVidel 🙂
                      C64C + 1541-II + Lecteur K7 + SD - Sharp X68000 CZ-601C 4Mo + CF - Sharp X68000 CZ-611C 10Mo + CF + ext. MIDI

                      Hialmar

                        #235934

                        Dans le printf pour demander l’âge et pour recommencer, tu passes en paramètre âge et encore mais ils ne sont pas utilisés.

                        Sinon, la fonction scanf renvoie le nombre de variables qui ont été modifiées. Il faudrait tester ça pour savoir si l’utilisateur n’aurait pas tapé une lettre au lieu d’un chiffre.

                        Enfin, côté initialisations il faut absolument les faire en C. Sinon ça peut faire n’importe quoi. Pour le scanf de encore ici, si par malheur encore valait 1 et que l’utilisateur tape une lettre ça part en boucle infinie…

                        --
                        Patrice aka Hialmar
                        A500+/A600+aca620/A1200+aca1233
                        Membre de Silicium

                        Tiki

                          #235939

                          Merci à tous pour les retours et conseils 😀
                          Les cours d’infos du CNED me semblent assez obscurs et peu pratiques. J’utilise le pdf d’openclassroom ( ex site du zéro ), comme support, et j’y arrive mieux. Comme je gère assez mal la condition while seule ( conditions vraies et fausses ), j’utilise Do pour ” forcer ” l’entrée en boucle. Ca viendra avec l’entraînement.

                          @Saya : voilà ce que j’arrive à faire en seulement 5 jours. Si je peux le faire, tu le peux aussi. Huggy a décrit mon programme mieux que je n’aurais pu le faire. Merci Huggy 😀

                          @Hialmar
                          : Oui bien sur, une fonction test. C’est juste que je ne sais pas encore la faire. De la même manière, je ne sais pas encore gérer les variables avec des lettres ou chaines de lettres. Ca va venir vite. Avant la fin de cette semaine j’espère. Ca me servirai, par exemple, à demander un prénom, ou demander “oui” ou “non”, et non 1.Oui 2.non
                          J’ai effectivement initialiser “encore” à 0 pour pouvoir utiliser 1 et recommencer et n’importe quoi d’autre pour arrêter. La aussi, c’est par manque de connaissances. Enfin, Hialmar, je n’ai pas trop compris ta première phrase 😀

                          @BB : Ok, je me penche sur le TP du cours en premier, et j’essaye ton défi. Je dois avoir suffisamment de connaissances en maths et info pour le faire. Il me manque l’algorithme. Le plus dur 😀

                          @Jbam et AmiDark : ben oui, en lisant rapidement le défi de Huggy cet aprem, j’ai eu beaucoup de mal à rester concentré sur mon taf ensuite. Une drogue dîtes vous 😀

                          @Huggy et Raelito : Comment ça ” condenser ” ?

                          Merci encore

                          Tiki

                          Anonyme

                            #235941

                            @tiki en regle generale j essaie de limiter la taille de mon source

                            plus il y a de tartines de code plus difficile c est de le maintenir

                            parfois on peut obtenir le meme resultat avec moins de code tout en gardant quelquechose de lisible et de stable

                             

                            evidemment, faire du code super compact que personne ne peut relire  n est pas forcement une bonne chose 🙂

                            huggyone76

                              #235953

                              @Tiki, c’est Bison Bourré qui t’a donné un défi, pas moi ! 😉

                              Et j’ai fait les commentaires “vite fait”, c’est pas hyper précis…

                              Ce que dit Hialmar, c’est que dans ton premier printf, le “,age” à la fin ne sert à rien. Tu l’avais peut-être mis pour te faire une trace au départ ???

                              Quant à “condenser”, je suppose que Raelito (comme moi) parlons de la possibilité en C (mais dans plein de langages !!!) de réduire au maximum le code. Ca peut avoir de l’intérêt pour “raccrocher” un bout de code à un autre (ce qui entre dans la même logique du programme, en une seule ligne), mais ce n’est pas du tout une obligation.

                              Dans les programmes les plus “condensés”, tu pourrais t’amuser à imbriquer par exemple des conditions pour au final obtenir des résultats plus rapidement (du moins, en terme de “logique”, la lisibilité est plutôt moins bonne et les bons compilateurs font de toute façon le boulot à ta place !).

                              Par exemple ton :

                              age++;
                              resultat=age-18;

                              Bon, là c’est du simplissime, mais tu pourrais écrire (enfin si je ne dis pas d’ânerie, ça fait longtemps que je n’écris plus de C…) :

                              resultat=(++age)-18; (la préincrémentation, ajoute d’abord 1 à la variable age puis fait le calcul complet… si dans la même expression tu écris : resultat=(age++)-18, ça ne fonctionne pas, ta variable “age” augmenterait de 1 APRES le calcul de l’expression.

                              ou même (mais là on ne condense plus vraiment…)

                              resultat = age -17;

                              En terme de résultat, c’est identique ! (sauf évidemment que dans ton cas et le premier cas ici, tu augmentes bien la valeur de la variable de 1 alors que tu n’y touches pas dans mon second cas… du coup si tu réutilises “age” ensuite, il n’a pas la même valeur !!! 🙂 ). Mais tu pourrais faire : resultat = (age++)-17; puis réutiliser age ensuite…

                              Evidemment, qu’on me corrige si je dis une(des) bêtise(s), mon dernier programme en C remonte à… euh… 2002 ? 😉 Mais bon, les principes de base restent les mêmes d’un langage à l’autre…

                              Désolé pour mon blabla… !

                              A500+ACA500 - A600+Vampire 2+indivision ECS - A1200+Vampire V2 1200 - Mac Mini 1.42 sous MOS - Just CPC 128k - CPC 6128 - Atari STE 4Mo/CosmosEx - Atari Falcon CT60/SuperVidel 🙂
                              C64C + 1541-II + Lecteur K7 + SD - Sharp X68000 CZ-601C 4Mo + CF - Sharp X68000 CZ-611C 10Mo + CF + ext. MIDI

                              Bison bourré

                                #235962

                                c’est quoi tous ces As de la programmation ici, tous les amigaiste sont développeurs ou quoi ? 😉

                                au fait pourquoi le C ?   perso je préfère le PHP.

                                Les conseils de bison bourré : "Fonceeez !"

                                Anonyme

                                  #235972

                                  comparer le PHP au C c’est comme comparer le DOS au WORKBENCH ^^

                                15 sujets de 1 à 15 (sur un total de 41)

                                • Vous devez être connecté pour répondre à ce sujet.

                                Forums AmigaOS, MorphOS et AROS Développement Mon premier petit bout de code

                                Amiga Impact