Partage
  • Partager sur Facebook
  • Partager sur Twitter

plusieurs printf

    24 novembre 2005 à 20:10:04

    découverte en trifouillant le code du troisième chapitre j'ai trouvé que si après la pause on remet un printf et encore une pause on peux allonger le texte cette à dire que quand tu clqiue sur une touche sa affiche un autre message voila je voulais le dire pour ceux que sa interresse lol
    • Partager sur Facebook
    • Partager sur Twitter
      24 novembre 2005 à 20:16:07

      Oui, j'avais trouvé la même chose en bidouillant B-) La classe
      • Partager sur Facebook
      • Partager sur Twitter
        25 novembre 2005 à 0:02:38

        c est tout a fait normal
        le systheme pause comme son nom l indique arrete l execution du programme tant que aucune touche n est tape
        si tu met du printf apres
        il va donc s afficher par la suite


        en l absence de systheme pause ton programme va s executer si vite que tu verras pas le resultat
        la fenetre va souvrir et se fermer instantanement
        • Partager sur Facebook
        • Partager sur Twitter
          25 novembre 2005 à 0:13:12

          Citation : hordmomo

          c est tout a fait normal
          le systheme pause comme son nom l indique arrete l execution du programme tant que aucune touche n est tape
          si tu met du printf apres
          il va donc s afficher par la suite


          en l absence de systheme pause ton programme va s executer si vite que tu verras pas le resultat
          la fenetre va souvrir et se fermer instantanement


          Je crois qu'ils ont compris, pas nécessaire le spam ... C'est marqué noir sur blanc dans le cours.
          • Partager sur Facebook
          • Partager sur Twitter
            25 novembre 2005 à 18:28:55

            Je trouve ça pas mal, je l'avais fait avant de lire ton post et ça marche nickel.Faudrait que j'envoie ça à un pote comme mail, non? :D
            • Partager sur Facebook
            • Partager sur Twitter
              25 novembre 2005 à 20:34:11

              Oui c'est marrant :D
              Vite vite vite M@teo le prochain chapitre !! ^^
              • Partager sur Facebook
              • Partager sur Twitter
                26 novembre 2005 à 13:14:59

                Et moi qui n'est pas envoyé mon FPS à un seul de mes potes :lol:.
                Enfin je vous déconseille ce genre de pratique car vous avez l'air d'y aller à tatons, ce qui n'est pas une très bonne idée en programmation. Mais ce n'est qu'une impression :)
                • Partager sur Facebook
                • Partager sur Twitter
                Anonyme
                  26 novembre 2005 à 18:16:21

                  "Enfin je vous déconseille ce genre de pratique car vous avez l'air d'y aller à tatons, ce qui n'est pas une très bonne idée en programmation."
                  -> Tant qu'ils viennent poser leurs questions qu'une fois...

                  Le C n'est-il pas le langage rêvé pour faire tout et n'importe quoi ?
                  • Partager sur Facebook
                  • Partager sur Twitter
                    26 novembre 2005 à 18:20:43

                    oui c'est exacte enfin de mon poin de vue le C et le C++ d'ailleurs j'aimerais les utiliser pour faire un jeu video et non un logiciel dans une fenetre windows
                    • Partager sur Facebook
                    • Partager sur Twitter
                      26 novembre 2005 à 18:45:08

                      vive le c++!
                      j'attends avec impatience la suite du tutorial^^
                      en attendant, voici ma création lol, avec plein de printf()!!!


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

                      int main(int argc, char *argv[])
                      {
                        printf("Bonjour, cecie est un programme pourri mais bon...\n");
                        system("PAUSE");
                        printf("\nca te dirait de t'amuser un  peu? bon tu peux ecrire tout ce que tu veux maintenant, quand tu as fini de faire l'idiot appuie sur entree\n");   
                      getchar();

                      printf("\nc bon tas fini?\n");
                      system("pause")
                      printf("\n Voila c'etait mon programme\n copright 'tout pourri program's'\n");
                      system("pause");
                        return 0;
                      }
                      • Partager sur Facebook
                      • Partager sur Twitter
                      Anonyme
                        26 novembre 2005 à 19:16:31

                        (je sais que ce n'est pas le sujet mais...)

                        Citation : BastGame

                        oui c'est exacte enfin de mon poin de vue le C et le C++ d'ailleurs j'aimerais les utiliser pour faire un jeu video et non un logiciel dans une fenetre windows



                        Dans ce cas, bonne chance :

                        Citation

                        Un moteur 3D est réputé pour être difficile et long à réaliser. En effet c'est un projet qui compte souvent plusieurs dizaines (voire centaines) de milliers de lignes de code, étalées sur plusieurs mois ou années.



                        En tout cas, quand tu aura les bases du c++, cherche le tutorial "conception d'un moteur 3D", sur http://c.developpez.com.
                        • Partager sur Facebook
                        • Partager sur Twitter
                          26 novembre 2005 à 19:26:48

                          J'ai réalisé plusieurs jeux, sans avoir fait ni utilisé un moteur 3d.
                          Deja on peut faire des jeux vidéos en 2D, et en plus un moteur 3D c'est pour les gros projets.
                          • Partager sur Facebook
                          • Partager sur Twitter
                            26 novembre 2005 à 19:58:32

                            Citation : asmanur

                            Et moi qui n'est pas envoyé mon FPS à un seul de mes potes :lol:.
                            Enfin je vous déconseille ce genre de pratique car vous avez l'air d'y aller à tatons, ce qui n'est pas une très bonne idée en programmation. Mais ce n'est qu'une impression :)



                            Perso, je pense que c'est en codant qu'on devient coderont ^^

                            Disons que c'est en tatonnant que l'on apprend :p et puis, là y a pas de lib genre opengl et autres qui font planter le pc lors d'un gros bug (j'ai planté pa carte graphe 2/3 fois ^^ ), et y pas d'allocation dynamique ou d'arborescence de fichier, y a pas vraiment de risque ^^
                            • Partager sur Facebook
                            • Partager sur Twitter
                              26 novembre 2005 à 20:03:26

                              "le system pause comme son nom l'indique.." est un escape shell, il permet simplement de passer des arguments au shell de windows.
                              Pour stopper l'exécution d'un programme en effet getchar() est sympathique et repose sur l'attente d'une entrée sur le flux entrée du programme(clavier).
                              Mais ce n'est pas sa fonction premiere.


                              Ce sont des programmes en mode console donc ils doivent etre lancer de manière optimum par le DOS.
                              Donc pour avoir le flux sortis du programme sans avoir à faire de pause il suffit de mettre le path à l'invite des commandes.

                              Démarrer>exécuter>cmd
                              C:\document-setting\etc\monprogramme.exe

                              Si les programmes en mode fenetre reste affiche c'est tout simplement parcequ'il tourne dans une boucle infini interceptant des messages venant de windows donc tant qu'on a pa appuyer sur la croix pour fermer le programme continue de tourner.

                              ++
                              • Partager sur Facebook
                              • Partager sur Twitter
                                26 novembre 2005 à 20:52:14

                                Lu, moi j'aimerai savoir comment modifier le texte "Appuyer sur une touche...."?
                                • Partager sur Facebook
                                • Partager sur Twitter
                                  26 novembre 2005 à 21:48:34

                                  Tu ne peux pas modifier ce message car il est renvoyé par défaut par le shell !
                                  Parcontre tu peux programmer le même principe;

                                  en C:
                                  #include <stdio.h>

                                  int main(){
                                  /* il te suffit de modifier le texte passé en argument à la fonction
                                  printf pour y mettre ce que tu veux.*/

                                  printf("Appuyer sur une touche pour continuer..."); getchar();

                                  return 0x00;
                                  }
                                  • Partager sur Facebook
                                  • Partager sur Twitter
                                    26 novembre 2005 à 21:50:17

                                    return 0x00; ?
                                    pourquoi tu retourne NULL?
                                    si le programme s'est bien passé, on renvoie 0, ou EXIT_SUCCESS défini dans <stdlib.h> (il me semble)
                                    • Partager sur Facebook
                                    • Partager sur Twitter
                                    Anonyme
                                      26 novembre 2005 à 21:55:06

                                      C'est la même chose, en deux notations différentes. 0x00 est noté en héxadécimal, et 0 en décimal, c'est tout ce qui change.
                                      • Partager sur Facebook
                                      • Partager sur Twitter
                                        26 novembre 2005 à 22:07:33

                                        hum, non.
                                        pour un entier oui, mais pour un caractère par exemple, 0 en ascii vaut 0x30 et 0x00 en ascii est NULL.
                                        En l'occurence ici, vu qu'on renvoie un entier, ça reviens au même, mais dans d'autre cas, c'est différent.
                                        Puis on renvoie pas de 0x00, c'est moche
                                        • Partager sur Facebook
                                        • Partager sur Twitter
                                          26 novembre 2005 à 22:08:47

                                          En effet je ne retourne pas NULL, j'aime bien écrire 0x00 je trouve çà beau :p.
                                          Parcontre il est assez ambigue de dire que si le programme s'est bien passé il retourne 0.
                                          Si le programme s'est bien déroulé il est logique que la dernière instruction soit exécutée, c'est-à-dire return 0;.
                                          Donc peu importe ce que renvoie la fonction main ici, si il n'y a rien pour vérifier ce que cette même fonction renvoie.
                                          Ainsi mettre return 666 ou bien return 5 n' agit en rien sur notre programme courant.
                                          • Partager sur Facebook
                                          • Partager sur Twitter
                                          Anonyme
                                            26 novembre 2005 à 22:19:33

                                            drexil> Dans un programme de test,

                                            printf("Equivalence 0 et 0x00 => %s !\n", 0x00 == 0 ? "oui" : "non");

                                            écrit "oui". Toujours vérifier avant d'affirmer quelque chose ;)

                                            Mais en effet

                                            printf("Equivalence \'0\' et 30 => %s !\n", '0'==0x30 ? "oui" : "non");

                                            écrit "oui" aussi. C'est le caractère '0' qui est égal à 0x30, d'où le fait que tu confondes avec l'ASCII

                                            k-otik> Le 'return 0;' est une convention. Par exemple, le programme unixien 'zip' renvoie une valeur spéciale pour chaque erreur rencontrée. Cela permet de mettre les programmes en question dans des scripts, pour en automatiser le fonctionnement.

                                            Vu ton CV tu devais le savoir, désolé.
                                            • Partager sur Facebook
                                            • Partager sur Twitter
                                              26 novembre 2005 à 22:21:14

                                              ça permet de savoir pourquoi le programme s'est mal terminé
                                              par exemple, un programme renvoie 1 s'il arrive pas à ouvrir un fichier, 2 si il arrive pas à le fermer, etc...
                                              return 666 est un peu sataniste, mais ça veux dire que le programme s'est terminé par correctement.
                                              Puis il me semble avoir entendu rz0 dire que ça avais de l'influence pour bash.
                                              • Partager sur Facebook
                                              • Partager sur Twitter
                                                26 novembre 2005 à 22:38:14

                                                Lu, merci bien pour l'info, donc en fait en gros le "getchar()" sert à passé à la suite ou fermer la console quand on appui sur une touche?

                                                encore une tite question, comment on met un timer, pour qu'une ligne apparaisse par exemple 5sec après l'autre?
                                                • Partager sur Facebook
                                                • Partager sur Twitter
                                                  26 novembre 2005 à 22:40:16

                                                  Citation : k-otik

                                                  Parcontre il est assez ambigue de dire que si le programme s'est bien passé il retourne 0.
                                                  Si le programme s'est bien déroulé il est logique que la dernière instruction soit exécutée, c'est-à-dire return 0;.


                                                  Pas vraiment non, on peut très bien exit(0) en plein milieu. :p
                                                  • Partager sur Facebook
                                                  • Partager sur Twitter
                                                    26 novembre 2005 à 22:45:36

                                                    Techniquement, en c++, on peut utiliser des classes d'erreurs, qui vont attraper (opérateur "catch") un code d'erreur renvoyé par une fonction (via la création d'une instance de la classe d'erreur correspondante, afin de mettre en place des contres-erreurs :), ça s'appelle les exceptions:

                                                    Ex tiré d'un bouquin et commenté pas /me:

                                                    #include <iostream.h>//Header de gestion des flux

                                                    class Erreur//on crée une classe d'erreur (on est pas obligé de la définir)
                                                    {
                                                    };

                                                    void Positive(int v)//Fonction de test de la valeure i
                                                    {
                                                        if (v<0)
                                                          throw Erreur();//v est inférieur à 0, la valeure est invalide (on veut 0<v<100
                                                        cout << "Valeur positive"<< endl;//v>0, on affiche
                                                    }

                                                    void Inf(intv, int max)//On compare v et la valeure max autorisée
                                                    {
                                                        if (v>max)
                                                          throw Erreur();//V est supérieur à max, on lance une exception
                                                        cout << "Valeur inférieure à " <<max<<endl;//V<max, c'ets ok ;)
                                                    }

                                                    void Sup(int v, int min)//On vérifie que v>min
                                                    {
                                                        if (v<min)
                                                          throw Erreur();//V<min, on lance une exception
                                                        cout << "Valeur supérieure à "<<min<<endl;//v>min, c'est bon
                                                    }

                                                    int main()
                                                    {
                                                        int max = 1000;//on definie le maximum
                                                        int min = 100;//et le minimum
                                                         
                                                          try//On "essaye" la procédure de test
                                                          {
                                                             int i;
                                                             cout << "Valeur de i:";
                                                             cin  >> i;

                                                             Positive (i);
                                                             Inf (i, max);
                                                             Sup (i, min);
                                                             cout << "Valeur correcte" << endl;//tout s'est bien passé, la valeure est ok
                                                          }
                                                          catch(Erreur er)//on choppe au vole une exception (un objet de type Erreur)
                                                          {
                                                             cout << "Valeur invalide\a" << endl;
                                                          }
                                                          catch(...)//Il y a une erreur qui ne correspond pas à un objet typé Erreur
                                                          {
                                                             cout << "Autre erreur\a" << endl;
                                                          }
                                                        return 0;
                                                    }




                                                    ET voilà :D

                                                    Edit: pour le timer, c'est du C, il faut inclure time.h
                                                    Après, va voir dans les fonctions du header ;)
                                                    • Partager sur Facebook
                                                    • Partager sur Twitter
                                                      26 novembre 2005 à 23:15:44

                                                      Re, euh dsl de mon ignorance, mais c'est quoi le "header"?
                                                      • Partager sur Facebook
                                                      • Partager sur Twitter
                                                        26 novembre 2005 à 23:19:50

                                                        Un header ("en-tête") c'est un fichier qui contient des fonctions.

                                                        L'interet c'est d'utiliser des fonctions complexes ou longues (et donc qui gènent la vue et la clarté du code). Par exemple printf() c'est une fonction définie dans stdio.h :) Tu peux créer toi-même tes headers (fonctions maisons dont tu te sers souvent mais dont tu n'as pas besoin d'avoir le corps sous les yeux en permanence :) )

                                                        Il existe aussi des bibli du commerce, et encore d'autres système (les dll, par exemple, c'est, pour simplifier, des fonctions que tu peux utiliser mais dont tu ne peux pas voire le corps, ou les fichiers *.o, c'ets presque pareil)
                                                        • Partager sur Facebook
                                                        • Partager sur Twitter
                                                          26 novembre 2005 à 23:23:23

                                                          Citation : Bigloo


                                                          Par exemple, le programme unixien 'zip' renvoie une valeur spéciale pour chaque erreur rencontrée. Cela permet de mettre les programmes en question dans des scripts, pour en automatiser le fonctionnement.



                                                          Voilà c'est cela qui m'interesse, ici dans ce cas présent pour ce simple petit programme j'aimerai savoir qui est-ce qui reçoit cette valeur ?

                                                          Mais je n'ai pas de position déterminée, et parmis les différentes normes C90 C99 etc, je n'ai pas encore vu qu'il fallait absolument que main renvoie 0 pour que le programme soit considéré comme bien exécuté, tout dépend de l'appellant de main je pense..

                                                          J'ai pris pour habitude de renvoyer 0 et j'avoue que je n'aurai pas du poursuivre l'explication du 0x00 par ce que je dis mais on en apprend tous les jours alors je vous écoute. Qu-est-ce qui controle la valeur retournée par main en dehors du compilateur dans ce cas présent ?

                                                          • Partager sur Facebook
                                                          • Partager sur Twitter
                                                            26 novembre 2005 à 23:25:43

                                                            On prend o par convention pour une exécution correcte, mais tu traite tes erreurs comme tu veux ;) (mais après c'est chiant si d'autres codeurs bossent sur ton code)
                                                            • Partager sur Facebook
                                                            • Partager sur Twitter
                                                            Anonyme
                                                              26 novembre 2005 à 23:34:09

                                                              "Qu-est-ce qui controle la valeur retournée par main en dehors du compilateur dans ce cas présent ? "
                                                              -> Ici le compilateur ne contrôle rien du tout, c'est à l'exécution que cette valeur est renvoyée, accessible (avec bash du moins) par la variable $? ou par une autre méthode (voir plus bas). Ca laisse de grandes possiblités de "scripting"... si les gens qui ont fait les commandes jouent le jeu.

                                                              Alors je suis d'accord, ici ça présente peu d'interêt, et une fois que le principe est compris et retenu, on peut arrêter de mettre tout ceci dans ses programmes jusqu'à en avoir vraiment besoin. Mais imaginons que tu aies un programme qui envoie un fichier sur un FTP (c'est une ligne que j'utilise régulièrement (sans le "echo" toutefois)) :

                                                              minipingouin:~ poulet$ python ftp.py capt2.png && echo "Deroulement normal du programme, suppresion du fichier..." && rm capt2.png
                                                              Deroulement normal du programme, suppresion du fichier...

                                                              (Le premier qui se moque ^^ ...) Ici tu as trois commandes reliés par des && (et). Les expressions à droite ne sont évaluées que si celles à gauche sont vraies.
                                                              Comme ça ça me permet de lancer mon upload sans avoir à aller supprimer après à la main mon fichier. Mais à la moindre erreur, ftp.py est prévu pour finir avec un code évalué à 1 : les autres commandes ne s'exécutent pas.
                                                              • Partager sur Facebook
                                                              • Partager sur Twitter

                                                              plusieurs printf

                                                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                                                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                                                              • Editeur
                                                              • Markdown