[PDF] [PDF] Programmation en C – Exercices - Pages Perso - UPVD

4 Fonctions mathématiques, tableaux, boucles, constantes symboliques 17 5 Structures III Exemples de corrections des exercices 43 dans le langage C



Previous PDF Next PDF





[PDF] Corrigés des exercices sur les fonctions

Corrigés des exercices sur les fonctions Exercice 5 1 1 adaptation de programme Question 1 Modifiez le programme pour que le calcul de la division soit 



[PDF] Langage C : énoncé et corrigé des exercices IUP GéniE - LAMSADE

Vous pouvez réaliser une fonction erreur qui prend en param`tre une chadne de caract`res (le message d'erreur) et l'affiche Université Paris Dauphine - Maude 



[PDF] LANGAGE C Exercices corrigés 1

Ecrire un programme qui calcul le produit scalaire de deux vecteurs d'entiers U et V de même dimension Ecrire la fonction suivante : long ProduitScalaire(int *U, 



[PDF] Langage C : énoncé et corrigé des exercices - Talib24

Le programme se composera de plusieurs fonctions : - Une fonction de création creer _pile qui retourne une pointeur de type pile, nul - Une fonction vide qui 



[PDF] Exercices en langage C++: 150 exercices corrigés (Noire) (French

propose 150 exercices corrigés et commentés pour mieux assimiler la syntaxe de base du C++ (types et opérateurs, instructions de contrôle, fonctions, tableaux , 



[PDF] Programmation en C – Exercices - Pages Perso - UPVD

4 Fonctions mathématiques, tableaux, boucles, constantes symboliques 17 5 Structures III Exemples de corrections des exercices 43 dans le langage C



[PDF] Le C en 20 heures - Framabook

Avant de commencer d'exploitation que vous utilisez et du langage de programmation que le compilateur trouve les fonctions et les applications qui lui per- mettent de Corrigé de l'exercice n°3 1 — Introduction à une calculatrice #include 



[PDF] Exercices corrigés

Écrire une fonction somme avec un argument « tuple de longueur variable » qui calcule la somme des nombres contenus dans le tuple Tester cette fonction par 



[PDF] Programmation en C - Sommaire - ENSA Agadir

1) Utilisation des bibliothèques de fonctions : VI) SOLUTIONS DES EXERCICES DU CHAPITRE 4 : LIRE ET ÉCRIRE DES DONNÉES : Ritchie a conçu ce langage de programmation structuré, mais très 'près' de la machine 2) K&R-C :

[PDF] les tableaux en c exercices corrigés pdf

[PDF] somme et différence de nombres relatifs 4ème exercices

[PDF] le perimetre d un cercle

[PDF] calcul force verin hydraulique

[PDF] comment calculer l'aire d'une forme géométrique quelconque

[PDF] calcul superficie forme irrégulière

[PDF] calcul surface quadrilatère irrégulier

[PDF] calcul surface polygone irrégulier

[PDF] sécurité incendie habitation 2ème famille

[PDF] porte coupe feu reglementation incendie

[PDF] reglementation incendie dans les immeubles d'habitation

[PDF] règle c+d incendie

[PDF] réglementation et mise en sécurité incendie des bâtiments d'habitation pdf

[PDF] escalier encloisonné habitation

[PDF] reglementation incendie 3eme famille b

Université de Perpignan Via Domitia

Licence de Sciences et Technologies

Mention Sciences de l"Ingénieur

Programmation en C - Exercices

Enoncés

Sujets des partiels et examens

Exemples de corrections des exercices

Exemples de corrections des partiels et des examens

Ph. LANGLOIS

Version du 18 septembre 2013

Programmation en C - Exercices

PhL. version du 18 septembre 20132

Table des matières

I Enoncés des exercices 7

1 Description de l"environnement de programmation 9

1.1 Du code source à l"exécution : cas simple . . . . . . . . . . . . . . . . . . . . . . . . . . . .

9

1.2 Du code source à l"exécution : cas général . . . . . . . . . . . . . . . . . . . . . . . . . . . .

10

1.3 Pratique et conseils associés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

11

1.4 Utilisercygwinsous M* Windows. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .11

1.5 Pour être sûr d"avoir bien compris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

12

2 Variables, valeurs, constantes, déclarations, types scalaires, opérateurs, expressions, entrées-

sorties simples13

3 Opérateurs entiers, bit à bit, logiques, tests 15

4 Fonctions mathématiques, tableaux, boucles, constantes symboliques 17

5 Structures de contrôle : répétition, choix 19

6 Fonctions : prototypes, définition, appels 23

7 Pointeurs25

8 Types,makefile27

II Sujets des partiels et examens. 29

9 Sujets31

9.1 Partiel de novembre 2010 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

31

9.2 Examen de décembre 2010 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

33

9.3 Partiel de mars 2011 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

35

9.4 Examen de mai 2011 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

37

9.5 Examen de juin 2011 (session 2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

39

9.6 Examen de juillet 2011 (session 2) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

41

III Exemples de corrections des exercices 43

10 Description de l"environnement de programmation 45

10.1 bonjourlemonde . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45

10.2 swap1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45

10.3 swap2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

45

10.4 swaps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

46

10.5 swap3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

46

11 Variables,valeurs,constantes,déclarations,typesscalaires,opérateurs,entrées-sortiessimples 49

11.1 operateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

49

11.2 int2bin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

49

11.3 tabverite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

50

11.4 formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

51
3

Programmation en C - Exercices

12 Opérateurs entiers, bit à bit, logiques, tests 53

12.1 vallimit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

53

12.2 op-int . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

53

12.3 int-vs-unsigned . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

54

12.4 div . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

54

12.5 op-bit . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

54

12.6 op-decall . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

55

12.7 masques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

56

13 Fonctions mathématiques, tableaux, boucles, constantes symboliques 59

13.1 somme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

59

13.2 somme-p . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

59

13.3 felem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

60

13.4 fibo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

60

13.5 fibo-inv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

61

13.6 fois2fois2etc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

61

13.7 max-tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

62

13.8 ind-max-tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

62

13.9 last-ind-max-tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

63

14 Structures de contrôle : répétition, choix 65

14.1 double-indice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

65

14.2 des-boucles-for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

65

14.3 des-boucles-while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

65

14.4 un-deux-etc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

65

14.5 suites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

66

14.6 equa-prem-deg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

66

14.7 aleas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

67

15 Fonctions : prototypes, définition, appels 69

15.1 f-fibo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

69

15.2 fibo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

70

15.3 f-fibo-main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

70

15.4 f-masques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

70

15.5 f-masques-main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

71

16 Pointeurs73

16.1 ptr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

73

16.2 arith-ptr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

74

16.3 affiche-vect . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

74

16.4 affichons-mat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

75

16.5 mystery-inc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

76

16.6 tab-ptr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

76

16.7 main-inc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

77

16.8 doubler-tab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

77

16.9 tab-dyn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

78

16.10mat-dyn . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

78

16.11echo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

80

16.12echo-inverse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

80

16.13combien . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

80

16.14max . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

80

16.15main-tx-var . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

81

17 Types,makefile83

17.1 type-vect-mat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

83

17.2 manip-type-vect-mat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

84

17.3 makefile . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

84

PhL. version du 18 septembre 20134

Programmation en C - Exercices

IV Exemples de correction

des partiels et examens. 85

18 Correction du partiel de novembre 2010 87

18.1 echauffement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

87

18.2 tri2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

87

18.3 tri3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

88

18.4 expression . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

89

18.5 des-expressions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

89

18.6 exp-bool . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

89

19 Correction de l"examen de décembre 2010 91

19.1 paire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

91

19.2 code-asci . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

91

19.3 max-prod-mat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

92

19.4 moiss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

93

19.5 f-mois . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

94

19.6 mois2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

95

20 Correction du partiel de mars 2011 97

20.1 tables-mult . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

97

20.2 xoxo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

97

20.3 compter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

98

21 Correction de l"examen de mai 2011 99

21.1 rev1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

99

21.2 rev2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

99

21.3 rev3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

100

21.4 rev4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

101

21.5 rev5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

101

21.6 aff-tab-carres-1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

102

21.7 aff-tab-carres-2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

103

21.8 aff-tab-carres-3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

103

21.9 aff-tab-carres-4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

104

21.10aff-tab-carres-5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

104

21.11aff-tab-carres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

105

22 Correction de l"examen de juin 2011 (session 2) 107

22.1 exp2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

107

22.2 exp3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

107

22.3 un . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

108

22.4 combiendeun . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

108

22.5 suite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

109

22.6 suite2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

109

23 Correction de l"examen de juillet 2011 (session 2) 111

23.1 moy1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

111

23.2 moy2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

111

23.3 moy4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

112

23.4 concattab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .

113

V Annexes 115

24 C Reference Card (ANSI) 117

25 Résumé des commandes de base UNIX 119

26 Description de l"enseignement 121

PhL. version du 18 septembre 20135

Programmation en C - Exercices

PhL. version du 18 septembre 20136

Première partie

Enoncés des exercices

7

Chapitre 1

Description de l"environnement de

programmation

Cette partie décrit la prise en main de l"environnement de programmationgccutilisé en TD sous envi-

ronnement Linux ou aveccygminsous Windows1. Convention à utiliser pour les extensions des noms de fichiers : .c: fichier source C .h: fichier en-tête (header) C .o: fichier objet sans extension : exécutable

On distingue deux cas, selon que le programme est composé d"un seul fichier (cas simple) ou de plu-

sieurs (cas général).

1.1 Du code source à l"exécution : cas simple

Trois étapes sont nécessaires pour créer un fichier exécutable à partir d"un fichier de code source.

1.

Compiler : génération du fichier objet .o- nous verrons plus loin que cette étape comporte en fait

des étapes intermédiaires. 2. Linker : édition des liens entr eles fichiers objets et création du fichier exécutable.

Ces deux étapes peuvent être aussi regroupées en une seule commande, ce que nous apprendrons

d"abord.

1.1.1 Le code source

Utiliser votre éditeur favori pour taper la version C suivante du classique "Hello World" ...en français.

*Vous l"avez reconnu : Bonjour le monde !*/ #include int main() printf("Bonjour le (centre du) monde !\n"); return 0;

Sauvegarder ce programme dans le fichierbonjourlemonde.c.1. Les principales spécificités de cette configutaion sont décrites à la section 1.4

9

Programmation en C - Exercices

1.1.2 Méthode 1 : génération directe de l"exécutable

Le cas simple du code contenu dans un fichier unique permet d"utiliser une seule commande à cet effet.

La version la plus courte est

$ gcc bonjourlemonde.c

qui se trouvera au même endroit que le fichier source. Pour l"exécuter il suffit alors d"entrer la com-

mande suivante (dans une fenêtreterminal). $ ./a.out ou plus simplement encore, $ a.out si votre variable d"environnementPATHpermet d"examiner le répertoire courant.

Il est plus pratique de pouvoir choisir le nom de son exécutable en le précisant avec l"option-o.

$ gcc -o bonjourlemonde bonjourlemonde.c Vous utiliserez en effet la commande plus longue suivante. $ gcc -Wall -pedantic -std=c99 -o bonjourlemonde bonjourlemonde.c extensions comme celles de GNU par exemple) --pedanticpermet de signaler les avertissements, ouwarnings, selon la norme ISO; et --Wallpermet de signaler un grand nombre d"autreswarningsdécrit dans leman gcc.

En effet à la différence d"Ada, la grande permissivité de C réduit l"aide du compilateur (sans option)

pour traquer certaines erreurs et les mauvaises pratiques de programation.

1.1.3 Méthode 2 : compiler et lier avant d"exécuter

Dès que votre application comporte plusieurs fichiers, il est nécessaire de procéder en deux étapes :

i) compilation-génération (option-c) d"un fichier objet (extension.o)

ii) puis création de l"exécutable (sans extension) par éditions des liens (option-o) entre les différents

fichiers objets.

Dans le cas simple, chaque étape (compilation, édition des liens) correspond à une des deux lignes de

commandes suivantes. $ gcc -Wall -pedantic -std=c99 -c bonjourlemonde.c $ gcc -Wall -pedantic -std=c99 -o bonjourlemonde bonjourlemonde.o

Il suffit maintenant d"exécuterbonjourlemonde.

1.1.4 Pour bien comprendre

Recommencer lesméthodes1et2àpartirdefichierssourcesmodifiés(contenu,nomdufichier,autres extensions), ailleurs dans votre arborescence. Observer le contenu du répertoir ede travail après chaque commande. Observer les dr oitssur les dif férentsfichiers.

1.2 Du code source à l"exécution : cas général

Nous détaillons maintenant le cas habituel d"applications comportant plusieurs fichiers sources et l"uti-

lisation de la commandemake.

PhL. version du 18 septembre 201310

Programmation en C - Exercices

1.2.1 Editer-compiler-lier-exécuter

Entre la création du code source (édition) et l"exécution du binaire qui en découle, nous retrouvons les

deux étapes de compilation et d"édition des liens déjà décrits.

Lorsque que l"application est constituée de plusieurs fichiers (en général des fichiers.cet les fichiers

d"en-tête.hcorrespondants2), générer l"exécutable nécessite de créer, un à un, tous les fichiers objets

(.o) associé aux fichiers.c(compilation et génération des fichiers objets, option-c) , puis de lier (édi-

tion des liens, option-o) tous ces fichiers objets (et si besoin les bibliothèques extérieures) en précision

le nom de l"exécutable (sans extension en général).

Par exemple, notre application est constituée des fichiersF1.c, F2.c, main.c, ce dernier contenant

la procédure principalemain. Nous voulons l"exécuter par le biais de la commande (sans argument)

endavant. On y arrive en effectuant les deux étapes compilation-éditions des liens suivantes. $ gcc -Wall -pedantic -std=c99 -c F1.c $ gcc -Wall -pedantic -std=c99 -c F2.c $ gcc -Wall -pedantic -std=c99 -c main.c $ gcc -Wall -pedantic -std=c99 -o endavant F1.o F2.o main.o

Il est courant de devoir modifier un fichier parmi tous ceux qui consitue une application. Dans ce cas,

il n"est pas nécessaire de recompiler des fichiers non modifiés pour créer un nouvel exécutable. Il suffit

de mettre à jour le fichier objet concerné puis de créer une nouvelle versi de l"éxécutable.

1.2.2 Utiliser unMakefile

Cette partie sera décrite une fois la compilation séparée traitée en cours.

1.3 Pratique et conseils associés

1.3.1 Une session classique

1.

Créer un fichier sour cesous l"éditeur ,

2. le compiler , 3. corriger (sous l"éditeur) les err eurssignalées par le compilateur , 4.

le r ecompilerpuis r evenirà l"étape 3 tant que la compilation ne s"achève pas avec succès,

5. exécuter le pr ogrammesur dif férentsjeux de données bien choisis, 6.

identifier ainsi les (pr emiers)bugset revenir à l"étape 3 jusqu"à obtenir l"exécution attendue.

1.3.2 Conseils pour l"écriture d"un fichier source

La plupart des conseils suivants ont pour objectif d"améliorer la lisibilité des fichiers sources, la sûreté,

la maintenabilité et la portabilité des développements.

Sauvegar derrégul ièrementvos fichiers (ne pas écrir edu code pendant 10 minutes sans sauvegar -

der!).

Choisir des identifiants explicites (peuvent êtr elong, utiliser le trait bas (_), mettr edes commentair es

(le point précédent répond aussi à cet impératif).

Initialiser chaque variable lors de sa déclaration, sépar erpar une ligne vide les déclarations des ins-

tructions. Limiter la portée des variables au minimum raisonable (compromis entre la localitéun re-

groupement des déclarations et la distance "déclaration-première utilisation" .

1.4 Utilisercygwinsous M* Windows.

cygwinpermet d"utiliser le compilateurgccdans l"environnement système M* Windows. Les com-

mandes présentées s"appliquent donc dans la fenêtrecygwin. Nous présentons maintenant quelques

spécificités de cette configuration.2. Ceci sera décrit en cours (compilation séparée).

PhL. version du 18 septembre 201311

Programmation en C - Exercices

Installation?Une fois le fichier desetuptéléchargé, l"installation nécessite deux éxecutions succes-

sives de cesetup. En effet,gccn"est pas installé à la première exécution dusetup(suivre la

procédure avec copie des fichiers en local). Une fois celle-ci effectuée, il faut relancer lesetup,

choisir le mode manuel pour sélectionner les paquetsgccetautomakequi seront alors installés et directement utilisables.

Où travailler?La fenêtrecygwinfournit une invite de commande (prompt) dans son répertoire d"ins-

tallation et non pas dans votrehome directory. Il faut donc utiliser les commandes Unixcd, ..,

˜userd-id, ... pour retrouver une configuration de travail classique (accessibilité directe aux fi-

chiers sources). Un lien sur une page qui présente ces commandes est indiqué sous l"ENT (dans "ressources utiles").

1.5 Pour être sûr d"avoir bien compris

1. Coder ,compiler et exécuter le pr ogrammeprésenté en cours. 2. Récupér erl"archivecompiler_fichiers.zipsurl"ENTetcréerl"exécutable.Observerlecontenu

du répertoire de travail après chaque commande. Modifier certains fichiers et créer de nouveaux

exécutables. 3.

Ecrir eun pr ogrammequi échange deux valeurs entièr es,flottantes et caractèr es.Ces valeurs se-

ront (version 1) d"abord fixées dans le code, puis (version 2) saisies au clavier. 4. Ecrir eun pr ogrammequi lit tr oisvaleurs flottantes au clavier et qui af ficheleur somme. Pr oposer ensuite des versions qui utilisent des structures itératives différentes :for, while, ....

PhL. version du 18 septembre 201312

Chapitre 2

Variables, valeurs, constantes,

déclarations, types scalaires, opérateurs, expressions, entrées-sorties simples Exercice 1.(ma_saisie) La fonctionsaisirde l"archive utilisée au TD-1 illustre comment utiliser

les fonctions d"entrées-sorties clavier-écranprintfetscanf. En s"inspirant de cet exemple, écrire un

programme qui lit une valeur au clavier puis l"affiche à l"écran. Vous modifierez ce programme pour

affichernfois une valeurVd"un des types vus en cours, les valeurs denetVseront "lues au clavier". Exercice 2.(swap3) Ecrire un programme qui permute deux valeurs entières. Ces valeurs seront lues au clavier. Même question pour trois valeurs flottantes et caractères.

Exercice 3.(operateurs) Ecrire un programme qui affiche le résultat des opérateurs entiers pour deux

valeurs arbitraires choisies au clavier. Vous interpréterez les résultats pour un choix de ces opérateurs

laissé à votre initiative (des exercices à venir porteront en particulier sur les opérateurs logiques, bit-à-

bit et composés).quotesdbs_dbs15.pdfusesText_21