exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique...

28
Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés) [BTS - DUT informatique] Collection Ressources Informatiques Table des matières

Transcript of exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique...

Page 1: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

Editions ENI

Algorithmique Techniques fondamentales de programmation

exemples en C# (nombreux exercices corrigés) [BTS - DUT informatique]

CollectionRessources Informatiques

Table des matières

Page 2: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

1Table des matières

Introduction

Chapitre 1Introduction à l'algorithmique

1. Les fondements de l’informatique . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131.1 Architecture de Von Neumann . . . . . . . . . . . . . . . . . . . . . . . . . . 131.2 La machine de Turing. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171.3 Représentation interne des instructions et des données . . . . . . 19

1.3.1 Le binaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191.3.2 Les octets et les mots . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221.3.3 L’hexadécimal . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

2. L’algorithmique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.1 Programmer, c’est un art . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.2 Définition : l’algorithme est une recette . . . . . . . . . . . . . . . . . . . 262.3 Pourquoi utiliser un algorithme ? . . . . . . . . . . . . . . . . . . . . . . . . 272.4 Le formalisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2.4.1 Les algorigrammes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 292.4.2 L’algorithme sous forme de texte . . . . . . . . . . . . . . . . . . . 30

2.5 La complexité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322.6 Les structures algorithmiques . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3. Les langages d’implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.1 Quel langage ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 353.2 Classifications des langages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39

3.2.1 Haut niveau, bas niveau. . . . . . . . . . . . . . . . . . . . . . . . . . . 393.2.2 Diverses classifications . . . . . . . . . . . . . . . . . . . . . . . . . . . . 403.2.3 Compilé ou interprété . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

Les éléments à télécharger sont disponibles à l'adresse suivante :http://www.editions-eni.fr

Saisissez la référence ENI de l'ouvrage RICSHALG dans la zone de recherche et validez. Cliquez sur le titre du livre puis sur le bouton de téléchargement.

Page 3: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

2Techniques fondamentales de programmation (exemples en C#)

Algorithmique

3.3 La machine virtuelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 423.4 C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

3.4.1 Les avantages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 443.4.2 Un premier programme C#. . . . . . . . . . . . . . . . . . . . . . . . 45

4. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

Chapitre 2Les variables et opérateurs

1. Les variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 511.2 Déclaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 541.3 Les types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

1.3.1 Les nombres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 551.3.2 Autres types numériques . . . . . . . . . . . . . . . . . . . . . . . . . . 581.3.3 Les caractères . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 591.3.4 Le type booléen. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61

1.4 Affectation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631.4.1 Affectation de valeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 631.4.2 Affectation de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

1.5 Saisie et affichage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 681.6 Les constantes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

2. Opérateurs et calculs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712.1 Les affectations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 712.2 Les opérateurs arithmétiques. . . . . . . . . . . . . . . . . . . . . . . . . . . . 712.3 Les opérateurs booléens . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 762.4 Les opérateurs de comparaison . . . . . . . . . . . . . . . . . . . . . . . . . . 79

2.4.1 L’égalité . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 802.4.2 La différence . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 812.4.3 Inférieur, supérieur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82

2.5 Le cas des chaînes de caractères . . . . . . . . . . . . . . . . . . . . . . . . . . 832.6 La précédence des opérateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84

Page 4: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

3Table des matières

3. Pour aller plus loin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853.1 Les nombres négatifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 853.2 La représentation des nombres réels . . . . . . . . . . . . . . . . . . . . . . 873.3 Les dates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 923.4 Les caractères . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

4. Types et langages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954.1 Langages typés ou non . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 954.2 La gestion de la mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

5. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97

Chapitre 3Tests et logique booléenne

1. Les tests et conditions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1011.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1011.2 Que tester ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1031.3 Tests SI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105

1.3.1 Forme simple. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1051.3.2 Forme complexe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

1.4 Tests imbriqués. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1101.5 Choix multiples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1141.6 Des exemples complets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 117

1.6.1 Le lendemain d’une date . . . . . . . . . . . . . . . . . . . . . . . . . 1171.6.2 La validité d’une date . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1211.6.3 L’heure dans n secondes . . . . . . . . . . . . . . . . . . . . . . . . . . 123

2. L’algèbre booléen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1272.1 L’origine des tests . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1272.2 Petites erreurs, grosses conséquences . . . . . . . . . . . . . . . . . . . . 129

2.2.1 Ariane 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1292.2.2 Mars Climate Orbiter. . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

2.3 George Boole . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1302.4 L’algèbre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

Page 5: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

4Techniques fondamentales de programmation (exemples en C#)

Algorithmique

2.4.1 Établir une communication . . . . . . . . . . . . . . . . . . . . . . . 1312.4.2 La vérité. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1332.4.3 La loi ET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1332.4.4 La loi OU. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1342.4.5 Le contraire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1352.4.6 Les propriétés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1352.4.7 Quelques fonctions logiques . . . . . . . . . . . . . . . . . . . . . . 1392.4.8 Avec plus de deux variables . . . . . . . . . . . . . . . . . . . . . . . 142

2.5 Une dernière précision . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

3. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

Chapitre 4Les boucles

1. Les structures itératives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1491.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1491.2 Quelques usages simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

2. Tant Que. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1512.1 Structure générale. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1512.2 Boucles infinies et "break" . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1532.3 Des exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 155

2.3.1 Une table de multiplication . . . . . . . . . . . . . . . . . . . . . . . 1552.3.2 Une factorielle. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1562.3.3 x à la puissance y . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1572.3.4 Toutes les tables de multiplication . . . . . . . . . . . . . . . . . 1592.3.5 Saisie de notes et calcul de moyennes . . . . . . . . . . . . . . . 1612.3.6 Rendez la monnaie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1672.3.7 Trois boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 170

3. Répéter … Jusqu’à . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1723.1 Différences fondamentales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1723.2 Quelques exemples adaptés . . . . . . . . . . . . . . . . . . . . . . . . . . . . 174

3.2.1 La factorielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1743.2.2 Les trois boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

Page 6: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

5Table des matières

4. Pour … Fin Pour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1764.1 Une structure pour compter… . . . . . . . . . . . . . . . . . . . . . . . . . 1764.2 … mais pas indispensable . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1774.3 Quelle structure choisir ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1774.4 Un piège à éviter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1784.5 Quelques exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 179

4.5.1 De nouveau trois boucles . . . . . . . . . . . . . . . . . . . . . . . . . 1794.5.2 La factorielle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1804.5.3 Racine carrée avec précision. . . . . . . . . . . . . . . . . . . . . . . 1814.5.4 Calcul du nombre PI. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184

5. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 186

Chapitre 5Les tableaux et structures

1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1891.1 Principe et définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

1.1.1 Simplifier les variables . . . . . . . . . . . . . . . . . . . . . . . . . . . 1891.1.2 Les dimensions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1911.1.3 Les types . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1921.1.4 Déclaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1931.1.5 Utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1941.1.6 Les tableaux dynamiques . . . . . . . . . . . . . . . . . . . . . . . . . 194

1.2 C# et les tableaux. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1961.2.1 Tableaux à une dimension . . . . . . . . . . . . . . . . . . . . . . . . 1961.2.2 Références de tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . 1971.2.3 Tableaux à n dimensions . . . . . . . . . . . . . . . . . . . . . . . . . 199

1.3 Représentation en mémoire . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2011.3.1 Représentation linéaire. . . . . . . . . . . . . . . . . . . . . . . . . . . 2011.3.2 Représentation par référence . . . . . . . . . . . . . . . . . . . . . . 203

Page 7: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

6Techniques fondamentales de programmation (exemples en C#)

Algorithmique

2. Manipulations simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2052.1 Recherche d’un élément . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2052.2 Le plus grand/petit, la moyenne . . . . . . . . . . . . . . . . . . . . . . . . 2082.3 Le morpion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 209

3. Algorithmes avancés. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2143.1 Les algorithmes de tri . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

3.1.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2143.1.2 Le tri par création . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2153.1.3 Le tri par sélection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2153.1.4 Le tri à bulles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2173.1.5 Le tri par insertion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2213.1.6 Le tri Shell . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 224

3.2 Recherche par dichotomie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 226

4. Structures et enregistrements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2294.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2294.2 Déclaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 230

4.2.1 Type structuré . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2304.2.2 Enregistrement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231

4.3 Utiliser les enregistrements . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324.3.1 Utiliser les champs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2324.3.2 Un enregistrement dans une structure . . . . . . . . . . . . . . 2344.3.3 Un tableau dans une structure . . . . . . . . . . . . . . . . . . . . 235

4.4 Les tableaux d’enregistrements . . . . . . . . . . . . . . . . . . . . . . . . . 2374.4.1 Les tables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2374.4.2 Une table comme champ . . . . . . . . . . . . . . . . . . . . . . . . . 238

4.5 Et C# ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239

5. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 241

Page 8: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

7Table des matières

Chapitre 6Les sous-programmes

1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2431.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2431.2 Déclaration et définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245

1.2.1 Dans un algorithme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2451.2.2 En C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 246

1.3 Appel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2471.4 Fonctions et procédures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 249

1.4.1 Les procédures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2491.4.2 Les fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 250

1.5 Variables locales et globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521.5.1 Variables locales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2521.5.2 Variables globales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2531.5.3 Variables globales et C# . . . . . . . . . . . . . . . . . . . . . . . . . 255

1.6 Les paramètres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2561.6.1 Les procédures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2561.6.2 Les fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2591.6.3 Paramètres et C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2611.6.4 Petite application fonctionnelle. . . . . . . . . . . . . . . . . . . . 263

1.7 Sous-programmes prédéfinis . . . . . . . . . . . . . . . . . . . . . . . . . . . 2661.7.1 Un choix important . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2661.7.2 Quelques exemples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266

1.8 Dernier cas : les tableaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 271

2. Les sous-programmes récursifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2742.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2742.2 Un premier exemple : la factorielle . . . . . . . . . . . . . . . . . . . . . . 2752.3 Un exemple pratique : les tours de Hanoï. . . . . . . . . . . . . . . . . 277

3. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280

Page 9: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

8Techniques fondamentales de programmation (exemples en C#)

Algorithmique

Chapitre 7Les fichiers

1. Les différents fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2811.1 Préambule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2811.2 Problématique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2821.3 Définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2831.4 Les formats . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 283

1.4.1 Types de contenus . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2831.4.2 Le fichier binaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2851.4.3 Le fichier texte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2861.4.4 Quel format utiliser ? . . . . . . . . . . . . . . . . . . . . . . . . . . . . 288

1.5 Les accès aux fichiers . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2891.5.1 Séquentiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2891.5.2 Accès direct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2901.5.3 Indexé . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2901.5.4 Autre ?. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290

2. Les enregistrements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2912.1 Les délimiteurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2912.2 Largeur fixe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2942.3 Principes d’accès . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 295

2.3.1 Étapes de base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2952.3.2 Identificateurs de fichiers et canaux . . . . . . . . . . . . . . . . 2962.3.3 Les modes d’ouverture . . . . . . . . . . . . . . . . . . . . . . . . . . . 298

3. Fichier texte séquentiel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2993.1 Ouvrir et fermer un fichier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2993.2 Lire et écrire des enregistrements . . . . . . . . . . . . . . . . . . . . . . . 300

3.2.1 Lecture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3003.2.2 Écriture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302

3.3 Les enregistrements structurés . . . . . . . . . . . . . . . . . . . . . . . . . 3063.4 Exemple en C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 309

Page 10: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

9Table des matières

4. Les fichiers binaires. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3114.1 Nouvelles instructions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3114.2 Exemple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312

5. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 313

Chapitre 8Notions avancées

1. Les pointeurs et références . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3151.1 Rappels sur la mémoire et les données . . . . . . . . . . . . . . . . . . . 315

1.1.1 Structure de la mémoire. . . . . . . . . . . . . . . . . . . . . . . . . . 3151.1.2 C# : des limites qui n’en sont pas . . . . . . . . . . . . . . . . . . 3171.1.3 Brefs exemples en C . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317

1.2 Le pointeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3181.2.1 Principe et définition . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3181.2.2 Le C, roi des pointeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . 3191.2.3 Applications . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 321

1.3 Notation algorithmique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3241.3.1 Déclarer et utiliser les pointeurs . . . . . . . . . . . . . . . . . . . 3241.3.2 Allocation dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . 326

1.4 C#, les références et les pointeurs . . . . . . . . . . . . . . . . . . . . . . . 3281.4.1 Différences et points communs entre C et C# . . . . . . . 3281.4.2 Références sur les objets. . . . . . . . . . . . . . . . . . . . . . . . . . 3291.4.3 Les types primitifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3311.4.4 Références sur les structures . . . . . . . . . . . . . . . . . . . . . . 3321.4.5 Le piège en C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3331.4.6 La valeur null . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3341.4.7 Structures et passage de paramètre par valeur . . . . . . . . 335

2. Les listes chaînées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3372.1 Listes chaînées simples . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337

2.1.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3372.1.2 Création. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3402.1.3 Parcours de la liste . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342

Page 11: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

10Techniques fondamentales de programmation (exemples en C#)

Algorithmique

2.1.4 Recherche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3432.1.5 Ajout d’un élément. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3442.1.6 Suppression d’un élément . . . . . . . . . . . . . . . . . . . . . . . . 3482.1.7 Supprimer toute la liste . . . . . . . . . . . . . . . . . . . . . . . . . . 3512.1.8 Parcours récursif . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 351

2.2 L’implémentation en C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3522.3 Autres exemples de listes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 357

2.3.1 Listes circulaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3572.3.2 Listes d’éléments triés . . . . . . . . . . . . . . . . . . . . . . . . . . . 3572.3.3 Listes doublement chaînées . . . . . . . . . . . . . . . . . . . . . . . 3572.3.4 Files et piles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 358

3. Les arbres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3593.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3593.2 Définitions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 361

3.2.1 Base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3613.2.2 Terminologie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3613.2.3 Description horizontale . . . . . . . . . . . . . . . . . . . . . . . . . . 3623.2.4 Description verticale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3623.2.5 L’arbre binaire . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362

3.3 Parcours d’un arbre. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3633.4 Arbre binaire ordonné . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 366

3.4.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3663.4.2 Recherche d’un élément . . . . . . . . . . . . . . . . . . . . . . . . . . 3663.4.3 Ajout d’un élément. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3683.4.4 Suppression d’un noeud . . . . . . . . . . . . . . . . . . . . . . . . . . 369

4. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 370

Page 12: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

11Table des matières

Chapitre 9Une approche de l'objet

1. Principe de l’objet, une notion évidente . . . . . . . . . . . . . . . . . . . . . . 3711.1 Avant de continuer. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3711.2 Rappels sur la programmation procédurale . . . . . . . . . . . . . . . 372

1.2.1 Les données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3721.2.2 Les traitements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 373

1.3 L’objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3731.3.1 Dans la vie courante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3731.3.2 En informatique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 375

1.4 Classe, objets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3781.5 Déclaration et accès . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3801.6 Les méthodes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3821.7 Portée des membres . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3841.8 Encapsulation des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3851.9 L’héritage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 387

1.9.1 Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3871.9.2 Commerce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3891.9.3 Hiérarchie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3901.9.4 Simple ou multiple . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391

1.10 Le polymorphisme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3921.10.1Principe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3921.10.2Le polymorphisme ad hoc . . . . . . . . . . . . . . . . . . . . . . . . 3921.10.3Le polymorphisme d’héritage . . . . . . . . . . . . . . . . . . . . . 3931.10.4Le polymorphisme paramétrique. . . . . . . . . . . . . . . . . . . 395

2. Manipuler les objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3962.1 Les constructeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 396

2.1.1 Déclaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3962.1.2 Appel implicite . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3972.1.3 L’héritage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 399

2.2 Les destructeurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4012.3 Les membres statiques ou attributs. . . . . . . . . . . . . . . . . . . . . . 4022.4 Classes et méthodes abstraites . . . . . . . . . . . . . . . . . . . . . . . . . 404

Page 13: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

12Techniques fondamentales de programmation (exemples en C#)

Algorithmique

2.5 Interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 407

3. L’objet en C# . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4093.1 Les langages objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4093.2 Déclaration des classes et objets . . . . . . . . . . . . . . . . . . . . . . . . 4103.3 Héritage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4133.4 Interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 416

4. Exercices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 418

AnnexeCorrigés des exercices

1. Introduction à l'algorithmique. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 421

2. Les variables et opérateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 425

3. Tests et logique booléenne. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 432

4. Les boucles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 440

5. Les tableaux et structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 458

6. Les sous-programmes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 467

7. Les fichiers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 473

8. Notions avancées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 480

9. Une approche de l'objet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 484

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 493

Page 14: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

Editions ENI

C# 6 et Visual Studio 2015Les fondamentaux du langage

CollectionRessources Informatiques

Table des matières

Page 15: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

1Table des matières

Avant-propos

Chapitre 1La plateforme .NET

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

2. Historique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3. Le Common Language Runtime (CLR). . . . . . . . . . . . . . . . . . . . . . . . 22

4. La Base Class Library (BCL) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

5. Le Dynamic Language Runtime (DLR) . . . . . . . . . . . . . . . . . . . . . . . . 25

6. Évolution de la plateforme. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 266.1 .NET Core . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 276.2 .NET Compiler Platform : Roslyn . . . . . . . . . . . . . . . . . . . . . . . . 286.3 .NET dans le monde open source . . . . . . . . . . . . . . . . . . . . . . . . 28

7. Une première application avec Visual C# . . . . . . . . . . . . . . . . . . . . . 297.1 Création. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 297.2 Compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 317.3 Analyse de l'assembly . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

7.3.1 Structure . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 337.3.2 Exploration avec ILDASM . . . . . . . . . . . . . . . . . . . . . . . . . 34

Les éléments à télécharger sont disponibles à l'adresse suivante :http://www.editions-eni.fr

Saisissez la référence ENI de l'ouvrage RI15CSHA dans la zone de recherche et validez. Cliquez sur le titre du livre puis sur le bouton de téléchargement.

Page 16: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

2Les fondamentaux du langage

C# 6 et Visual Studio 2015

Chapitre 2Visual Studio 2015

1. Installation et premier lancement . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391.1 Prérequis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 391.2 Éditions de Visual Studio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

1.2.1 Visual Studio Express . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 411.2.2 Visual Studio Community. . . . . . . . . . . . . . . . . . . . . . . . . 411.2.3 Éditions commerciales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

1.3 Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431.4 Premier lancement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

2. Description des outils. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 532.1 Barres d'outils . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 582.2 Explorateur de solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 592.3 Explorateur d'objets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 602.4 Explorateur de serveurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 612.5 Fenêtre de propriétés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 652.6 Fenêtre d'édition de code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

2.6.1 Navigation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 682.6.2 Suivi des modifications . . . . . . . . . . . . . . . . . . . . . . . . . . . 682.6.3 Mise en surbrillance des références . . . . . . . . . . . . . . . . . . 692.6.4 Refactorisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 702.6.5 IntelliSense . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 722.6.6 Snippets. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

Chapitre 3L'organisation d'une application

1. Les solutions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 751.2 Création d'une solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 761.3 Organisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

Page 17: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

3Table des matières

1.4 Actions disponibles sur une solution. . . . . . . . . . . . . . . . . . . . . . 781.4.1 Ajout et suppression d'un projet . . . . . . . . . . . . . . . . . . . . 781.4.2 Création d'un dossier de solution . . . . . . . . . . . . . . . . . . . 801.4.3 Chargement et déchargement d'un projet . . . . . . . . . . . . 801.4.4 Création d'un fichier. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 811.4.5 Génération de la solution . . . . . . . . . . . . . . . . . . . . . . . . . . 81

1.5 Configuration de la solution . . . . . . . . . . . . . . . . . . . . . . . . . . . . 821.5.1 Configuration des projets de démarrage . . . . . . . . . . . . . . 821.5.2 Dépendances du projet. . . . . . . . . . . . . . . . . . . . . . . . . . . . 841.5.3 Paramètres d'analyse du code. . . . . . . . . . . . . . . . . . . . . . . 851.5.4 Fichiers sources pour le débogage . . . . . . . . . . . . . . . . . . . 861.5.5 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87

2. Les projets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 882.1 Création d'un projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 882.2 Propriétés d'un projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96

2.2.1 Application . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 972.2.2 Générer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1002.2.3 Événements de build . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1032.2.4 Déboguer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1052.2.5 Ressources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1062.2.6 Paramètres. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

Chapitre 4Les bases du langage

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 109

2. Les variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1092.1 Nommage des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1102.2 Type des variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111

2.2.1 Types valeurs et types références . . . . . . . . . . . . . . . . . . 1112.2.2 Types intégrés. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 112

2.3 Déclaration des variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1162.4 Portée des variables. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 116

Page 18: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

4Les fondamentaux du langage

C# 6 et Visual Studio 2015

2.5 Modificateurs d'accès . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1172.6 Le mot-clé var et l'inférence de type . . . . . . . . . . . . . . . . . . . . . 118

3. Les constantes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

4. Les opérateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1194.1 Les opérateurs d’accès. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119

4.1.1 Accès simple : . (point) . . . . . . . . . . . . . . . . . . . . . . . . . . . 1204.1.2 Accès indexé : [ ] . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1204.1.3 Accès avec nullité conditionnelle : ? . . . . . . . . . . . . . . . . 120

4.2 Les opérateurs arithmétiques. . . . . . . . . . . . . . . . . . . . . . . . . . . 1214.3 Les opérateurs de comparaison . . . . . . . . . . . . . . . . . . . . . . . . . 1214.4 Les opérateurs conditionnels . . . . . . . . . . . . . . . . . . . . . . . . . . . 122

4.4.1 Opérateur ternaire : ? ... : . . . . . . . . . . . . . . . . . . . . . . . . 1224.4.2 Opérateur de fusion de valeur nulle : ?? . . . . . . . . . . . . . 123

4.5 Les opérateurs logiques. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1234.5.1 Négation : ! . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1234.5.2 ET logique : &. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1244.5.3 OU logique : | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1244.5.4 OU exclusif : ^ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1244.5.5 ET conditionnel : &&. . . . . . . . . . . . . . . . . . . . . . . . . . . . 1254.5.6 OU conditionnel : || . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

4.6 Les opérateurs binaires . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1264.6.1 ET binaire : & . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1264.6.2 OU binaire : | . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1264.6.3 OU exclusif : ^ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274.6.4 Négation : ~ . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1274.6.5 Décalage vers la droite : >> . . . . . . . . . . . . . . . . . . . . . . 1274.6.6 Décalage vers la gauche : << . . . . . . . . . . . . . . . . . . . . . 128

5. Les structures de contrôle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1285.1 Les structures conditionnelles . . . . . . . . . . . . . . . . . . . . . . . . . . 128

5.1.1 if ... else . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1285.1.2 switch . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 130

5.2 Les structures d'itération . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

Page 19: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

5Table des matières

5.2.1 for . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1315.2.2 while . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1325.2.3 do ... while. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1335.2.4 foreach. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1335.2.5 Contrôler l'exécution d'une boucle . . . . . . . . . . . . . . . . . 134

5.3 Autres structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1355.3.1 using . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1355.3.2 goto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

6. Les fonctions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1366.1 Écriture d'une fonction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1376.2 Paramètres de fonction. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1386.3 Procédures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1436.4 Surcharges . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

7. Les attributs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

Chapitre 5La programmation orientée objet avec C#

1. Les principes de la programmation orientée objet . . . . . . . . . . . . . . 147

2. Les classes et les structures. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1502.1 Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 150

2.1.1 Déclaration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1512.1.2 Constructeur et destructeur . . . . . . . . . . . . . . . . . . . . . . 1532.1.3 Classes partielles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 157

2.2 Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1582.3 Création de méthodes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 159

2.3.1 Création. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1592.3.2 Méthodes partielles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1612.3.3 Méthodes d'extension . . . . . . . . . . . . . . . . . . . . . . . . . . . 1622.3.4 Méthodes opérateurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

Page 20: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

6Les fondamentaux du langage

C# 6 et Visual Studio 2015

2.4 Création de propriétés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1652.4.1 Lecture et écriture. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1652.4.2 Lecture seule . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1662.4.3 Écriture seule. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1672.4.4 Propriétés automatiques . . . . . . . . . . . . . . . . . . . . . . . . . 1672.4.5 Initialisation de propriétés automatiques . . . . . . . . . . . . 1682.4.6 Propriétés automatiques en lecture seule . . . . . . . . . . . . 1682.4.7 Propriétés indexées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

2.5 Membres statiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1702.6 Utilisation des classes et structures. . . . . . . . . . . . . . . . . . . . . . 171

2.6.1 Instanciation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1712.6.2 Initialisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1722.6.3 Types anonymes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172

3. Les espaces de noms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1753.1 Nomenclature . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1763.2 using . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

4. L'héritage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1784.1 Mise en œuvre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1794.2 Les mots-clés this et base . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1804.3 Redéfinition et masquage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 182

4.3.1 Redéfinition de méthode . . . . . . . . . . . . . . . . . . . . . . . . . 1824.3.2 Masquage de méthode . . . . . . . . . . . . . . . . . . . . . . . . . . . 1834.3.3 Différences entre redéfinition et masquage . . . . . . . . . . 183

4.4 Imposer ou interdire l'héritage . . . . . . . . . . . . . . . . . . . . . . . . . 1864.5 Le transtypage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 187

5. Les interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1905.1 Création . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1905.2 Utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

5.2.1 Implémentation implicite . . . . . . . . . . . . . . . . . . . . . . . . 1925.2.2 Implémentation explicite. . . . . . . . . . . . . . . . . . . . . . . . . 194

6. Les énumérations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 196

Page 21: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

7Table des matières

7. Les délégués . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1967.1 Création. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1977.2 Utilisation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1977.3 Expressions lambda . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 198

8. Les événements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1998.1 Déclaration et déclenchement . . . . . . . . . . . . . . . . . . . . . . . . . . 1998.2 Gestion des événements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

9. Les génériques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2039.1 Classes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

9.1.1 Définition d'une classe générique . . . . . . . . . . . . . . . . . . 2049.1.2 Utilisation d'une classe générique . . . . . . . . . . . . . . . . . . 204

9.2 Interfaces. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2059.2.1 Définition d'une interface générique. . . . . . . . . . . . . . . . 2059.2.2 Utilisation d'une interface générique . . . . . . . . . . . . . . . 206

9.3 Contraintes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2079.4 Méthodes. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

9.4.1 Définition d'une méthode générique. . . . . . . . . . . . . . . . 2109.4.2 Utilisation d'une méthode générique . . . . . . . . . . . . . . . 212

9.5 Événements et délégués . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212

10. Les collections . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21410.1 Types existants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 214

10.1.1Array . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21410.1.2ArrayList et List<T> . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21510.1.3Hashtable et Dictionary<TKey, TValue>. . . . . . . . . . . 21910.1.4Stack et Stack<T> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22110.1.5Queue et Queue<T>. . . . . . . . . . . . . . . . . . . . . . . . . . . . 222

10.2 Choisir un type de collection . . . . . . . . . . . . . . . . . . . . . . . . . . . 223

11. La programmation dynamique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 223

12. La programmation asynchrone . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22612.1 Les objets Task . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22612.2 Écrire du code asynchrone avec async et await . . . . . . . . . . . . 229

Page 22: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

8Les fondamentaux du langage

C# 6 et Visual Studio 2015

Chapitre 6Débogage et gestion des erreurs

1. Les différents types d'erreurs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2311.1 Erreurs de compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2311.2 Erreurs d'exécution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

2. Utilisation des exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2342.1 Création et déclenchement d'exceptions . . . . . . . . . . . . . . . . . 234

2.1.1 La classe Exception . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2342.1.2 Le mot-clé throw . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2352.1.3 Exceptions spécialisées . . . . . . . . . . . . . . . . . . . . . . . . . . . 235

2.2 Gérer les exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2362.2.1 La structure try ... catch . . . . . . . . . . . . . . . . . . . . . . . . . . 2362.2.2 Les filtres d’exception. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2392.2.3 Le bloc finally . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 240

3. Les outils fournis par Visual Studio. . . . . . . . . . . . . . . . . . . . . . . . . . 2423.1 Contrôle de l'exécution . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242

3.1.1 Démarrage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2433.1.2 Arrêt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2443.1.3 Pause . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2443.1.4 Reprise. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245

3.2 Points d'arrêt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2453.3 Visualiser le contenu des variables . . . . . . . . . . . . . . . . . . . . . . 252

3.3.1 DataTips . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2523.3.2 Fenêtres Espion. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2533.3.3 Fenêtre Espion express . . . . . . . . . . . . . . . . . . . . . . . . . . . 2543.3.4 Fenêtre Variables locales . . . . . . . . . . . . . . . . . . . . . . . . . 255

3.4 Compilation conditionnelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255

Page 23: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

9Table des matières

Chapitre 7Développement d'applications Windows

1. Présentation de WPF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2591.1 Structure d'une application WPF. . . . . . . . . . . . . . . . . . . . . . . . 2601.2 XAML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 261

1.2.1 Templates . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2621.2.2 Espaces de noms . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 263

1.3 Contexte de données et binding . . . . . . . . . . . . . . . . . . . . . . . . 264

2. Utilisation des contrôles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2682.1 Ajout de contrôles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2692.2 Positionnement et dimensionnement des contrôles . . . . . . . . 2722.3 Ajout d'un gestionnaire d'événements à un contrôle . . . . . . . . 275

3. Les principaux contrôles. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2773.1 Contrôles de fenêtrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 278

3.1.1 Window. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2783.1.2 NavigationWindow . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 280

3.2 Contrôles de disposition. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2823.2.1 Grid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2823.2.2 StackPanel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2863.2.3 DockPanel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2863.2.4 WrapPanel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2883.2.5 Canvas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 290

3.3 Contrôles d'affichage de données . . . . . . . . . . . . . . . . . . . . . . . 2903.3.1 TextBlock . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2913.3.2 Label . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2923.3.3 Image . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2933.3.4 ScrollViewer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2943.3.5 ItemsControl. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2943.3.6 StatusBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2983.3.7 ToolTip . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 298

Page 24: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

10Les fondamentaux du langage

C# 6 et Visual Studio 2015

3.4 Contrôles d'édition de texte. . . . . . . . . . . . . . . . . . . . . . . . . . . . 2993.4.1 TextBox. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2993.4.2 RichTextBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3003.4.3 PasswordBox. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302

3.5 Contrôles de sélection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3023.5.1 RadioButton . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3023.5.2 CheckBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3033.5.3 ComboBox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3033.5.4 ListBox. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3043.5.5 ListView . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3063.5.6 TreeView. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3083.5.7 Slider . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3133.5.8 Calendar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3133.5.9 DatePicker . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 314

3.6 Contrôles d'action. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3153.6.1 Button . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3153.6.2 Menu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3153.6.3 ContextMenu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3183.6.4 ToolBar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 319

4. Interactions clavier et souris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3204.1 Événements clavier . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3204.2 Événements souris . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3234.3 Glisser-déposer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 324

5. Aller plus loin avec WPF. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3285.1 Introduction à l'utilisation de Blend . . . . . . . . . . . . . . . . . . . . . 328

5.1.1 L'interface . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3295.1.2 Ajout et modification de contrôles visuels . . . . . . . . . . . 337

5.2 Introduction à MVVM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3405.2.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3405.2.2 Les interfaces INotifyPropertyChanged

et INotifyCollectionChanged . . . . . . . . . . . . . . . . . . . . . 3415.2.3 Commandes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3425.2.4 Mise en œuvre . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 342

Page 25: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

11Table des matières

Chapitre 8Accès aux données

1. Principes d'une base de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3591.1 Terminologie. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3591.2 Le langage SQL . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 360

1.2.1 Recherche d'enregistrements . . . . . . . . . . . . . . . . . . . . . . 3611.2.2 Ajout d'enregistrements . . . . . . . . . . . . . . . . . . . . . . . . . . 3631.2.3 Mise à jour d'informations. . . . . . . . . . . . . . . . . . . . . . . . 3631.2.4 Suppression d'informations . . . . . . . . . . . . . . . . . . . . . . . 364

2. ADO.NET . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3642.1 Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3642.2 Les fournisseurs de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . 365

2.2.1 SQL Server. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3662.2.2 Oracle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3662.2.3 OLE DB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3672.2.4 ODBC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 367

3. Utiliser ADO.NET en mode connecté. . . . . . . . . . . . . . . . . . . . . . . . 3683.1 Connexion à une base de données. . . . . . . . . . . . . . . . . . . . . . . 368

3.1.1 Chaînes de connexion . . . . . . . . . . . . . . . . . . . . . . . . . . . 3683.1.2 Pools de connexions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3713.1.3 Gestion de la connexion. . . . . . . . . . . . . . . . . . . . . . . . . . 373

3.2 Création et exécution de commandes . . . . . . . . . . . . . . . . . . . . 3753.2.1 Définition et création d'une commande . . . . . . . . . . . . . 3753.2.2 Sélection de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3763.2.3 Actions sur les données . . . . . . . . . . . . . . . . . . . . . . . . . . 3773.2.4 Paramétrage d'une commande . . . . . . . . . . . . . . . . . . . . . 3783.2.5 Exécution de procédures stockées . . . . . . . . . . . . . . . . . . 381

4. Utiliser ADO.NET en mode déconnecté. . . . . . . . . . . . . . . . . . . . . . 3834.1 DataSet et DataTable. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 383

4.1.1 Description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3834.1.2 Remplissage d'un DataSet

à partir d'une base de données . . . . . . . . . . . . . . . . . . . . . 384

Page 26: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

12Les fondamentaux du langage

C# 6 et Visual Studio 2015

4.1.3 Remplissage d'un DataSet sans base de données . . . . . . 3874.2 Manipulation des données hors connexion . . . . . . . . . . . . . . . 390

4.2.1 Lecture des données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3914.2.2 Création de contraintes . . . . . . . . . . . . . . . . . . . . . . . . . . 3914.2.3 Relations entre DataTables . . . . . . . . . . . . . . . . . . . . . . . 3954.2.4 État et versions d'une DataRow . . . . . . . . . . . . . . . . . . . 3974.2.5 Modification de données . . . . . . . . . . . . . . . . . . . . . . . . . 3984.2.6 Suppression de données . . . . . . . . . . . . . . . . . . . . . . . . . . 4004.2.7 Valider ou annuler des modifications . . . . . . . . . . . . . . . 4004.2.8 Filtrage et tri à l'aide d'une DataView. . . . . . . . . . . . . . . 4014.2.9 Recherche de données . . . . . . . . . . . . . . . . . . . . . . . . . . . 404

4.3 Valider les modifications au niveau de la base de données . . . 4064.3.1 Générer des commandes de mise à jour

automatiquement. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4074.3.2 Commandes de mise à jour personnalisées. . . . . . . . . . . 4094.3.3 Gestion des accès concurrentiels . . . . . . . . . . . . . . . . . . . 410

5. Utiliser les transactions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 412

Chapitre 9LINQ

1. Présentation de LINQ. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 415

2. Syntaxe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4162.1 Une première requête LINQ . . . . . . . . . . . . . . . . . . . . . . . . . . . 4192.2 Les opérateurs de requête . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 422

2.2.1 Projection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4222.2.2 Filtrage. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4242.2.3 Triage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4262.2.4 Partitionnement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4272.2.5 Jointure et regroupement. . . . . . . . . . . . . . . . . . . . . . . . . 4282.2.6 Agrégation. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 431

Page 27: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

13Table des matières

3. LINQ to SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4333.1 Le mappage objet-relationnel. . . . . . . . . . . . . . . . . . . . . . . . . . . 433

3.1.1 Utilisation de SQLMetal . . . . . . . . . . . . . . . . . . . . . . . . . 4343.1.2 Utilisation du concepteur objet/relationnel . . . . . . . . . . 440

3.2 Utilisation de LINQ to SQL. . . . . . . . . . . . . . . . . . . . . . . . . . . . 4493.2.1 Récupération de données . . . . . . . . . . . . . . . . . . . . . . . . . 4493.2.2 Mise à jour de données. . . . . . . . . . . . . . . . . . . . . . . . . . . 4513.2.3 Gestion des conflits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 453

Chapitre 10XML

1. Présentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 457

2. Structure d'un fichier XML . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4582.1 Constituants d'un document XML . . . . . . . . . . . . . . . . . . . . . . 4582.2 Document bien formé et document valide . . . . . . . . . . . . . . . . 462

3. Manipuler un document XML. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4633.1 Utilisation de DOM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4643.2 Utilisation de XPath . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4693.3 Utilisation de LINQ to XML . . . . . . . . . . . . . . . . . . . . . . . . . . . 472

Chapitre 11Déploiement

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 477

2. Windows Installer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4782.1 Installation de InstallShield Limited Edition . . . . . . . . . . . . . . 4792.2 Création d'un projet d'installation . . . . . . . . . . . . . . . . . . . . . . 482

2.2.1 Informations sur l'application . . . . . . . . . . . . . . . . . . . . . 4832.2.2 Prérequis d'installation . . . . . . . . . . . . . . . . . . . . . . . . . . . 4842.2.3 Fichiers de l'application . . . . . . . . . . . . . . . . . . . . . . . . . . 4852.2.4 Raccourcis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4882.2.5 Valeurs de la base de registre . . . . . . . . . . . . . . . . . . . . . . 489

Page 28: exemples en C# (nombreux exercices corrigés) [BTS - DUT ... · Editions ENI Algorithmique Techniques fondamentales de programmation exemples en C# (nombreux exercices corrigés)

14Les fondamentaux du langage

C# 6 et Visual Studio 2015

2.2.6 Boîtes de dialogue . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 490

3. ClickOnce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4913.1 La technologie ClickOnce . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 491

3.1.1 Principes de fonctionnement . . . . . . . . . . . . . . . . . . . . . . 4923.1.2 Méthodes de déploiement disponibles . . . . . . . . . . . . . . 4933.1.3 Les mises à jour d'applications avec ClickOnce . . . . . . . 494

3.2 La publication ClickOnce. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 496

Chapitre 12Aide-mémoire

1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 505

Index . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 525