Licence CC 0

Les outils nécessaires

Maintenant que les présentations sont faites, il est temps de découvrir les outils nécessaires pour programmer en C. Le strict minimum pour programmer se résume en deux points :

  • un éditeur de texte (à ne pas confondre avec un traitement de texte comme Microsoft Word ou LibreOffice Writer) : ce logiciel va servir à l’écriture du code source. Techniquement, n’importe quel éditeur de texte suffit, mais il est souvent plus agréable d’en choisir un qui n’est pas trop minimaliste ;
  • un compilateur : c’est le logiciel le plus important puisqu’il va nous permettre de transformer le code écrit en langage C en un fichier exécutable.

À partir de là, il existe deux solutions : utiliser ces deux logiciels séparément ou bien les utiliser au sein d’un environnement intégré de développement (abrégé EDI). Dans le cadre de ce cours, nous avons choisi la première option, majoritairement dans un souci de transparence et de simplicité. En effet, si les EDI peuvent être des compagnons de choix, ceux-ci sont avant tout destinés à des programmeurs expérimentés et non à de parfaits débutants.

Windows

Le compilateur

Nous vous proposons d’installer le compilateur GCC à l’aide de MSys2 qui est une suite logicielle permettant de disposer d’un environnement compatible POSIX sous Windows.

Rendez-vous sur le site de MSys2 et téléchargez la version correspondant à votre système (32 ou 64 bits). Exécutez ensuite le programme et suivez la procédure d’installation. Une fois l’installation terminée, vous serez face au terminal de MSys2.

Terminal de MSys2
Terminal de MSys2

Entrez alors la commande pacman -Syu et validez ce qui est proposé. Une fois cette commande exécutée, il devrait vous être demandé de fermer le terminal.

Il est demandé de fermer le terminal
Il est demandé de fermer le terminal

Fermez alors cette fenêtre et ouvrez en une nouvelle. Dans celle-ci, exécutez la commande pacman -Su puis pacman -S gcc et validez à chaque fois les actions proposées. Le compilateur est à présent installé. :)

Configuration

Voyez ce qui est dit pour GNU/Linux et *BSD.

L’éditeur de texte

L’éditeur de texte va nous permettre d’écrire notre code source et de l’enregistrer. L’idéal est d’avoir un éditeur de texte facile à utiliser et pas trop minimaliste. Si jamais vous avez déjà un éditeur de texte et que vous l’appréciez, n’en changez pas, il fera sûrement l’affaire.

Si vous n’avez pas d’idée, nous vous conseillons Notepad++ qui est simple, pratique et efficace. Pour le télécharger, rendez-vous simplement dans la rubrique Téléchargements du menu principal.

Veillez-bien à ce que l’encodage de votre fichier soit UTF-8 (sans BOM) (voyez le menu éponyme à cet effet).

Introduction à la ligne de commande

Référez-vous à l’introduction dédiée à GNU/Linux et *BSD.

Le dossier /home/utilisateur (où « utilisateur » correspond à votre nom d’utilisateur) correspond au dossier C:\msysxx\home\utilisateur (où « xx » est 32 ou 64 suivant la version de MSys2 que vous avez installée).

GNU/Linux et *BSD

Le compilateur

Suivant le système que vous choisissez, vous aurez ou non le choix entre différents compilateurs. Si vous n’avez pas d’idée, nous vous conseillons d’opter pour GCC en installant le paquet éponyme à l’aide de votre gestionnaire de paquet.

Configuration

Ceci dépend de votre interpréteur de commande. Pour savoir quel est celui dont vous disposez, ouvrez un terminal (le plus souvent, vous pouvez y accéder via la catégorie Accessoires de votre menu principal) et entrez la commande suivante.

echo $SHELL
bash

Exécutez la commande suivante depuis votre dossier personnel (vous y êtes par défaut au lancement de l’invite de commande).

echo "alias zcc='gcc -Wall -Wextra -pedantic -std=c11 -fno-common -fno-builtin'" >> .bashrc
csh ou tcsh

Exécutez la commande suivante depuis votre dossier personnel (vous y êtes par défaut au lancement de l’invite de commande).

echo "alias zcc 'gcc -Wall -Wextra -pedantic -std=c11 -fno-common -fno-builtin'" >> .cshrc # (ou .tcshrc)
ksh, zsh ou sh

Exécutez les commandes suivantes depuis votre dossier personnel (vous y êtes par défaut au lancement de l’invite de commande).

echo "alias zcc='gcc -Wall -Wextra -pedantic -std=c11 -fno-common -fno-builtin'" >> .kshrc # (ou .zshrc ou .shrc)
echo "export ENV=$HOME/.kshrc" >> .profile # (ou .zshrc ou .shrc)
L’éditeur de texte

Ce serait un euphémisme de dire que vous avez l’embarras du choix. Il existe une pléthore d’éditeurs de texte fonctionnant en ligne de commande ou avec une interface graphique, voire les deux.

Pour n’en citer que quelques-uns, en ligne de commande vous trouverez par exemple : Vim et Emacs (les deux monstres de l’édition), Nano ou Joe. Côté graphique, vous avez entre autres : Gedit, Mousepad et Kate.

Introduction à la ligne de commande

La ligne de commande, derrière son aspect rustre et archaïque, n’est en fait qu’une autre manière de réaliser des tâches sur un ordinateur. La différence majeure avec une interface graphique étant que les instructions sont données non pas à l’aide de boutons et de cliques de souris, mais exclusivement à l’aide de texte. Ainsi, pour réaliser une tâche donnée, il sera nécessaire d’invoquer un programme (on parle souvent de commandes) en tapant son nom.

La première chose que vous devez garder à l’esprit, c’est le dossier dans lequel vous vous situez. Suivant le terminal que vous employez, celui-ci est parfois indiqué en début de ligne et terminé par le symbole $ ou %. Ce dossier est celui dans lequel les actions (par exemple la création d’un répertoire) que vous demanderez seront exécutées. Normalement, par défaut, vous devriez vous situez dans le répertoire : /home/utilisateur (où utilisateur correspond à votre nom d’utilisateur). Ceci étant posé, voyons quelques commandes basiques.

La commande pwd (pour print working directory) vous permet de connaître le répertoire dans lequel vous êtes.

$ pwd
/home/utilisateur

La commande mkdir (pour make directory) vous permet de créer un nouveau dossier. Pour ce faire, tapez mkdir suivi d’un espace et du nom du nouveau répertoire. Par exemple, vous pouvez créer un dossier programmation comme suit :

$ mkdir programmation

La commande ls (pour list) vous permet de lister le contenu d’un dossier. Vous pouvez ainsi vérifier qu’un nouveau répertoire a bien été créé.

$ ls
programmation

Le résultat ne sera pas forcément le même que ci-dessus, cela dépend du contenu de votre dossier. L’essentiel est que vous retrouviez bien le dossier que vous venez de créer.

Enfin, la commande cd (pour change directory) vous permet de vous déplacer d’un dossier à l’autre. Pour ce faire, spécifiez simplement le nom du dossier de destination.

$ cd programmation
$ pwd
/home/utilisateur/programmation

Le dossier spécial .. représente le répertoire parent. Il vous permet donc de revenir en arrière dans la hiérarchie des dossiers. Le dossier spécial . représente quant à lui le dossier courant.

Voilà, avec ceci, vous êtes fin prêt pour compiler votre premier programme. Vous pouvez vous rendre à la deuxième partie de ce chapitre.

Mac OS X

Le compilateur

Allez dans le dossier /Applications/Utilitaires et lancez l’application terminal.app. Une fois ceci fait, entrez la commande suivante :

xcode-select --install

et cliquez sur Installer dans la fenêtre qui apparaît. Si vous rencontrez le message d’erreur ci-dessous, cela signifie que vous disposez déjà des logiciels requis.

Impossible d’installer ce logiciel car il n’est pas disponible actuellement depuis le serveur de mise à jour de logiciels.

Si vous ne disposez pas de la commande indiquée, alors rendez-vous sur le site de développeur d’Apple : Apple developer connection. Il faudra ensuite vous rendre sur le Mac Dev Center puis, dans Additional download, cliquez sur View all downloads. Quand vous aurez la liste, il vous suffit de chercher la version 3 de Xcode (pour Leopard et Snow Leopard) ou 2 pour les versions antérieures (Tiger). Vous pouvez aussi utiliser votre CD d’installation pour installer Xcode (sauf pour Lion).

Configuration

Voyez ce qui est dit pour GNU/Linux et *BSD.

L’éditeur de texte

Comme pour GNU/Linux et *BSD, vous trouverez un bon nombres d’éditeurs de texte. Si toutefois vous êtes perdu, nous vous conseillons TextWrangler ou Smultron.

Introduction à la ligne de commande

Référez-vous à l’introduction dédiée à GNU/Linux et *BSD.

Première rencontre

Bien, il est à présent temps d’écrire et de compiler notre premier programme ! Pour ce faire, ouvrez votre éditeur de texte et entrez les lignes suivantes.

int main(void)
{
    return 0;
}

Ensuite, enregistrez ce fichier dans un dossier de votre choix et nommez-le « main.c ».

Rappelez-vous, sous Windows, le dossier /home/utilisateur (où « utilisateur » correspond à votre nom d’utilisateur) correspond au dossier C:\msysxx\home\utilisateur (où « xx » est 32 ou 64 suivant la version de MSys2 que vous avez installée).

Une fois ceci fait, rendez-vous dans le dossier contenant le fichier à l’aide d’un terminal et exécutez la commande ci-dessous.

zcc main.c

Si vous utilisez l’interpréteur de commande sh, ksh ou zsh, la commande zcc ne sera connue de votre invite de commandes qu’une fois que vous aurez ouvert une nouvelle session. En attendant, vous pouvez entrez la commande alias zcc='gcc -Wall -Wextra -pedantic -std=c11 -fno-common -fno-builtin' dans votre terminal pour que cela fonctionne.

Si tout se passe bien, vous devriez obtenir un fichier « a.exe » sous Windows et un fichier « a.out » sinon. Vous pouvez exécutez ce programme en tapant ./a.exe ou ./a.out.

Je viens de le faire, mais il ne se passe rien…

Cela tombe bien, c’est exactement ce que fait ce programme : rien. :p
Voyons cela plus en détails.

Ce bout de code est appelé une fonction qui est la brique de base de tout programme écrit en C. Une fonction se compose d’une ou plusieurs instructions chacune terminée par un point-virgule (;) et comprise entre deux accolades ({ et }). Ici, notre fonction se nomme main. Il s’agit d’une fonction obligatoire dans tout programme C, car il s’agit de la fonction par laquelle l’exécution commence et se termine.

Notre fonction main() ne comporte qu’une seule instruction : return 0;, qui met fin à son exécution et permet d’indiquer à notre système d’exploitation que l’exécution s’est correctement déroulée (une valeur différente de zéro indiquerait une erreur).

Le nom de la fonction est précédé du mot-clé int (pour integer) qui est un nom de type indiquant que la fonction retourne une valeur entière. À l’intérieur des parenthèses, il y a le mot void qui signifie que la fonction ne reçoit pas de paramètres, nous reviendrons sur tout cela en temps voulu.

Les commentaires

Il est souvent nécessaire de commenter son code source pour décrire des passages un peu moins lisibles ou tout simplement pour offrir quelques compléments d’information au lecteur du code. Nous en utiliserons souvent dans la suite de ce cours pour rendre certains exemples plus parlant.

Un commentaire est ignoré par le compilateur, il disparait et n’est pas présent dans l’exécutable. Il ne sert qu’au programmeur et aux lecteurs du code.

Un commentaire en C est écrit soit en étant précédé de deux barres obliques //, soit en étant placé entre les signes /* et */. Dans le dernier cas, le commentaire peut alors s’étendre sur plusieurs lignes.

// Ceci est un commentaire.
/* Ceci est un autre commentaire. */
/* Ceci est un commentaire qui
   prend plusieurs lignes. */

Voilà, vous avez enfin fait la connaissance du C à travers du code. Certes, nous n’avons vu qu’un petit code et avons seulement survolé les différents éléments, mais il n’empêche que cela représente certainement beaucoup de nouveautés pour vous. Relisez donc ce chapitre à tête reposée si nécessaire.