III. Introduction à la programmation en langage C▲
L'objectif principal de ce premier exercice de programmation est de se familiariser avec les outils de programmation du langage. Les programmes dans cet exercice seront assez triviaux, mais serviront de tremplin pour des travaux futurs. Des programmes seront alors développés en se basant sur des programmes similaires à ceux étudiés dans ce cours.
Le paquetage C utilisé ici est sans grande importance. Des entreprises diverses ont créé différents outils de programmation et bien que les caractéristiques peuvent varier sur certains points, les bases restent les mêmes. Tous les outils de programmation en C nécessitent de compiler du code C et de l'assembler. Ce code, une fois assemblé, va en outre devoir se lier à des modules et des bibliothèques qu'il aura fallu assembler aussi, afin d'aboutir à un programme exécutable. Dans le cas le plus simple, ces outils seront disponibles sous forme d'utilitaires en ligne de commande, c'est-à-dire qu'ils seront lancés depuis l'invite de commande d'un shell. Habituellement, les outils font partie d'un environnement de développement intégré graphique, ou EDI (Environnement de Développement Intégré). Un EDI dispose normalement d'un éditeur de texte. Les compilateurs C s'attendent à travailler sur un fichier texte brut. N'essayez pas de compiler un fichier issu d'un traitement de texte, comme un fichier .doc. Si vous utilisez un simple outil en ligne de commande au lieu d'un EDI, vous créerez vos fichiers sources avec un éditeur de texte basique comme Notepad.
Les fichiers sources en C utilisent une extension « .c ». Le compilateur produit en sortie un fichier objet, avec une extension « .o » ou « .obj ». Dans l'environnement Windows, les exécutables produits ont une extension « .exe ». La plupart des EDI requièrent la création d'un projet avant de saisir du code. Le projet inclut certaines informations utiles comme les noms de fichier utilisés pour le code source (il peut y en avoir plusieurs pour les grands projets), les bibliothèques à lier, le nom du fichier exécutable final, et d'autres choses encore. Pour des tâches simples de programmation impliquant de petits codes sources, tout ceci peut paraître lourd, mais ces outils sont merveilleux pour de plus ambitieux projets. Tous les codes sources de tous nos exercices vus pendant ce cours peuvent facilement tenir sur une modeste clé USB (64 Mo !). Cela inclut les fichiers du projet qui peuvent occuper une taille plus importante (plusieurs mégaoctets) que le fichier source en C lui-même. Dans les laboratoires en réseau du campus, les fichiers projets et les fichiers sources peuvent être sauvegardés dans l'espace de travail de la session des étudiants. Pour ceux qui travailleraient en dehors du réseau du campus, il sera probablement plus simple au besoin de créer de nouveaux projets sur leur propre disque dur.
Ce laboratoire utilisera l'environnement Pelles C. Il n'y a rien d'exceptionnel et de magique dans Pelles C et d'autres environnements sont tout à fait acceptables. On utilisera cependant Pelles C pour introduire des exercices.
Une fois lancé, l'accent pourra être mis sur le développement des cartes Arduino.
Nos premiers exercices porteront sur la création de projets, l'édition de code source, la compilation et l'édition de liens, puis le test de l'application. On éditera alors à nouveau le code, puis le processus sera répété. Les rapports d'erreurs seront également analysés. Si vous passez par des utilitaires en ligne de commande, voyez la note à la fin de cet exercice avant de poursuivre.
Pour commencer, ouvrez l'EDI. Dans Pelles C, sélectionnez « Start a new project » depuis le panneau de démarrage. Vous avez de nombreux choix pour créer un nouveau projet. On ne créera pas de programme avec une interface graphique Windows, mais plutôt des interfaces en mode texte en console DOS. Pour cela, sélectionnez une application Win32 ou Win64 (selon votre système d'exploitation) en mode console et donnez un nom à votre projet. Pour créer un code source en C, vous devrez créer un nouveau fichier texte. Sélectionnez New >> Source code du menu File. Une fenêtre d'édition vierge s'ouvrira.
Tapez le code suivant dans l'éditeur :
#include <stdio.h>
/* Tout commence ici */
int
main
(
void
)
{
printf
(
"
Hello world!
\n
"
);
}
Sauvegardez le code sous le nom hello.c en passant par le menu File >> Save as. Une boîte de dialogue apparaît pour vous proposer de sauvegarder ce fichier dans le projet courant. Sélectionnez « Yes ». Notez que dans certains EDI, vous devrez insérer manuellement le fichier dans le projet (dans un tel cas, il faudra trouver le menu approprié dans l'interface).
Bien qu'il soit possible de compiler et lier les modules séparément, la plupart des développeurs utilisent le raccourci Build. Ce raccourci permet de lancer les opérations de compilation et d'édition de liens avec tous les fichiers nécessaires. Dans Pelles C, vous pouvez sélectionner le menu Build soit depuis le menu Project soit depuis la barre d'outils. Pendant la génération de l'exécutable du projet, vous noterez les messages qui s'affichent dans la barre d'état en bas. Si tout se passe correctement, vous lirez le message « Building <nom du projet> Done ». Vous pouvez maintenant tester le programme. Sélectionnez soit le bouton Execute de la barre d'outils soit Project >> Execute from depuis le menu. Une petite fenêtre DOS devrait apparaître avec le message « Hello World! ». Pressez une touche pour effacer cette fenêtre et retourner dans l'EDI. Vous avez brillamment réalisé votre premier programme !
En fonction des paramètres de configuration de votre EDI, vous pouvez observer différentes colorations du texte dans l'EDI. Dans la plupart des EDI, vous pouvez spécifier la coloration du texte selon qu'il s'agit de mots clés, de constantes, d'opérateurs mathématiques, de commentaires et autres. Cela rend le code plus lisible.
Éditez le code source afin d'y apporter quelque chose d'autre. Modifiez le code comme suit :
#include <stdio.h>
/* Programme 2 */
int
main
(
void
)
{
int
x, y;
x =
10
;
y =
x +
20
;
printf
(
"
Le resultat est %d
\n
"
,y);
}
Générez à nouveau l'exécutable (Build), et vérifiez le résultat. Vous devriez obtenir un message qui dit « Le resultat est 30 ».
La plupart des éditeurs intégrés aux EDI ont normalement les fonctionnalités de couper-copier-coller (cut/copy/paste) et de recherche-remplacement (search/replace) de texte. Certains ont même des fonctionnalités automatiques d'indentation, d'ajout de parenthèses ou crochets, etc.
D'accord, mais que se passe-t-il si on fait une erreur dans son code ? Vous allez insérer quelques erreurs exprès dans le code et observer ce qui se passe. Modifiez le programme vu précédemment pour qu'il ressemble à ce qui suit :
#include <stdio.h>
/* Programme 3, avec des erreurs */
int
main
(
void
)
{
int
x, y;
x =
10
y =
x +
20
;
printf
(
Le resultat est %
d\n"
,y);
}
Notez que le point-virgule est volontairement omis à la fin de la ligne x = 10, ainsi que le guillemet qui ouvre la chaîne de caractères dans la fonction printf
(
). Générez à nouveau le projet. Cette fois vous recevrez une flopée d'erreurs et d'avertissements. Ils peuvent différer dans la formulation d'un environnement de développement à l'autre, mais vous devriez lire un message concernant un point-virgule manquant avant le y. Vous devriez probablement aussi découvrir une erreur concernant un identifiant « Le » non déclaré, et d'autres avertissements encore. Habituellement, double-cliquer sur le message d'erreur met en surbrillance la ligne fautive dans le code. Parfois, une simple omission et la compilation génère des douzaines de messages d'erreur, car le compilateur perd, en quelque sorte, le fil, et commence à repérer des erreurs là où le code est pourtant correct. Pour cette raison, si vous avez des erreurs (et immanquablement, vous en aurez), commencez toujours par repérer et résoudre la première erreur dans la liste des messages. Commencer la chasse aux erreurs en commençant par la dernière reportée pourrait vous mener sur une fausse piste.
Finalement, vous voudrez peut-être sauvegarder votre code. Sélectionnez simplement File >> Save as et saisissez un nom approprié. Encore une fois, les fichiers sources doivent avoir une extension « .c ». Remarquez que vous pouvez créer, lire et éditer un fichier source en C sans EDI. Tout ce dont vous avez besoin est un simple éditeur de texte. Vous ne pourrez pas compiler ou générer un exécutable avec, mais vous pourrez au moins travailler un peu en mission si vous n'avez pas de compilateur sous la main.
Pour ceux qui utiliseraient un compilateur en ligne de commande (sans EDI), le processus est similaire à celui décrit précédemment, bien que moins automatisé. Vous devrez créer un fichier source avec un éditeur de texte. Vous invoquerez le compilateur depuis une fenêtre DOS dans un shell Windows, habituellement avec la commande qui suit :
cc hello.c
Cela créera le fichier objet. Puis vous évoquerez l'édition de liens, habituellement avec une commande comme :
ln hello.exe hello.obj stdio.lib
Vous aurez à consulter la documentation pour les commandes appropriées et la syntaxe. Une fois l'exécutable créé, vous pourrez le lancer depuis le shell en tapant son nom :
hello.exe
Le message prévu s'affichera dans la fenêtre du shell. Pour modifier le programme, rouvrez le fichier source C avec l'éditeur de texte, faites les modifications, sauvegardez le fichier, et répétez les commandes de compilation et d'édition de liens. Si des erreurs apparaissent, les messages d'erreurs seront affichés dans la fenêtre du shell.