<?xml 
version="1.0" encoding="utf-8"?>
<rss version="2.0" 
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
>

<channel xml:lang="fr">
	<title>Bienvenue chez Ne0Futur =|{)</title>
	<link>http://neofutur.net/</link>
	<description>mes ressources, mes projets, mes tutoriels</description>
	<language>fr</language>
	<generator>SPIP - www.spip.net</generator>




<item xml:lang="fr">
		<title> La compilation d'un programme en langage C sous Linux</title>
		<link>http://neofutur.net/tutoriels/langage-c-5/les-bases/La-compilation-d-un-programme-en</link>
		<guid isPermaLink="true">http://neofutur.net/tutoriels/langage-c-5/les-bases/La-compilation-d-un-programme-en</guid>
		<dc:date>2005-12-05T16:15:12Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Neo futur</dc:creator>


		<dc:subject>langage C</dc:subject>
		<dc:subject>programmation</dc:subject>
		<dc:subject>GCC</dc:subject>

		<description>Compiler, sous Linux, un simple programme (monilitique) en langage C Un programme monolitique est un programme qui est enti&#232;rement contenu dans un seul fichier. C'est le cas de tous les petits programmmes donn&#233;s en exemple dans les bases du langage C, et dans le tutoriel langage C. Dans ce cas, la compilation est tr&#232;s simple, dans un terminal, positionnez vous dans le r&#233;pertoire qui contient votre source C et tapez la commande suivante ( en partant du principe que votre (...)

-
&lt;a href="http://neofutur.net/tutoriels/langage-c-5/les-bases/" rel="directory"&gt;Les bases&lt;/a&gt;

/ 
&lt;a href="http://neofutur.net/langage-C" rel="tag"&gt;langage C&lt;/a&gt;, 
&lt;a href="http://neofutur.net/programmation" rel="tag"&gt;programmation&lt;/a&gt;, 
&lt;a href="http://neofutur.net/GCC,11" rel="tag"&gt;GCC&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;ul&gt;&lt;li&gt; Compiler, sous Linux, un simple programme (monilitique) en langage C
&lt;p&gt; Un programme monolitique est un programme qui est enti&#232;rement contenu dans un seul fichier.&lt;/p&gt; &lt;p&gt; C'est le cas de tous les petits programmmes donn&#233;s en exemple dans les bases du langage C, et dans le tutoriel langage C.&lt;/p&gt; &lt;p&gt; Dans ce cas, la compilation est tr&#232;s simple, dans un terminal, positionnez vous dans le r&#233;pertoire qui contient votre source C et tapez la commande suivante ( en partant du principe que votre fichier s'appele programme.c ) :&lt;/p&gt;
&lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;cc programme.c -o programme.exe&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt; Si le compilateur trouve des erreurs de syntaxe dans votre programme, il vous le dira. . .&lt;/p&gt; &lt;p&gt; Si il n'y a pas d'erreurs de syntaxe dans votre programme, le repertoire contiendra alors un fichier programme.exe, qu'il vous suffira d'executer en tapant :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;./programme.exe&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt; &lt;b&gt;A noter :&lt;/b&gt;&lt;/p&gt; &lt;p&gt; L'option '-o' de la commande cc permets de sp&#233;cifier le nom de l'ex&#233;cutable qui sera cr&#233;&#233;.&lt;/p&gt; &lt;p&gt; Cette option n'est pas obligatoire, si elle n'est pas sp&#233;cifi&#233;e, l'ex&#233;cutable cr&#233;&#233; sera appel&#233; par d&#233;faut 'a.out'&lt;/p&gt; &lt;p&gt; L'extension '.exe' n'est pas non plus obligatoire sous GNU/Linux ; elle est seulement pratique pour voir rapidement dans un repertoire, quels sont les fichiers binaires ( ex&#233;cutables ).&lt;/p&gt; &lt;p&gt; Ainsi vous auriez aussi bien pu taper :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;cc programme.c -o programme ./programme&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt; ou bien :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;cc programme.c -o programme.bin ./programme.bin&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/li&gt;&lt;li&gt; Compiler, sous Linux, un programme 'multi-fichiers' en langage C :
&lt;p&gt; Un programme 'multi-fichiers' est un programme dont le source est &#233;parpill&#233; entre plusieurs fichiers source C.&lt;/p&gt; &lt;p&gt; Ceci est tres utile, d&#232;s que vous commencez a faire de gros programmes, qui vont contenir plusieurs millers de lignes de code.&lt;/p&gt; &lt;p&gt; En effet, si on se retrouve avec 10000 lignes de code ( ce qui fait un programme moyen ) dans un seul fichier source, il est tres difficile de lire et de comprendre le source.&lt;/p&gt; &lt;p&gt; De plus, il est tres utile de regrouper dans un fichier source C, toutes les fonctions qui ont un point commun.&lt;/p&gt; &lt;p&gt; Il est alors d'usage de s&#233;parer le code dans plusieurs fichiers.&lt;/p&gt; &lt;p&gt; &lt;b&gt;Par exemple :&lt;/b&gt;&lt;/p&gt; &lt;p&gt; Nous disposons des fichiers sources suivants :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='5' class='spip_cadre' dir='ltr'&gt;programme.h main.c interface.c callbacks.c support.c&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt; &lt;b&gt;A noter :&lt;/b&gt;&lt;/p&gt; &lt;p&gt; Le fichier programme.h devra contenir les prototypes de toutes les fonctions qui seront utilis&#233;es dans les diff&#233;rents fichiers *.c.&lt;/p&gt; &lt;p&gt; De plus, chaque fichier *.c contiendra, au debut, une ligne :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;#include &quot;programme.h&quot;&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt; Ceci est necessaire pour que le compilateur puisse v&#233;rifier que l'appel, dans interface.c, d'une fonction qui se trouve dans support.c, est correct.&lt;/p&gt; &lt;p&gt; Pour compiler tous ces sources C, et cr&#233;er un seul executable, dans un terminal, positionnez vous dans le r&#233;pertoire qui contient vos sources C et tapez la commande suivante :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;cc main.c interface.c callbacks.c support.c -o programme.exe&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt; Si le compilateur trouve des erreurs de syntaxe dans votre programme, il vous le dira, c'est l'un des avantages d'utiliser Linux, le systeme ( ici le compilateur =|-&lt;/i&gt; vous parle, et tout est plus facile.&lt;/p&gt; &lt;p&gt; Si il n'y a pas d'erreurs de syntaxe dans votre programme, le repertoire contiendra alors un fichier programme.exe, qu'il vous suffira d'executer en tapant :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;./programme.exe&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt; &lt;b&gt;A noter :&lt;/b&gt;&lt;/p&gt; &lt;p&gt; Il ne faut pas mettre le fichier programme.h dans la ligne de compilation, car ce fichier est d'ores et d&#233;j&#224; inclus dans les fichiers *.c, grace a la ligne :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;#include &quot;programme.h&quot;&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>6- Les instructions de contr&#244;le du langage C</title>
		<link>http://neofutur.net/tutoriels/langage-c-5/les-bases/6-Les-instructions-de-controle-du</link>
		<guid isPermaLink="true">http://neofutur.net/tutoriels/langage-c-5/les-bases/6-Les-instructions-de-controle-du</guid>
		<dc:date>2005-12-05T15:55:39Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Neo futur</dc:creator>


		<dc:subject>langage C</dc:subject>
		<dc:subject>programmation</dc:subject>

		<description>Les instructions s'appliquent &#224; un bloc de code, ainsi une suite logique de plusieurs lignes seront concern&#233;es par l'instruction. INSTRUCTION ligne de code; ligne de code; ligne de code; Le bloc de code concern&#233; par l&quot;instruction est celui qui la suit imm&#233;diatement et qui se trouve entre accolades. L'instruction if et l'instruction else int nombre=0; if ( nombre &gt; 0) printf (&quot;nombre superieur a zero\n&quot;); else printf (&quot;nombre inferieur a 1\n&quot;); L'instruction (...)

-
&lt;a href="http://neofutur.net/tutoriels/langage-c-5/les-bases/" rel="directory"&gt;Les bases&lt;/a&gt;

/ 
&lt;a href="http://neofutur.net/langage-C" rel="tag"&gt;langage C&lt;/a&gt;, 
&lt;a href="http://neofutur.net/programmation" rel="tag"&gt;programmation&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;p&gt;Les instructions s'appliquent &#224; un bloc de code, ainsi une suite logique de plusieurs lignes seront concern&#233;es par l'instruction.&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='6' class='spip_cadre' dir='ltr'&gt;INSTRUCTION { ligne de code; ligne de code; ligne de code; }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt; Le bloc de code concern&#233; par l&quot;instruction est celui qui la suit imm&#233;diatement et qui se trouve entre accolades.&lt;/p&gt; &lt;ul&gt;&lt;li&gt;&lt;h2&gt; L'instruction if et l'instruction else&lt;/h2&gt;
&lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='10' class='spip_cadre' dir='ltr'&gt;int nombre=0; if ( nombre &gt; 0) { printf (&quot;nombre superieur a zero\n&quot;); } else { printf (&quot;nombre inferieur a 1\n&quot;); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/li&gt;&lt;li&gt;&lt;h2&gt; L'instruction for &lt;/h2&gt;
&lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='6' class='spip_cadre' dir='ltr'&gt;int i =0; for ( i=0; i&lt;20 ; i++ ) { printf(&quot; i=%d\n&quot;,i); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/li&gt;&lt;li&gt;&lt;h2&gt; L'instruction while&lt;/h2&gt;
&lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='6' class='spip_cadre' dir='ltr'&gt;int i =0; while ( i&lt;21) { printf(&quot; i=%d\n&quot;,i); i++ }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/li&gt;&lt;li&gt;&lt;h2&gt; L'instruction switch &lt;/h2&gt;
&lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='9' class='spip_cadre' dir='ltr'&gt;int type=3; switch (type) { case 1: printf(&quot;choix 1&quot;); case 2: printf(&quot;choix 2&quot;); case 3: printf(&quot;choix 3&quot;); case 4: printf(&quot;choix 4&quot;); case 5: printf(&quot;choix 5&quot;); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/li&gt;&lt;li&gt;&lt;h2&gt; L'instruction do while&lt;/h2&gt;
&lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='6' class='spip_cadre' dir='ltr'&gt;int i =0; do { printf(&quot; i=%d\n&quot;,i); i++ }while ( i &lt; 21);&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/li&gt;&lt;li&gt;&lt;h2&gt; L'instruction break&lt;/h2&gt;
&lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='6' class='spip_cadre' dir='ltr'&gt;int i =0; do { printf(&quot; i=%d\n&quot;,i); if ( b == 7 ) break; }while ( i &lt; 21 );&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/li&gt;&lt;li&gt;&lt;h2&gt; L'instruction continue&lt;/h2&gt;
&lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='5' class='spip_cadre' dir='ltr'&gt;do { if ( b == 4 ) continue; printf(&quot; i=%d\n&quot;,i); }while ( );&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>5- Les entr&#233;es / sorties dans le langage C</title>
		<link>http://neofutur.net/tutoriels/langage-c-5/les-bases/5-Les-entrees-sorties-dans-le</link>
		<guid isPermaLink="true">http://neofutur.net/tutoriels/langage-c-5/les-bases/5-Les-entrees-sorties-dans-le</guid>
		<dc:date>2005-12-05T14:45:12Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Neo futur</dc:creator>


		<dc:subject>langage C</dc:subject>
		<dc:subject>programmation</dc:subject>

		<description>Comment saisir et afficher un caract&#232;re Dans un simple fichier texte, que vous editerez avec votre &#233;diteur de texte favori ( sous Linux : vi, kedit, kwrite, gnp, kdevelop ou code commander feront l'affaire ), saisissez ( ou copiez/collez ) le texte suivant : ( getchar.c ) : #include &lt;stdio.h&gt; void main(void) // On declare une variable char, qui peut contenir un caractere // Par defaut cette variable contiendra le caractere 'a' char ch_contient_un_caractere = 'a'; // On (...)

-
&lt;a href="http://neofutur.net/tutoriels/langage-c-5/les-bases/" rel="directory"&gt;Les bases&lt;/a&gt;

/ 
&lt;a href="http://neofutur.net/langage-C" rel="tag"&gt;langage C&lt;/a&gt;, 
&lt;a href="http://neofutur.net/programmation" rel="tag"&gt;programmation&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;h2&gt;Comment saisir et afficher un caract&#232;re&lt;/h2&gt;
&lt;p&gt; Dans un simple fichier texte, que vous editerez avec votre &#233;diteur de texte favori ( sous Linux : vi, kedit, kwrite, gnp, kdevelop ou code commander feront l'affaire ), saisissez ( ou copiez/collez ) le texte suivant :&lt;/p&gt; &lt;p&gt;( getchar.c ) :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='22' class='spip_cadre' dir='ltr'&gt;#include &lt;stdio.h&gt; void main(void) { // On declare une variable char, qui peut contenir un caractere // Par defaut cette variable contiendra le caractere 'a' char ch_contient_un_caractere = 'a'; // On affiche le caract&#232;re par defaut printf(&quot;Au d&#233;but, le caractere est : %c \n&quot;, ch_contient_un_caractere ); // On demande a l'utilisateur de saisir un caract&#232;re printf(&quot; Veuillez saisir un caract&#232;re SVP \n&quot;); // On attends que l'utilisateur ait saisi un caractere que l'on rangera // dans notre variable ch_contient_un_caractere ch_contient_un_caractere = getchar(); // On affiche le caract&#232;re saisi par l'utilisateur printf(&quot;Maintenant, le caractere est : %c \n&quot;, ch_contient_un_caractere ); printf(&quot; AU REVOIR !!!\n&quot;); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt; &lt;b&gt;Pour compiler et ex&#233;cuter ce programme :&lt;/b&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt; Sauvegardez le programme sous le nom caractere.c dans votre r&#233;pertoire personnel.
&lt;/li&gt;&lt;li&gt; Saisissez dans un terminal ( dans le m&#234;me r&#233;pertoire ), la commande suivante :
&lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;cc getchar.c -o getchar.exe&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt; Cette commande signifie :&lt;/p&gt; &lt;p&gt; Compile le fichier caractere.c et cr&#233;e un executable ( option -o ) qui s'appelera caractere.exe&lt;/p&gt; &lt;/li&gt;&lt;li&gt; Pour lancer l'executable caractere.exe, Saisissez dans un terminal ( toujours dans le m&#234;me r&#233;pertoire ), la commande suivante :
&lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;./getchar.exe&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt;Comment saisir et afficher une chaine de caract&#232;re&lt;/h2&gt;
&lt;p&gt; Dans un simple fichier texte, que vous editerez avec votre &#233;diteur de texte favori ( sous Linux : vi, kedit, kwrite, gnp, kdevelop ou code commander feront l'affaire ), saisissez ( ou copiez/collez ) le texte suivant :&lt;/p&gt; &lt;p&gt;( chaine.c ) :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='40' class='spip_cadre' dir='ltr'&gt;#include &lt;stdio.h&gt; void main(void) { // On declare une variable char de taille 128, qui peut contenir // un maximum de 128 caracteres. // En fait c'est ce qu l'on appelle une chaine de caract&#232;res // ou encore un tableau de caract&#232;res // Par defaut cette variable contiendra la chaine 'chaine initiale' char ch_chaine_de_128_max[128] = &quot;chaine initiale&quot;; // On affiche le caract&#232;re par defaut printf(&quot;Au d&#233;but, la chaine contient : %s \n&quot;, ch_chaine_de_128_max ); // On demande a l'utilisateur de saisir un une chaine de caract&#232;res printf(&quot; Veuillez saisir une chaine de caract&#232;res ( 128 caract&#232;res maximum ) SVP \n&quot;); // On attends que l'utilisateur ait saisi une chaine de caract&#232;res // que l'on rangera dans notre variable ch_chaine_de_128_max scanf(&quot;%127s&quot;, ch_chaine_de_128_max ); // On affiche la chaine de caract&#232;res saisie par l'utilisateur printf(&quot;Maintenant, la chaine de caractereact&#232;res contient : \n%s\n&quot;, ch_chaine_de_128_max ); printf(&quot; AU REVOIR !!!\n&quot;); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt; &lt;b&gt; Pour compiler et ex&#233;cuter ce programme :&lt;/b&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt; Sauvegardez le programme sous le nom chaine.c dans votre r&#233;pertoire personnel.
&lt;/li&gt;&lt;li&gt; Saisissez dans un terminal ( dans le m&#234;me r&#233;pertoire ), la commande suivante :
&lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;cc chaine.c -o chaine.exe&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt; Cette commande signifie :&lt;/p&gt; &lt;p&gt; Compile le fichier chaine.c et cr&#233;e un executable ( option -o ) qui s'appelera chaine.exe&lt;/p&gt;
&lt;/li&gt;&lt;li&gt; Pour lancer l'executable chaine.exe, Saisissez dans un terminal ( toujours dans le m&#234;me r&#233;pertoire ), la commande suivante :
&lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;./chaine.exe&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt;Comment saisir et afficher un nombre entier&lt;/h2&gt;
&lt;p&gt; Dans un simple fichier texte, que vous editerez avec votre &#233;diteur de texte favori ( sous Linux : vi, kedit, kwrite, gnp, kdevelop ou code commander feront l'affaire ), saisissez ( ou copiez/collez ) le texte suivant :&lt;/p&gt; &lt;p&gt;( entier.c ) :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='37' class='spip_cadre' dir='ltr'&gt;#include &lt;stdio.h&gt; void main(void) { // On declare une variable int, qui peut contenir un nombre entier. // Par defaut cette variable contiendra le nombre entier 1 int i_contient_un_entier = 1; // On affiche l'entier par defaut printf(&quot;Au d&#233;but, l'entier contient : %d \n&quot;, i_contient_un_entier ); // On demande a l'utilisateur de saisir un une chaine de caract&#232;res printf(&quot; Veuillez saisir un nombre entier ( inferieur a 999999999 SVP \n&quot;); // On attends que l'utilisateur ait saisi un nombre entier // que l'on rangera dans notre variable i_contient_un_entier // Seuls les 9 premiers chiffres de la saisie seront pris en compte ( %9d ) scanf(&quot;%9d&quot;, &amp;i_contient_un_entier ); // On affiche la chaine de caract&#232;res saisie par l'utilisateur printf(&quot;Maintenant, le nombre entier est : %d \n&quot;, i_contient_un_entier ); printf(&quot; AU REVOIR !!!\n&quot;); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt; &lt;b&gt; Pour compiler et ex&#233;cuter ce programme :&lt;/b&gt;&lt;/p&gt; &lt;ul&gt;&lt;li&gt; Sauvegardez le programme sous le nom entier.c dans votre r&#233;pertoire personnel.
&lt;/li&gt;&lt;li&gt; Saisissez dans un terminal ( dans le m&#234;me r&#233;pertoire ), la commande suivante :
&lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;cc entier.c -o entier.exe&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt; Cette commande signifie :&lt;/p&gt; &lt;p&gt; Compile le fichier entier.c et cr&#233;e un executable ( option -o ) qui s'appelera entier.exe&lt;/p&gt;
&lt;/li&gt;&lt;li&gt; Pour lancer l'executable entier.exe, Saisissez dans un terminal ( toujours dans le m&#234;me r&#233;pertoire ), la commande suivante :
&lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;./entier.exe&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>4- Les diff&#233;rents types de donn&#233;es du Langage C</title>
		<link>http://neofutur.net/tutoriels/langage-c-5/les-bases/article/4-les-differents-types-de-donnees</link>
		<guid isPermaLink="true">http://neofutur.net/tutoriels/langage-c-5/les-bases/article/4-les-differents-types-de-donnees</guid>
		<dc:date>2005-12-05T14:38:28Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Neo futur</dc:creator>


		<dc:subject>langage C</dc:subject>
		<dc:subject>programmation</dc:subject>

		<description>Les types de donn&#233;es simples Les entiers : le type short et le type int Les types short et int sont destin&#233;s &#224; contenir un entier ( et un seul ) ; cependant, il peuvent se d&#233;cliner de plusieurs mani&#232;res. Le programme qui suit ( taille_entiers.c ) vous permettra de savoir la taille en octets de chacun des types d'entier : int main() printf(&quot; taille short = %d\n&quot;, sizeof( short )); printf(&quot; taille unsigned short = (...)

-
&lt;a href="http://neofutur.net/tutoriels/langage-c-5/les-bases/" rel="directory"&gt;Les bases&lt;/a&gt;

/ 
&lt;a href="http://neofutur.net/langage-C" rel="tag"&gt;langage C&lt;/a&gt;, 
&lt;a href="http://neofutur.net/programmation" rel="tag"&gt;programmation&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;h2&gt; Les types de donn&#233;es simples&lt;/h2&gt;
&lt;ul&gt;&lt;li&gt; Les entiers : le type short et le type int
&lt;p&gt; Les types short et int sont destin&#233;s &#224; contenir un entier ( et un seul ) ; cependant, il peuvent se d&#233;cliner de plusieurs mani&#232;res.&lt;/p&gt; &lt;p&gt; Le programme qui suit ( taille_entiers.c ) vous permettra de savoir la taille en octets de chacun des types d'entier :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='20' class='spip_cadre' dir='ltr'&gt;int main() { printf(&quot; taille short = %d\n&quot;, sizeof( short )); printf(&quot; taille unsigned short = %d\n&quot;, sizeof( unsigned short )); printf(&quot; taille int = %d\n&quot;, sizeof( int )); printf(&quot; taille unsigned int = %d\n&quot;, sizeof( unsigned int )); printf(&quot; taille long int = %d\n&quot;, sizeof( long int )); printf(&quot; taille unsigned long int = %d\n&quot;, sizeof( unsigned long int )); printf(&quot; taille long long int = %d\n&quot;, sizeof( long long int )); printf(&quot; taille unsigned long long int = %d\n&quot;, sizeof( unsigned long long int )); return(1); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt; Sous Linux, ce programme donne :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='9' class='spip_cadre' dir='ltr'&gt;bash-2.03$ ./taille_types.exe taille short = 2 taille unsigned short = 2 taille int = 4 taille unsigned int = 4 taille long int = 4 taille unsigned long int = 4 taille long long int = 8 taille unsigned long long int = 8&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt; Cependant, sur d'autres syst&#232;mes, les tailles des types de donn&#233;es peuvent diff&#233;rer.&lt;/p&gt; &lt;p&gt; Il est donc important de pr&#233;ciser que les programmes qui proc&#232;dent a des d&#233;calages de bits ne sont pas n&#233;cessairement portables d'une plate-forme &#224; une autre.&lt;/p&gt; &lt;p&gt; Un short pourra contenir, sous Linux, une valeur entre : -32768 et 32767&lt;/p&gt; &lt;p&gt; Un unsigned short pourra contenir, sous Linux, une valeur entre : 0 et 65535&lt;/p&gt; &lt;p&gt; Un int pourra contenir, sous Linux, une valeur entre : -2147483648 et 2147483647&lt;/p&gt; &lt;p&gt; Un unsigned int pourra contenir, sous Linux, une valeur entre : 0 et 4294967295&lt;/p&gt; &lt;p&gt; Un long int pourra contenir, sous Linux, une valeur entre : -2147483648 et 2147483647&lt;/p&gt; &lt;p&gt; Un unsigned long int pourra contenir, sous Linux, une valeur entre : 0 et 4294967295&lt;/p&gt; &lt;p&gt; Un long long int pourra contenir, sous Linux, une valeur entre : -9223372036854775808 et 9223372036854775807&lt;/p&gt; &lt;p&gt; Un unsigned long long int pourra contenir, sous Linux, une valeur entre : 0 et 18446744073709551615&lt;/p&gt; &lt;p&gt; Le programme min_max_types.c vous permettra de retrouver ces valeurs minimales quelle que soit votre plate-forme.&lt;/p&gt; &lt;/li&gt;&lt;li&gt; Les nombres a virgule flottante : le type float et le type double
&lt;p&gt; Les types float et double sont destin&#233;s &#224; contenir un nombre a virgule flottante ( et un seul ), c'est a dire un reel en langage purement math&#233;matique.&lt;/p&gt; &lt;p&gt; Le programme qui suit ( taille_float.c ) vous permettra de savoir la taille en octets de chacun des types de reels du langage c :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='24' class='spip_cadre' dir='ltr'&gt;int main() { float f; double d; long double ld; // !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! // Linux ne tolere pas les flottants non signes. // ********************************************* //unsigned float uf; //unsigned double ud; //unsigned long double uld; printf(&quot;taille en octets d'un float : %d\n&quot;, sizeof(float ) ); printf(&quot;taille en octets d'un double : %d\n&quot;, sizeof(double ) ); printf(&quot;taille en octets d'un long double : %d\n&quot;, sizeof(long double ) ); return(1); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt; Sous Linux, ce programme donne :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='4' class='spip_cadre' dir='ltr'&gt;bash-2.03$ ./taille_float.exe taille en octets d'un float : 4 taille en octets d'un double : 8 taille en octets d'un long double : 12&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>3- Les d&#233;clarations en language C</title>
		<link>http://neofutur.net/tutoriels/langage-c-5/les-bases/3-Les-declarations-en-language-C</link>
		<guid isPermaLink="true">http://neofutur.net/tutoriels/langage-c-5/les-bases/3-Les-declarations-en-language-C</guid>
		<dc:date>2005-12-05T14:32:30Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Neo futur</dc:creator>


		<dc:subject>langage C</dc:subject>
		<dc:subject>programmation</dc:subject>

		<description>Les d&#233;clarations de variables en langage C Lorsque vous avez besoin d'utiliser quelque chose en langage C, il faut d'abord d&#233;clarer ce quelque chose avant de pouvoir l'utiliser. Ainsi une variable, une fonction, un pointeur ou une constante doivent &#234;tre d&#233;clar&#233;s pr&#233;alablement &#224; leur utilisation. Une variable est une boite dans laquelle on peut ranger une donn&#233;e, cette boite ne peut contenir que le type de donn&#233;es pr&#233;cis pour lequel cette variable a &#233;t&#233; d&#233;clar&#233;e ( un caract&#232;re ou un entier (...)

-
&lt;a href="http://neofutur.net/tutoriels/langage-c-5/les-bases/" rel="directory"&gt;Les bases&lt;/a&gt;

/ 
&lt;a href="http://neofutur.net/langage-C" rel="tag"&gt;langage C&lt;/a&gt;, 
&lt;a href="http://neofutur.net/programmation" rel="tag"&gt;programmation&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;h2&gt;Les d&#233;clarations de variables en langage C&lt;/h2&gt;
&lt;p&gt; Lorsque vous avez besoin d'utiliser quelque chose en langage C, il faut d'abord d&#233;clarer ce quelque chose avant de pouvoir l'utiliser.&lt;/p&gt; &lt;p&gt; Ainsi une variable, une fonction, un pointeur ou une constante doivent &#234;tre d&#233;clar&#233;s pr&#233;alablement &#224; leur utilisation.&lt;/p&gt; &lt;p&gt; Une variable est une boite dans laquelle on peut ranger une donn&#233;e, cette boite ne peut contenir que le type de donn&#233;es pr&#233;cis pour lequel cette variable a &#233;t&#233; d&#233;clar&#233;e ( un caract&#232;re ou un entier ... ).&lt;/p&gt; &lt;p&gt; La syntaxe g&#233;n&#233;rale de d&#233;claration de variable est la suivante :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;Type_de_la_variable Nom_de_la_variable;&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt;&lt;b&gt;Exemples de d&#233;clarations suivies de l'initialisation :&lt;/b&gt;&lt;/p&gt; &lt;p&gt;( declare_affect.c ) :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='38' class='spip_cadre' dir='ltr'&gt;#include &lt;stdio.h&gt; main() { char mon_caractere; // Declare une variable pouvant contenir 1 caractere char ma_chaine[20]; // Declare une variable pouvant contenir 20 caract&#232;res // ( En fait, 19 caracteres plus le caractere de fin de chaine '\0') int mon_entier; // Declare une variable pouvant contenir un entier mon_caractere = 'E'; printf(&quot; mon_caractere = %c\n&quot;, mon_caractere ); // Pour initialiser une chaine de caracteres, qui est en fait un tableau // de caracteres, il est necessaire d'appeler une fonction qui va en fait // recopier les caracteres un par un strcpy(ma_chaine, &quot;Ceci est ma chaine&quot; ); printf(&quot;ma_chaine = |%s|\n&quot;, ma_chaine ); // La variable contient d&#233;sormais &quot;Ceci est ma chaine&quot; ma_chaine[9]='t'; printf(&quot;ma_chaine = |%s|\n&quot;, ma_chaine ); // La variable contient d&#233;sormais &quot;Ceci est ta chaine&quot; // car le 9eme caractere de la chaine ( en comptant a partir de 0 ) // a ete remplace par le caractere 't' // La variable contient desormais le caractere 'E' mon_entier=540; // La variable contient desormais la valeur 540 printf(&quot;mon_entier = %d\n&quot;, mon_entier ); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;h2&gt;Les d&#233;clarations de fonctions en langage C&lt;/h2&gt;
&lt;p&gt; Une fonction est un bloc de code qui va traiter des donn&#233;es, et renvoyer un r&#233;sultat.&lt;/p&gt; &lt;p&gt; La syntaxe g&#233;n&#233;rale de d&#233;claration de fonction est la suivante :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='12' class='spip_cadre' dir='ltr'&gt;type_valeur_retournee nom_de_la_fonction ( type_du_parametre1 nom_du_parametre1 type_du_parametre2 nom_du_parametre2 type_du_parametre3 nom_du_parametre3 type_du_parametre4 nom_du_parametre4 type_du_parametre5 nom_du_parametre5 ... ... );&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt; Une fonction peut aussi ne retourner aucun r&#233;sultat et/ou ne recevoir aucun param&#232;tre.&lt;/p&gt; &lt;p&gt;&lt;b&gt;Exemples de d&#233;clarations de fonctions :&lt;/b&gt;&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='14' class='spip_cadre' dir='ltr'&gt;// Fonction recevant 2 entiers et renvoyant 1 entier ( le total ) int i_mon_addition_2( int i_a, int i_b ); // Fonction recevant 3 entiers et renvoyant 1 entier ( le total ) int i_mon_addition_3( int i_a, int i_b, int i_c ); // Fonction recevant 3 lettres et renvoyant une chaine de caracteres char *Pch_ajout_lettres( char c_a, char c_b, char c_c ); // Fonction ne recevant rien et ne renvoyant rien void fonction_sans_rien ( void );&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;h2&gt; Les d&#233;clarations de pointeur en langage C&lt;/h2&gt;
&lt;p&gt; Un pointeur est une boite pouvant contenir l'adresse d'une autre boite.&lt;/p&gt; &lt;p&gt; Un pointeur, quel qu'il soit, est donc toujours une adresse, mais, lors de la d&#233;claration de ce pointeur, on est oblig&#233; de dire de quel type est la donn&#233;e qui est contenue dans la boite dont l'adresse est stock&#233;e dans notre pointeur.&lt;/p&gt; &lt;p&gt; Ce qui signifie que l'on doit d&#233;clarer un pointeur qui contiendra l'adresse d'un entier ou l'adresse d'un char, par exemple.&lt;/p&gt; &lt;p&gt; La syntaxe g&#233;n&#233;rale de d&#233;claration de pointeur est la suivante :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;Type_de_la_donnee_pointee *Nom_du_pointeur;&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt; On peut d&#233;clarer ainsi un pointeur d'entier :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='18' class='spip_cadre' dir='ltr'&gt;int *Pointeur_sur_entier = NULL; // Pointeur_sur_entier est une adresse memoire // mais *Pointeur_sur_entier ( le contenu du pointeur ) // est obligatoirement un entier. // Au debut Pointeur_sur_entier ne pointe sur rien ( NULL ) int i = 1; // On declare une boite qui contient un entier Pointeur_sur_entier = &amp;i; // On stocke dans Pointeur_sur_entier, l'adresse de la boite i // Pointeur_sur_entier pointe sur i // Pointeur_sur_entier contient l'adresse de la boite i // Dorenavant *Pointeur_sur_entier contient 1&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt; On peut d&#233;clarer ainsi un pointeur de caractere :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='14' class='spip_cadre' dir='ltr'&gt;char *Pointeur_sur_char; // Pointeur_sur_char est une adresse memoire // mais *Pointeur_sur_char ( le contenu du pointeur ) // est obligatoirement un caractere ( un char ). char c = 'Z'; // On declare une boite qui contient un caractere Pointeur_sur_char = &amp;c; // On stocke dans Pointeur_sur_char, l'adresse de la boite c // Pointeur_sur_char pointe sur c // Pointeur_sur_char contient l'adresse de la boite c // Dorenavant *Pointeur_sur_char contient 'Z'&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;h2&gt; Les d&#233;clarations de constantes en langage C&lt;/h2&gt;
&lt;p&gt; Un constante est une boite dont le contenu ne peut pas &#234;tre chang&#233;, il est fix&#233; ( d&#233;fini ) une fois pour toute.&lt;/p&gt; &lt;p&gt; La syntaxe g&#233;n&#233;rale de d&#233;claration de constante est la suivante :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;#define MA_CONSTANTE valeur_de_la_constante&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt;&lt;b&gt;Exemples de d&#233;clarations de constantes&lt;/b&gt;&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='6' class='spip_cadre' dir='ltr'&gt;#define DEBUT 0 #define FIN 100 #define PI 3,14159 #define MONNAIE &quot;FRANC&quot; #define SYMBOLE_MONNAIE &quot;FRF&quot; #define INITIALE 'W'&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>2- Les op&#233;rateurs du Language C</title>
		<link>http://neofutur.net/tutoriels/langage-c-5/les-bases/article/2-les-operateurs-du-language-c</link>
		<guid isPermaLink="true">http://neofutur.net/tutoriels/langage-c-5/les-bases/article/2-les-operateurs-du-language-c</guid>
		<dc:date>2005-12-05T14:24:58Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Neo futur</dc:creator>


		<dc:subject>langage C</dc:subject>
		<dc:subject>programmation</dc:subject>

		<description>1. Les op&#233;rateurs arythm&#233;tiques Tout d'abord les quatre op&#233;rations bien connues : L'addition : le signe '+' il est donc possible dans le programme C suivant ( test_plus.c ) de faire : #include &lt;stdio.h&gt; int main() int a = 3; int b = 7; int c = 0; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); c = a+b; (...)

-
&lt;a href="http://neofutur.net/tutoriels/langage-c-5/les-bases/" rel="directory"&gt;Les bases&lt;/a&gt;

/ 
&lt;a href="http://neofutur.net/langage-C" rel="tag"&gt;langage C&lt;/a&gt;, 
&lt;a href="http://neofutur.net/programmation" rel="tag"&gt;programmation&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;h2&gt; 1. Les op&#233;rateurs arythm&#233;tiques&lt;/h2&gt;
&lt;p&gt; Tout d'abord les quatre op&#233;rations bien connues :&lt;/p&gt; &lt;ul&gt;
&lt;li&gt; L'addition : le signe '+'
&lt;p&gt; il est donc possible dans le programme C suivant ( test_plus.c ) de faire :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='23' class='spip_cadre' dir='ltr'&gt;#include &lt;stdio.h&gt; int main() { int a = 3; int b = 7; int c = 0; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); c = a+b; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); // c est maintenant egal a 10 ( 3+7 ) a = a+c; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); // a est maintenant egal a 13 ( 10+3 ) b= 3+50; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); // b est maintenant egal a 53 ( 3+50 ) return(1); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/li&gt;&lt;li&gt; La soustraction : le signe '-'
&lt;p&gt; il est donc possible dans le programme C suivant ( test_moins.c ) de faire :&lt;/p&gt;
&lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='23' class='spip_cadre' dir='ltr'&gt;#include &lt;stdio.h&gt; int main() { int a = 3; int b = 7; int c = 13; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); b = c-a; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); // b est maintenant egal a 10 ( 13-3 ) a = c-2; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); // a est maintenant egal a 8 ( 10-2 ) c= 140-22; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); // c est maintenant egal a 118 return(1); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/li&gt;&lt;li&gt; La multiplication : le signe '*'
&lt;p&gt; il est donc possible dans le programme C suivant ( test_x.c ) de faire :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='24' class='spip_cadre' dir='ltr'&gt;#include &lt;stdio.h&gt; int main() { int a = 3; int b = 7; int c = 0; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); c = a*b; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); // c est maintenant egal a 21 ( 3*7 ) a = c*2; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); // a est maintenant egal a 42 ( 21*2 ) b= 3*4; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); // b est maintenant egal a 12 return(1); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/li&gt;&lt;li&gt; La division : le signe '/'
&lt;p&gt; il est donc possible dans le programme C suivant ( test_div.c ) de faire :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='24' class='spip_cadre' dir='ltr'&gt;#include &lt;stdio.h&gt; int main() { int a = 30; int b = 0; int c = 2; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); b = a/c; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); // b est maintenant egal a 15 ( 30/2 ) c = b/5; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); // c est maintenant egal a 3 ( 15/5 ) a= 300/50; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); // a est maintenant egal a 6 return(1); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt; Ensuite, un op&#233;rateur moins connu mais tr&#232;s utile, qui va nous permettre de conna&#238;tre le reste d'une division entre deux entiers.&lt;/p&gt; &lt;/li&gt;&lt;li&gt; Le modulo : le signe '%'
&lt;p&gt; il est donc possible dans le programme C suivant ( test_mod.c ) de faire :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='27' class='spip_cadre' dir='ltr'&gt;#include &lt;stdio.h&gt; int main() { int a = 30; int b = 7; int c = 73; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); b = a%b; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); // b est maintenant egal a 2 ( 30/7=4 RESTE=2 ) c = c%7; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); // c est maintenant egal a 3 ( 73/7 = 10 RESTE 3 ) a= 299%29; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); // a est maintenant egal a 9 ( 299/29 = 10 RESTE 9 ) return(1); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt; 2. Les op&#233;rateurs et expressions d'affectation de variables&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt; L'affectation simple : le signe '='
&lt;p&gt; il est donc possible dans le programme C suivant ( test_affect.c )de faire :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='30' class='spip_cadre' dir='ltr'&gt;#include &lt;stdio.h&gt; int main() { int a = 3; int b = 7; int c = 0; char caractere_saisi ='\0'; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); c = a+b; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); // c est maintenant egal a 10 ( 3+7 ) a = a+c; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); // a est maintenant egal a 13 ( 10+3 ) b= 3+9; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); // b est maintenant egal a 12 printf(&quot;saisissez un caractere SVP\n&quot;); caractere_saisi = getchar(); printf(&quot;caractere_saisi = %c\n&quot;, caractere_saisi ); return(1); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/li&gt;&lt;li&gt; L'affectation avec incr&#233;mentation : le signe '=' precede d'un autre op&#233;rateur
&lt;p&gt; il est donc possible dans le programme C suivant ( test_incr.c ) de faire :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='28' class='spip_cadre' dir='ltr'&gt;#include &lt;stdio.h&gt; int main() { int a = 3; int b = 7; int c = 10; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); c += 2; // equivalent a c = c+2 printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); // c est maintenant egal a 12 ( 10+2 ) a -= 3; // equivalent a a = a-3 printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); // a est maintenant egal a 9 ( 12-3 ) b *= 2; // equivalent a b = b * 2 printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); // b est maintenant egal a 14 ( 7*2 ) c /= 3; // equivalent a c = c/3 printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); // c est maintenant egal a 4 ( 12/3 ) return(1); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt; Ce 'm&#233;lange des op&#233;rateurs' peut aussi s'appliquer aux op&#233;rateurs de manipulation de bits&lt;/p&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt; 3. Les op&#233;rateurs de comparaison &lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt; La comparaison d'&#233;galit&#233; : le signe '=='
&lt;p&gt; Cet op&#233;rateur va nous permettre de tester si deux variables sont &#233;gales. il est donc possible dans le programme C suivant ( test_egal.c ) de faire :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='41' class='spip_cadre' dir='ltr'&gt;#include &lt;stdio.h&gt; int main() { int a = 3; int b = 7; int c = 3; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); if ( a == c ) // ceci est vrai ( a est egal a c ) { printf(&quot; a est egal a c\n&quot;); }; if ( a == 3 ) // ceci est vrai ( a est egal a c ) { printf(&quot; a est egal a 3\n&quot;); }; if ( a == b ) // ceci est faux { printf(&quot; a est egal a b\n&quot;); } else { printf(&quot;a n est pas egal a b\n&quot;); } if ( a == 20 ) // ceci est faux { printf(&quot; a est egal a 20\n&quot;); } else { printf(&quot; a n est pas egal a 20\n&quot;); } return(1); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/li&gt;&lt;li&gt; La comparaison de diff&#233;rence : l'op&#233;rateur ' !='
&lt;p&gt; Cet op&#233;rateur va nous permettre de savoir si deux variables sont diff&#233;rentes. il est donc possible dans le programme C suivant ( test_diff.c ) de faire :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='28' class='spip_cadre' dir='ltr'&gt;#include &lt;stdio.h&gt; int main() { int a = 3; int c = 10; printf(&quot;a=%d | c=%d\n&quot;, a, c ); if ( a != c ) // ceci est vrai ( a est different a c ) { printf(&quot; a est different de c\n&quot;); }; if ( a != 3 ) // ceci est faux ( a n'est pas different de 3 ) { printf(&quot; a est different de 3\n&quot;); } else { printf(&quot; a n'est pas different de 3, donc a = 3\n&quot;); } return(1); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/li&gt;&lt;li&gt; La comparaison d'inf&#233;riorit&#233; : les op&#233;rateurs '&lt;' et '&lt;='
&lt;p&gt; Ces op&#233;rateurs va nous permettre de savoir, respectivement, si une variable est 'inf&#233;rieure'(&lt;) ou 'inf&#233;rieure ou &#233;gale'(&lt;=) &#224; une autre. il est donc possible dans le programme C suivant ( test_inf.c ) de faire :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='37' class='spip_cadre' dir='ltr'&gt;#include &lt;stdio.h&gt; int main() { int a = 3; int b = 10; int c = 10; if ( a &lt;= c ) // ceci est vrai ( a est inferieur ou egal a c ) { printf(&quot; a est inferieur ou egal a c\n&quot;); }; if ( b &lt; c ) // ceci est faux ( b n'est pas inferieur a c ) { printf(&quot; b est inferieur a c\n&quot;); }; if ( a &lt;= 3 ) // ceci est vrai ( a est inferieur ou egal a 3 ) { printf(&quot; a est inferieur ou egal a 3\n&quot;); }; if ( b &lt; 10 ) // ceci est faux ( b n'est pas inferieur a 10 ) { printf(&quot; b est inferieur a 10\n&quot;); }; return(1); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/li&gt;&lt;li&gt; La comparaison de sup&#233;riorit&#233; : les op&#233;rateurs '&gt;' et '&gt;='
&lt;p&gt; Ces op&#233;rateurs va nous permettre de savoir, respectivement, si une variable est 'sup&#233;rieure'(&gt;) ou 'sup&#233;rieure ou &#233;gale'(&gt;=) &#224; une autre. il est donc possible dans le programme C suivant ( test_sup.c ) de faire :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='45' class='spip_cadre' dir='ltr'&gt;#include &lt;stdio.h&gt; int main() { int a = 3; int b = 10; int c = 10; printf(&quot;a=%d | b=%d |c=%d\n&quot;, a, b, c ); if ( b &gt;= c ) // ceci est vrai ( b est superieur ou egal a c ) { printf(&quot; b est superieur ou egal a c\n&quot;); } if ( b &gt; c ) // ceci est faux ( b n'est pas superieur a c ) { printf(&quot; b est superieur a c\n&quot;); } else { printf(&quot; b n'est pas superieur a c\n&quot;); } if ( a &gt;= 3 ) // ceci est vrai ( a est superieur ou egal a 3 ) { printf(&quot; a est superieur ou egal a 3\n&quot;); } if ( b &gt; 10 ) // ceci est faux ( b n'est pas superieur a 10 ) { printf(&quot; b est superieur a 10\n&quot;); } else { printf(&quot; b n'est pas superieur a 10\n&quot;); } return(1); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt; 4. Les op&#233;rateurs d'incr&#233;mentation/d&#233;cr&#233;mentation&lt;/h2&gt;
&lt;p&gt; Ici, rien de bien sorcier, seulement deux op&#233;rateurs ( ++ et &#8212; ) :&lt;/p&gt; &lt;ul&gt;&lt;li&gt; L'op&#233;rateur '++'
&lt;p&gt; Cet op&#233;rateur sert a incr&#233;menter ( ajouter 1 a une variable ). il est donc possible dans le programme C suivant ( test_incr2.c ) de faire :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='18' class='spip_cadre' dir='ltr'&gt;#include &lt;stdio.h&gt; int main() { int a = 3; printf(&quot;a=%d\n&quot;, a ); a++; // Maintenant a est egal a 4 printf(&quot;a=%d\n&quot;, a ); a=a+1; // Fait la meme chose que a++ ( incremente de 1 ) // Maintenant, a est egal a 5 printf(&quot;a=%d\n&quot;, a ); return(1); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/li&gt;&lt;li&gt; L'op&#233;rateur '&#8212;'
&lt;p&gt; Cet op&#233;rateur sert a d&#233;cr&#233;menter ( enlever 1 a une variable ). il est donc possible dans le programme C suivant ( test_decr.c ) de faire :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='18' class='spip_cadre' dir='ltr'&gt;#include &lt;stdio.h&gt; int main() { int a = 10; printf(&quot;a=%d\n&quot;, a ); a--; // Maintenant a est egal a 9 printf(&quot;a=%d\n&quot;, a ); a=a-1; // Fait la meme chose que a++ ( incremente de 1 ) // Maintenant, a est egal a 8 printf(&quot;a=%d\n&quot;, a ); return(1); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;h2&gt; 5. Les op&#233;rateurs de manipulation des bits&lt;/h2&gt;
&lt;p&gt; Attention, l&#224;, &#231;a se corse carr&#233;ment, personne ne vous en voudra de passer a la suite et de revenir ici plus tard :&lt;/p&gt; &lt;h3&gt; Les op&#233;rateurs logiques : '&amp;', '|', ' ' et '^' &lt;/h3&gt;
&lt;p&gt; Ces op&#233;rateurs servent &#224; manipuler les bits qui composent une variable. Les types de variables auxquels ces op&#233;rateurs s'appliquent sont :&lt;/p&gt;
&lt;ul&gt;&lt;li&gt; int : Les entiers
&lt;/li&gt;&lt;li&gt; long int : Les entiers longs
&lt;/lI&gt;&lt;li&gt; unsigned int : Les entiers non sign&#233;s ( sup&#233;rieurs a 0 )
&lt;/lI&gt;&lt;li&gt; char : un caract&#232;re
&lt;/lI&gt;&lt;li&gt; unsigned char : un caract&#232;re aussi
&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt; ATTENTION, ces op&#233;rateurs ne s'appliquent pas aux types float, double ( chiffres r&#233;els avec virgule ).&lt;/p&gt; &lt;ul&gt;&lt;li&gt; Le et binaire : l'op&#233;rateur '&amp;'
&lt;p&gt; Cet op&#233;rateur sert a ne garder que les bits qui se trouvent dans les deux variables auxquelles s'applique le et binaire. il est donc possible dans le programme C suivant ( test_et.c ) de faire :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='34' class='spip_cadre' dir='ltr'&gt;#include &lt;stdio.h&gt; int main() { int a = 40; // en binaire, cela donne 00000000000000000000000000101000 int b = 0; int c = 0; int masque=8; // en binaire, cela donne 00000000000000000000000000001000 printf(&quot;a = %d\n&quot;, a); b=a&amp;masque; // Permets d'eliminer tous les bits qui ne sont pas dans le masque // b est donc egal a 8, c'est a dire en binaire 00000000000000000000000000001000 // car le bit qui signifie 32 ( le 6eme en partant de la droite ) a ete elimine // ( il ne faisait pas partie du masque ) printf(&quot;b = %d\n&quot;, b); a=64; // en binaire, cela donne 00000000000000000000000001000000 printf(&quot;a = %d\n&quot;, a); b=a&amp;masque; printf(&quot;b = %d\n&quot;, b); // Permets d'eliminer tous les bits qui ne sont pas dans le masque // b est donc egal a 0, cest a dire en binaire 00000000000000000000000000000000 // car le bit qui signifie 64 ( le 7eme en partant de la droite ) a ete elimine // ( il ne faisait pas partie du masque ) return(1); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/lI&gt;&lt;li&gt; Le ou binaire : l'op&#233;rateur '|'
&lt;p&gt; Cet op&#233;rateur sert a ajouter certains bits a une variable. il est donc possible dans le programme C suivant ( test_ou.c ) de faire :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='20' class='spip_cadre' dir='ltr'&gt;#include &lt;stdio.h&gt; int main() { int a = 8; // en binaire, cela donne 00000000000000000000000000001000 int bits_a_ajouter = 32; // en binaire, cela donne 00000000000000000000000000100000 int c=0; printf(&quot;a = %d\n&quot;, a ); c= a|bits_a_ajouter; // On melange les bits des deux varaibles printf(&quot;c = %d\n&quot;, c ); // c est dorenavant egal a 40 car le bit demande a ete ajoute a ceux de a // cela donne en binaire : 00000000000000000000000000101000 return(1); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/lI&gt;&lt;li&gt; Le ou EXCLUSIF binaire : l'op&#233;rateur '^'
&lt;p&gt; Cet op&#233;rateur sert a enlever certains bits a une variable. La r&#232;gle est la suivante : Si les deux bits de m&#234;me rang sont a 0, le resultat sera a 0. Si les deux bits de m&#234;me rang sont diff&#233;rents, le resulta sera a 1. Si les deux bits de m&#234;me rang sont a 1 le resultat sera a 0&lt;/p&gt; &lt;p&gt; Pour r&#233;sumer, seuls les bits de m&#234;me rang qui sont diff&#233;rents, seront a 1, et tous les autres seront a 0.&lt;/p&gt; &lt;p&gt; il est donc possible dans le programme C suivant ( test_ou_ex.c ) de faire :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='20' class='spip_cadre' dir='ltr'&gt;#include &lt;stdio.h&gt; int main() { char a = 24; // en binaire, cela donne 00011000 char masque = 48; // en binaire, cela donne 00110000 int c=0; printf(&quot;a = %d\n&quot;, a ); printf(&quot;masque = %d\n&quot;, masque ); c= a^masque; // On melange exclusivement les bits des deux varaibles printf(&quot;c = %d\n&quot;, c ); // c est dorenavant egal a // cela donne en binaire : 00101000 return(1); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/lI&gt;&lt;li&gt; Le compl&#233;ment a un unaire : l'op&#233;rateur ' '
&lt;p&gt; Cet op&#233;rateur sert a inverser chacun des bits de la variable.&lt;/p&gt; &lt;p&gt; Chaque bit a 0 sera mis a 1&lt;/p&gt; &lt;p&gt; Chaque bit a 1 sera mis a 0&lt;/p&gt; &lt;p&gt; il est donc possible dans le programme C suivant ( test_compl1.c ) de faire :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='64' class='spip_cadre' dir='ltr'&gt;#include &lt;stdio.h&gt; int main() { unsigned char a = 2; // en binaire, cela donne 00000010 unsigned char b = 0; printf(&quot;a = %d\n&quot;, a ); b=~a; // On permute tous les bits // b est donc egal a 253 // c'est a dire en binaire : 11111101 // car chaque bit qui etait a 0 est maintenant a 1 // et chaque bit qui etait a 1 est maintenant a 0 printf(&quot;b = %d\n&quot;, b ); return(1); } &lt;cadre&gt; &lt;/li&gt;&lt;/ul&gt; &lt;h3&gt; Les op&#233;rateurs de d&#233;calage de bits : '&lt;&lt;' et '&gt;&gt;' &lt;/h3&gt; Ces op&#233;rateurs servent &#224; d&#233;caler les bits qui composent une variable. &lt;ul&gt;&lt;li&gt; Le d&#233;calage a gauche : l'op&#233;rateur '&lt;&lt;' On peut decaler a gauche tous les bits d'une variable comme dans le programme C suivant ( test_decal_gauche.c ) de faire : &lt;cadre&gt; #include &lt;stdio.h&gt; int main() { unsigned char a = 6; // en binaire, cela donne 00000110 unsigned char b = 0; printf(&quot;a = %d\n&quot;, a ); // On decale tous les bits d'une position vers la gauche b=a&lt;&lt;1; // Apres decalage a gauche ( d'une position ) // de tous les bits de a, b est egal a 12 // c'est a dire en binaire : 00001100 printf(&quot;b = %d\n&quot;, b ); // On peut aussi tout decaler de deux positions vers la gauche b=a&lt;&lt;2; // Apres decalage a gauche ( de deux positions ) // de tous les bits de a, b est egal a 24 // c'est a dire en binaire : 00011000 printf(&quot;b = %d\n&quot;, b ); return(1); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/lI&gt;&lt;li&gt; Le d&#233;calage a droite : l'op&#233;rateur '&gt;&gt;'
&lt;p&gt; On peut decaler a droite tous les bits d'une variable comme dans le programme C suivant ( test_decal_droite.c ) de faire :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='24' class='spip_cadre' dir='ltr'&gt;#include &lt;stdio.h&gt; int main() { unsigned char a = 48; // en binaire, cela donne 00110000 unsigned char b = 0; printf(&quot;a = %d\n&quot;, a ); // On decale tous les bits d'une position vers la droite b=a&gt;&gt;1; // Apres decalage a droite ( d'une position ) // de tous les bits de a, b est egal a 24 // c'est a dire en binaire : 00011000 printf(&quot;b = %d\n&quot;, b ); // On peut aussi tout decaler de deux positions vers la droite b=b&gt;&gt;2; // Apres decalage a droite ( de deux positions ) // de tous les bits de b, b est egal a 6 // c'est a dire en binaire : 00000110 printf(&quot;b = %d\n&quot;, b ); return(1); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/li&gt;&lt;/ul&gt;
&lt;p&gt; &lt;b&gt; Comme vous pouvez le constater :&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;&lt;li&gt; D&#233;caler d'une position a gauche &#233;quivaut &#224; multiplier par deux
&lt;/li&gt;&lt;li&gt; D&#233;caler de deux positions a gauche &#233;quivaut &#224; multiplier par quatre
&lt;/li&gt;&lt;li&gt; D&#233;caler de n positions a gauche &#233;quivaut &#224; multiplier par ( 2 exposant n )
&lt;/li&gt;&lt;li&gt; D&#233;caler d'une position a droite &#233;quivaut &#224; diviser par 2
&lt;/li&gt;&lt;li&gt; D&#233;caler de deux positions a droite &#233;quivaut &#224; diviser par 4
&lt;/li&gt;&lt;li&gt; D&#233;caler de n positions a droite &#233;quivaut &#224; diviser par ( 2 exposant n )
&lt;/li&gt;&lt;li&gt; Les bits qui sortent du champ ( la taille de la variable ), sont irr&#233;m&#233;diablement perdus.
&lt;/li&gt;&lt;li&gt; Dans le cas du d&#233;calage a gauche, les nouveaux bits qui apparaissent a gauche sont initialis&#233;s avec des z&#233;ros.
&lt;/li&gt;&lt;li&gt; Dans le cas du d&#233;calage a droite, les nouveaux bits qui apparaissent a droite sont initialis&#233;s avec des z&#233;ros. &lt;/li&gt;&lt;/ul&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>1- Introduction au langage C</title>
		<link>http://neofutur.net/tutoriels/langage-c-5/les-bases/1-Introduction-au-langage-C</link>
		<guid isPermaLink="true">http://neofutur.net/tutoriels/langage-c-5/les-bases/1-Introduction-au-langage-C</guid>
		<dc:date>2005-12-05T13:53:30Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Neo futur</dc:creator>


		<dc:subject>langage C</dc:subject>
		<dc:subject>programmation</dc:subject>

		<description>Qu'est-ce qu'un langage de programmation ? Un langage de programmation est une syntaxe que l'humain va utiliser pour demander a l'ordinateur d'effectuer des taches ( afficher &quot;BONJOUR&quot; sur l'ecran , exemple en langage C ). Il suffit d'apprendre ces r&#232;gles ( cette syntaxe ), et il devient possible de se faire ob&#233;ir de l'ordinateur ( ca remets chacun a sa place, non ? ;-). La syntaxe d'un langage de programmation, va nous donner diff&#233;rents outils pour communiquer avec l'ordinateur : Des boites (...)

-
&lt;a href="http://neofutur.net/tutoriels/langage-c-5/les-bases/" rel="directory"&gt;Les bases&lt;/a&gt;

/ 
&lt;a href="http://neofutur.net/langage-C" rel="tag"&gt;langage C&lt;/a&gt;, 
&lt;a href="http://neofutur.net/programmation" rel="tag"&gt;programmation&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;h2&gt; Qu'est-ce qu'un langage de programmation ?&lt;/h2&gt;
&lt;p&gt; Un langage de programmation est une syntaxe que l'humain va utiliser pour demander a l'ordinateur d'effectuer des taches ( afficher &quot;BONJOUR&quot; sur l'ecran , exemple en langage C ). Il suffit d'apprendre ces r&#232;gles ( cette syntaxe ), et il devient possible de se faire ob&#233;ir de l'ordinateur ( ca remets chacun a sa place, non ? ;-).&lt;/p&gt; &lt;p&gt; La syntaxe d'un langage de programmation, va nous donner diff&#233;rents outils pour communiquer avec l'ordinateur :&lt;/p&gt; &lt;ul&gt;
&lt;li&gt; Des boites dans lesquelles on pourra ranger des donn&#233;es, des informations que l'on doit garder en m&#233;moire pour pouvoir s'en resservir plus tard. Ces boites sont appel&#233;es des VARIABLES , et il en existe de diff&#233;rentes sortes, nous disposons de boites sp&#233;cialement &#233;tudi&#233;es pour contenir : &lt;ul&gt; &lt;li&gt; Des chiffres entiers ( sans virgule ) &lt;li&gt; Des chiffres r&#233;els ( avec virgule ) &lt;li&gt; Des caracteres de l'alphabet( lettres, chiffres et ponctuation ). &lt;li&gt; Beaucoup d'autres types de donn&#233;es( adresse m&#233;moire, structures de donn&#233;es ... ). &lt;/li&gt; &lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt; Des Instructions Conditionnelles , qui vont nous permettre de demander a l'ordinateur, de n'executer une tache que si les conditions demand&#233;es sont remplies.
&lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='7' class='spip_cadre' dir='ltr'&gt;EXEMPLE, pour afficher &quot;BONJOUR&quot; si il est plus de 16H00 : TANTQUE ( il n'est pas encore 16H00 ) --&gt;ATTENDRE 1 seconde puis AFFICHER &quot;BONJOUR&quot;&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt; ( ceci est un algorithme, c'est a dire un raisonnemant logique,que nous devrons traduire dans un langage de programmation pour que l'ordinateur le comprenne )&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt; Des structures de donn&#233;es , car nous disposons d'ores et d&#233;j&#224; de diff&#233;rentes sortes de boites pour ranger divers types de donn&#233;es , mais il nous faut d&#233;sesp&#233;r&#233;ment disposer d'un moyen de grouper des informations qui sont li&#233;es entre elle, cet outil s'appelle une Structure de Donn&#233;es .
&lt;p&gt; EXEMPLE, pour relier les donn&#233;es concernant une table :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='8' class='spip_cadre' dir='ltr'&gt;structure TABLE { hauteur_table_en_centimetres = 120; largeur_table_en_centimetres = 100; longueur_table_en_centimetres = 80; nombre_de_places_de_la_table = 6; prix_de_la_table_en_francs = 899; }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt; On pourra ensuite conna&#238;tre la hauteur de la table en demandant :&lt;/p&gt; &lt;p&gt; table.hauteur_table_en_centimetres&lt;/p&gt; &lt;p&gt; ce qui nous donnera : 120&lt;/p&gt; &lt;p&gt; On pourra aussi conna&#238;tre la largeur de la table en demandant :&lt;/p&gt; &lt;p&gt; table.largeur_table_en_centimetres&lt;/p&gt; &lt;p&gt; ce qui nous donnera : 100&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt; Des fonctions , que d'autres gens ont d&#233;j&#224; programm&#233;es pour nous ; par exemple une fonction AFFICHER ( que nous avons utilis&#233;e plus haut, mais qui en C s'appelle printf ) , va se charger d'&#233;crire les donn&#233;es la ou nous voulons les &#233;crire ( sur l'&#233;cran par exemple ).
&lt;p&gt; De nombreuses autres fonctions sont disponibles en C, et vous pouvez &#233;crire les votres, que vous pourrez ensuite r&#233;utiliser et donner aux autres personnes qui auront besoin de la m&#234;me fonctionnalit&#233; que celle de votre fonction.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;D'ou vient le langage C ?&lt;/h2&gt;
&lt;p&gt; Le langage C a &#233;t&#233; invent&#233; au d&#233;but des ann&#233;es 70 par Dennis RITCHIE, dans les laboratoires BELL AT&amp;R, en s'inspirant d'un langage moins connu : le langage B.&lt;/p&gt; &lt;p&gt; L'histoire du langage C est intrins&#232;quement li&#233;e &#224; celle d'UNIX ( Linux compris ) et d'internet, de TCP/IP ...&lt;/p&gt; &lt;p&gt; Le langage C est standardis&#233; ( le m&#234;me pour tout le monde ), et est normalis&#233; par l'ANSI ( American National Standard Institute ) depuis 1982.&lt;/p&gt; &lt;p&gt; Mise a part la d&#233;plorable tentative de micro$oft de le d&#233;naturer ( avec le C# ), le langage C est et reste standard, unique et portable.&lt;/p&gt; &lt;p&gt; Malgr&#233; l'apparition du langage C++ ( orient&#233; objet ), les puristes et les perfectionnistes continuent essentiellement &#224; d&#233;velopper en C, car ce langage est beaucour plus rapide et portable ( d'un ordinateur &#224; un autre ) que tout langage &#224; objet ( sauf peut-&#234;tre java qui est extr&#234;mement lent ).&lt;/p&gt; &lt;h2&gt;Pourquoi le langage C reste-t-il toujours La R&#233;f&#233;rence ?&lt;/h2&gt;
&lt;p&gt; Le langage C est la base syntaxique qui a inspir&#233;e de nombreux langages comme C++, Java, Perl, HTML, XML, Javascript ... ), ce qui fait que, si vous ma&#238;trisez le langage C, il vous sera ais&#233; d'apprendre de nombreux autres langages.&lt;/p&gt; &lt;p&gt; Tous les UNIX, tout Linux et tout le projet GNU, ainsi qu'internet, sont essentiellement fond&#233;s sont du langage C. L'avis de Kernighan sur la durabilit&#233; du lagage C ( plusieurs d&#233;c&#233;nies, et ce n'est pas fini !-)) semble la meilleure : Le langage C repr&#233;sente un tr&#232;s bon compromis entre la compr&#233;hension humaine, et l'interpretation par l'ordinateur ( citation approximative ).&lt;/p&gt; &lt;p&gt; Il est important de noter qu'en langage C, on peut TOUT faire, sans v&#233;ritables limitations, ce qui n'est pas toujours le cas dans les langages dits &quot;objets&quot;.&lt;/p&gt; &lt;p&gt; De plus, on peut tout faire de mani&#232;re efficace et rapide, &#224; la compilation comme &#224; l'ex&#233;cution.&lt;/p&gt; &lt;p&gt; Il est de premi&#232;re importance de noter qu'en langage C, on peut faire de l'objet, et le faire efficacement et proprement, qui plus est ; pour illustration, veuillez d&#233;couvrir la facon dont est impl&#233;ment&#233; GTK .&lt;/p&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>
<item xml:lang="fr">
		<title>Le fameux programme &quot;Hello World&quot; en langage C</title>
		<link>http://neofutur.net/tutoriels/langage-c-5/les-bases/article/le-fameux-programme-hello-world-en</link>
		<guid isPermaLink="true">http://neofutur.net/tutoriels/langage-c-5/les-bases/article/le-fameux-programme-hello-world-en</guid>
		<dc:date>2005-12-05T13:01:29Z</dc:date>
		<dc:format>text/html</dc:format>
		<dc:language>fr</dc:language>
		<dc:creator>Neo futur</dc:creator>


		<dc:subject>langage C</dc:subject>
		<dc:subject>programmation</dc:subject>
		<dc:subject>GCC</dc:subject>

		<description>Le fameux programme &#171; Hello World &#187; en langage C Dans un simple fichier texte, que vous editerez avec votre &#233;diteur de texte favori ( sous Linux : vi, kedit, kwrite, gnp, kdevelop ou code commander feront l'affaire ), saisissez ( ou copiez/collez ) le texte suivant ( hello.c ) : // Exemple de programme C qui va afficher // sur l'&#233;cran, le message &quot;Hello world !!&quot; #include &lt;stdio.h&gt; void main(void) printf(&quot;Hello world !!\n&quot;); La fonction printf est une (...)

-
&lt;a href="http://neofutur.net/tutoriels/langage-c-5/les-bases/" rel="directory"&gt;Les bases&lt;/a&gt;

/ 
&lt;a href="http://neofutur.net/langage-C" rel="tag"&gt;langage C&lt;/a&gt;, 
&lt;a href="http://neofutur.net/programmation" rel="tag"&gt;programmation&lt;/a&gt;, 
&lt;a href="http://neofutur.net/GCC,11" rel="tag"&gt;GCC&lt;/a&gt;

		</description>


 <content:encoded>&lt;div class='rss_texte'&gt;&lt;h2&gt; Le fameux programme &#171; Hello World &#187; en langage C&lt;/H2&gt;
&lt;p&gt; Dans un simple fichier texte, que vous editerez avec votre &#233;diteur de texte favori ( sous Linux : vi, kedit, kwrite, gnp, kdevelop ou code commander feront l'affaire ), saisissez ( ou copiez/collez ) le texte suivant ( hello.c ) :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='9' class='spip_cadre' dir='ltr'&gt;// Exemple de programme C qui va afficher // sur l'&#233;cran, le message &quot;Hello world !!&quot; #include &lt;stdio.h&gt; void main(void) { printf(&quot;Hello world !!\n&quot;); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt; La fonction printf est une fonction C standard ( ANSI ), qui va &#233;crire, sur la sortie standard ( l'&#233;cran ), le texte qui se trouve entre guillemets. Cette fonction dispose d'autres param&#232;tres et permets de faire beaucoup plus qu'un simple affichage de texte.&lt;/p&gt; &lt;p&gt; Nous verrons plus tard d'autres utilisations de la fonction printf ( voir les entr&#233;es-sorties en langage C ) ; Si vous &#234;tes impatient, et que vous avez la chance de travailler sous Linux ( ou un quelconque autre UNIX ), vous pouvez tout de suite saisir en ligne de commande 'man printf'.&lt;/p&gt; &lt;p&gt; Les deux premi&#232;res lignes, qui commencent par :&lt;/p&gt;
&lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;//&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt;sont des lignes de commentaires, ce qui se trouve derriere le // ne fait pas partie du programme, ne sera pas compil&#233;, et ne sert qu'&#224; commenter le programme.&lt;/p&gt; &lt;p&gt; La ligne qui commence par :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;#include&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt;est une ligne d'inclusion, ce qui signifie que le code qui se trouve dans le fichier stdio.h sera inclus dans votre programme.&lt;/p&gt; &lt;p&gt; Il se trouve effectivement que pour pouvoir utiliser la fonction printf, il est n&#233;cessaire d'inclure ce fichier.&lt;/p&gt; &lt;p&gt; A chaque fois que vous utiliserez dans votre programme, une fonction C standard, il vous sera donc n&#233;cessaire d'inclure le fichier qui vous permettra d'utiliser le code de cette fonction.&lt;/p&gt; &lt;H2&gt; POUR COMPILER ET EXECUTER CE PROGRAMME :&lt;/H2&gt;
&lt;ul&gt;
&lt;li&gt; Sauvegardez le programme sous le nom hello.c dans votre r&#233;pertoire personnel.
&lt;/li&gt;
&lt;li&gt; Saisissez dans un terminal ( dans le m&#234;me r&#233;pertoire ), la commande suivante :&lt;br /&gt;
&lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='10' class='spip_cadre' dir='ltr'&gt;cc -o hello.exe hello.c &lt;cadre&gt; Cette commande signifie : Compile le fichier hello.c et cr&#233;e un executable ( option -o ) qui s'appelera hello.exe &lt;/li&gt; &lt;li&gt; Pour lancer l'executable hello.exe, Saisissez dans un terminal ( toujours dans le m&#234;me r&#233;pertoire ), la commande suivante : &lt;cadre&gt; ./hello.exe&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Allons un peu plus loin en communiquant avec l'ordinateur. Toujours dans un simple fichier texte, saisissez ( ou copiez/collez ) le texte suivant ( saisie.c ) :&lt;/p&gt; &lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='39' class='spip_cadre' dir='ltr'&gt;// Exemple de programme C qui va demander le nom de l'utilisateur // Le nom saisi sera r&#233;cup&#233;r&#233; dans une variable puis reutilise // pour souhaiter la bienvenue a cet utilisateur dans // notre application #include void main(void) { // On declare la variable sz_nom_utilisateur pour pouvoir // y stocker le nom que l'utilisateur va saisir // On prevoit une taille maximum du nom d'utilisateur // de 127 caracteres ( ce qui nous laisse de la marge ). char sz_nom_utilisateur[128]; // On demande le nom d'utilisateur printf(&quot;Saisissez nom d'utilisateur SVP.&quot;); // On attends que le nom ait &#233;t&#233; saisi par l'utilisateur // pour le ranger dans la variable sz_nom_utilisateur scanf(&quot;%127s&quot;, sz_nom_utilisateur ); // Le nom a ete saisi par l'utilisateur et la fonction scanf // a rang&#233; ce nom dans la variable sz_nom_utilisateur // On peut le r&#233;cup&#233;rer dans cette variable pour saluer // notre utilisateur printf(&quot; Bonjour %s, et bon courage dans votre apprentissage du langage C\n&quot;, sz_nom_utilisateur ); // Fin de l'application, on dit donc au revoir par pure politesse printf(&quot;\n AU REVOIR %s, ET A BIENTOT\n\n&quot;, sz_nom_utilisateur ); }&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt; La fonction scanf va se charger d'attendre que l'utilisateur ait saisi son nom ( lequel lui a &#233;t&#233; demand&#233; par la fonction printf ).&lt;/p&gt; &lt;p&gt; D&#232;s que l'utilisateur aura appuy&#233; sur la touche 'entr&#233;e' ( on l'appele aussi 'retour chariot' ), la fonction va r&#233;cup&#233;rer ce qu'il a saisi et le placer dans la variable sz_nom_utilisateur ( le deuxi&#232;me param&#232;tre de la fonction ).&lt;/p&gt; &lt;p&gt; Le '%127s' qui apparait dans le premier param&#232;tre signifie que l'on attends la saisie d'une chaine de caract&#232;res, qui ne doit pas d&#233;passer 127 caract&#232;res.&lt;/p&gt; &lt;p&gt; La fonction printf est toujours l&#224; pour l'affichage de texte sur la sortie standard ( l'&#233;cran ), mais vous voyez ici apparaitre le : %s a l'endroit ou devrait apparaitre le nom que l'utilisateur a saisi pr&#233;c&#233;demment, ainsi qu'un deuxi&#232;me param&#232;tre, le nom de la variable dans laquelle la fonction scanf a rang&#233; ce nom qui a &#233;t&#233; saisi.&lt;/p&gt; &lt;p&gt; Vous remarquerez que, dans ce programme, le nombre de lignes de commentaires ( commencant par '//' ), est extr&#234;mement important.&lt;/p&gt; &lt;p&gt; Ces commentaire doivent pouvoir vous aider a comprendre, ligne par ligne, ce que fait le programme.&lt;/p&gt; &lt;p&gt; Il est g&#233;n&#233;ralement admis qu'un bon programme doit contenir entre 30% et 50% de lignes de commentaires.&lt;/p&gt; &lt;p&gt; Un programme sans commentaires peut &#234;tre tout aussi efficace, mais lorsque vous ( ou quelqu'un d'autre dans un contexte professionnel ou communautaire ) vous replongerez dans votre code, vous mettrez beaucoup plus longtemps a comprendre ce qu'il fait.&lt;/p&gt; &lt;p&gt; Les commentaires peuvent donc faire gagner beaucoup de temps.&lt;/p&gt; &lt;p&gt; La ligne :&lt;/p&gt;
&lt;form action='' method='get'&gt;&lt;div&gt;
&lt;input type='hidden' name='exec' value='' /&gt;
&lt;textarea readonly='readonly' cols='40' rows='2' class='spip_cadre' dir='ltr'&gt;#include &lt;stdio.h&gt;&lt;/textarea&gt;&lt;/div&gt;&lt;/form&gt; &lt;p&gt;est toujours l&#224;, c'est aussi elle qui vous permets d'utiliser la fonction scanf.&lt;/p&gt; &lt;H2&gt; Pour compiler et executer votre programme :&lt;/H2&gt;
&lt;ul&gt;
&lt;li&gt;
* Sauvegardez le programme sous le nom saisie.c dans votre r&#233;pertoire personnel.
&lt;/li&gt;
&lt;li&gt;
* Saisissez dans un terminal ( dans le m&#234;me r&#233;pertoire ), la commande suivante : cc -o saisie.exe saisie.c Cette commande signifie : compile le fichier saisie.c et cr&#233;e un executable ( option -o ) qui s'appelera saisie.exe
&lt;/li&gt;
&lt;li&gt;
* Pour lancer l'executable saisie.exe, Saisissez dans un terminal ( toujours dans le m&#234;me r&#233;pertoire ), la commande suivante :
./saisie.exe
&lt;/li&gt;
&lt;/ul&gt;&lt;/div&gt;
		
		</content:encoded>


		

	</item>



</channel>

</rss>
