Академический Документы
Профессиональный Документы
Культура Документы
Débuter la programmation
Windows avec C#
C#, langage solide et
relativement facile à
A border la programmation Windows n'est pas une mince
affaire. Windows est un système d'exploitation multi
tâches complexe, qui ne se laisse pas aisément dompter. Ensuite
se pose le problème des outils. Windows est écrit en C. Alors dé-
buter avec ce langage est un choix qui se tient. Il existe un com-
PRATIQUE
apprendre, est un pilateur libre, lcc-win32, doté d'une documentation suffisante,
même pour entreprendre l'écriture de gros programmes. Nous
bon choix pour se avons d'ailleurs consacré une série d'articles à ce thème il y a
quelques temps dans Programmez! Toutefois, cette approche com-
porte des difficultés. Il est nécessaire de bien maîtriser C pour
lancer dans la avoir une chance de s'en sortir. Ensuite, il faut comprendre la
structure complexe d'une application C asynchrone, c'est à dire
programmation pilotée par les événements. Enfin, le comportement des appels
système n'est pas toujours simple à appréhender. Loin de là
Windows. même !
Apprendre la programmation Windows à travers le langage C# est
une autre possibilité, très intéressante. C# est le dernier langage
sorti des têtes pensantes de Microsoft. Certes, concevoir C#
comme un outil d'apprentissage ou pédagogique, n'a pas été la
motivation première de Microsoft ;-) Mais le fait est, que C# est un
langage robuste, sûr à l'exécution et facile à apprendre. Orienté
objet, sa bibliothèque d'exécution est un ensemble de classes ,qui
constituent une sur-couche aux APIs en C du système, ce qui en
simplifie considérablement la programmation, tout en apportant
une meilleure concision du code. Enfin, considération non négli-
geable, il est possible de programmer en C# uniquement avec des
outils gratuits. C'est d'ailleurs cet aspect de la question qui nous
intéresse aujourd'hui. Nous ne nous adressons pas aux profes-
sionnels, qui ont les moyens de s'offrir l'environnement Visual
Studio .NET et qui n'ont que faire de nos conseils. Nous nous
adressons aux débutants fauchés, mais pleins de bonne volonté :)
Nous considérons toutefois que le lecteur à quelques notions de
programmation objet.
C#
NIVEAU : DÉBUTANT
• Microsoft Windows XP
Notons que Windows XP Pro est requis pour une utilisation com-
plète du SDK. Cependant, avec un 'petit' XP, seules les classes
asp.net sont inopérantes, ce qui ne fera pas défaut au débutant.
68 La bonne nouvelle est, qu'une application C# peut être déployée
Les éditeurs
Un programme en C# doit être écrit dans un ou plusieurs fichiers,
contenant uniquement du texte, pour pouvoir être traités par le
compilateur. Pour cette raison, l'emploi d'un programme de traite- > Figure 1: Ecriture de code C# avec Eclipse.
ment de texte, qui insère des caractères spéciaux dans le docu-
ment est à proscrire. Vous pouvez employer le rudimentaire file mode spécification error: (void-variable font-lock-constant-face)
bloc-note (Notepad) ou le un peu moins fruste Wordpad, pourvu
que vous sauvegardiez vos documents au format texte. Cela dit, il La raison en est que la variable font-lock-constant-face, qui doit
est pertinent de vous équiper d'un éditeur dédié à la programma- détenir une fonte, n'existe pas par défaut dans votre XEmacs. Pour
tion. Il en existe de nombreux, disponibles sur le net. Je vous sug- y remédier, ajouter ces deux lignes :
gère de considérer Eclipse (http://www.eclipse.org/). Cet éditeur
(setq font-lock-constant-face nil)
encore jeune, mais très prometteur (figure 1) dispose d'un plugin
(make-face 'font-lock-constant-face)
C# que vous pouvez téléchargez à http://www.improve.com.
Sachez toutefois que Java (Jdk >= 1.3) doit être présent sur votre JUSTE AVANT les lignes ajoutées plus haut.
machine, pour utiliser Eclipse.
Une autre possibilité, celle qu'en tant que vieux dinosaure je pré- Un coucou traditionnel
fère, est d'employer le légendaire éditeur Emacs
(http://www.gnu.org) En fait j'utilise XEmacs Il est maintenant temps de passer à la pratique en écrivant le pro-
(http://www.xemacs.org), dont l'interface est plus agréable. Emacs gramme traditionnel. On suppose que le texte de ce code se situe
dispose désormais de nombreux modes C#. Vous les trouverez dans un ficher nommé coucou.cs.
facilement sur le Web. Certains de ces modes sont très puissants,
class Coucou
mais assez lourds et intéresseront principalement les utilisateurs
{
chevronnés d'Emacs. Je vous suggère de télécharger un mode public static void Main()
Emacs C# simple, mais amplement suffisant à {
http://davh.dk/script/. L'installation de ce mode, qui vient sous la System.Console.WriteLine("Coucou !");
forme d'un seul fichier, consiste à déposer ce dernier dans le sous- } 69
}
Dès que le compilateur rend la main, vous pouvez apprécier le (Remarque: En pratique la librairie System.dll est systématique-
résultat en tapant 'coucou' (figure 3). ment jointe par le compilateur C#. L'exemple ci-dessus a avant
Le compilateur csc est relativement intelligent et a pris beaucoup tout une vocation pédagogique.)
d'initiatives par lui-même. Il a généré un programme exécutable et S'il est nécessaire de joindre plusieurs librairies, on énumère
connecté celui-ci à une librairie d'exécution de C#. Dans ce cas, la celles-ci en les séparant par des virgules. Par exemple :
librairie est System.dll. Il est simple de connaître le nom de toutes /r:System.dll,System.Drawing.dll,System.Windows.Forms.dll
les librairies existantes: à chaque espace de noms de la documen-
tation correspond un fichier de même nom plus l'extension.dll. Attention! Il ne doit pas y avoir d'espaces dans une telle énuméra-
Exemples : tion. Ainsi :
/r:System.dll, System.Drawing.dll,System.Windows.Forms.dll
Namespace Librairie
PRATIQUE
est invalide. On verra dans un article à venir qu'il peut être pra-
System System.dll
System.Drawing System.Drawing.dll
tique de répéter un commutateur. Ainsi :
System.Windows.Forms System.Windows.Forms.dll csc /t:exe /r:System.dll /r:System.Drawing.dll /out:coucou.exe coucou.cs
etc. etc.
serait parfaitement correct.
C#
NIVEAU : DÉBUTANT
choses amusantes, nous devons acquérir encore un savoir faire.
Dès qu'un programme grossit, il devient malaisé, voire insuppor-
table de concentrer le code dans un seul fichier. Nous devons donc
apprendre à fragmenter un programme en de multiples petits
70 fichiers et à faire en sorte que le compilateur regroupe tout ça, lors
CC=csc
REF=/r:System.dll
> Figure 3: Notre première compilation. Un début prometteur. TARGETTYPE=/t:exe
MODULES=ce.ntm
ADDMODULES=/addmodule:ce.ntm
// fichier coucou.cs TARGET=coucou.exe
class Coucou
{
public static void Main() $(TARGET): coucou.cs $(MODULES)
{ $(CC) $(ADDMODULES) $(TARGETTYPE) $(REF) /out:$(TARGET) coucou.cs
DireBonjour coucou_ext = new DireBonjour();
coucou_ext.Bonjour(); ce.ntm: CoucouExterne.cs
} $(CC) /t:module $(REF) /out:ce.ntm CoucouExterne.cs
}
clean:
del *.exe
del *.ntm
// fichier CoucouExterne.cs
class DireBonjour
{
public void Bonjour()
{
System.Console.WriteLine("Bonjour a tous :-)");
}
}
On compile d'abord les fichiers secondaires en modules. Nous n'en avons qu'un, donc:
Remarquez le commutateur /t qui demande la génération d'un make, si vous le lancez une seconde fois. Essayez ensuite de modi-
module. L'extension .ntm du fichier généré, est une abréviation en fier un des fichiers puis relancez make. Observez le résultat.
lieu et place de .NeTModule, utilisé par défaut par le compilateur. Nous savons désormais tout ce qu'il nous faut, pour créer de
Nous n'avons maintenant plus qu'à compiler le fichier principa,l en beaux programmes en C#. Nous mettrons cela en pratique la pro-
y intégrant notre module: chaine fois, avec des applications Windows fenêtrées. C'est légiti-
me me direz vous :-) ■
csc /t:exe /out:coucou.exe /addmodule:ce.ntm coucou.cs
par Frédéric Mazué
Et voilà! (figure 4) fmazue@programmez.com 71