Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse

NodeBB

  1. Home
  2. Programmation
  3. Développement de logiciels
  4. C
  5. Cours #1 - Introduction au C

Cours #1 - Introduction au C

Scheduled Pinned Locked Moved C
8 Posts 5 Posters 3.2k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • AlexMogA
    AlexMogA
    AlexMog
    Modérateur spécialisé
    wrote on last edited by
    #1

    <p>Bienvenue pour ce tout premier cours sur le 😄 L'introduction au C.<br/><br/><br/>
    Dans cette première partie, nous allons voir de quoi se compose un programme "de base" en C.<br/><br/><br/><strong>I- Avant propos.</strong><br/><br/>
    J'aimerais vous informer au niveau des cours qui vont suivre: Le but étant de travailler en étant le plus près possible du fonctionnement de la machine, les seules fonctions autorisées (et vous le verrez pendant les exercices) sont les fonctions System (Googlisez tout ça!).<br/><br/>
    Donc merci de jouer le jeu jusqu'au bout, et de ne pas utiliser de fonctions "interdites" .<br/><br/><br/><strong>II- Notre premier programme.</strong><br/><br/>
    Nous allons créer notre tout premier programme.<br/><br/>
    Le but de ce programme est d'afficher une lettre.<br/><br/><br/>
    Avant tout: Un programme en C est composé de fonctions, et plus particulièrement de la fonction "main" cette fonction est la fonction principale appelée lors du lancement de notre programme.<br/><br/>
    Commençons donc par créer un fichier test.c qui contient notre main:<br/>
     </p>
    <pre class="ipsCode prettyprint">
    int main()
    {

    }</pre>
    <p>Pour compiler notre programme, nous allons utiliser GCC. Pour des raisons personnelles et utilitaires, je code sous linux, je vais donc vous proposer de suivre tout mes cours sous linux. Vous aurez donc des informations sur la compilation en ligne de commande.<br/><br/><br/>
    Pour compiler notre programme grâce à GCC, il faut utiliser la commande suivante: gcc test.c -o test<br/><br/>
    Un fichier "test" viens d'être créé. Vous pouvez le lancer: ./test<br/><br/>
    Oh! Nous avons compiler notre premier programme en C... Qui ne fait rien (pour l'instant!).<br/><br/><br/>
    Revenons donc à notre but principal: Créer un programme qui affiche une lettre.<br/><br/>
    Nous allons donc avoir besoin d'une fonction système d'affichage qui s'appelle "Write" (Lisez le man de Write pour avoir plus d'informations sur cette fonction!).<br/><br/>
    Créons donc une fonction "my_putchar" qui prendra en argument une variable de type char (caractère) et qui aura pour but de l'afficher:<br/>
     </p>
    <pre class="ipsCode prettyprint">
    void my_putchar(char c)
    {
    write(1, &c, 1);
    }

    int main()

    {
    }</pre>
    <p>Voila! Nous avons notre fonction d'affichage! A present, affichons notre premier caractère!<br/>
     </p>
    <pre class="ipsCode prettyprint">
    void my_putchar(char c)
    {
    write(1, &c, 1);
    }

    int main()
    {
    my_putchar('A');
    }</pre>
    <p>Compilons tout ça... Oh! Lorsqu'on lance notre programme, il affiche un A !<br/><br/><br/>
    Un autre exemple: HelloWorld.<br/><br/>
    Le but de ce programme est d'afficher HelloWorld. Reprenons la base précédente:</p>
    <pre class="ipsCode prettyprint">
    void my_putchar(char c)
    {
    write(1, &c, 1);
    }

    int main()
    {

    }</pre>
    <p>Et affichons notre "HelloWorld":<br/>
     </p>
    <pre class="ipsCode prettyprint">
    void my_putchar(char c)
    {
    write(1, &c, 1);
    }

    int main()
    {
    my_putchar('H');
    my_putchar('e');
    my_putchar('l');
    my_putchar('l');
    my_putchar('o');
    my_putchar('W');
    my_putchar('o');
    my_putchar('r');
    my_putchar('l');
    my_putchar('d');
    }</pre>
    <p>On compile tout ça, et on obtient un joli "HelloWorld"!<br/><br/><br/><strong>III - Les variables de type char[]</strong><br/><br/>
    Nous allons à présent stocker notre chaine de caractères "HelloWorld" dans un tableau de Char, puis nous allons l'afficher:<br/>
     </p>
    <pre class="ipsCode prettyprint">
    void my_putchar(char c)
    {
    write(1, &c, 1);
    }

    int main()
    {
    char mon_mot[] = "HelloWorld";

    my_putchar(mon_mot[0]); my_putchar(mon_mot[1]); my_putchar(mon_mot[2]); my_putchar(mon_mot[3]); my_putchar(mon_mot[4]); my_putchar(mon_mot[5]); my_putchar(mon_mot[6]); my_putchar(mon_mot[7]); my_putchar(mon_mot[8]); my_putchar(mon_mot[9]);
    }</pre>
    <p>En compilant nous obtenons exactement le même résultat de précédemment.<br/><br/><br/><strong>IV - Les includes.</strong><br/><br/>
    Avant de commencer avec les includes, sachez que tout ce qui commence par un # sera une commande interprétée par le compilateur.<br/><br/>
    Les includes permettent d'inclure (logique) le contenu d'un fichier. Il est utilisé pour inclure les .h (headers) dans les fichiers.<br/><br/>
    Par exemple, la fonction "write" est disponible car le système nous la propose, néanmoins, elle n'est pas déclarée (ce qui provoque un "warning" dans votre code) pour remédier au warning, il suffira d'inclure le header unistd.h. comme ceci:<br/>
     </p>
    <pre class="ipsCode prettyprint">
    #include <unistd.h></pre>
    <p>Les includes system se font avec des <> alors que les includes locales se font avec des "".<br/><br/><br/>
    Ainsi ma fonction est déclarée, le compilateur sait qu'elle existe, je peux donc l'utiliser sans soucis!<br/><br/><br/><strong>V- Allons un peux plus loin.</strong><br/><br/><br/>
    A present, affichons notre HelloWorld avec une boucle (je vous laisse la joie de découvrir le fonctionnement de la boucle en cherchant sur le net):<br/>
     </p>
    <pre class="ipsCode prettyprint">
    void my_putchar(char c)
    {
    write(1, &c, 1);
    }

    int main()
    {
    char mon_mot[] = "HelloWorld";

    int i = 0;
    while(mon_mot[i] != '\0')
    {
    my_putchar(mon_mot[i]);
    i = i + 1;
    }
    }</pre>
    <p>Voila! Nous venons de réafficher "HelloWorld". Pourquoi je vérifie la valeur de "mon_mot" dans le while? C'est très simple. Ce qui définit la fin d'une chaine de caractères, c'est le caractère '\0' qui est égal à 0. Or, si un while reçoit 0 en paramètre, il s'arrête. Le while va donc continuer, jusqu'à la fin de la chaine!<br/><br/><br/>
    Voilà, je ne vous en dirrais pas plus sur ce cours, le but étant de vous donner envie d'en savoir plus par vous même.<br/><br/><br/>
    A bientôt pour le prochain cours!<br/><br/><br/>
    Cours écrit par AlexMog. Contact: alexmog [at] live [point] fr<br/>
     </p>

    Multiplayer GameDev @ Unexpected
    

    Mon CV

    1 Reply Last reply
    5
    • CyrionC
      CyrionC
      Cyrion
      wrote on last edited by
      #2

      <p>Tu pourrais aussi montrer s'que ça donne sous windows, car j'imagine que la pluspart des gens qui vont lire ce tuto vont être sur Windows. 😛 </p>

      1 Reply Last reply
      0
      • AlexMogA
        AlexMogA
        AlexMog
        Modérateur spécialisé
        wrote on last edited by
        #3

        <blockquote class="ipsQuote" data-cite="Cyrion" data-ipsquote="" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="1887" data-ipsquote-contentid="170" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="1394986623" data-ipsquote-username="Cyrion"><div>
        <div>
        <p>Tu pourrais aussi montrer s'que ça donne sous windows, car j'imagine que la pluspart des gens qui vont lire ce tuto vont être sur Windows. 😛 </p>
        </div>
        </div></blockquote>
        <p>Comme je l'ai dis sur mon cours d'introduction, je n'utiliserais que Linux pour mes exemples 😉 A vous de faire vos tests sur Windows 🙂 </p>

        Multiplayer GameDev @ Unexpected
        

        Mon CV

        1 Reply Last reply
        0
        • CyrionC
          CyrionC
          Cyrion
          wrote on last edited by
          #4

          <p>Nah mais, je veux dire seulement citer les équivalent sous Windows , genre unistd.h -> stdio.h </p>

          1 Reply Last reply
          0
          • AlexMogA
            AlexMogA
            AlexMog
            Modérateur spécialisé
            wrote on last edited by
            #5

            <blockquote class="ipsQuote" data-cite="Cyrion" data-ipsquote="" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentcommentid="1934" data-ipsquote-contentid="170" data-ipsquote-contenttype="forums" data-ipsquote-timestamp="1394990539" data-ipsquote-username="Cyrion"><div>
            <div>
            <p>Nah mais, je veux dire seulement citer les équivalent sous Windows , genre unistd.h -> stdio.h </p>
            </div>
            </div></blockquote>

            Multiplayer GameDev @ Unexpected
            

            Mon CV

            1 Reply Last reply
            0
            • SoulalexS
              SoulalexS
              Soulalex
              wrote on last edited by
              #6

              <p>Ah les fameux cours de Monsieur AlexMog 😄 </p>

              Soulalex, Administrateur de Melinyel+ E-Mail : [email protected]+ GitHub : https://github.com/Soualex

              1 Reply Last reply
              0
              • AzadA
                AzadA
                Azad
                wrote on last edited by
                #7

                <p>Excellent tutoriel, du très bon boulot d'epitechien. 🙂 </p>

                Administrateur du forum.
                Contactez-moi par message privé ou par mail.

                1 Reply Last reply
                0
                • D
                  D
                  davydavek
                  wrote on last edited by
                  #8

                  <p>"Traduction" de my_putchar sur Windows :</p>
                  <pre class="ipsCode prettyprint lang-auto">
                  #include <Windows.h>
                   
                  ...
                   
                  void my_putchar(char c)
                  {
                  HANDLE hOutput = GetStdHandle(STD_OUTPUT_HANDLE);
                  WriteFile(hOutput, &c, 1, NULL, NULL);
                  }
                  </pre>

                  C# dev
                  github.com/DavyWk

                  1 Reply Last reply
                  1

                  Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                  Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                  With your input, this post could be even better 💗

                  Register Login
                  Reply
                  • Reply as topic
                  Log in to reply
                  • Oldest to Newest
                  • Newest to Oldest
                  • Most Votes


                  • Login

                  • Login or register to search.
                  Powered by NodeBB Contributors
                  • First post
                    Last post
                  0
                  • Categories
                  • Recent
                  • Tags
                  • Popular
                  • World
                  • Users
                  • Groups