Sommaire TABLE DES MATIERES Chapitre 1 : Les bases de la programmation en C ...
Sommaire TABLE DES MATIERES Chapitre 1 : Les bases de la programmation en C ......................... 4 1.1 Historique : ....................................................................................................................... 4 1.2 La compilation : ............................................................................................................... 4 1.3 Les composants élémentaires du C : ................................................................................ 6 1.3.1 Les identificateurs ..................................................................................................... 7 1.3.2 Les mots-clefs ........................................................................................................... 7 1.3.3 Les commentaires ..................................................................................................... 8 1.4 Structure d'un programme C ............................................................................................ 8 1.5 Les types prédéfinis ....................................................................................................... 10 1.5.1 Le type caractère ..................................................................................................... 10 1.5.2 Les types entiers ...................................................................................................... 12 1.5.3 Les types flottants ................................................................................................... 14 1.6 Les constantes : .............................................................................................................. 14 1.6.1 Les constantes entières ............................................................................................ 14 1.6.2 Les constantes réelles .............................................................................................. 15 1.6.3 Les constantes caractères ........................................................................................ 16 1.6.4 Les constantes chaînes de caractères ....................................................................... 16 1.7 Les opérateurs : .............................................................................................................. 16 1.7.1 L'affectation ............................................................................................................ 16 1.7.2 Les opérateurs arithmétiques .................................................................................. 17 1.7.3 Les opérateurs relationnels ...................................................................................... 18 1.7.4 Les opérateurs logiques booléens ........................................................................... 19 1.7.5 Les opérateurs logiques bit à bit ............................................................................. 19 1.7.6 Les opérateurs d'affectation composée ................................................................... 20 1.7.7 Les opérateurs d'incrémentation et de décrémentation ........................................... 20 1.7.8 L'opérateur virgule .................................................................................................. 21 1.7.9 L'opérateur conditionnel ternaire ............................................................................ 21 1.7.10 L'opérateur de conversion de type ........................................................................ 22 1.7.11 L'opérateur adresse ................................................................................................ 22 1.7.12 Règles de priorité des opérateurs .......................................................................... 22 1.8 Les instructions de branchement conditionnel : ............................................................. 23 1.8.1 Branchement conditionnel if---else ......................................................................... 23 1.8.2 Branchement multiple switch .................................................................................. 24 1.9 Les boucles : .................................................................................................................. 24 1.9.1 Boucle while ........................................................................................................... 24 1.9.2 Boucle do---while ................................................................................................... 25 1.9.3 Boucle for ................................................................................................................ 25 1.10 Les instructions de branchement non conditionnel ...................................................... 26 1.10.1 Branchement non conditionnel break ................................................................... 26 1.10.2 Branchement non conditionnel continue ............................................................... 27 Cours C Par HIDOURI Sommaire 1.10.3 Branchement non conditionnel goto ..................................................................... 27 1.11 Les fonctions d'entrées-sorties classiques .................................................................... 27 1.11.1 La fonction d'écriture printf .................................................................................. 28 1.11.2 La fonction de saisie scanf .................................................................................... 30 1.11.3 Impression et lecture de caractères ....................................................................... 32 1.12 Les conventions d'écriture d'un programme C ............................................................. 33 Chapitre 1: Les bases de la programmation en C .......................... 34 Chapitre 3: Les tableaux statiques .................................................. 43 3.1. Tableaux unidimensionnels ........................................................................................... 43 3.1.1. Généralités : ............................................................................................................ 43 3.1.2. Fonctions de base (fichier inclus base_tus) ............................................................. 44 3.1.3. Manipulations dans les tableaux (mani_tus) ........................................................... 45 3.1.4. Tris .......................................................................................................................... 46 3.1.5. Recherches : ............................................................................................................ 54 3.1.6. Calculs mathématiques ........................................................................................... 56 3.2. Tableaux multidimensionnels ........................................................................................ 57 3.3. Conclusions .................................................................................................................... 61 4.1 Adresse et valeur d'un objet ........................................................................................... 64 4.2 Notion de pointeur ......................................................................................................... 65 4.3 Arithmétique des pointeurs ............................................................................................ 67 4.4 Allocation dynamique .................................................................................................... 69 4.5 Pointeurs et tableaux ...................................................................................................... 72 4.5.1 Pointeurs et tableaux à une dimension .................................................................... 72 4.5.2 Pointeurs et tableaux à plusieurs dimensions .......................................................... 74 4.5.3 Pointeurs et chaînes de caractères ........................................................................... 76 4.6 Pointeurs et structures .................................................................................................... 77 4.6.1 Pointeur sur une structure ....................................................................................... 78 4.6.2 Structures auto-référencées ..................................................................................... 79 Pointeurs ........................................................................................... 81 Chapitre 5 : Les fonctions ............................................................... 97 5.1 Définition d'une fonction ............................................................................................... 97 5.2 Appel d'une fonction ...................................................................................................... 98 5.3 Déclaration d'une fonction ............................................................................................. 99 5.4 Durée de vie des variables ........................................................................................... 100 5.4.1 Variables globales ................................................................................................. 101 5.4.2 Variables locales ................................................................................................... 102 5.5 Transmission des paramètres d'une fonction : ............................................................. 104 5.6 Les qualificateurs de type const et volatile .................................................................. 106 Cours C Par HIDOURI Sommaire 5.7 La fonction main .......................................................................................................... 107 5.8 Pointeur sur une fonction ............................................................................................. 109 5.9 Fonctions avec un nombre variable de paramètres ...................................................... 115 1 Décalage circulaire d'un entier long non signé .............................................................. 117 2 Incrémentation des éléments de la diagonale d'une matrice entière lue dans un fichier 117 3 Distribution des poids d'un code linéaire binaire ........................................................... 118 3.1 Lecture et stockage de la matrice génératrice ......................................................... 118 3.2 Poids de Hamming d'un vecteur binaire ................................................................. 118 3.3 Distribution des poids ............................................................................................. 118 3.4 Passage des caractéristiques du code en arguments du programme ....................... 119 Chapitre 6 Les directives au préprocesseur ................................ 128 6.1 La directive #include .................................................................................................... 128 6.2 La directive #define ..................................................................................................... 128 6.2.1 Définition de constantes symboliques ................................................................... 129 6.2.2 Définition de macros ............................................................................................. 129 6.3 La compilation conditionnelle : ................................................................................... 130 6.3.1 Condition liée à la valeur d'une expression ........................................................... 130 6.3.2 Condition liée à l'existence d'un symbole ............................................................. 131 Chapitre 7 : La gestion des fichiers .............................................. 133 7.1 Ouverture et fermeture d'un fichier .............................................................................. 133 7.1.1 La fonction fopen .................................................................................................. 133 7.1.2 La fonction fclose .................................................................................................. 135 7.2. Les entrées-sorties formatées ....................................................................................... 135 7.2.1 La fonction d'écriture fprintf ................................................................................. 135 7.2.2 La fonction de saisie fscanf ................................................................................... 135 7.3 Impression et lecture de caractères: ............................................................................. 136 7.4 Relecture d'un caractère ............................................................................................... 137 7.5 Les entrées-sorties binaires .......................................................................................... 138 7.6 Positionnement dans un fichier .................................................................................... 140 Chapitre 8 : La programmation modulaire ................................. 143 8.1 Principes élémentaires ................................................................................................. 143 8.2 La compilation séparée : .............................................................................................. 145 8.2.1 Fichier en-tête d'un fichier source ......................................................................... 145 8.2.2 Variables partagées ............................................................................................... 148 8.3 L'utilitaire make ........................................................................................................... 148 8.3.1 Principe de base .................................................................................................... 148 8.3.2 Création d'un Makefile .......................................................................................... 149 8.3.3 Macros et abbréviations ........................................................................................ 151 Cours C Par HIDOURI Sommaire 8.3.4 Règles générales de compilation ........................................................................... 153 Programmes de conversion binaire-hexa ...................................... 155 Chapitre 1 : Les bases de la programmation en C 1.1 Historique : Le C a été conçu en 1972 par Dennis Richie et Ken Thompson, chercheurs aux Bell Labs, afin de développer un système d'exploitation UNIX sur un DEC PDP-11. En 1978, Brian Kernighan et Dennis Richie publient la définition classique du C dans le livre The C Programming language [6]. Le C devenant de plus en plus populaire dans les années 80, plusieurs groupes mirent sur le marché des compilateurs comportant des extensions particulières. En 1983, l'ANSI (American National Standards Institute) décida de normaliser le langage ; ce travail s'acheva en 1989 par la définition de la norme ANSI C. Celle-ci fut reprise telle quelle par l'ISO (International Standards Organization) en 1990. C'est ce standard, ANSI C, qui est décrit dans le présent document. 1.2 La compilation : Le C est un langage compilé (par opposition aux langages interprétés). Cela signifie qu'un programme C est décrit par un fichier texte, appelé fichier source. Ce fichier n'étant évidemment pas exécutable par le microprocesseur, il faut le traduire en langage machine. Cette opération est effectuée par un programme appelé compilateur. La compilation se décompose en fait en 4 phases successives : 1. Le traitement par le préprocesseur : le fichier source ( .c) est analysé par le préprocesseur qui effectue des transformations purement textuelles (remplacement de chaînes de caractères, inclusion d'autres fichiers source ...). Cela génère un fichier .i 2. La compilation : la compilation proprement dite traduit le fichier généré par le préprocesseur en assembleur (fichier .s), c'est-à-dire en une suite d'instructions du microprocesseur qui utilisent des mnémoniques rendant la lecture possible. Cours C Par HIDOURI Sommaire 3. L'assemblage : cette opération transforme le code assembleur en un fichier binaire (fichier objet .o), c'est-à-dire en instructions directement compréhensibles par le processeur. Généralement, la compilation et l'assemblage se font dans la foulée, sauf si l'on spécifie explicitement que l'on veut le code assembleur. Le fichier produit par l'assemblage est appelé fichier objet. 4. L'édition de liens : un programme est souvent séparé en plusieurs fichiers source, pour des raisons de clarté mais aussi parce qu'il fait généralement appel à des librairies de fonctions standard déjà écrites. Une fois chaque code source assemblé, il faut donc lier entre eux les différents fichiers objets. L'édition de liens produit alors un fichier dit exécutable( .exe). Les différents types de fichiers utilisés lors de la compilation sont distingués par leur suffixe. Les fichiers source sont suffixés par .c, les fichiers prétraités par le préprocesseur par .i, les fichiers assembleur par .s, et les fichiers objet par .o. Les fichiers objets correspondant aux librairies pré-compilées ont pour suffixe .a Le compilateur C sous UNIX s'appelle cc. On utilisera de préférence le compilateur gcc du projet GNU. Ce compilateur est livré gratuitement avec sa documentation et ses sources. Par défaut, gcc active toutes les étapes de la compilation. On le lance par la commande gcc [options] fichier.c [-llibrairies] Par défaut, le fichier exécutable s'appelle a.out. Le nom de l'exécutable peut être modifié à l'aide de l'option -o. Les éventuelles librairies sont déclarées par la chaîne -llibrairie. Dans ce cas, le système recherche le fichier liblibrairie.a dans le répertoire contenant les librairies pré-compilées (généralement /usr/lib/). Par exemple, pour lier le programme avec la librairie mathématique, on spécifie -lm. Le fichier objet correspondant est libm.a. Lorsque les librairies pré-compilées ne se trouvent pas dans le répertoire usuel, on spécifie leur chemin d'accès par l'option -L. Les options les plus importantes du compilateur gcc sont les suivantes : -c : supprime l'édition de liens ; produit un fichier objet. -E : n'active que le préprocesseur (le résultat est envoyé sur la sortie standard). -g : produit des informations symboliques nécessaires au débogueur. Cours C Par HIDOURI e Sommaire -Inom-de-répertoire : spécifie le répertoire dans lequel doivent être recherchés les fichiers en-têtes à inclure (en plus du répertoire courant). -Lnom-de-répertoire : spécifie le répertoire dans lequel doivent être recherchées les librairies précompilées (en plus du répertoire uploads/Litterature/ best-cours-c.pdf
Documents similaires










-
65
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Sep 13, 2021
- Catégorie Literature / Litté...
- Langue French
- Taille du fichier 0.7058MB