Support de Cours de Langage C

Christian Bac

9 novembre 2004

Table des matières

Avant-propos
1 Historique et présentation
 1.1 Historique
 1.2 Présentation du langage
 1.3 Idées fondamentales
 1.4 Enchaîneur de passes
  1.4.1 Pré-processeur
  1.4.2 Compilateur
  1.4.3 Optimiseur de code
  1.4.4 Assembleur
  1.4.5 Éditeur de liens
  1.4.6 Quelques options de cc
2 Généralités sur la syntaxe
 2.1 Mise en page
  2.1.1 Identifiant
  2.1.2 Espaces lexicaux
 2.2 Mots réservés
 2.3 Constantes
 2.4 Instructions
3 Types et variables
 3.1 Types de base
  3.1.1 Types entiers
  3.1.2 Types avec parties décimales
  3.1.3 Tailles des types
 3.2 Constantes associées aux types de base
  3.2.1 Constantes de type entier
  3.2.2 Constantes avec partie décimale
  3.2.3 Constantes de type caractère
  3.2.4 Chaînes de caractères
 3.3 Qualificatifs
 3.4 Taille et normalisation
 3.5 Définition de variables
 3.6 Types dérivés des types de base
  3.6.1 Tableaux et structures
  3.6.2 Pointeurs
 3.7 Initialisation de variables
 3.8 Conversion de type
  3.8.1 Conversions implicites
 3.9 Déclaration et définition
 3.10 Exercices sur les types et variables
  3.10.1 Exercice 1
  3.10.2 Exercice 2
  3.10.3 Exercice 3
  3.10.4 Exercice 4
4 Eléments de base
 4.1 Bonjour
 4.2 Lire et écrire
 4.3 Quelques opérations
 4.4 Plus sur printf() et scanf()
 4.5 Exercices sur printf() et scanf()
  4.5.1 Exercice 1
  4.5.2 Exercice 2
  4.5.3 Exercice 3
  4.5.4 Exercice 4
5 Opérateurs et expressions
 5.1 Opérateurs un-aires
  5.1.1 Opérateur de référencement
  5.1.2 Opérateur de déréférencement ou indirection
  5.1.3 Utilisation des & et *
  5.1.4 Opérateurs d’incrémentation et de décrémentation
  5.1.5 Opérateur de taille
  5.1.6 Opérateur de négation logique
  5.1.7 Plus et moins unaires
  5.1.8 Complément à un
 5.2 Opérateurs binaires
  5.2.1 Opérateurs arithmétiques
  5.2.2 Opérateurs manipulant les bits
  5.2.3 Opérateurs de décalage
  5.2.4 Opérateurs de relation
  5.2.5 Opérateur binaire d’affectation et de succession
  5.2.6 Opérateurs d’affectation
  5.2.7 Opérateur ternaire
  5.2.8 Précédence des opérateurs
 5.3 Expressions
 5.4 Instructions
 5.5 Exercices sur les opérateurs et les expressions
  5.5.1 Exercice 1
  5.5.2 Exercice 2
  5.5.3 Exercice 3
  5.5.4 Exercice 4
  5.5.5 Exercice 5 : Operateur ternaire
  5.5.6 Exercice 6
6 Instructions de contrôle
 6.1 Instructions conditionnelles
  6.1.1 Test
  6.1.2 Table de branchement
 6.2 Instructions itératives
  6.2.1 while
  6.2.2 for
  6.2.3 do while
  6.2.4 Remarques sur les instructions itératives
 6.3 Ruptures de séquence
  6.3.1 continue
  6.3.2 break
  6.3.3 goto
  6.3.4 return
 6.4 Exercices sur les instructions de contrôle
  6.4.1 Exercice 1
  6.4.2 Exercice 2
  6.4.3 Exercice 3
  6.4.4 Exercice 4
 6.5 Exercices sur les ruptures de séquence
  6.5.1 Exercice 5
  6.5.2 Exercice 6
7 Programmation structurée
 7.1 Historique
 7.2 Idées fondamentales
 7.3 Langage C et programmation structurée
  7.3.1 Ambitions du langage C
  7.3.2 C et structures fondamentales
 7.4 Quelques exemples
  7.4.1 Exemple avec des tests
  7.4.2 Exemple avec une boucle
8 Fonctions
 8.1 Définition d’une fonction
 8.2 Retour de fonction
 8.3 Passage des paramètres
  8.3.1 Passage de constantes
  8.3.2 Passage de variables
 8.4 Utilisation de pointeurs en paramètres
 8.5 Conversion de type lors des appels
 8.6 Récursivité
 8.7 Arguments de la fonction main()
 8.8 Pointeur de fonction
 8.9 Étapes d’un appel de fonction
 8.10 Exercices sur les fonctions
  8.10.1 Exercice 1
  8.10.2 Exercice 2
  8.10.3 Exercice 3
9 Compilations séparées
 9.1 Programme
 9.2 Fichier source
 9.3 Visibilité
  9.3.1 Espaces de nommage et visibilité
  9.3.2 Extension de la visibilité
 9.4 Prototypes des fonctions
 9.5 Fonctions externes
 9.6 Fonctions définies ultérieurement
 9.7 Vérification des prototypes
 9.8 Multiples déclarations et définitions
  9.8.1 Fichiers d’inclusion
  9.8.2 Réduction de la visibilité
  9.8.3 Variables locales rémanentes
  9.8.4 Travailler en groupe
 9.9 Exercices sur les fonctions et la visibilité des variables
  9.9.1 Exercice 1 : simulation d’un ascenseur
  9.9.2 Exercice 2 : racines d’une équation du deuxième degré
  9.9.3 Exercice 3 : utilisation des fichiers d’inclusion
10 Pointeurs et tableaux
 10.1 Tableaux à une dimension
 10.2 Arithmétique d’adresse et tableaux
 10.3 Tableaux multidimensionnels
 10.4 Pointeurs et tableaux
 10.5 Tableau de pointeurs
 10.6 Pointeurs vers un tableau
 10.7 Exercices sur les tableaux et les pointeurs
  10.7.1 Exercice 1 : tri de tableaux d’entiers
11 Structures
 11.1 Définition
 11.2 Utilisation
  11.2.1 Opérations sur les champs
  11.2.2 Opérations sur la variable dans son ensemble
 11.3 Structures et listes chaînées
 11.4 Champs de bits
 11.5 Exercices sur les structures
  11.5.1 Exercice 1
  11.5.2 Exercice 2
12 Unions
 12.1 Définition
 12.2 Accès aux champs
 12.3 Exercices sur les unions et les champs de bits
  12.3.1 Exercice 1
  12.3.2 Exercice 2
13 Énumérations
 13.1 Définition
 13.2 Utilisation
 13.3 Limites des énumérations
14 Types synonymes et complexes
 14.1 Types synonymes
 14.2 Types complexes
 14.3 Fonctions et tableaux
 14.4 Exercices sur les déclarations complexes
  14.4.1 Exercice 1
  14.4.2 Exercice 2
  14.4.3 Exercice 3
15 Préprocesseur
 15.1 Commentaires
 15.2 Inclusion de fichiers
 15.3 Variables de pré-compilation
  15.3.1 Définition de constantes de compilation
  15.3.2 Définition destinée à la sélection
 15.4 Définition de macro-expressions
 15.5 Effacement d’une définition
 15.6 Définition à l’appel de l’enchaîneur de passes
 15.7 Sélection de code
  15.7.1 Sélection avec #if
  15.7.2 Sélection avec #ifdef et #ifndef
 15.8 Exercices sur le préprocesseur
  15.8.1 Exercice 1
  15.8.2 Exercice 2
16 Entrées-sorties de la bibliothèque
 16.1 entrées-sorties standards
  16.1.1 Échanges caractère par caractère
  16.1.2 Échanges ligne par ligne
  16.1.3 Échanges avec formats
 16.2 Ouverture d’un fichier
 16.3 Fermeture d’un fichier
 16.4 Accès au contenu du fichier
  16.4.1 Accès caractère par caractère
  16.4.2 Accès ligne par ligne
  16.4.3 Accès enregistrement par enregistrement
 16.5 entrées-sorties formatées
  16.5.1 Formats : cas de la lecture
  16.5.2 Formats : cas de l’écriture
  16.5.3 Conversion sur les entrées-sorties standards
  16.5.4 Conversion en mémoire
  16.5.5 Conversion dans les fichiers
 16.6 Déplacement dans le fichier
 16.7 Gestion des tampons
 16.8 Gestion des erreurs
17 Autres fonctions de la bibliothèque
 17.1 Fonctions de manipulation de chaînes de caractères
 17.2 Types de caractères
 17.3 Quelques fonctions générales
  17.3.1 system()
  17.3.2 exit()
GNU Free Documentation License
 .4 Applicability and Definitions
 .5 Verbatim Copying
 .6 Copying in Quantity
 .7 Modifications
 .8 Combining Documents
 .9 Collections of Documents
 .10 Aggregation With Independent Works
 .11 Translation
 .12 Termination
 .13 Future Revisions of This License
Liste des programmes exemples
Liste des figures
Liste des tableaux
Bibliographie
Index

Table des programmes exemples

3.1 Exemple de fichier limits.h
3.2 Exemple de fichier float.h
3.3 Exemple de fichier stddef.h
3.4 Suggestion de corrigé chapitre 3 exercice 1
3.5 Suggestion de corrigé chapitre 3 exercice 1 second fichier
3.6 Suggestion de corrigé chapitre 3 exercice 2
3.7 Suggestion de corrigé chapitre 3 exercice 3
3.8 Suggestion de corrigé chapitre 3 exercice 4
4.1 Lecture et écriture de chaîne par scanf() et printf()
4.2 Lectures multiples avec scanf()
4.3 Suggestion de corrigé chapitre 4 exercice 1
4.4 Suggestion de corrigé chapitre 4 exercice 2
4.5 Suggestion de corrigé chapitre 4 exercice 3
4.6 Suggestion de corrigé chapitre 4 exercice 4
5.1 Définitions de variables et d’un pointeur
5.2 Utilisation des opérateurs de masquage
5.3 Utilisation des opérateurs de décalage
5.4 Suggestion de corrigé chapitre 5 exercice 1
5.5 Suggestion de corrigé chapitre 5 exercice 2
5.6 Suggestion de corrigé chapitre 5 exercice 3
5.7 Suggestion de corrigé chapitre 5 exercice 4
5.8 Suggestion de corrigé chapitre 5 exercice 5
5.9 Suggestion de corrigé chapitre 5 exercice 6
6.1 Exemple de tests imbriqués
6.2 Exemple de table de sauts
6.3 Exemple de table de sauts
6.4 Exemple de table de sauts
6.5 Lecture d’une ligne avec while
6.6 Recopie d’une chaîne avec une boucle while
6.7 Lecture d’une ligne avec for
6.8 Décomposition des puissances de dix d’un nombre avec un do while
6.9 Utilisation du continue dans une boucle for
6.10 Utilisation des ruptures de séquence dans une boucle for
6.11 Lecture d’une ligne avec for et break
6.12 Utilisation de l’infâme goto
6.13 Utilisation de plusieurs return
6.14 Suggestion de corrigé chapitre 6 exercice 1
6.15 Suggestion de corrigé chapitre 6 exercice 2
6.16 Suggestion de corrigé chapitre 6 exercice 3
6.17 Suggestion de corrigé chapitre 6 exercice 4
6.18 Suggestion de corrigé chapitre 6 exercice 5
6.19 Suggestion de corrigé chapitre 6 exercice 6
7.1 Ensemble de tests non structuré
7.2 Ensemble de tests structuré non mis en page
7.3 Ensemble de tests structuré et mis en page
7.4 Ensemble de tests structuré et mis en page avec commentaires
7.5 Ensemble de tests structuré, mis en page et étiqueté
7.6 Ensemble de tests par table de branchement
7.7 Boucle réalisée par des tests et sauts
7.8 Boucle réalisée par un for()
7.9 Boucle réalisée par un for() et mise en page
8.1 Affichage des arguments de main()
8.2 Arguments de main() caractères un-à-un
8.3 Suggestion de corrigé chapitre 8 exercice 1
8.4 Suggestion de corrigé chapitre 8 exercice 2
8.5 Suggestion de corrigé chapitre 8 exercice 3
9.1 Exemples de prototypes de fonctions
9.2 Déclarations candidates multiple d’une variable
9.3 Déclaration explicite et déclaration candidate d’une variable
9.4 Suggestion de corrigé chapitre 9 exercice 1 fonctions
9.5 Suggestion de corrigé chapitre 9 exercice 1 main()
9.6 Suggestion de corrigé chapitre 9 exercice 2 fonctions
9.7 Suggestion de corrigé chapitre 9 exercice 2 main()
9.8 Suggestion de corrigé chapitre 9 exercice 3 fichier d’inclusion
9.9 Suggestion de corrigé chapitre 9 exercice 3 main()
10.1 Définition de tableaux et initialisations
10.2 Accès à un tableau à deux dimensions avec un pointeur
10.3 Algorithme d’un tri simple
10.4 Suggestion de corrigé chapitre 10 exercice 1 fichier d’inclusion
10.5 Suggestion de corrigé chapitre 10 exercice 1 fonctions
10.6 Suggestion de corrigé chapitre 10 exercice 1 main
10.7 Suggestion de corrigé chapitre 10 exercice 1 fonction de tri
11.1 Définition de structures
11.2 Définition de structures
11.3 Structures et listes chaînées
11.4 Structures et champs de bits
11.5 Suggestion de corrigé chapitre 11 exercice 1
11.6 Suggestion de corrigé chapitre 11 exercice 2
12.1 Utilisation d’une union
12.2 Utilisation d’une union
12.3 Suggestion de corrigé chapitre 12 exercice 1
12.4 Suggestion de corrigé chapitre 12 exercice 2
13.1 Utilisation d’énumérations
14.1 Suggestion de corrigé chapitre 14 exercice 1
14.2 Suggestion de corrigé chapitre 14 exercice 2
14.3 Suggestion de corrigé chapitre 14 exercice 3 fichier d’inclusion
14.4 Suggestion de corrigé chapitre 14 exercice 3 fonctions
14.5 Suggestion de corrigé chapitre 14 exercice 3
15.1 Traitement des commentaires
15.2 Erreur due au traitement des commentaires
15.3 Interprétation des variables par le préprocesseur
15.4 Evaluation de macros par CPP
15.5 Exemple d’utilisation du #if
15.6 Exemples de sélection de code par #ifdef
15.7 Sélection de code par #ifdef imbriqués
15.8 Suggestion de corrigé chapitre 15 exercice 1 définition des macros
15.9 Suggestion de corrigé chapitre 15 exercice 1
15.10 Suggestion de corrigé chapitre 15 exercice 2
16.1 Lecture et écriture caractère par caractère sur les fichiers standards
16.2 Lecture ligne par ligne sur les fichiers standards
16.3 Ouverture d’un fichier
16.4 Ouverture et fermeture d’un fichier
16.5 Lecture caractère par caractère d’un fichier après ouverture
16.6 Lecture ligne à ligne d’un fichier après ouverture
16.7 Lecture d’enregistrements dans un fichier
16.8 Lecture avec format dans un fichier texte
16.9 Modifications par déplacement dans un fichier
16.10 Déplacements dans un fichier avec fgetpos()
16.11 Gestion des cas d’erreurs pendant la manipulation d’un fichier
17.1 Utilisation de l’appel système exit()

Table des figures

1.1 Structure d’un programme C
1.2 Fichier source
1.3 Structure d’une fonction C
3.1 Chaîne de caractères constante
4.1 Programme qui écrit Bonjour
5.1 Exemple de relation entre pointeur et variable
5.2 Mise en relation d’un pointeur et d’une variable
6.1 Organigramme du while
6.2 Organigramme du for
6.3 Organigramme du do while
6.4 break et continue dans un for
6.5 break et continue dans un while
6.6 break et continue dans un do while
8.1 Structure d’une fonction
8.2 Pile et passage de constantes
8.3 Pile et passage de variables
8.4 Pile et passage de variables avec référence
8.5 Arguments de main()
9.1 Du source à l’exécutable
9.2 Survol d’un fichier source
9.3 Exemple de visibilité
9.4 Visibilité des variables entre modules
9.5 Visibilité des fonctions entre modules
9.6 Visibilité des fonctions dans un module
9.7 Utilisation de fichier d’inclusion
9.8 Réduction de visibilité
9.9 Variables locales statiques
10.1 Tableau de dix entiers
10.2 Tableau de dix entiers initialisé
10.3 Adresses dans un tableau de dix entiers
10.4 Tableau à deux dimensions
10.5 Pointeur et tableau
10.6 Tableau de pointeurs sur des variables dans un tableau
10.7 Accès à un tableau à deux dimensions avec un pointeur

Liste des tableaux

3.1 Longueur des types de base sur quelques machines
3.2 Variables et classes mémoire
3.3 Exemples d’initialisations
3.4 Exemples de conversion implicite
4.1 Conversions usuelles de printf et scanf
4.2 Exemples de printf et scanf
5.1 Liste des opérateurs unaires
5.2 Liste des opérateurs binaires
5.3 Liste des opérateurs binaires d’affectation
5.4 Exemples d’opérateurs binaires d’affectation
5.5 Opérateur ternaire
5.6 Précédence des opérateurs
6.1 Syntaxe du while
6.2 Comparaison du for et du while
7.1 C et Structures Fondamentales
8.1 Exemples de définition de fonctions
8.2 Exemples d’appels de fonctions
8.3 Pointeurs et appels de fonctions
8.4 Conversions de type un-aire
9.1 Règle fondamentale de visibilité
10.1 Addition d’un entier à un pointeur
10.2 Soustraction de deux pointeurs
11.1 Accès aux champs d’une structure
14.1 Exemples d’objets complexes
15.1 Utilisation d’une constante de compilation
16.1 Code de conversion pour scanf()
16.2 Codes de conversion pour printf()
16.3 Modificateurs de format pour printf
17.1 Fonctions de manipulation simples de chaînes de caractères
17.2 Fonctions de manipulation de motifs dans des chaînes de caractères

Bibliographie

[BK78]    D.M. Ritchie B.W. Kernighan. The C Programming Language. Prentice Hall Inc., Englewood Cliffs, New Jersey, Mars 1978.

[BK88]    D.M. Ritchie B.W. Kernighan. The C Programming Language Second Edition. Prentice Hall Inc., Englewood Cliffs, New Jersey, 1988.

[Bou78]   S. Bourne. The UNIX Shell. Bell System Technical Journal, 57(6) :1971-1990, July/August 1978.

[Dax92]   P. Dax. Langage C 7eme Edition. Eyrolles, 61, Boulevard Saint-Germain, 75005 Paris, 1992.

[Dij65]    E.W. Dijkstra. Programming Considered as a Human Activity. In Proc. IFIP Congress, pages 213-217, 1965.

[Dij68]    E.W. Dijkstra. GO TO Statements Considered Harmful. Communications of the ACM, 11(3) :147-148, Mars 1968.

[DR78]    S.C. Johnson D.M. Ritchie. Portability of C Programs and the UNIX Operating System. Bell System Technical Journal, 57(6) :2021-2048, July/August 1978.

[ISO89]   ISO/IEC, editor. Programming Language C. ISO/IEC, 1989.

[ISO99]   ISO/IEC, editor. Programming Language C. ISO/IEC, 1999.

[SJ78]    M.E. Lesk S.C. Johnson. Language Development Tools. Bell System Technical Journal, 57(6) :2155-2176, July/August 1978.

[Str86]    B. Stroustrup. The C++ Programming Language. Prentice Hall Inc., Englewood Cliffs, New Jersey, 1986.

[Wir71]   N. Wirth. Program Development by Stepwise Refinement. Communications of the ACM, 14(4) :221-227, Avril 1971.

[Wir74]   N. Wirth. On the Composition of Well Structured Programs. ACM Computing Survey, 6(4) :247-259, Decembre 1974.

Index

#define, 167, 170, 172
#else, 167, 172
#endif, 167, 172
#if, 167, 172, 173
#ifdef, 167, 172, 173
#ifndef, 167, 172, 173
#include, 167, 168, 181
#undef, 167, 171

accolade, 5, 10, 20, 28, 47, 85, 96, 131
adresse, 11, 15, 19, 20, 23, 24, 29, 38, 39, 48, 97, 98, 103, 105-107, 115, 122, 131-135, 137, 138, 146, 147, 152, 153, 159, 160, 162, 183, 184, 189-192, 195, 196, 198
affectation, 3, 15, 17, 19, 20, 29, 37, 43, 44, 47, 49, 57, 62, 101, 116, 134, 146
alias, 6, 167
appel, 1-3, 5, 11, 17, 19, 22-24, 28, 29, 39, 40, 42, 43, 46, 63, 65, 95-98, 101, 103, 105-107, 115-118, 121-123, 159, 160, 162, 163, 168, 170-172, 182-184, 186, 187, 190, 191, 194, 196-199, 206
argument, 11, 23, 27, 28, 65, 97, 98, 103, 105, 106, 113, 116-118, 123, 135, 138, 146, 147, 170, 182-191, 194-199
associativité, 46, 47, 160

bibliothèque, 3, 6, 27, 28, 63, 96, 181, 185, 199, 205
binaire, 2, 5, 40-42, 44, 47, 103, 116, 147, 172, 185, 186, 190, 191, 196, 197
bit, 2, 3, 11-13, 15, 20, 22, 40-44, 47, 49, 101, 147, 148, 153, 182
bloc, 5, 17, 47, 62, 63, 65, 95, 96, 116, 121, 198
booléen, 57, 170
boucle, 5, 60-64, 66, 84-86, 123, 163

caractère, 1-3, 6, 9-11, 13-15, 19-25, 27-29, 31, 32, 44, 59, 60, 62-66, 86, 101, 103, 134, 152, 153, 167, 170, 181-185, 187-196, 198-200, 205, 206
case, 46, 59, 101, 135
chaîne, 2, 3, 6, 10, 14, 15, 21, 23, 28, 29, 31, 32, 60, 65, 66, 86, 103, 118, 167, 170, 181, 183-185, 189-193, 195, 199, 205, 206
champ, 9, 22, 101, 145-148, 151-153, 192-194, 196, 197, 200
champs
    de bit, 22, 101, 147, 148
char, 1, 103, 134, 184, 185, 189, 194-196, 198, 199
chargeable, 6
classe, 10, 11, 17, 106, 115, 116
commentaire, 6, 85, 113, 167, 184
compilateur, 1-3, 5-7, 9, 11-13, 15, 16, 18-21, 27, 28, 40, 41, 46, 60, 65, 84, 106, 113, 115, 116, 118, 119, 132, 134, 135, 138, 146, 151, 152, 157, 159, 167-170, 172, 173
compilation, 2, 5, 7, 9, 18, 25, 28, 84, 95, 113, 115, 116, 118, 120, 122, 167, 168, 170-173
constante, 9-11, 13-15, 17, 21, 22, 37, 40, 59, 98, 101, 105, 131, 132, 135, 155-157, 170, 172, 173, 181
continue, 10, 59, 62, 86, 106
contrôle, 1, 5, 6, 27, 43, 47, 57, 60-62, 116, 118, 122, 123, 195, 198, 205
conversion, 21, 22, 29, 101, 134, 152, 192-196
corps, 5, 23, 65, 95, 96, 113, 118, 170

déclaration, 3, 18, 23, 29, 95, 96, 113, 116-121, 131, 134, 137, 159, 160, 162
default, 10
définition, 3, 5, 6, 11, 12, 15-20, 23, 28, 38, 40, 43, 47, 83, 95, 96, 106, 113, 116, 118, 119, 121, 131, 133-135, 145-148, 151, 155, 159, 160, 163, 167, 170-173, 181, 205
double, 10, 43, 65, 123
durée
    de vie, 17, 18, 121, 122

écrire, 1, 3, 12, 15, 23, 24, 27, 29, 31, 32, 37, 43, 44, 48, 49, 62, 66, 83-85, 97, 101, 117, 132, 157, 160, 163, 182, 184, 187, 189-194, 197, 206
écriture, 2, 28, 29, 31, 42, 59, 66, 137, 138, 181-190, 192-196, 198, 199
édition
    de lien, 3, 6, 7, 23, 103, 116
else, 10, 57
enchaîneur
    de passe, 5, 171, 172
entier, 1, 11-13, 15, 19, 20, 22-25, 29, 31, 38-44, 48, 49, 62, 63, 66, 85, 97, 98, 101, 103, 106, 107, 116, 131-134, 137, 148, 151-153, 155-157, 159, 162, 163, 173, 182, 187, 188, 191-194, 196, 197, 199
entry, 10
énumération, 22, 101, 155-157
étiquette, 9, 10, 65, 85
exécutable, 2, 5, 7, 42, 103, 105, 116, 172, 196
exécution, 5, 11, 15, 17-19, 39, 40, 59, 61-63, 65, 97, 98, 101, 103, 106, 121, 122, 134, 172, 185, 206
expression, 5, 6, 10, 11, 21, 22, 37-47, 49, 57, 59-62, 65, 96, 101, 106, 132, 135, 156, 157, 159, 167, 170, 171, 173, 181, 182, 205, 206
extern, 10
externe, 3, 23, 113, 192, 193

faux, 40, 57, 134
fichier, 2, 3, 5-7, 11, 15, 16, 18, 23, 24, 27, 28, 31, 40-43, 60, 62, 64, 96, 103, 113, 115-121, 123, 138, 156, 167-173, 181-191, 195-200, 205, 206
float, 10, 116
flottant, 23-25, 31, 32, 163, 173, 193
fonction, 3, 5, 6, 9-11, 16, 17, 22, 23, 27-29, 31, 46, 57, 60, 63, 65, 86, 95-98, 101, 103, 105-107, 113, 115-123, 134, 135, 137, 138, 146, 147, 160, 162, 163, 167, 170, 173, 174, 181-192, 194-200, 205, 206
for, 3, 10, 61
format, 6, 9, 28, 29, 31, 103, 182, 184, 185, 187, 192-196
fortran, 10

global, 17, 20, 23, 24, 116, 122
goto, 10

if, 10, 19, 57, 160
initialisation, 10, 11, 17, 20, 21, 61, 62, 119, 122, 131, 132, 134
instruction, 2, 5, 6, 10, 20, 23, 28, 29, 38, 39, 42, 43, 47, 49, 57-66, 83, 84, 95, 96, 103, 106, 113, 170, 172, 197, 206
int, 10, 41, 63, 118, 119, 134, 189, 198
interface, 5, 27, 28, 95, 96, 101, 115, 117, 120, 190

langage, 1-3, 5, 7, 9-12, 16, 23, 27, 29, 37, 40, 41, 44, 46, 47, 57, 59, 83-85, 95, 97, 103, 113, 117-121, 131, 132, 145-147, 155, 156, 162, 173, 181, 184, 187, 206
lecture, 6, 15, 28, 29, 31, 32, 42, 46, 62, 63, 66, 83, 85, 123, 137, 160, 167, 181-193, 195-197
lire, 27-29, 32, 44, 66, 123, 137, 152, 173, 182, 183, 190, 192, 206
local, 17, 18, 23, 116, 134, 198
long, 10, 15, 22, 25, 40, 116, 192, 194

main, 5, 23, 28, 31, 65, 103, 106, 107, 123, 135, 138, 163
mémoire, 1, 11, 12, 15, 17-20, 28, 38, 42, 95, 97, 98, 101, 103, 113, 116, 121, 131-134, 145, 151, 152, 159, 181, 183, 189-191, 194, 195, 197-199, 206

norme, 1-3, 7, 9, 11, 12, 15, 20, 21, 40, 101, 117, 148, 155, 172, 182, 194, 196

objet, 2, 7, 18, 19, 28, 29, 98, 113, 116, 119, 132-134, 145, 148, 160, 162, 185, 190, 206
octet, 1-3, 11, 12, 14, 15, 38, 40, 60, 132, 147, 181, 182, 188, 191, 196-198
opérateur, 12, 16, 20, 29, 32, 37-48, 57, 62, 66, 133, 160
optimiseur, 5, 6

paramètre, 5, 95-98, 101, 103, 105-107, 115, 198
pile, 17, 97, 98, 101, 103, 105, 106, 134
pointeur, 1, 11, 18-20, 23, 24, 38, 39, 48, 97, 98, 101, 103, 106, 107, 122, 123, 131, 133-135, 137, 138, 147-149, 160, 162, 163, 183, 185-187, 196-198, 206
précédence, 45, 46, 160
préprocesseur, 170-173, 182
printf, 28, 29, 31, 66, 103, 117, 184, 192, 194, 195
procédure, 95
programmation, 2, 3, 5, 63, 66, 83, 84, 118, 181, 184
prototype, 3, 116-118, 120, 160, 181, 186

qualificatif, 11, 12, 15, 18

référence, 2, 3, 6, 18, 23, 40, 116, 118, 170, 186, 187, 189, 191, 195-199
register, 10
relogeable, 6
retour, 11, 14, 31, 45, 63-66, 95-97, 101, 105-107, 146, 173, 182-187, 189, 192, 195-199
return, 10, 65, 96, 103, 206
rupture, 5, 10, 62, 63, 66, 206

scanf, 28, 29, 31, 98, 117, 184, 192-196
short, 10, 41, 192
sizeof, 10, 12, 40, 134, 206
source, 2, 3, 5, 6, 18, 43, 46, 85, 95, 96, 113, 115, 118-120, 138, 167, 170, 172
static, 121
statique, 18, 23, 103, 121, 122
struct, 10, 19
structure, 1-3, 9, 18-20, 47, 83-85, 103, 113, 120, 121, 137, 145-149, 151, 152, 160, 162, 163, 181, 186, 190, 191, 195-199
structuré, 83, 84, 123, 146, 190
système, 1, 2, 5-7, 15, 27, 28, 41, 42, 60, 84, 85, 103, 123, 156, 168, 172, 173, 181, 182, 185, 186, 188, 196, 198, 199, 206

table
    de branchement, 58, 85
tableau, 12, 15, 18-21, 23-25, 28, 29, 37, 41, 44, 46, 48, 60-64, 66, 84, 86, 96-98, 101, 103, 122, 131-135, 137, 138, 146, 147, 149, 159, 160, 162, 163, 167, 170, 181, 183, 185, 189-192
ternaire, 45, 47, 66
test, 5, 42-45, 47, 57, 59-62, 65, 84, 85, 132, 156, 170, 173, 199, 200, 205
type, 1-3, 5, 6, 9-23, 27-29, 31, 38-44, 47, 57, 60, 62, 63, 65, 66, 84, 85, 95-98, 101, 103, 105-107, 113, 115-122, 132-135, 137, 145-148, 151, 152, 155-157, 159, 160, 162, 163, 168, 170, 172, 173, 181, 182, 184-194, 196-199, 205
typedef, 10
types
    prédéfinis, 11, 16

unaire, 12
union, 151, 152, 163
UNIX, 1, 2, 5-7, 27, 28, 41, 42, 60, 85, 103, 134, 156, 168, 182, 188, 196
unsigned, 10

valeur, 2, 11-14, 16, 17, 19-23, 25, 28, 38-45, 47-49, 57, 59-63, 65, 66, 85, 96-98, 101, 103, 105, 106, 115, 122, 131-134, 152, 155-157, 170-173, 182-184, 187-189, 192, 194-199, 206
variable, 3, 5, 6, 9-12, 15-24, 27-29, 31, 32, 37-45, 47, 49, 57, 59, 62, 65, 95-98, 101, 103, 105-107, 113, 115-117, 119-122, 132-135, 137, 145-148, 151, 152, 155-157, 159, 160, 167, 169-173, 184, 192, 195-199
visibilité, 3, 11, 17, 18, 115, 116, 122
void, 10
vrai, 40, 57, 199, 205

while, 62

[  suivant ]