[PDF] Programmation en langage C - Inria de Paris



Previous PDF Next PDF







Programmation en langage C - Inria de Paris

1983, l’ANSI (American National Standards Institute) d´ecida de normaliser le langage; ce travail s’acheva en 1989 par la d´efinition 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´ecrit dans le pr´esent document 1 2 La compilation



C++ Master 1 IM - unicefr

ce langage fut dailleurs« C with classes » Ce fut en 1998 que le C++ fut normalisé pour la première fois Une autre norme corrigée fut adoptée en 2003 Une mise à jour importante fut C++11, suivie de C++14, ajoutant de nombreuses fonctionnalités au langage Toutes ces normes permettent une écriture indépendante du compilateur Le C++



Cours de C++ - LSV

Cours de C++ Franc¸ois Laroussinie Dept d’Informatique, ENS de Cachan 2 novembre 2005



Informatique Théorique : Théorie des Langages, Analyse

Ce cours se propose d’étudier en détail la notion de langage formel, initialement introduite par Noam Chomsky et son équipe dans le but de formaliser les langues naturelles Si l’application aux langues naturelles a révolutionné leur étude, le but ultime consistant à automatiser le traitement de



Langage UML - projeteuorg

Le langage de modélisation unifié, de l'anglais Unified Modeling Language (UML), est un langage de modélisation graphique à base de pictogrammes conçu pour fournir une méthode normalisée pour visualiser la conception d'un système Il est couramment utilisé en développement logiciel et en conception orientée objet 3-UML odt 3



Les bases de la programmation orientée objet avec Java

Java: un langage et une plateforme Dans la technologie Java, on a donc besoin Du langage de programmation et du compilateur Et plein de commandes bien utiles: jar, javap, javadoc, etc De la JVM et des APIs (Application Programming Interfaces) regroupées dans une « plateforme »:



4 Initiation à lassembleur

A au complet (32 bits), on utilise le nom EAX Pour désigner les 16 bits de poids faible, on utilise AX Pour désigner les 8 bits de poids faible, on utilise AL On utilise AH pour désigner les bits 8 à 15 du registre A Il en va de même pour les trois autres registres de données, B, C et D

[PDF] cours langage c pour debutant

[PDF] livre langage c pdf

[PDF] table de division pdf

[PDF] table de multiplication de 12 ? imprimer

[PDF] langage c pdf exercices corrigés

[PDF] cours langage c++ pour débutants pdf

[PDF] cours langage c pdf pour debutant

[PDF] tp corrigé langage c

[PDF] langage c++ cours pdf

[PDF] apprendre le latin livre

[PDF] apprendre latin autodidacte

[PDF] aprender latin pdf

[PDF] cours de francais pour etranger bordeaux gratuit

[PDF] cours de francais pour etranger metz

[PDF] cours de français gratuit vaud

Programmation en langage C - Inria de Paris

Programmation en langage C

Anne CANTEAUT

INRIA - projet CODES

B.P. 105

78153 Le Chesnay Cedex

Anne.Canteaut@inria.fr

C 2

Table des mati`eres3

Table des mati`eres

1 Les bases de la programmation en C 9

1.1 Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.2 La compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

1.3 Les composants ´el´ementaires du C . . . . . . . . . . . . . . . . . . . . . . . . 11

1.3.1 Les identificateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1.3.2 Les mots-clefs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.3.3 Les commentaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.4 Structure d"un programme C . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

1.5 Les types pr´ed´efinis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.5.1 Le type caract`ere . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.5.2 Les types entiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1.5.3 Les types flottants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

1.6 Les constantes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

1.6.1 Les constantes enti`eres . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

1.6.2 Les constantes r´eelles . . . . . . . . . . . . . . . . . . . . . . . . . . . 18

1.6.3 Les constantes caract`eres . . . . . . . . . . . . . . . . . . . . . . . . . 19

1.6.4 Les constantes chaˆınes de caract`eres . . . . . . . . . . . . . . . . . . . 19

1.7 Les op´erateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

1.7.1 L"affectation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 L"op´erateur virgule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 conditionnelif---else. . . . . . . . . . . . . . . . . . 25

1.8.2 Branchement multipleswitch. . . . . . . . . . . . . . . . . . . . . . . 25

1.9 Les boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

1.9.1 Bouclewhile. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

1.9.2 Boucledo---while. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

4Table des mati`eres

1.9.3 Bouclefor. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

1.10 Les instructions de branchement non conditionnel . . . . . . . . . . . . . . . . 28

1.10.1 Branchement non conditionnelbreak. . . . . . . . . . . . . . . . . . 28

1.10.2 Branchement non conditionnelcontinue. . . . . . . . . . . . . . . . 28

1.10.3 Branchement non conditionnelgoto. . . . . . . . . . . . . . . . . . . 29

1.11 Les fonctions d"entr´ees-sorties classiques . . . . . . . . . . . . . . . . . . . . . 29

1.11.1 La fonction d"´ecritureprintf. . . . . . . . . . . . . . . . . . . . . . . 29

1.11.2 La fonction de saisiescanf. . . . . . . . . . . . . . . . . . . . . . . . 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 Les tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

2.2 Les structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

2.3 Les champs de bits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

2.4 Les unions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

2.5 Les ´enum´erations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

2.6 D´efinition de types compos´es avectypedef. . . . . . . . . . . . . . . . . . . 41

3 Les pointeurs 43

3.1 Adresse et valeur d"un objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

3.2 Notion de pointeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

3.3 Arithm´etique des pointeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46

3.4 Allocation dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

3.5 Pointeurs et tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Pointeurs et structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 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 Appel d"une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

4.3 D´eclaration d"une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

4.4 Dur´ee de vie des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

4.4.1 Variables globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62

4.4.2 Variables locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

4.5 Transmission des param`etres d"une fonction . . . . . . . . . . . . . . . . . . . 64

4.6 Les qualificateurs de typeconstetvolatile. . . . . . . . . . . . . . . . . . 66

4.7 La fonctionmain. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

4.8 Pointeur sur une fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69

4.9 Fonctions avec un nombre variable de param`etres . . . . . . . . . . . . . . . . 74

Table des mati`eres5

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 fonctionfopen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

6.1.2 La fonctionfclose. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

6.2 Les entr´ees-sorties format´ees . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

6.2.1 La fonction d"´ecriturefprintf. . . . . . . . . . . . . . . . . . . . . . 83

6.2.2 La fonction de saisiefscanf. . . . . . . . . . . . . . . . . . . . . . . . 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 La compilation s´epar´ee . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90

7.2.1 Fichier en-tˆete d"un fichier source . . . . . . . . . . . . . . . . . . . . . 91

7.2.2 Variables partag´ees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

7.3 L"utilitairemake. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

7.3.1 Principe de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

7.3.2 Cr´eation d"unMakefile. . . . . . . . . . . . . . . . . . . . . . . . . . 94

7.3.3 Macros et abbr´eviations . . . . . . . . . . . . . . . . . . . . . . . . . . 96

7.3.4 R`egles g´en´erales de compilation . . . . . . . . . . . . . . . . . . . . . . 97

A La librairie standard 99

A.1 Entr´ees-sorties. . . . . . . . . . . . . . . . . . . . . . . . . . . . 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. . . . . . . . . . . . . . . . . . . . . 101 A.3 Manipulation de chaˆınes de caract`eres. . . . . . . . . . . . . . 102 A.4 Fonctions math´ematiques. . . . . . . . . . . . . . . . . . . . . . . 103 A.5 Utilitaires divers. . . . . . . . . . . . . . . . . . . . . . . . . . 104 A.5.1 Allocation dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . 104 A.5.2 Conversion de chaˆınes de caract`eres en nombres . . . . . . . . . . . . . 104 A.5.3 G´en´eration de nombres pseudo-al´eatoires . . . . . . . . . . . . . . . . 104 A.5.4 Arithm´etique sur les entiers . . . . . . . . . . . . . . . . . . . . . . . . 104 A.5.5 Recherche et tri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105 A.5.6 Communication avec l"environnement . . . . . . . . . . . . . . . . . . 105

6Table des mati`eres

A.6 Date et heure. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106

B Le d´ebogueur GDB 107

B.1 D´emarrergdb. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107 B.2 Quittergdb. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108 B.3 Ex´ecuter un programme sousgdb. . . . . . . . . . . . . . . . . . . . . . . . . 108 B.4 Terminaison anormale du programme . . . . . . . . . . . . . . . . . . . . . . 109 B.5 Afficher les donn´ees . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111 B.6 Appeler des fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 B.7 Modifier des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113 B.8 Se d´eplacer dans la pile des appels . . . . . . . . . . . . . . . . . . . . . . . . 113 B.9 Poser des points d"arrˆet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

B.10 G´erer les points d"arrˆet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

B.11 Les points d"arrˆet conditionnels . . . . . . . . . . . . . . . . . . . . . . . . . . 116 B.12 Ex´ecuter un programme pas `a pas . . . . . . . . . . . . . . . . . . . . . . . . 117 B.13 Afficher la valeur d"une expression `a chaque point d"arrˆet . . . . . . . . . . . 119 B.14 Ex´ecuter automatiquement des commandes aux points d"arrˆet . . . . . . . . . 120 B.15 Les raccourcis des noms de commande . . . . . . . . . . . . . . . . . . . . . . 123 B.16 Utiliser l"historique des commandes . . . . . . . . . . . . . . . . . . . . . . . . 123 B.17 Interface avec le shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 124 B.18 R´esum´e des principales commandes . . . . . . . . . . . . . . . . . . . . . . . . 124

Bibliographie 127

Index128

Liste des tableaux7

Liste des tableaux

1.1 Codes ASCII des caract`eres imprimables . . . . . . . . . . . . . . . . . . . . . 15

1.2 Les types entiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1.3 Les types flottants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

quotesdbs_dbs2.pdfusesText_2