Plan :
I. GÉNÉRALITÉS SUR LE LANGAGE C.................................................................1 1 - PRÉSENTATION PAR L'EXEMPLE DE QUELQUES INTRUCTIONS DU LANGAGE C 1 1.1 Un exemple de programme en langage C......................................................1 1.2 Structure d'un programme en langage C........................................................2 1.3 Déclarations.................................................................................................2 1.4 Pour écrire des informations : la fonction printf ............................................3 1.5 Pour faire une répétition : l'instruction for.....................................................4 1.6 Pour lire des informations : la fonction scanf ................................................4 1.7 Pour faire des choix : l'instruction if .............................................................4 1.8 Les directives à destination du préprocesseur ...............................................5 1.9 Un second exemple de programme ...............................................................6 2 - QUELQUES RÈGLES D'ÉCRITURE .................................................................7 2.1 Les identificateurs........................................................................................7 2.2 Les mots clés ...............................................................................................7 2.3 Les séparateurs ............................................................................................8 2.4 Le format libre .............................................................................................8 2.5 Les commentaires ........................................................................................9 3 - CRÉATION D'UN PROGRAMME EN LANGAGE C.........................................9 3.1 L'édition du programme..............................................................................10 3.2 La compilation ...........................................................................................10 3.3 L'édition de liens........................................................................................10 3.4 Les fichiers en-tête.....................................................................................10 II. LES TYPES DE BASE DU LANGAGE C...........................................................13 1 - LA NOTION DE TYPE ....................................................................................13 2 - LES TYPES ENTIERS .....................................................................................14 2.1 Leur représentation en mémoire .................................................................14 2.2 Les différents types d'entiers ......................................................................14 2.3 Notation des constantes entières.................................................................14 3 - LES TYPES FLOTTANTS ...............................................................................15 3.1 Les différents types et leur représentation en mémoire................................15 3.2 Notation des constantes flottantes...............................................................15 4 - LES TYPES CARACTÈRES ............................................................................16 4.1 La notion de caractère en langage C ...........................................................16 4.2 Notation des constantes caractères..............................................................16 5 - INITIALISATION ET CONSTANTES..............................................................17 III. LES OPÉRATEURS ET LES EXPRESSIONS EN LANGAGE C....................19 1 - L'ORIGINALITÉ DES NOTIONS D'OPÉRATEUR ET D'EXPRESSION EN LANGAGE C 19 2 - LES OPÉRATEURS ARITHMÉTIQUES EN C ................................................20 2.1 Présentation des opérateurs ........................................................................20 2.2 Les priorités relatives des opérateurs..........................................................20 3 - LES CONVERSIONS IMPLICITES POUVANT INTERVENIR DANS UN CALCUL D'EXPRESSION 21 3.1 Notion d'expression mixte ..........................................................................21 3.2 Les conversions d'ajustement de type..........................................................21 3.3 Les promotions numériques........................................................................22 3.4 Le cas du type char.....................................................................................23 4 - LES OPÉRATEURS RELATIONNELS ............................................................24 5 - LES OPÉRATEURS LOGIQUES .....................................................................25 6 - L'OPÉRATEUR D'AFFECTATION ORDINAIRE .............................................27 6.1 Notion de lvalue.........................................................................................27 6.2 L'opérateur d'affectation possède une associativité de droite à gauche .........28 X Table de s m atière s 6.3 L'affectation peut entraîner une conversion .................................................28 7 - LES OPÉRATEURS D'INCRÉMENTATION ET DE DÉCRÉMENTATION ....28 7.1 Leur rôle....................................................................................................28 7.2 Leurs priorités............................................................................................29 7.3 Leur intérêt ................................................................................................29 8 - LES OPÉRATEURS D'AFFECTATION ÉLARGIE...........................................30 9 - LES CONVERSIONS FORCÉES PAR UNE AFFECTATION ..........................31 10 - L'OPÉRATEUR DE CAST .............................................................................31 11 - L'OPÉRATEUR CONDITIONNEL .................................................................32 12 - L'OPÉRATEUR SÉQUENTIEL ......................................................................32 13 - L'OPÉRATEUR SIZEOF ................................................................................34 14 - RÉCAPITULATIF DES PRIORITÉS DE TOUS LES OPÉRATEURS.............34 EXERCICES .........................................................................................................35 IV. LES ENTRÉES-SORTIES CONVERSATIONNELLES ...................................37 1 - LES POSSIBILITÉS DE LA FONCTION PRINTF............................................37 1.1 Les principaux codes de conversion............................................................37 1.2 Action sur le gabarit d'affichage .................................................................38 1.3 Actions sur la précision ..............................................................................38 1.4 La syntaxe de printf ...................................................................................39 1.5 En cas d'erreur de programmation...............................................................39 1.6 La macro putchar .......................................................................................40 2 - LES POSSIBILITÉS DE LA FONCTION SCANF.............................................40 2.1 Les principaux codes de conversion de scanf ..............................................41 2.2 Premières notions de tampon et de séparateurs ...........................................41 2.3 Les premières règles utilisées par scanf......................................................41 2.4 On peut imposer un gabarit maximal..........................................................42 2.5 Rôle d'un espace dans le format..................................................................42 2.6 Cas où un caractère invalide apparaît dans une donnée ...............................43 2.7 Arrêt prématuré de scanf ............................................................................43 2.8 La syntaxe de scanf ....................................................................................44 2.9 Problèmes de synchronisation entre l'écran et le clavier ..............................44 2.10 En cas d'erreur .........................................................................................45 2.11 La macro getchar......................................................................................46 EXERCICES .........................................................................................................46 V. LES INSTRUCTIONS DE CONTRÔLE .............................................................49 1 - L'INSTRUCTION IF.........................................................................................49 1.1 Blocs d'instructions ....................................................................................49 1.2 Syntaxe de l'instruction if ...........................................................................50 1.3 Exemples...................................................................................................50 1.5 En cas d'imbrication des instructions if.......................................................51 2 - L'INSTRUCTION SWITCH..............................................................................52 2.1 Exemples d'introduction de l'instruction switch...........................................52 2.2 Syntaxe de l'instruction switch ...................................................................55 3 - L'INSTRUCTION DO... WHILE.......................................................................56 3.1 Exemple d'introduction de l'instruction do... while .....................................56 3.2 Syntaxe de l'instruction do... while .............................................................57 3.3 Exemples...................................................................................................58 4 - L'INSTRUCTION WHILE ................................................................................58 4.1 Exemple d'introduction de l'instruction while..............................................58 4.2 Syntaxe de l'instruction while.....................................................................59 5- L'INSTRUCTION FOR......................................................................................60 5.1 Exemple d'introduction de l'instruction for..................................................60 5.2 Syntaxe de l'instruction for .........................................................................61 6 - LES INSTRUCTIONS DE BRANCHEMENT INCONDITIONNEL : BREAK, CONTINUE ET GOTO 62 6.1 L'instruction break .....................................................................................62 6.2 L'instruction continue .................................................................................63 6.3 L'instruction goto .......................................................................................64 EXERCICES .........................................................................................................64 VI. LA PROGRAMMATION MODULAIRE ET LES FONCTIONS ....................67 Table de s m atières XI 1 - LA FONCTION : LA SEULE SORTE DE MODULE EXISTANT EN ..............67 2 - EXEMPLE DE DÉFINITION ET D'UTILISATION D'UNE FONCTION EN C..68 3 - QUELQUES RÈGLES......................................................................................70 3.1 Arguments muets et arguments effectifs .....................................................70 3.2 L'instruction return.....................................................................................70 3.3 Cas des fonctions sans valeur de retour ou sans arguments .........................71 3.4 Les anciennes formes de l'en-tête des fonctions...........................................72 4 - LES FONCTIONS ET LEURS DÉCLARATIONS ............................................72 4.1 Les différentes façons de déclarer (ou de ne pas déclarer) une fonction.......72 4.2 Où placer la déclaration d'une fonction .......................................................73 4.3 A quoi sert la déclaration d'une fonction .....................................................73 5 - RETOUR SUR LES FICHIERS EN-TÊTE........................................................74 6 - EN C, LES ARGUMENTS SONT TRANSMIS PAR VALEUR ........................74 7 - LES VARIABLES GLOBALES........................................................................75 7.1 Exemple d'utilisation de variables globales.................................................76 7.2 La portée des variables globales .................................................................76 7.3 La classe d'allocation des variables globales ...............................................77 8 - LES VARIABLES LOCALES...........................................................................77 8.1 La portée des variables locales ...................................................................77 8.2 Les variables locales automatiques .............................................................77 8.3 Les variables locales statiques....................................................................78 8.4 Le cas des fonctions récursives...................................................................78 9 - LA COMPILATION SÉPARÉE ET SES CONSÉQUENCES ............................79 9.1 La portée d'une variable globale - la déclaration extern...............................79 9.2 Les variables globales et l'édition de liens ..................................................80 9.3 Les variables globales cachées - la déclaration static ..................................80 10 - LES DIFFÉRENTS TYPES DE VARIABLES, LEUR PORTÉE ET LEUR CLASSE D'ALLOCATION 81 10.1 La portée des variables.............................................................................81 10.2 Les classes d'allocation des variables........................................................81 10.3 Tableau récapitulatif ................................................................................82 11 - INITIALISATION DES VARIABLES .............................................................82 11.1 Les variables de classe statique ................................................................82 11.2 Les variables de classe automatique .........................................................83 EXERCICES .........................................................................................................83 VII. LES TABLEAUX ET LES POINTEURS..........................................................85 1 - LES TABLEAUX À UN INDICE......................................................................85 1.1 Exemple d'utilisation d'un tableau en C ......................................................85 1.2 Quelques règles .........................................................................................86 2 - LES TABLEAUX À PLUSIEURS INDICES.....................................................87 2.1 Leur déclaration .........................................................................................87 2.2 Arrangement en mémoire des tableaux à plusieurs indices..........................87 3 - INITIALISATION DES TABLEAUX................................................................88 3.1 Initialisation de tableaux à un indice ..........................................................88 3.2 Initialisation de tableaux à plusieurs indices...............................................89 4 - NOTION DE POINTEUR - LES OPÉRATEURS * ET &..................................89 4.1 Introduction ...............................................................................................89 4.2 Quelques exemples ....................................................................................90 4.3 Incrémentation de pointeurs .......................................................................91 5 - COMMENT SIMULER UNE TRANSMISSION PAR ADRESSE AVEC UN POINTEUR 92 6 - UN NOM DE TABLEAU EST UN POINTEUR CONSTANT...........................93 6.1 Cas des tableaux à un indice ......................................................................93 6.2 Cas des tableaux à plusieurs indices...........................................................94 7 - LES OPÉRATIONS RÉALISABLES SUR DES POINTEURS ..........................95 7.1 La comparaison de pointeurs ......................................................................95 7.2 La soustraction de pointeurs .......................................................................95 7.3 Les affectations de pointeurs et le pointeur nul ...........................................95 7.4 Les conversions de pointeurs......................................................................95 7.5 Les pointeurs génériques............................................................................96 8 - LES TABLEAUX TRANSMIS EN ARGUMENT.............................................97 8.1 Cas des tableaux à un indice ......................................................................97