[PDF] [PDF] Programmation Structurée en Langage C - Institut Fresnel

une définition précise du langage C appelée C reference manual C'est principalement de ce livre (et de sa traduction française [KR94]) que s'inpire ce support de cours télécharger (formats postscript ou pdf ), ou a consulter on line (html)



Previous PDF Next PDF





[PDF] COURS DINFORMATIQUE: LANGAGE C NOTES DE COURS - ENIT

Informatique Langage C - Notes de cours C A 2007/08 Chapitre III – Types de base, opérateurs, expressions On trouvera dans un programme des variables et  



[PDF] Les bases de la programmation en C

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



[PDF] Le livre du C pour les vrais debutants en programmationpdf

4 1 En langage machine ou dans un langage de notre cru Pour ceux d'entre vous qui souhaiteraient utiliser cet ouvrage comme support de cours, voici



[PDF] Algorithmes et langage C - Ecole Mohammadia dingénieurs

Plan du cours: Un langage de programmation permet au programmeur d'écrire son machine au moyen d'un outil logiciel dit compilateur du langage



[PDF] Initiation à la programmation

Initiation à la programmation, M Eleuldj, Département Génie Informatique, EMI, septembre 2014 14 Choix du langage de programmation Compilateur langage  



[PDF] Programmation Structurée en Langage C - Institut Fresnel

une définition précise du langage C appelée C reference manual C'est principalement de ce livre (et de sa traduction française [KR94]) que s'inpire ce support de cours télécharger (formats postscript ou pdf ), ou a consulter on line (html)



[PDF] Algorithmique & programmation en langage C - Archive ouverte HAL

1 fév 2019 · Ce document constitue le support de cours écrit pour différents enseignements d' algorithmique et de programmation en langage C donnés à la Faculté d' ingénierie de http://www unicode org/charts/PDF/U0100 pdf



[PDF] C++ : LES BASES

Apparu au début des années 90, le langage C++ est actuellement l'un des plus Le but de ce cours est de présenter la syntaxe de base du langage C++



[PDF] Cours de langage C - LIPN

C s'impose comme le langage de programmation sous UNIX guide pédagogique, support de ce cours, exposant également les principaux pièges du langage

[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

[PDF] alliance francaise bordeaux aquitaine

[PDF] cours de français pour étrangers metz

[PDF] cours de français lausanne pas cher

[PDF] association cours de français bordeaux

[PDF] cours de français gratuit lausanne

[PDF] apprendre le grec biblique pdf

[PDF] cours de grec biblique pdf

[PDF] initiation au grec du nouveau testament pdf

[PDF] apprendre le grec biblique gratuitement

Révision 2.5, 2006.

7

1.2 Présentation du langage C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

1.3 Premier programme en C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9

1.4 Langage C et programmation structurée . . . . . . . . . . . . . . . . . . . . . . . . .

10 14

2.2 Constantes associées aux types de base . . . . . . . . . . . . . . . . . . . . . . . . . .

15

2.3 Variables de base : déclaration et initialisation . . . . . . . . . . . . . . . . . . . . . .

16

2.4 Types dérivés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

18

2.5 Conversion de types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19 21
22
25

4.2 Opérateurs binaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

27

4.3 Opérateur ternaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

30

4.4 Précédence des opérateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

30
33

5.2 Instructions de répétition ou d'itération . . . . . . . . . . . . . . . . . . . . . . . . .

37

5.3 Ruptures de séquence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

40
45

6.2 Passage des paramètres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

46

6.3 Utilisation de pointeurs en paramètres . . . . . . . . . . . . . . . . . . . . . . . . . .

47
47

6.5 Retour de fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

48

6.6 Récursivité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

48

6.7 Paramètres de la fonction principale . . . . . . . . . . . . . . . . . . . . . . . . . . .

48

6.8 Étapes d'un appel de fonction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

49
51

7.2 Inclusion de chiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

52

7.3 Variables de précompilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

52

7.4 Dénition de macro-expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

53

7.5 Sélection de code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

53
55

8.2 Visibilité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

56

8.3 Prototypes des fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

59

8.4 Fonctions externes et fonctions dénies ultérieurement . . . . . . . . . . . . . . . . .

60

8.5 Déclarations et dénitions multiples . . . . . . . . . . . . . . . . . . . . . . . . . . .

60
65

9.2 Arithmétique d'adresse et tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . .

66

9.3 Tableaux multi-dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

67

9.4 Pointeurs et tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

67

9.5 Tableau de pointeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

69
71

10.2 Unions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

74

10.3 Énumérations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

76

10.4 Types synonymes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

77
80

11.2 Ouverture d'un chier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

82

11.3 Fermeture d'un chier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

84

11.4 Accès au contenu du chier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

84

11.5 Entrées-sorties formatées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

89

11.6 Déplacement dans le chier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

94

11.7 Gestion des tampons . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

98

11.8 Gestion des erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

99
101

12.2 Types de caractères . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

102

12.3 Fonctions mathématiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

102

12.4 Fonctions utilitaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

103

12.5 Fonctions de dates et heures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

105

12.6 Messages d'erreur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

106

B Mots réservés du C 108

C Quelques pointeurs sur Internet 109

109
C.2 Librairies scientiques et graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . 110
C.3 Sources et sites de programmeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

Liste des tableaux111

Liste des programmes 113

Bibliographie115

7

1.2 Présentation du langage C . . . . . . . . . . . . . . . . . . . . . . . . . . .

8

1.3 Premier programme en C . . . . . . . . . . . . . . . . . . . . . . . . . . .

9

1.4 Langage C et programmation structurée . . . . . . . . . . . . . . . . . .

10

Ces deux langages partagent avec le C :

Les deux langages prédécesseurs du C avaient la particularité d'être sans type. Ils ne connaissent que

le mot machine, ce qui leur donne un degré de portabilité nul. Le langage C comble ces lacunes en

introduisant des types de données tels que l'entier ou le caractère. Les dates marquantes de l'histoire du C sont les suivantes : Jusqu'en 1987, il n'y avait pas de norme. Le livre The C programming language [RK78] contient

une dénition précise du langage C appelée C reference manual . C'est principalement de ce livre

(et de sa traduction française [KR94]) que s'inpire ce support de cours.

Le langage C a été conçu pour l'écriture de systèmes d'exploitation. Plus de90%?? ????? ?? ???????

Il est cependant susamment général pour permettre de développer des applications variées de type

scientique, ou encore pour l'accès aux bases de données (application de gestion) Le C est un langage impératif classique qui comporte

Il reète bien le savoir faire des années 70, et se situe dans la famille du langage Pascal. Son avantage

vis-à-vis du Pascal est son plus grand pragmatisme. Il autorise clairement deux styles de program-

mation, le style bidouille pour produire du code ecace et le style génie logiciel pour produire

des programmes plus lisibles, plus sûrs et plus facilement modiables.

Bien que pouvant être considéré de bas niveau, le langage C supporte les structures de base néces-

saires à la conception des applications structurées. Cette caractéristique le range dans la catégorie

des langages de haut niveau. Il est aussi un des premiers langages orant des possibilités de program-

mation modulaire. Un programme en C peut être constitué de plusieurs modules. Chaque module

Lorsque nous parlons du langage C, nous faisons référence à ce que sait faire le compilateur lui-même.

Plusieurs outils interviennent dans la transformation d'un ensemble de chiers sources, constituant

un programme, en un chier binaire exécutable, résultat de ce que l'on appelle communément, la

Le langage C se limite aux fonctionnalités qui peuvent être traduites ecacement en instructions

machine. Cette règle de fonctionnement doit permettre de détecter ce qui est fait directement par le

compilateur lui-même et ce qui ne peut pas être fait. Illustrons cette règle par quelques exemples :

à partir du code ASCII

Pour réaliser des fonctions plus compliquées, le programmeur doit écrire ses propres fonctions ou

faire appel aux fonctions pré-dénies de la bibliothèque du langage C (cf. chapitres 11 et 12). Ces

fonctions sont elles-aussi standardisées.

Prog. 1.1 Hello World!

Programme

Affiche

Hello World #include

Affiche

le message

Valeur

de retour de la fonction

5. Ce type de commentaire a été introduit avec le langage C++ et n'est pas purement C-ANSI. Il est cependant

supporté par tous les compilateurs actuels. Précisons que dans ce cas, le commentaire doit se limiter à une unique

ligne.

À sa base, le langage C n'est qu'un ensemble de bibliothèques à partir desquelles le compilateur trouve

les fonctions et les applications qui lui permettent de créer un programme exécutable. Exactement ce

que l'on fait lorsqu'on cherche dans une encyclopédie pour faire un exposé. Certaines bibliothèques

(les plus courantes) sont incluses dans le compilateur, ce qui permet à notre programme de com-

Les librairies standards du C seront présentées au fur et à mesure de leur utilisation dans ce cours.

Néanmoins, nous pouvons déjà en dire quelques mots. À l'instar de l'étudiant qui recherche dans des

livres, on peut dire que le chier .h représente l'index du livre et le chier .cpp correspondant

le contenu du chapitre concerné. Ainsi, lorsque le compilateur rencontre le mot??????? ?? ???????

Le langage C est apparu en 1972, c'est à dire en pleine période de réexion sur les langages structurés.

Il supporte donc un ensemble de fonctionnalités qui sont directement issues de ce courant de pensée.

Le langage C a été conçu et réalisé pour écrire un système d'exploitation et le logiciel de base de ce

système. Il doit être capable de faire les mêmes choses que l'assembleur. Il est assez permissif, ce qui

va à l'encontre de la programmation structurée telle que Wirth [Wir74] l'a décrite. En eet, en C, le

programmeur peut écrire des choses explicites qui sont liées à la structure de la machine. Le langage C est assez peu contraignant. Il ore des structures de programme mais il n'oblige pas

à les utiliser. En particulier, il autorise les entrées multiples et les sorties multiples dans les tâches.

La mise en page est libre, ce qui permet d'écrire des programmes dont la mise en page reète la structure. Les programmes sans mise en page sont rapidement illisibles du fait de la richesse de la syntaxe du C. Comme le montre la gure 1.1, un programme en C est constitué d'un ensemble de chiers sources destinés à être compilés séparément et à subir une édition de liens commune

Le fait de pouvoir compiler chaque chier source de manière autonome amène à concevoir des pro-

grammes de manière modulaires en regroupant, dans chaque chier source, des fonctions qui mani-

7. Les diérentes étapes de la compilation sont plus complexes que cela. Toutes ces opérations sont relativement

transparentes avec le logiciel Visual C++ de Microsoft, puisqu'il sut de cliquer sur un bouton pour réaliser l'ensemble

des étapes aboutissant à l'exécutable! (source, module) compilation fichier1.o (objet) fichier2.cpp (source, module) compilation fichier2.o (objet) edition de liens fichier.exe (executable) fichier3.cpp (source, module) compilation fichier3.o (objet) Figure 1.1 Les étapes de compilation d'un programme.

Maîtriser la programmation en langage C nécessite beaucoup de savoir faire et donc de pratique.

Elle s'apprend essentiellement à partir de ses erreurs, alors n'hésitez pas à mettre les mains dans le

cambouis ... 14 14 14

2.1.3 Le type vide :????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?

15

2.1.4 Taille des types de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

15 15 15

2.2.2 Constantes avec partie décimale . . . . . . . . . . . . . . . . . . . . . . . .

16

2.2.3 Constantes caractère . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

16 16 17

2.3.2 Qualicatifs des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . .

17 18 18

2.4.2 Les chaînes de caractères . . . . . . . . . . . . . . . . . . . . . . . . . . . .

19 19 1. dénir le domaine de valeur de cette variable (taille en mémoire et représentation machine). 2. dénir les opérations possibles sur cette variable. 3. dénir le domaine de validité de cette variable. 4. permettre à l'environnement d'exécution du programme d'associer le nom de la variable à une adresse mémoire. 5. initialiser la variable avec une valeur compatible avec le domaine de valeur.

En langage C, une variable se caractérise à partir de son type et de sa classe mémoire. Les points

1 et 2 sont associés au type de la variable, les points 3 et 4 sont associés à la classe mémoire de la

variable. 2 [¡2147483648;2147483647]? Tableau 2.1 Longueur des types de base sur un processeur Intel i686.

Taille (octets)

Les constantes peuvent être suxées par un l ou un L pour préciser que leur type associé

Voici quelques exemples de constantes de type entier : Voici quelques constantes avec partie décimale : ?nn?? ?n?? ?n??? ?n??? Un certain nombre d'abréviations est également disponible : ?n??? ?n??? ?n??? ?n??? ?n??? ?n??? Une dénition de variable a les rôles suivants :

5. Le nombre 100 correspond au code ASCII décimale du caractère????

Une dénition de variable est l'association d'un identicateur à un type et la spécication d'une

classe mémoire.

Les deux qualicatifs peuvent être utilisés sur la même variable, spéciant que la variable n'est pas

modiée par la partie correspondante du programme mais par l'extérieur.

Nous allons examiner en détails les deux premiers types dérivées. Les tableaux et les structures seront

examinés dans les chapitres 9 et 10.

Le compilateur C vérie le type des adresses mises dans un pointeur. Le type du pointeur conditionne

les opérations arithmétiques sur ce pointeur. Les opérations les plus simples sur un pointeur sont les

suivantes :

Une fois un pointeur aecté avec l'adresse d'une variable, ce pointeur peut être utilisé pour accéder

aux cases mémoires correspondant à la variable (valeur de la variable) :?????? ? ??? ???? ?

Tableau 2.2 Chaîne de caractères constante

e s s a g e n?

Il est impossible d'utiliser les opérateurs sur les chaînes de caractères. Notamment, il est interdit de

Il est néanmoins possible d'initialiser une chaîne de caractères constante de la manière suivante :????

Tableau 2.3 Exemples d'initialisation de chaînes.

La notion de richesse d'un type est précisée dans la norme. Le type dans lequel le calcul d'une

expression à deux opérandes doit se faire est donné par les règles suivantes : 1. 2. 3. 4. sinon, appliquer la règle de promotion en entier, puis : (a) (b) (c) (d)

La règle de promotion en entier précise que lorsque des variables ou des constantes des types suivants

sont utilisées dans une expression, alors les valeurs de ces variables ou constantes sont transformées

en leur équivalent en entier avant de faire les calculs. Ceci permet d'utiliser des caractères et des

entiers courts de la même façon que des entiers. Des exemples de conversions implicites sont donnés dans le tableau 2.4.

Tableau 2.4 Exemples de conversion implicite.

li = f + i; transformé en?????? ????? ??????? transformé en????? ????? ??????

Il est possible de forcer la conversion d'une variable (ou d'une expression) dans un autre type avant

de l'utiliser par une conversion implicite. Cette opération est appelée cast . Elle se réalise de la

21
22

Bien sûr, le langage C est un langage des années 70 et l'idée de l'interaction avec l'utilisateur est celle

des systèmes centralisés à temps partagé. Un utilisateur de ce type de système est connecté via une

voie d'entrée-sortie qui permet d'échanger des caractères. Ces voies sont la plupart du temps reliées

à un télétype (écran, clavier, avec sortie optionnelle sur papier). Les caractères sont écrits sur l'écran

du terminal et lus à partir du clavier.

Les entrée-sorties en langage C ne sont pas prises en charge directement par le compilateur mais elles

Tableau

de 80
caractères

Le tableau 3.1 donne un résumé des déclarations de variables et des formats nécessaires à leurs

L'exemple 3.2 montre qu'il est possible de réaliser l'écriture ou la lecture de plusieurs variables en

utilisant une seule chaîne de caractères contenant plusieurs descriptions de formats.

Prog. 3.2 Lectures multiples avec???????

Lecture

Écriture

Format externe

scanf("%d",&i); printf("%d",i); scanf("%o",&i); printf("%o",i); scanf("%x",&i); printf("%x",i); scanf("%u",&i); printf("%u",i); scanf("%hd",&j); printf("%d",j); scanf("%ho",&j); printf("%o",j); scanf("%hx",&j); printf("%x",j); scanf("%hu",&j); printf("%u",j); scanf("%ld",&k); printf("%ld",k); scanf("%lo",&k); printf("%lo",k); scanf("%lx",&k); printf("%lx",k); scanf("%lu",&k); printf("%lu",k); scanf("%f",&l); printf("%f",l); scanf("%e",&l); printf("%e",l); printf("%g",l); scanf("%lf",&m); printf("%lf",m); scanf("%le",&m); printf("%le",m); printf("%lg",m); scanf("%Lf",&n); printf("%Lf",n);quotesdbs_dbs13.pdfusesText_19