Programmation en langage C
Anne CANTEAUT
INRIA - projet CODES
B.P. 105
78153 Le Chesnay Cedex
http://www-rocq.inria.fr/codes/Anne.Canteaut/COURS C
2
Table des mati`eres 3
Table des mati`eres
1 Les bases de la programmation en C 9
1.1 Historique...................................... 9
1.2 Lacompilation ................................... 9
1.3 Les composants ´el´ementaires du C . . . . . . . . . . . . . . . . . . . . . . . . 11
1.3.1 Lesidenticateurs ............................. 11
1.3.2 Lesmots-clefs................................ 12
1.3.3 Lescommentaires ............................. 12
1.4 Structure d’un programme C . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
1.5 Lestypespr´ed´enis................................. 14
1.5.1 Letypecaract`ere.............................. 14
1.5.2 Lestypesentiers .............................. 16
1.5.3 Lestypesottants ............................. 17
1.6 Lesconstantes ................................... 17
1.6.1 Les constantes enti`eres . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.6.2 Les constantes eelles . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
1.6.3 Les constantes caract`eres . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.6.4 Les constantes chaˆınes de caract`eres . . . . . . . . . . . . . . . . . . . 19
1.7 Lesop´erateurs ................................... 19
1.7.1 Laectation ................................ 19
1.7.2 Les op´erateurs arithm´etiques . . . . . . . . . . . . . . . . . . . . . . . 20
1.7.3 Les op´erateurs relationnels . . . . . . . . . . . . . . . . . . . . . . . . 21
1.7.4 Les op´erateurs logiques bool´eens . . . . . . . . . . . . . . . . . . . . . 21
1.7.5 Les op´erateurs logiques bit `a bit . . . . . . . . . . . . . . . . . . . . . 22
1.7.6 Les op´erateurs d’affectation compos´ee . . . . . . . . . . . . . . . . . . 22
1.7.7 Les op´erateurs d’incr´ementation et de d´ecr´ementation . . . . . . . . . 23
1.7.8 Lop´erateurvirgule............................. 23
1.7.9 L’op´erateur conditionnel ternaire . . . . . . . . . . . . . . . . . . . . . 23
1.7.10 L’op´erateur de conversion de type . . . . . . . . . . . . . . . . . . . . 24
1.7.11 L’op´erateur adresse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
1.7.12 R`egles de priorit´e des op´erateurs . . . . . . . . . . . . . . . . . . . . . 24
1.8 Les instructions de branchement conditionnel . . . . . . . . . . . . . . . . . . 25
1.8.1 Branchement conditionnel if---else .................. 25
1.8.2 Branchement multiple switch ....................... 25
1.9 Lesboucles ..................................... 26
1.9.1 Boucle while ................................ 26
1.9.2 Boucle do---while ............................. 26
4Table des mati`eres
1.9.3 Boucle for ................................. 27
1.10 Les instructions de branchement non conditionnel . . . . . . . . . . . . . . . . 28
1.10.1 Branchement non conditionnel break .................. 28
1.10.2 Branchement non conditionnel continue ................ 28
1.10.3 Branchement non conditionnel goto ................... 29
1.11 Les fonctions d’entr´ees-sorties classiques . . . . . . . . . . . . . . . . . . . . . 29
1.11.1 La fonction d’´ecriture printf ....................... 29
1.11.2 La fonction de saisie scanf ........................ 31
1.11.3 Impression et lecture de caract`eres . . . . . . . . . . . . . . . . . . . . 32
1.12 Les conventions d’´ecriture d’un programme C . . . . . . . . . . . . . . . . . . 33
2 Les types compos´es 35
2.1 Lestableaux .................................... 35
2.2 Lesstructures.................................... 37
2.3 Leschampsdebits................................. 39
2.4 Lesunions...................................... 39
2.5 Les´enum´erations.................................. 40
2.6 D´efinition de types compos´es avec typedef ................... 41
3 Les pointeurs 43
3.1 Adresse et valeur d’un objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
3.2 Notiondepointeur................................. 44
3.3 Arithm´etique des pointeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
3.4 Allocationdynamique ............................... 47
3.5 Pointeursettableaux................................ 50
3.5.1 Pointeurs et tableaux `a une dimension . . . . . . . . . . . . . . . . . . 50
3.5.2 Pointeurs et tableaux `a plusieurs dimensions . . . . . . . . . . . . . . 52
3.5.3 Pointeurs et chaˆınes de caract`eres . . . . . . . . . . . . . . . . . . . . 53
3.6 Pointeursetstructures............................... 54
3.6.1 Pointeur sur une structure . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.6.2 Structures auto-r´ef´erenc´ees . . . . . . . . . . . . . . . . . . . . . . . . 56
4 Les fonctions 59
4.1 D´efinition d’une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.2 Appeldunefonction................................ 60
4.3 D´eclaration d’une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60
4.4 Dur´ee de vie des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
4.4.1 Variablesglobales ............................. 62
4.4.2 Variableslocales .............................. 63
4.5 Transmission des param`etres d’une fonction . . . . . . . . . . . . . . . . . . . 64
4.6 Les qualificateurs de type const et volatile .................. 66
4.7 La fonction main .................................. 67
4.8 Pointeur sur une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
4.9 Fonctions avec un nombre variable de param`etres . . . . . . . . . . . . . . . . 74
Table des mati`eres 5
5 Les directives au pr´eprocesseur 77
5.1 La directive #include ............................... 77
5.2 La directive #define ................................ 77
5.2.1 D´efinition de constantes symboliques . . . . . . . . . . . . . . . . . . . 78
5.2.2 D´efinition de macros . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
5.3 La compilation conditionnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
5.3.1 Condition li´ee `a la valeur d’une expression . . . . . . . . . . . . . . . . 79
5.3.2 Condition li´ee `a l’existence d’un symbole . . . . . . . . . . . . . . . . 80
6 La gestion des fichiers 81
6.1 Ouverture et fermeture d’un fichier . . . . . . . . . . . . . . . . . . . . . . . . 81
6.1.1 La fonction fopen ............................. 81
6.1.2 La fonction fclose ............................. 82
6.2 Les entr´ees-sorties format´ees . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
6.2.1 La fonction d’´ecriture fprintf ...................... 83
6.2.2 La fonction de saisie fscanf ........................ 83
6.3 Impression et lecture de caract`eres . . . . . . . . . . . . . . . . . . . . . . . . 83
6.4 Relecture d’un caract`ere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
6.5 Les entr´ees-sorties binaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
6.6 Positionnement dans un fichier . . . . . . . . . . . . . . . . . . . . . . . . . . 86
7 La programmation modulaire 89
7.1 Principes ´el´ementaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
7.2 Lacompilations´epar´ee............................... 90
7.2.1 Fichier en-tˆete d’un fichier source . . . . . . . . . . . . . . . . . . . . . 91
7.2.2 Variablespartag´ees............................. 93
7.3 L’utilitaire make .................................. 93
7.3.1 Principedebase .............................. 93
7.3.2 Cr´eation d’un Makefile .......................... 94
7.3.3 Macros et abbr´eviations . . . . . . . . . . . . . . . . . . . . . . . . . . 96
7.3.4 R`egles en´erales de compilation . . . . . . . . . . . . . . . . . . . . . . 97
A La librairie standard 99
A.1 Entr´ees-sorties <stdio.h>............................ 99
A.1.1 Manipulation de fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . 99
A.1.2 Entr´ees et sorties format´ees . . . . . . . . . . . . . . . . . . . . . . . . 99
A.1.3 Impression et lecture de caract`eres . . . . . . . . . . . . . . . . . . . . 100
A.2 Manipulation de caract`eres <ctype.h>..................... 101
A.3 Manipulation de chaˆınes de caract`eres <string.h>.............. 102
A.4 Fonctions math´ematiques <math.h>....................... 103
A.5 Utilitaires divers <stdlib.h>.......................... 104
A.5.1 Allocation dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
A.5.2 Conversion de chaˆınes de caract`eres en nombres . . . . . . . . . . . . . 104
A.5.3 en´eration de nombres pseudo-al´eatoires . . . . . . . . . . . . . . . . 104
A.5.4 Arithm´etique sur les entiers . . . . . . . . . . . . . . . . . . . . . . . . 104
A.5.5 Rechercheettri............................... 105
A.5.6 Communication avec l’environnement . . . . . . . . . . . . . . . . . . 105
1 / 133 100%
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !