Programmer en langage c avec exercices corrigés 14.00 / 20

Le langage C a été créé en 1972 par Denis Ritchie avec un objectif relativement limité : écrire un système d'exploitation (UNIX). Mais ses qualités "opérationnelles" l'ont très vite fait adopter par une large communauté de programmeurs.
Télécharger Gratuitement
301 téléchargements

Contenu de ce document de Informatique > Programmation

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 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 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 8.2 Cas des tableaux à plusieurs indices...........................................................98 9 - UTILISATION DE POINTEURS SUR DES FONCTIONS..............................100 9.1 Paramétrage d'appel de fonctions..............................................................100 9.2 Fonctions transmises en argument ............................................................101 EXERCICES .......................................................................................................101 VIII. LES CHAÎNES DE CARACTÈRES..............................................................103 1 - REPRÉSENTATION DES CHAÎNES.............................................................103 1.1 La convention adoptée..............................................................................103 1.2 Cas des chaînes constantes .......................................................................103 1.3 Initialisation de tableaux de caractères .....................................................104 1.4 Initialisation de tableaux de pointeurs sur des chaînes ..............................105 2 - POUR LIRE ET ÉCRIRE DES CHAÎNES ......................................................106 3 - POUR FIABILISER LA LECTURE AU CLAVIER : LE COUPLE GETS - SCANF 107 4 - GÉNÉRALITÉS SUR LES FONCTIONS PORTANT SUR DES CHAÎNES....108 4.1 Ces fonctions travaillent toujours sur des adresses....................................108 4.2 La fonction strlen .....................................................................................108 4.3 Le cas des fonctions de concaténation.......................................................109 5 - LES FONCTIONS DE CONCATÉNATION DE CHAÎNES ............................109 5.1 La fonction strcat .....................................................................................109 5.2 La fonction strncat ...................................................................................110 6 - LES FONCTIONS DE COMPARAISON DE CHAÎNES.................................110 7 - LES FONCTIONS DE COPIE DE CHAÎNES .................................................111 8 - LES FONCTIONS DE RECHERCHE DANS UNE CHAÎNE.........................112 9 - LES FONCTIONS DE CONVERSION...........................................................112 10 - QUELQUES PRÉCAUTIONS À PRENDRE AVEC LES CHAÎNES.............113 10.1 Une chaîne possède une vraie fin, mais pas de vrai début .......................113 10.2 Les risques de modification des chaînes constantes.................................114 EXERCICES .......................................................................................................114 IX. LES STRUCTURES..........................................................................................117 1 - DÉCLARATION D'UNE STRUCTURE..........................................................117 2 - UTILISATION D'UNE STRUCTURE.............................................................118 2.1 Utilisation des champs d'une structure......................................................118 2.2 Utilisation globale d'une structure ............................................................118 2.3 Initialisations de structures.......................................................................119 3 - POUR SIMPLIFIER LA DÉCLARATION DE TYPES : DÉFINIR DES SYNONYMES AVEC TYPEDEF ............................................................................................................................119 3.1 Exemples d'utilisation de typedef .............................................................119 3.2 Application aux structures........................................................................120 4 - IMBRICATION DE STRUCTURES...............................................................120 4.1 Structure comportant des tableaux............................................................120 4.2 Tableaux de structures .............................................................................121 4.3 Structures comportant d'autres structures..................................................122 5 - À PROPOS DE LA PORTÉE DU MODÈLE DE STRUCTURE......................122 6 - TRANSMISSION D'UNE STRUCTURE EN ARGUMENT D'UNE FONCTION123 6.1 Transmission de la valeur d'une structure .................................................123 6.2 Transmission de l'adresse d'une structure : l'opérateur -> ..........................124 7 - TRANSMISSION D'UNE STRUCTURE EN VALEUR DE RETOUR D'UNE FONCTION 125 EXERCICES .......................................................................................................125 X. LES FICHIERS ..................................................................................................127 1 - CRÉATION SÉQUENTIELLE D'UN FICHIER...............................................127 2 - LISTE SÉQUENTIELLE D'UN FICHIER .......................................................129 3 - L'ACCÈS DIRECT .........................................................................................130 3.1 Accès direct en lecture sur un fichier existant...........................................130 3.2 Les possibilités de l'accès direct ...............................................................131 3.3 En cas d'erreur .........................................................................................132 4 - LES ENTRÉES-SORTIES FORMATÉES ET LES FICHIERS DE TEXTE .....132 5 - LES DIFFÉRENTES POSSIBILITÉS D'OUVERTURE D'UN FICHIER..........134 6 - LES FICHIERS PRÉDÉFINIS.........................................................................134 EXERCICES .......................................................................................................135 XI. LA GESTION DYNAMIQUE...........................................................................137 1 - LES OUTILS DE BASE DE LA GESTION DYNAMIQUE : MALLOC ET FREE138 1.1 La fonction malloc ...................................................................................138 1.2 La fonction free........................................................................................139 2 - D'AUTRES OUTILS DE GESTION DYNAMIQUE : CALLOC ET REALLOC140 2.1 La fonction calloc.....................................................................................140 2.2 La fonction realloc ...................................................................................140 3 - EXEMPLE D'APPLICATION DE LA GESTION DYNAMIQUE : CRÉATION D'UNE LISTE CHAÎNÉE ............................................................................................................................141 EXERCICE .........................................................................................................142 XII. LE PRÉPROCESSEUR...................................................................................145 1 - LA DIRECTIVE #INCLUDE..........................................................................145 2 - LA DIRECTIVE #DEFINE .............................................................................146 2.1 Définition de symboles.............................................................................146 2.2 Définition de macros ................................................................................147 3 - LA COMPILATION CONDITIONNELLE ......................................................149 3.1 Incorporation liée à l'existence de symboles..............................................149 3.2 Incorporation liée à la valeur d'une expression..........................................150 XIII. LES POSSIBILITÉS DU LANGAGE C PROCHES DE LA MACHINE ....153 1 - COMPLÉMENTS SUR LES TYPES D'ENTIERS...........................................153 1.1 Rappels concernant la représentation des nombres entiers en binaire ........153 1.2 Prise en compte d'un attribut de signe.......................................................154 1.3 Extension des règles de conversions .........................................................154 1.4 La notation octale ou hexadécimale des constantes ...................................155 2 - COMPLÉMENTS SUR LES TYPES DE CARACTÈRES...............................155 2.1 Prise en compte d'un attribut de signe.......................................................155 2.2 Extension des règles de conversion...........................................................156 3 - LES OPÉRATEURS DE MANIPULATION DE BITS.....................................156 3.1 Présentation des opérateurs de manipulation de bits .................................156 3.2 Les opérateurs bit à bit.............................................................................157 3.3 Les opérateurs de décalage.......................................................................157 3.4 Exemples d'utilisation des opérateurs de bits ...........................................158 4 - LES CHAMPS DE BITS.................................................................................158 5 - LES UNIONS.................................................................................................159 ANNEXE : LES PRINCIPALES FONCTIONS DE LA BIBLIOTHEQUE STANDARD 163 1 - ENTRÉES-SORTIES (STDIO.H)....................................................................163 1.2 Ecriture formatée .....................................................................................163 1.3 Lecture formatée ......................................................................................166 1.4 Entrées-sorties de caractères ....................................................................168 1.5 Entrées-sorties sans formatage .................................................................170 1.6 Action sur le pointeur de fichier ...............................................................170 1.7 Gestion des erreurs ..................................................................................171 2 - TESTS DE CARACTÉRES ET CONVERSIONS MAJUSCULES-MINUSCULES (CTYPE.H) 171 4 - FONCTIONS MATHÉMATIQUES (MATH.H)..............................................175 5 - UTILITAIRES (STDLIB.H) ............................................................................176 CORRECTION DES EXERCICES ........................................................................179 INDEX .....................................................................................................................191
Télécharger Gratuitement
301 téléchargements