Partie I
Dans cette partie :
Chapitre 1 : Bienvenue dans l'univers de C#. . . . . . . . . . . . . . . . . . . . . . 3 Chapitre 2 : Variables, opérateurs et expressions. . . . . . . . . . . . . . . . . 29 Chapitre 3 : Écrire des méthodes et définir leur portée. . . . . . . . . . . . 49 Chapitre 4 : Commandes de prise de décision . . . . . . . . . . . . . . . . . . . 67 Chapitre 5 : Assignation composée et instruction d'itération . . . . . . 85
Chapitre 6 : Erreurs et exceptions . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103
1
Chapitre 1
Au terme de cette leçon, vous saurez :
? Utiliser l’environnement de programmation Microsoft Visual Studio 2008.
? Créer une application console C#.
? Expliquer le but des espaces de noms.
? Créer une application graphique simple C#.
Microsoft Visual C# est un puissant langage orienté composant créé par Microsoft. C# joue un rôle essentiel dans l’architecture de Microsoft .NET Framework, et certaines personnes ont comparé son rôle à celui joué par C dans le développement d’UNIX. Si vous connaissez déjà un langage comme C, C++ ou Java, vous trouverez que la syntaxe de C# en est très proche. Si vous êtes habitué à programmer dans d’autres langages, vous devriez rapidement vous familiariser avec la syntaxe de C# et vous n’aurez qu’à apprendre à placer les accolades et les points-virgules aux bons endroits.
La Partie I présente les bases de C#. Vous découvrirez comment déclarer des variables et comment utiliser des opérateurs arithmétiques, comme le signe plus (+) ou le signe moins (–) pour manipuler des valeurs dans les variables. Vous étudierez également la manière d’écrire des méthodes et de transformer des arguments en méthodes. Vous apprendrez aussi à vous servir des instructions de prise de décision, telles que if, et des instructions d’itération, comme while. Enfin, vous analyserez la manière dont C# utilise des exceptions pour gérer avec souplesse les erreurs. Quand vous maîtriserez toutes ces bases de C#, vous pourrez évoluer vers des fonctions plus avancées qui sont abordées dans les Parties II à VI.
Visual Studio 2008 est un environnement de programmation riche en outils comportant toutes les fonctionnalités nécessaires pour créer des projets C# de toute taille. Vous pouvez même créer des projets qui combinent harmonieusement des modules compilés utilisant des langages de programmation différents. Dans le premier exercice, vous lancerez l’environnement de programmation Visual Studio 2008 et vous apprendrez à concevoir une application console.
|
3
? Si vous utilisez Visual Studio 2008 Standard Edition ou Visual Studio 2008 Professional Edition, effectuez les opérations suivantes pour démarrer Visual Studio 2008 :
1. Dans la barre de tâches de Windows, cliquez sur le bouton Démarrer, pointez Tous les programmes, puis pointez le groupe de programmes Microsoft Visual Studio 2008.
2. Dans le groupe de programmes Microsoft Visual Studio 2008, cliquez sur Microsoft Visual Studio 2008.
Visual Studio 2008 affiche au démarrage la fenêtre suivante :
|
? Si vous utilisez Visual C# 2008 Express Edition, cliquez sur le bouton Démarrer dans la barre de tâches Microsoft Windows, pointez Tous les programmes, puis cliquez sur Microsoft Visual C# 2008 Express Edition.
Visual C# 2008 Express Edition affiche au démarrage la fenêtre suivante :
|
? Si vous utilisez Visual Studio 2008 Standard Edition ou Visual Studio 2008 Professional Edition, effectuez les tâches suivantes pour créer une nouvelle application console.
1. Dans le menu Fichier, pointez Nouveau, puis cliquez sur Projet.
La boîte de dialogue Nouveau projet s’ouvre. Cette boîte de dialogue liste les modèles que vous pouvez utiliser comme point de départ pour construire une application. Les modèles sont présentés en fonction du langage de programmation et du type d’application que vous utilisez.
2. Dans le volet Types de projets, cliquez sur Visual C#. Dans le volet Modèles, cliquez sur l’icône Application console.
3. Dans le champ Emplacement, si vous utilisez le système d’exploitation Windows Vista, saisissez C:\Utilisateurs\VotreNom\Documents\Visual C Sharp Étape par étape\Chapitre 1. Si vous utilisez Microsoft Windows XP ou Windows Server 2003, saisissez C:\Documents and Settings\VotreNom\Mes Documents\Visual C Sharp Étape par étape\Chapitre 1.
Remplacez le texte VotreNom dans ces chemins par votre nom d’utilisateur Windows.
Astuce Si le dossier que vous avez spécifié n’existe pas, Visual Studio 2008 le crée pour vous. |
4. Dans le champ Nom, saisissez Bonjour.
5. Assurez-vous que la case Créer le répertoire pour la solution est cochée, puis cliquez sur OK.
? Si vous utilisez Visual C# 2008 Express Edition, la boîte de dialogue Nouveau projet ne vous autorise pas à spécifier l’emplacement de vos fichiers de projets; il les place par défaut dans le dossier C:\Utilisateurs\VotreNom\AppData\Local\Temporary Projects. Modifiez cela en effectuant la procédure suivante :
1. Dans le menu Outils, cliquez sur Options.
2. Dans la boîte de dialogue Options, cochez la case Afficher tous les paramètres, puis cliquez sur Projets et solutions dans l’arborescence du volet gauche.
3. Dans le volet droit, dans la zone de texte Emplacements des projetsVisual Studio, spécifiez le dossier Visual C Sharp Étape par étape\Chapitre 1 sous votre dossier Documents.
4. Cliquez sur OK.
? Si vous utilisez Visual C# 2008 Express Edition, effectuez les tâches suivantes pour créer une nouvelle application console.
1. Dans le menu Fichier, cliquez sur Nouveau projet.
2. Dans la boîte de dialogue Nouveau projet, cliquez sur l’icône Application console.
3. Dans le champ Nom, saisissez Bonjour.
4. Cliquez sur OK.
Visual Studio crée le projet en utilisant le modèle Application console et affiche le code de démarrage suivant pour le projet :
Avant d'écrire le code, examinez les fichiers se trouvant dans la liste de l'Explorateur de solutions, que Visual Studio 2008 a créés comme éléments de votre projet :
? Solution 'Bonjour' : c’est le fichier solution qui est au sommet de la liste ; il en existe un par application. Si vous vous servez de l’Explorateur Windows pour rechercher votre dossier Documents\Visual C Sharp Étape par étape\Chapitre 1\Bonjour, vous verrez que le nom de ce fichier est en fait . Chaque fichier solution contient des références à un ou plusieurs fichiers projet.
? Bonjour : c’est le fichier projet C#. Chaque fichier projet répertorie un ou plusieurs fichiers contenant le code source et d’autres éléments relatifs à ce projet. L’ensemble du code source d’un projet doit être écrit dans le même langage de programmation. Dans l’Explorateur Windows, ce fichier qui s’appelle Bonjour.csproj est stocké dans votre dossier \Mes Documents\Visual C Sharp Étape par étape\Chapitre1\Bonjour\Bonjour.
? Properties : c’est un dossier du projet Bonjour. Si vous le déployez, vous verrez qu’il contient un fichier nommé . Ce dernier est un fichier spécial que vous pouvez utiliser pour ajouter des attributs à un programme, comme le nom du créateur, la date d’écriture du programme, etc. Vous pouvez spécifier d’autres attributs pour modifier la manière dont s’exécute le programme. Apprendre à utiliser ces attributs dépasse le cadre de ce livre.
? : c’est un fichier source C#. C’est celui qui s’affiche dans la fenêtre Code quand le projet est créé. Vous écrirez le code de l’application console dans ce fichier qui contient du code que Visual Studio 2008 génère automatiquement.
Le fichier définit une classe intitulée Program qui comporte une méthode appelée Main. Toutes les méthodes doivent être définies dans une classe. Vous en apprendrez plus sur les classes dans le chapitre 7, « Classes et objets ». La méthode Main est spéciale car elle correspond au point de lancement du programme. Ce doit être une méthode statique (les méthodes sont abordées en détail dans le chapitre 3, « Écrire des méthodes et définir leur portée », et les méthodes statiques sont traitées dans le chapitre 7).
|
Dans les exercices suivants, vous allez écrire du code pour afficher le message Bonjour sur la console, puis vous générerez et exécuterez l'application console Bonjour ; pour finir, vous étudierez la manière dont les espaces de noms sont utilisés pour séparer les éléments du code.
Main devrait alors ressembler à ceci :
static void Main(string[] args)
{
Console
}
|
2. Mettez un point directement après Console. Une autre liste Intellisense apparaît, présentant les méthodes, les propriétés et les champs de la classe Console.
3. Faites dérouler la liste, sélectionnez WriteLine, puis appuyez sur Entrée. Vous pouvez également continuer à saisir les caractères W, r, i, t, e, L jusqu'à ce que WriteLine soit sélectionné, puis appuyer sur Entrée.
La liste IntelliSense se ferme et le mot WriteLine est ajouté au fichier source. Main devrait maintenant ressembler à ceci :
static void Main(string[] args)
{
Console.WriteLine
}
4. Saisissez une parenthèse ouvrante, (. Une autre astuce IntelliSense s’affiche.
Celle-ci présente les paramètres de la méthode WriteLine. En fait, WriteLine est une méthode surchargée, ce qui signifie que la classe Console contient plus d'une méthode appelée WriteLine (elle fournit en fait 19 versions différentes de cette méthode). Chaque version de la méthode WriteLine peut être utilisée pour transmettre en sortie différents types de données (les méthodes surchargées sont abordées au chapitre 3). Main devrait maintenant ressembler à ceci :
static void Main(string[] args)
{
Console.WriteLine(
}
|
5. Saisissez une parenthèse fermante, ), suivie d'un point-virgule, ;.
Main devrait maintenant ressembler à ceci :
static void Main(string[] args)
{
Console.WriteLine();
}
6. Déplacez le curseur, et saisissez la chaîne "Bonjour", sans oublier les guillemets, entre les parenthèses suivant la méthode WriteLine.
static void Main(string[] args)
{
Console.WriteLine("Bonjour");
}
| ||||||||||||||||||||
Icônes IntelliSense Lorsque vous saisissez un point après le nom d’une classe, IntelliSense affiche le nom de chaque membre de cette classe. À gauche de chaque nom de membre se trouve une icône qui indique le type de celui-ci. Voici les principales icônes et leurs types :
interface (abordée dans le chapitre 13) | ||||||||||||||||||||
Vous verrez également d’autres icônes IntelliSense apparaître lorsque vous saisirez du code dans différents contextes. | ||||||||||||||||||||
| ||||||||||||||||||||
1. Dans le menu Générer, cliquez sur Générer la solution.
Cette action compile le code C#, créant un programme que vous pouvez exécuter. La fenêtre Sortie apparaît sous la fenêtre Code.
|
Dans la fenêtre Sortie, vous devez voir des messages similaires à celui reproduit cidessous qui indique comment le programme a été compilé :
------ Début de la génération : Projet : Bonjour, Configuration : Debug Any CPU ------
C:\Windows\\Framework\v3.5\ /noconfig /nowarn:1701,1702 … Compilation terminée -- 0 erreurs, 0 avertissements
Bonjour -> C:\Users\Dominique\Documents\Visual C Sharp Étape par étape\…
========== Génération : 1 a réussi ou est à jour, 0 a échoué, 0 a été ignoré ==========
Si vous avez fait des erreurs, elles apparaîtront dans la fenêtre Liste d’erreurs. La figure suivante montre ce qui se passe si vous oubliez de saisir le guillemet fermant après le texte Bonjour dans la commande WriteLine. Notez bien qu’une seule erreur peut parfois provoquer plusieurs erreurs de compilation.
|
Si vous avez soigneusement suivi les instructions précédentes, il ne devrait pas y avoir d’erreurs ou d’alertes, et le programme devrait se générer avec succès.
Un astérisque après le nom du fichier dans l'onglet au-dessus de la fenêtre Code indique que le fichier a été modifié depuis sa dernière sauvegarde.
2. Dans le menu Déboguer, cliquez sur Exécuter sans débogage.
Une fenêtre de Commande s’ouvre et le programme s’exécute. Le message Bonjour apparaît, puis le programme attend que l'utilisateur appuie sur n'importe quelle touche, comme l’illustre la figure suivante :
|
3. Assurez-vous que la fenêtre de commande affichant la sortie du programme est active, puis appuyez sur Entrée.
La fenêtre de commande se ferme et vous êtes à nouveau dans l’environnement de programmation de Visual Studio 2008.
4. Dans l’Explorateur de solutions, cliquez sur le projet Bonjour (pas la solution), puis cliquez sur le bouton Afficher tous les fichiers dans la barre d’outils Explorateur de solutions (il s’agit du deuxième bouton à partir de la gauche dans la barre d’outils de la fenêtre Explorateur de solutions).
Les entrées nommées bin et obj apparaissent au-dessus du fichier . Ces entrées correspondent directement aux dossiers intitulés bin et obj dans le dossier du projet (Visual C Sharp Étape par étape\Chapitre 1\Bonjour\Bonjour). Visual Studio crée ces dossiers lorsque vous générez votre application et ils contiennent la version exécutable du programme et d'autres fichiers utilisés pour générer et déboguer l’application.
Dans l’Explorateur de solutions, cliquez sur le signe plus (+)à gauche de l’entrée bin. Un autre dossier nommé Debug apparaît.
5. Dans l’Explorateur de solutions, cliquez sur le signe plus (+) à gauche du dossier Debug.
Quatre autres éléments nommés , , , et .manifest apparaissent de la manière suivante :
|
Le fichier correspond au programme compilé, et il s’agit du fichier qui s’exécute lorsque vous cliquez sur Exécuter sans débogage dans le menu Déboguer. Les autres fichiers contiennent des informations utilisées par Visual Studio 2008 si vous exécutez votre programme en mode Débogage (lorsque vous cliquez sur Démarrer le débogage dans le menu Déboguer).
L'exemple que vous venez d'étudier correspond à un tout petit programme. Toutefois, les petits programmes peuvent rapidement devenir plus importants. Au fur et à mesure de leur développement, deux problèmes surgissent. Tout d'abord, il est bien plus difficile de comprendre et de maintenir des programmes importants que des programmes plus petits. Deuxièmement, l’augmentation de la taille du code implique en général plus de noms, plus de méthodes, et plus de classes. Plus le nombre de noms augmente, plus il y a de risques d'échec lors de la génération du projet, puisque plusieurs noms peuvent entrer en conflit (notamment quand le programme utilise des bibliothèques tierces écrites par des développeurs qui ont également utilisé une grande variété de noms).
Dans le passé, les programmeurs ont tenté de résoudre ce problème de conflit de noms
en préfixant les noms avec une sorte de qualificateur (ou des ensembles de qualificateurs). Cette solution n'est pas appropriée puisqu'elle n'est pas évolutive ; les noms s'allongent et vous passez moins de temps à écrire du code et plus de temps à saisir (ce n’est pas la même chose), à lire et à relire des noms incompréhensiblement longs.
namespace Bonjour
{ class Salut
{
}
}
Vous pouvez ensuite faire référence à la classe Salut sous la forme Bonjour.Salut dans vos programmes. Si un autre développeur crée également une classe Salut dans un autre espace de noms, comme NouvelEspaceDeNoms et l'installe sur votre ordinateur, vos programmes fonctionneront quand même normalement, puisqu'ils utilisent la classe Bonjour.Salut. Si vous voulez faire référence à la classe Salut de l’autre développeur, vous devez la spécifier sous la forme NouvelEspaceDeNoms.Salut.
Il est judicieux de définir toutes vos classes dans des espaces de noms et l'environnement Visual Studio 2008 suit ces recommandations en utilisant le nom de votre projet comme espace de noms de niveau supérieur. Le SDK du .NET Framework adhère également à cette recommandation ; chaque classe du .NET Framework se trouve dans un espace de noms. Par exemple, la classe Console se situe dans l'espace de noms System. Cela signifie que son nom complet correspond à System.Console.
Bien entendu, si vous deviez écrire à chaque fois le nom complet d'une classe que vous avez utilisée, cela ne présenterait pas plus d’intérêt que de préfixer avec des qualificateurs ou bien que de nommer la classe avec un nom unique comme SystemConsole sans s’encombrer d’un espace de noms. Heureusement, vous pouvez résoudre ce problème grâce à une directive using dans vos programmes. Si vous retournez dans le programme Bonjour dans Visual Studio 2008 et examinez le fichier dans la fenêtre Code, vous remarquerez les instructions suivantes au début du fichier :
using System; using System.Collections.Generic; using ; using ;
L'exercice suivant approfondit le concept d’espace de noms.
1. Dans la fenêtre Code affichant le fichier , mettez en commentaire la première directive using au début du fichier de la manière suivante :
//using System;
2. Dans le menu Générer, cliquez sur Générer la solution.
La génération échoue, et la fenêtre Liste d’erreurs affiche le message d’erreur suivant :
Le nom 'Console' n’existe pas dans le contexte actuel.
3. Dans la fenêtre Liste d’erreurs, faites un double-clic sur le message d’erreur.
L’identificateur qui provoque l’erreur est sélectionné dans le fichier source .
4. Dans la fenêtre Code, modifiez la méthode Main pour utiliser le nom complet qualifié System.Console.
Main devrait ressembler à ceci :
static void Main(string[] args)
{
System.Console.WriteLine("Bonjour");
}
Note Lorsque vous saisissez System., les noms de tous les éléments dans l’espace de noms System sont affichés par IntelliSense.
5. Dans le menu Générer, cliquez sur Générer la solution.
La génération devrait être réalisée avec succès cette fois-ci. Si ce n’est pas le cas, assurez-vous que Main apparaît exactement comme dans le code précédent, puis essayez à nouveau de générer.
6. Exécutez l’application pour vous assurer qu’elle fonctionne encore en cliquant sur Exécutez sans débogage dans le menu Déboguer.
Une instruction using place simplement les éléments d’un espace de noms dans la portée si bien que vous n’avez plus besoin de qualifier pleinement les noms des classes dans votre code. Les classes sont compilées dans des assemblys. Un assembly est un fichier qui a habituellement l’extension .dll, bien les programmes exécutables ayant l’extension .exe soient aussi des assemblys.
Pour cette raison, la bibliothèque de classes du .NET Framework se décompose en un certain nombre d’assemblys où les classes sont regroupées de manière thématique. Par exemple, il y a un assembly "core" qui contient toutes les classes courantes, telles que System.Console, et il y a d’autres assemblys qui contiennent des classes pour manipuler des bases de données, pour accéder aux services Web, pour générer des interfaces utilisateurs graphiques, etc. Si vous souhaitez utiliser une classe d’un assembly, vous devez ajouter à votre projet une référence à cet assembly. Vous pouvez ensuite ajouter des instructions using à votre code qui place les éléments des espaces de noms de cet assembly dans la portée.
Vous noterez qu’il n’y a pas nécessairement une stricte équivalence entre un assembly et un espace de noms ; un assembly peut contenir des classes de plusieurs espaces de noms, et un espace de noms peut couvrir plusieurs assemblys. De prime abord, cela peut sembler déconcertant, mais vous allez vite vous y habituer.
Lorsque vous utilisez Visual Studio pour créer une application, le modèle que vous sélectionnez comporte automatiquement des références vers les assemblys qui conviennent. Par exemple, dans l’Explorateur de solutions du projet Bonjour, cliquez sur le signe plus (+) à gauche du dossier References. Vous verrez alors qu’une application console inclut automatiquement des références à des assemblys nommés System, , , et . Vous pouvez ajouter à un projet des références à d’autres assemblys en faisant un clic droit sur le dossier References et en cliquant sur Ajouter une référence.
Visual Studio 2008 offre deux modes d’affichage pour une application graphique : Concepteur et Code. On utilise la fenêtre Code pour modifier et maintenir le code et la logique de l’application, et on se sert de la fenêtre Concepteur pour concevoir l’interface utilisateur. Vous pouvez basculer entre les deux affichages quand vous le souhaitez.
Dans les exercices suivants, vous allez apprendre à créer une application graphique en utilisant Visual Studio 2008. Celui-ci affichera un formulaire simple comportant une zone de texte où vous pouvez saisir votre nom et un bouton qui, quand vous cliquez dessus, affiche un message d'accueil personnalisé dans une boîte de dialogue.
|
? Si vous utilisez Visual Studio 2008 Standard Edition ou Visual Studio 2008 Professional Edition, effectuez les opérations suivantes pour créer une nouvelle application graphique :
1. Dans le menu Fichier, pointez Nouveau, puis cliquez sur Projet.
La boîte de dialogue Nouveau projet s’ouvre.
2. Dans le volet Types de projets, cliquez sur Visual C#.
3. Dans le volet Modèles, cliquez sur l’icône Application WPF.
4. Assurez-vous que le champ Emplacement fait bien référence à votre dossier Documents\Visual C Sharp Étape par étape\Chapitre 1.
6. Dans le champ Solution, assurez-vous que Créer une nouvelle solution est sélectionné.
Cette action crée une nouvelle solution qui contiendra le projet. Vous pouvez aussi employer la commande Ajouter à la solution, qui ajoute le projet à la solution Bonjour.
7. Cliquez sur OK.
? Si vous utilisez Visual C# 2008 Express Edition, effectuez les tâches suivantes pour créer une nouvelle application graphique.
1. Dans le menu Fichier, cliquez sur Nouveau projet.
2. Si la boîte de dialogue Nouveau projet apparaît, cliquez sur Enregistrer pour sauvegarder les modifications du projet Bonjour. Dans la boîte de dialogue Enregistrer le projet, vérifiez que le champ Emplacement fait référence à Visual C Sharp Étape par étape\Chapitre 1 sous votre dossier Documents, puis cliquez sur Enregistrer.
3. Dans la boîte de dialogue Nouveau projet, cliquez sur l’icône ApplicationWPF.
4. Dans le champ Nom, saisissez WPFBonjour.
5. Cliquez sur OK.
Visual Studio 2008 ferme votre application en cours et crée une nouvelle application WPF. Il affiche un formulaire WPF vide dans la fenêtre Concepteur, avec une autre fenêtre contenant une description XAML du formulaire, comme cela est illustré à la figure suivante :
|