Programmer en langage c avec exercices corrigés

Programmer en langage c avec exercices corrigés

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.
14 / 20
Document PDF
301 téléchargements
690Ko
Votre document est en cours de traitement

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

9 avis pour le document Programmer en langage c avec exercices corrigés

aria55
aria55
il y a 1 an
C'est vraiment très intéressent. ça m'aidera dans mes projets de fin d'étude. les livres comme celui-ci nous en avons tous besoin spécialement pour ceux ou celles qui ont fait l'informatique leur métier voir même leur vie quotidien qui ne rêvent que programme, que faire quelque chose qui peut intéresser la majorité au monde assis ou assises devant leur ordinateur qui est leur ami avec qui ils/elles passent beaucoup du temps de la journée avec voir même la 24h/24h

sassmath
sassmath
il y a 1 an
En tout cas moi ça m'est utile car je viens de commencer le langage C. En plus de ça il y a des exemples concrets. Ainsi je suis fier d''appartenir à ce site qui met à notre disponibilité des cours de programmation en C. De même j'en parlerai à mes amis qui aimeraient aussi faire de la programmation.

nihaleUCHEE
nihaleUCHEE
il y a 1 an
j'arrive pas a télécharger je suis fier d’être un nouveau membre dans votre site. ce document est intéressent mais nous attend d'autre document qui sont charges par plus d'information et plus des exercices plus profond et plus utiles,pour arriver à la bonne connaissance et le progres des etudiants

idriss.kh
idriss.kh
il y a 2 ans
je suis fier d’être un nouveau membre dans votre site. ce document est intéressent mais nous attend d'autre document qui sont charges par plus d'information et plus des exercices plus profond et plus utiles,pour arriver à la bonne connaissance et le progres des etudiants

riuzaky
riuzaky
il y a 3 ans
^_^

riuzaky
riuzaky
il y a 3 ans
^_^

riuzaky
riuzaky
il y a 3 ans
^_^

marroquis
marroquis
il y a 3 ans
tres trs bon

zakiss
zakiss
il y a 4 ans
vraiment bien



Documents similaires

Accéder directement au site