[PDF] Programmation en C – Exercices





Previous PDF Next PDF



TP11 : Pointeurs de fonction utilisation de gdb

fonction et être appelée. Exercice 1. Utilisation simple des pointeurs de fonction. Ecrire une fonction fois_deux qui multiplie par deux un entier.



Langage C : énoncé et corrigé des exercices IUP GéniE

Exercice 1 . Déc l arere z un entier i et un pointeur vers un entier p



Programmation C++ (débutant)/Les pointeurs

l'occasion d'étudier les fonctions avec passage de paramètres par pointeur . Ce passage de paramètres peut A l'occasion d'exercices nous verrons une.



Programmation Objet - apprentissage 1A notions : Tableaux

Exercice 2. Indices pointeurs. Écrire les fonctions suivantes en utilisant des indices pointeurs pour laquelle un élément de tableau.



Programmation en C – Exercices

en utilisant le tableau et le pointeur. Exercice 38. (affiche-vect) Ces fonctions d'affichage de vecteurs pourront être utilisées par la suite.



Module de POO / C++ -- Année 2018/19 Master 1 Maths TP2

Exercices sur les tableaux & pointeurs. Partie 1 de commencer à entrevoir une possibilité d'écrire un code réutilisable : les pointeurs sur fonctions.



Pointeurs et Allocation Dynamique

On parlera alors de pointeurs de fonctions. Exercice int v1 = 5 v2 = 15; int *p1



Programmation en langage C

3.5.2 Pointeurs et tableaux `a plusieurs dimensions . 4.8 Pointeur sur une fonction . ... 4.9 Fonctions avec un nombre variable de param`etres .



TP 5 : Tableaux structures et pointeurs Exercice 1 : Structure

Exercice 1 : Structure nombre rationnel et tableaux On testera ces fonctions en déclarant un tableau de 5 rationnels et en écrivant.



TP 1 - Pointeurs -

Exercice 1. Fonctions auxiliaires. Pour commencer ce TP écrire les fonctions suivantes qui serviront `a tester vos programmes.



Structures et Pointeurs - Université des Antilles

Structures et Pointeurs I Les structures 1 Définition Ensemble de plusieurs objets de types éventuellement différents regroupés sous un même nom Exemples de structure : En mathématiques un vecteur A peut être vu comme un structure dont les composant x y etc sont les différents champs



Programmation en C – Exercices - univ-perpfr

Exercices et probl emes corrig es en C++ M1 Math ematiques Appliqu ees 2019-2020 Version du 6 avril 2020 Lien vers la version en ligne Exercice 1 : Pointeurs On consid ere que l’on dispose d’un tableau de ottants d eclar e de la mani ere suivante : floattab[3]; On supposera que ce tableau a egalement et e initialis e



Travaux dirigés 2 : pointeurs et tableaux

Travaux dirigés 2 : pointeurs et tableaux Correction – Lepremierexercicefaitreferenceaucours L’arithmétiquedespointeursn’aétéabordée que rapidement à la ?n du cours donc il est nécessaire de faire un bref rappel avant d’attaquerl’exoderappeldecours – Pourledernierexerciceilpeutêtrebondeleurrappelerlaprocédureàsuivre:



Programmation en C – Exercices - univ-perpfr

Exercice 47 (main-tx-var) Ecrire une fonction tx-varqui calcule le taux de variation d’une fonction f entre a et b La fonction f et les paramètres ?ottants a et b sont passés en paramètre de tx-var Le taux de variation de f entre a et b vaut (f(a) f(b))=(a b)



Algorithmes et programmation II : Les pointeurs - LIP6

Si le compilateur a placé la variable i à l'adresse 4831830000 et j à l'adresse 4831830004 alors : Lvalue Adresse Valeur i 4831830000 1 j 4831830004 1 Remarque L'adresse d'une lvalue est un entier (16 bits 32 bits ou 64 bits) et ce quelque soit le type de la valeur de lvalue S Baarir (Pris10/LIP6)aLes pointeursL2 Mia - 2010/2011 6 / 27



TP 1 : tableaux et pointeurs

la chaîne ct et renvoie une aleurv négative si csct 1 2 Exercices Les fonctions suivantes traaillenv t sur un tableau de chaînes de caractères char** tab ousV pourrez par exemple les tester sur la ligne de commande du programme passée en argument à la fonction main du



TD 1 : les pointeurs - LIP6

TD 1 : les pointeurs Version du 1ermars 2011 Exercice 1 Soient i une variable de type int p et q des pointeurs sur int On suppose que : – i se trouve à l’adresse 4830000 – p à l’adresse 4830010 et – q à l’adresse 4830020



Exercices en langage C++: 150 exercices corrigés (Noire

150 exercices corrigés pour maîtriser la langage C++ Complément idéal de Programmer en langage C++ du même auteur cet ouvrage vous 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 pointeurs ) et les concepts objet du langage



TD 4 : Pointeurs Tableaux et Structures Exercice 1

TD 4 : Pointeurs Tableaux et Structures Exercice 1 : Tableaux et arithm etique des pointeurs Soit un pointeur p qui pointe vers un tableau tab comme suit : int tab [ ] = f1 2 3 4 5 6 7 8 9g ; int p ; p = tab ; Quelles valeurs ou adresses fournissent les expressions suivantes 1 *p+2 5 tab+3 2 *(p+2) 6 &tab[3]-p 3 p+1 7 p+



TP 4 : Pointeurs et structures - Conservatoire national des

Exercice 4 Écrivez une fonction struct matrice alloue_matrice( int colonnes int lignes) qui alloue une matrice Ajoutez de l'a chage permettant d'observer quels sont les pointeurs créés (à chaque utilisation de malloc()) Utilisez le format p dans printf() pour a cher un pointeur



8 Les Pointeurs - ENIT

• En C les pointeurs jouent un rôle primordial dans la définition de fonctions: 3 –Comme le passage des paramètres en C se fait toujours par la valeur les pointeurs sont le seul moyen de changer le contenu de variables déclarées dans d'autres fonctions –De même le traitement de tableaux et de chaînes de



Searches related to exercices pointeurs et fonctions filetype:pdf

MODULE : Algorithmique et Structures de Données 2 (ASD 2) SERIE D’EXERCICES SUR LES POINTEURS Exercice 1 (TD/TP) : Soient trois entiers A B et C et deux pointeurs de type entier P1 et P2 A B C P1 P2 0xf0 0xf4 0xf8 0xfA 0xfC 1 Déterminez quelle est la valeur des différents éléments donnés dans le tableau Pour

Comment calculer la différence entre deux pointeurs ?

  • (arith-ptr) Ecrire un programme qui compare la différence des adresses entre deux pointeurs p et q=p+1 pour des types d’objets pointés différents : char,int,double. Comparer avec le résultat de la fonction sizeof(type) (qui retourne un unsigned long). Exercice 37. (tab-ptr) Déclarer un tableau de double et un pointeur sur son premier élément.

Comment calculer l'addition et la soustraction d'un pointeur?

  • Arithmétique des pointeurs : l'addition et la soustraction. I Soit i un entier et p un pointeur sur un element de type type , I l'expression p 0 = p +i (resp. p 0 = p i ) désigne un pointeur sur un element de type type , I la valeur de p 0 est égale à la valeur de p incrémenté (resp. décrémenté) de i sizeof (type ).

Comment utiliser les pointeurs pour accéder aux éléments du tableau ?

  • Écrire le programme en utilisant explicitement les pointeurs pour accéder aux élémentsdu tableau, c’est-à-dire sans utiliser une variable d’indice. Correction. #include /* EXIT_SUCCESS */ #include /* printf */ 3. Faire la trace de cette deuxième version.

Quels sont les exercices de programmation en C ?

  • Programmation en C – Exercices (e)mettre à 1 les bits de position 1 et 4; (f)mettre à 0 les bits de position 1 et 2; (g)af?cher l’octet de poids faible; PhL. version du 18 septembre 201316 Chapitre 4 Fonctions mathématiques, tableaux, boucles, constantes symboliques A propos des fonctions mathématiques.

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).

Opérateurs arithmétiques : +, -,*, /, %

Opérateurs r elationnels: ==,!=, <=, >=

Opérateurs logiques : &&, ||,!

Opérateurs bit-à-bit : &, ˆ , ~ , ", » Af fectationcomposée : +=, -=,*=, /=, %=, &=, ^=, |=, "=, »= Incrément et décrément : x++, ++x, x--, --x Exercice 4.(int2bin) Ecrire un programmeint2binqui calcule la décomposition binaire d"un entier

(valeur arbitraire lue au clavier). On rappelle que cette décomposition s"obtient par les restes successifs

des divisions entières par 2. Faire afficher cette décomposition dans l"ordre du calcul. Proposer une

solution pour afficher cette écriture dans l"ordre de lecture classique (bits de poids décroissant de la

gauche vers la droite).

Exercice 5.(tabverite) Ecrire un programme qui calcule et affiche les tables de vérités des opérateurs

logiques&&, ||,!. Vous pourrez utiliser le typeBooldeet aussi des valeurs de votre choix. Exercice 6.(formats) Parmi les formats d"affichage utilisables avecprintfetscanf, les plus simples

sont de la forme%suivi d"un caractère, le caractère pouvant êtred, i, o, O, x, X, c, f. Utiliser

ces différents formats d"affichage et comparer les sorties obtenues en les appliquant par exemple aux

valeurs entières 74 et 137. Commenter ce que vous observez. 13

Programmation en C - Exercices

PhL. version du 18 septembre 201314

Chapitre 3

Opérateurs entiers, bit à bit, logiques,

tests

Exercice 7.(op_int). Calculer et afficher les différents résultats des opérateurs arithmétiques entiers

/,%(quotient, reste). Faites varier les signes des opérandes; par exemple,(5, 3),(-5, 3),(5, -3),(-5, -3). Exercice 8.(int_vs_unsigned). Observer l"effet de la conversion de type entre des valeursintet

unsigned int, en particulier dans le cas de valeurs négatives. Utiliser la fonctionsizeofainsi que

les formats d"affichaged, u, ld, lu, x, lx(précédés du caractère %). Même question avec les

typeslongetunsigned long. Exercice 9.(minmax) Ecrire une fonctionminmaxqui affiche le minimum et le maximum de deux va- leurs entières saisies au clavier. pourint i, j;? Donner une réponse puis vérifier pouri=1etj=4.quotesdbs_dbs14.pdfusesText_20
[PDF] exercices polynome du second degré 1ere stmg

[PDF] exercices ponctuation dialogue 6ème

[PDF] exercices pourcentage 5ème

[PDF] exercices pourcentage 5ème pdf

[PDF] exercices pourcentages pdf

[PDF] exercices pratiques cnv

[PDF] exercices pratiques communication non verbale

[PDF] exercices pratiques conduite de réunion

[PDF] exercices pratiques excel 2010 pdf

[PDF] exercices pratiques gestion mentale

[PDF] exercices pratiques relation d aide

[PDF] exercices prépositions fle

[PDF] exercices priorité des opérations

[PDF] exercices prise d initiative terminale s

[PDF] exercices probabilités conditionnelles et indépendance corrigé pdf