Dan Gookin

Apprendre

à programmer

en C

3e édition

Apprendre à programmer en C pour les Nuls, 3e édition

Titre de l’édition originale : C Programming For Dummies, 2nd Edition

Pour les Nuls est une marque déposée de Wiley Publishing, Inc.

For Dummies est une marque déposée de Wiley Publishing, Inc.

© Éditions First, un département d’Édi8, Paris, 2021.

Publié en accord avec Wiley Publishing, Inc.

Éditions First, un département d’Édi8

92 avenue de France

75013 Paris

Tél. : 01 44 16 09 00

Fax : 01 44 16 09 01

Courriel : firstinfo@efirst.com

Site Internet : www.pourlesnuls.fr

ISBN : 9782412072813

Dépôt légal : avril 2021

Mise en page : Catherine Kédémos

Traduction de l'anglais : Olivier Engler

Cette œuvre est protégée par le droit d’auteur et strictement réservée à l’usage privé du client. Toute reproduction ou diffusion au profit de tiers, à titre gratuit ou onéreux, de tout ou partie de cette oeuvre est strictement interdite et constitue une contrefaçon prévue par les articles L 335-2 et suivants du Code de la propriété intellectuelle. L’éditeur se réserve le droit de poursuivre toute atteinte à ses droits de propriété intellectuelle devant les juridictions civiles ou pénales.

Ce livre numérique a été converti initialement au format EPUB par Isako www.isako.com à partir de l'édition papier du même ouvrage.

Introduction

C’est un « bonjour » entre guillemets que je vous propose en ouverture de ce livre pour apprendre à programmer grâce au langage C. Un livre qui va transformer la personne attentionnée et sociable que vous êtes en un de ces symboles de la culture underground des technophages : j’ai nommé le programmeur.

Et vous verrez que c’est pour votre bien.

En apprenant à écrire des programmes en C, vous vous préparez à devenir le maître absolu d’une foule d’appareils électroniques. En concevant vos projets, vous dictez tous vos désirs et lubies aux ordinateurs, aux tablettes et aux telliphones (alias smartphones). Et l’électronique va vous obéir aux doigts et à l’oeil. Les informations que renferme ce livre vous donneront le coup de pouce pour réussir certains partiels, impressionner vos amis, devenir la coqueluche d’Hollywood, lancer votre propre société de création de logiciels. Autrement dit, apprendre à programmer va se révéler un investissement judicieux de votre temps.

Ce livre veut vous aider à apprendre à programmer de façon claire et agréable. Aucune connaissance préalable du domaine n’est requise et vous n’avez aucune dépense à prévoir en achat de logiciels. Il suffit que vous ayez envie de programmer en C et de toujours garder du plaisir à le faire.

Le langage C est-il encore pertinent ?

De temps à autre, la même rumeur se réveille : apprendre le langage C est une impasse. D’autres langages, meilleurs, sont apparus après lui. Il semblerait plus logique d’apprendre un de ceux-là plutôt que le C.

Fadaises que tout cela.

On peut considérer le langage C comme le latin des langages de programmation. Quasiment tous ses successeurs se basent sur la même syntaxe. Même les mots-clés et certains noms de fonctions du C se retrouvent dans d’autres langages parmi les plus usités, du C++ au Java et au Python, et aux derniers langages nouvellement créés et archi-tendance.

Ce que je veux dire est qu’une fois que vous avez appris le langage C, tous les autres langages de programmation s’apprennent aisément. Pour preuve, de nombreux livres consacrés à ces autres langages vous demandent parmi leurs prérequis d’avoir une connaissance minimale du langage C avant d’aller plus loin. Le débutant total en sera désolé, mais pas celui qui a justement appris le C.

Ainsi, oubliez les dénigreurs en tous genres qui déclarent que le C c’est du passé. De plus, la programmation des micro-contrôleurs, des systèmes d’exploitation et de certains grands progiciels utilise toujours ce bon vieux langage C. Vous ne perdez nullement votre temps en l’apprenant aujourd’hui.

L’approche « Pour les nuls »

En tant que programmeur, j’ai avalé un nombre considérable de livres à ce sujet. Je sais donc ce que je ne veux en aucun cas voir, mais je le constate trop souvent : l’auteur inflige des exemples trop longs sur x pages ou bien étale sa science pour impressionner ses collègues. Il a perdu de vue l’objectif pédagogique. Ce genre d’approche est vraiment répandue. C’est peut-être la raison pour laquelle vous avez choisi le présent livre.

Mon approche est limpide : des exemples brefs, des démonstrations bien ciblées. Beaucoup d’exemples et beaucoup d’exercices (avec les réponses sur le Web).

Pour apprendre quelque chose, le mieux est de pratiquer. Chacun des concepts abordés dans ce livre est couplé avec un ou plusieurs exemples de code source. Comme il vous est demandé de saisir le code, les exemples sont assez brefs pour que la saisie ne soit pas harassante. Je vous invite vivement à saisir ce code au lieu de le copier/coller. Vous pourrez ensuite en lancer la compilation/liaison puis l’exécution pour voir si cela fonctionne. Ce contrôle immédiat est gratifiant, mais c’est surtout une excellente manière d’apprendre.

Les listings d’exemple sont suivis d’exercices (plus de 300) que nous vous invitons à réaliser pour tester vos nouvelles connaissances et assurer votre progression. Les réponses à ces exercices sont disponibles en anglais sur le site compagnon de ce livre :

https://c-for-dummies.com/cprog/

Structure et conventions du livre

Ce livre a pour but de vous apprendre à programmer en langage C. Au départ, nous supposons que vous ne connaissez rien ou presque. En fin de livre, vous aurez même découvert quelques concepts avancés de ce langage.

Pour programmer en C, il vous faut un ordinateur. Ce livre n’impose pas de contraintes quant au type de machine, puisque les trois systèmes les plus répandus sont gérés : Windows, Mac OS et Linux. En effet, le logiciel de développement intégré que nous avons choisi, nommé Code::Blocks, est disponible pour les trois systèmes. La mise en place de cet atelier est décrite dans le Chapitre 1.

Dans ce livre, pas de long discours préalable. Dès le premier chapitre, nous pratiquons. Cela dit, je prends soin d’expliquer d’abord de quoi il en retourne avant chaque exemple, sauf dans certains cas où l’explication détaillée de la technique utilisée ne vient que dans un chapitre ultérieur (mais cela est clairement indiqué). En dehors de ces exceptions, le livre est prévu pour une lecture linéaire, et c’est ainsi que vous en tirerez le plus grand profit.

Les mots-clés du langage C et les noms des fonctions prédéfinies sont imprimés dans une police fixe, comme dans printf() ou break.

Les noms de fichiers et de dossiers sont imprimés en police sans serif en italique, comme dans programme.exe.

Les noms des commandes dans les menus sont imprimés sans serif gras : ouvrez le menu Fichier.

Lorsque je vous demande de saisir des données au clavier, ce texte est imprimé en gras, comme dans « Saisissez la commande blorfus » . La validation de saisie par frappe de la touche Entrée est généralement indiquée.

Dans les procédures par étapes numérotées, le texte à saisir est imprimé en police fixe grasse :

❶ Saisissez exit puis validez par la touche Entrée.

Vous devez saisir le mot exit puis confirmer par frappe de la touche Entrée.

Les extraits de code source incomplets se présentent comme ceci :

if( i == 1)
   printf("Je gagne");

Vous n’aurez à saisir du code source que lorsqu’un exercice numéroté vous y invite.

Les listings source complets sont numérotés dans chaque chapitre, comme ceci :

LISTING 1.1 Le squelette de code source généré par Code::Blocks

#include <stdio.h>
#include <stdlib.h>

int main()
{
   printf("Bien le bonjour, tout le monde !\n");
   return(0);
}

La largeur limitée des pages imprimées oblige à rabattre les lignes de code source les plus longues sur deux lignes. Vous ne devez pas créer ces sauts de lignes lorsque vous saisissez le code et je rappelle en général la présence de sauts de ligne « de contingence » lorsque nécessaire.

Les listings de ce livre ne comportent pas de numérotation des lignes, mais je fais référence à des numéros. En effet, l’éditeur de l’atelier Code::Blocks ajoute des numéros en marge gauche (comme tous les éditeurs de code actuels). Si vous ne voyez pas ces numéros, activez l’option appropriée : menu Settings, commande Editor, page d’options Editor Settings, groupe du bas Other settings, option Show line numbers.

Ne confondez pas les numéros des Listings et les numéros des Exercices.

Pour réaliser un exercice, vous allez généralement démarrer un nouveau projet portant un nom conventionnel du type exccnn, avec cc pour le numéro de chapitre et nn pour le numéro d’ordre de l’exercice. Par exemple, le troisième exercice du Chapitre 99 fera l’objet du projet ex9903. Le descriptif de cet exercice offre l’aspect suivant :

EXERCICE 99.3 :

Saisissez le code source du Listing 99.1 dans l’éditeur de Code::Blocks. Enregistrez-le sous le nom ex9903. Lancez la compilation/liaison puis l’exécution.

En vous pliant à cette convention, vous trouverez facilement les réponses aux exercices qui utilisent la même logique. Nous avons indiqué plus haut où trouver les réponses aux exercices.

Ces réponses permettent de copier/coller le code source, mais je ne fournis pas le code source des listings, afin de vous laisser pratiquer l’écriture de code source. C’est pourquoi les listings sont toujours de longueur réduite. Notez que les solutions des exercices contiennent le code source.

Icônes utilisées

Cette icône attire l’attention sur une information qu’il est important de mémoriser. Bien que je conseille de tout mémoriser, il s’agit ici de quelque chose d’absolument indispensable.

Cette icône fournit une suggestion, une technique spéciale ou quelque chose de particulier qui vous aide à être encore plus efficace.

Cette icône marque un piège à éviter, une information qui peut avoir de fâcheuses conséquences si vous n’en tenez pas compte.

Bien sûr, tout est technique en programmation, mais je réserve cette icône aux compléments, apartés et anecdotes encore plus techniques. Considérez-les comme des bonus pour ultra-geeks.

Derniers conseils pour la route

J’adore programmer. C’est pour moi une passion incroyablement relaxante, frustrante et gratifiante à la fois. Je pense qu’un certain nombre d’autres partagent cette passion, mais vous pouvez aussi être un étudiant qui a besoin de valider son cursus ou quelqu’un qui a décidé de faire carrière comme programmeur. Dans tous les cas, assurez-vous de toujours prendre plaisir à programmer. Si vous arrivez à imaginer l’aspect visuel du programme que vous voulez concevoir, vous devriez réussir à l’écrire. Cela ne se fera peut-être pas aussi vite que prévu, mais cela finira par aboutir.

Je vous conseille vivement de faire les exercices proposés. Inventez-en des variations sur le même thème. Ne lâchez pas un problème avant de l’avoir résolu. En programmation, il n’existe pas qu’une seule solution viable à un problème, et c’est fantastique. Quand vous cherchez et essayez, vous apprenez.

Si possible, établissez un contact avec un ami programmeur, mais ne le laissez pas vous aider ou vous réexpliquer les concepts. Considérez-le comme un soutien. L’activité de programmeur peut être un travail solitaire, mais il n’est pas inutile d’en discuter de temps à autre avec un collègue qui programme aussi, en C ou dans un autre langage.

Notez que ni l’auteur, ni le traducteur ne peuvent écrire votre code source à votre place. Nous ne pouvons pas non plus nous permettre de vous aider à résoudre vos devoirs informatiques d’étudiant. (Le livre n’aborde par exemple pas du tout les arbres B-tree.)

Le plus important : assurez-vous de toujours prendre plaisir à programmer !

Remarques concernant cette adaptation française

Pour aider les lecteurs francophones à repérer au premier regard les mots-clés imposés par le langage et les noms qu’ils peuvent choisir (quasiment) à leur guise, nous avons francisé presque tout dans les exemples.

Un sujet qui intéresse particulièrement nos lecteurs est le support des caractères accentués. Dans la version de base du C, ce support varie d’un système à l’autre (Linux, Mac OS, Windows). La tendance majeure de nos jours consiste à adopter le système Unicode grâce auquel les programmes pourront afficher et traiter leurs textes aussi aisément en anglais, qu’en français ou en coréen. Mais la maîtrise d’Unicode et de ses conventions de stockage associées (UTF-8, UTF-16, etc.) n’est pas simple. Ce livre étant destiné à vous guider dans vos premiers pas ou à consolider des connaissances fondamentales, nous n’aborderons pas ce sujet.

Tous les noms d’identifiants dans nos exemples prennent soin de ne pas utiliser de lettres accentuées. Nous vous conseillons de faire de même dans vos projets en attendant d’en savoir plus sur Unicode et sur les chaînes larges (wide strings).

Nous fournirons un résumé des stratégies applicables en matière de caractères accentués sous forme d’un fichier dans le même dossier que les solutions des exercices.

Partie 1 Commencer à programmer en C

Dans cette partie

Visiter l’atelier Code::Blocks

•

Réaliser votre premier programme

•

Apprendre les principes de la programmation

•

Découvrir les constituants du langage C

•

Utiliser Code::Blocks pour obtenir le squelette C de base

DANS CE CHAPITRE

Mettre en place l’atelier Code::Blocks

•

Configurer votre premier projet

•

Saisir du code source

•

Compiler, lier et exécuter

•

Sortir de Code::Blocks

Chapitre 1 Visite rapide pour les impatients

Vous êtes sans doute impatient de commencer à programmer. Alors ne perdons pas un instant.

De quoi avez-vous besoin ?

Pour pouvoir prendre le contrôle d’un ordinateur, d’une tablette, d’un telliphone (smartphone) ou d’une console de jeu, vous devez vous munir de quelques outils logiciels. Vous serez heureux d’apprendre qu’en ce début du XXIe siècle, tous ces outils sont devenus disponibles gratuitement sur Internet. Il ne reste plus qu’à décider lesquels prendre et où.

Vos outils pour programmer

Pour vous lancer dans l’aventure de la programmation, il faut disposer de deux éléments incontournables :

• Un ordinateur

• Un accès au réseau Internet

Votre poste de travail pour écrire et compiler le code source est un micro-ordinateur. Même si vous prévoyez d’écrire un jeu vidéo pour Xbox, vous allez travailler avec un ordinateur standard. Cet ordinateur peut être un PC Intel/AMD sous Windows ou sous Linux ou bien un Apple sous Mac OS.

Un accès au réseau Internet est indispensable pour récupérer plusieurs outils de programmation. Il vous faut un éditeur de texte pour saisir et modifier le code source et un compilateur pour convertir ce code source en un programme binaire exécutable. Ce compilateur est normalement accompagné d’un lieur et d’un débogueur. Tous ces outils sont disponibles gratuitement sur Internet.

Pas d’angoisse ! Les concepts de compilateur, de lieur et de débogueur seront définis dans le Chapitre 2.

Opter pour un atelier IDE

Nous ne pouvons que vous féliciter si vous décidez de travailler à l’ancienne en allant chercher séparément un éditeur puis un compilateur, ce qui oblige à installer chaque composant puis à harmoniser l’ensemble. C’est ainsi que j’ai commencé en travaillant uniquement depuis la ligne de commande en mode texte. Cette approche reste possible, mais ce n’est pas la plus performante.

En effet, la méthode optimale et professionnelle de produire du code de nos jours consiste à se doter d’un environnement de développement intégré (EDI), souvent désigné par l’acronyme anglais IDE (Integrated Development Environment). Nous utiliserons le terme Atelier. Cet outil réunit dans la même interface unifiée tous les outils requis pour programmer.

Votre atelier va vous servir à rédiger le code source, à produire l’exécutable, à réaliser la mise au point ou débogage, parmi d’autres opérations magiques. Continuer à utiliser un éditeur de texte séparé du compilateur donne au programmeur un statut très « roots » ; tous les pros ont adopté un atelier IDE. Je vous invite dans ce livre à faire de même.

En adoptant un atelier, vous vous épargnez de nombreux soucis initiaux pour configurer le compilateur et l’éditeur afin de faire fonctionner ces différents logiciels ensemble. Avec un atelier IDE, vous vous placez dans les meilleures conditions pour commencer à programmer tout de suite, car vous devrez pouvoir vous concentrer sur des sujets importants et ne pas perdre de temps. Je devine que vous êtes impatient de commencer à programmer.

L’atelier Code::Blocks

Sur Internet, vous trouverez un certain nombre d’ateliers de programmation, tous à peu près du même niveau de qualité. Pour profiter des conseils de ce livre, je vous invite à opter pour celui nommé Code::Blocks. Il est gratuit et fonctionne sous Windows, Mac OS X et Linux. C’est un atelier complet ; vous n’aurez besoin de rien d’autre.

Si vous avez déjà choisi un autre atelier IDE, pas de problème ! Je suis certain que les opérations principales se réalisent quasiment de la même façon qu’avec Code::Blocks. Ceci dit, les figures de ce livre et les procédures détaillées, surtout dans les premiers chapitres, se basent sur Code::Blocks.

Mise en place de Code::Blocks

Vous devez d’abord vous procurer l’atelier Code::Blocks puis le site Web officiel suivant :

www.codeblocks.org

Le site Web va certainement évoluer, et la description qui suit sera peut-être en partie obsolète :

❶ Utilisez votre navigateur Web pour vous rendre sur le site de Code::Blocks.

➋ Cherchez le lien de téléchargement Downloads (dans le menu).

❸ Cliquez le lien de téléchargement des fichiers binaires (Download the binary release) approprié à votre système.

❹ Prenez soin de choisir la version qui contient le compilateur C, par exemple celle dotée de MinGW.

Par exemple pour Windows, le fichier porte un nom dans le style suivant :

codeblocks-xx.yymingw-setup.exe

Les xx et yy correspondent au numéro majeur et mineur de version de Code::Block.

Sous Linux, vous choisissez entre la mouture 32 et 64 bits en fonction de votre distribution Linux et le format de l’archive. Je vous conseille d’opter pour la plus récente version stable.

Sous Mac OS X, vous choisirez entre le format d’archive .dmg ou le format universel .zip.

❺ Si nécessaire, procédez au désarchivage du fichier d’installation de Code::Blocks.

Malgré le titre de la collection Pour les nuls, je suppose que vous savez quoi faire d’un fichier au format .zip, .gz ou .dmg sur le système que vous utilisez.

❻ Lancez le programme installateur.

Suivez les indications en optant pour une installation par défaut. Il est inutile de personnaliser quoi que ce soit à ce niveau.

Sous Windows, vérifiez que vous installez la suite de compilation MinGW. Si vous ne voyez ce nom nulle part dans la fenêtre de choix des composants, c’est que vous n’avez pas téléchargé la bonne variante de Code::Blocks. Revenez dans ce cas à l’Étape 4.

❼ Concluez l’installation en faisant démarrer l’atelier Code:Blocks.

Sur ma machine, un message m’a demandé si je désirais démarrer Code::Blocks. Je n’ai eu qu’à confirmer par Yes. Si ce message n’apparaît pas, démarrez l’application Code::Blocks de la manière habituelle dans votre système.

❽ Refermez la fenêtre de l’installateur.

Même si la fenêtre de Code::Blocks est apparue, il est possible qu’il faille refermer la fenêtre de son installateur.

La prochaine section propose un tour d’horizon de l’interface de Code::Blocks.

Découverte de l’interface de Code::Blocks

Si l’application Code::Blocks n’est pas encore démarrée, lancez-la maintenant ; cherchez son icône sur le Bureau ou dans un menu (dans Windows 8, cherchez le nom CodeBlocks sans les deux signes deux-points).

La Figure 1.1 présente l’aspect général de la fenêtre de l’espace de travail de Code::Blocks (workspace) constitué de plusieurs sous-fenêtres ou panneaux.

Les détails ne sont pas très visibles dans la Figure 1.1, mais ce sont les grandes zones qu’il vous faut repérer. En voici la description :

Barres d’outils : Ces huit bandeaux horizontaux prennent place dans le haut de la fenêtre principale de Code::Blocks. Chaque barre offre une sélection d’icônes de commandes. Vous pouvez réarranger les barres, en masquer et en montrer. Ne touchez pas à leur disposition avant d’avoir pris vos marques dans l’interface.

Fenêtre de projets (Management) : La sous-fenêtre de gauche offre quatre onglets, un seul montrant son contenu à la fois. Cet espace rassemble toutes les ressources de votre projet de programmation.

Figure 1.1 L’espace de travail de l’atelier Code::Blocks.

Barre d’état : Le bas de la fenêtre principale est occupé par une série d’informations concernant le projet en cours d’édition et d’autres témoins relatifs au fonctionnement de l’atelier Code::Blocks.

Éditeur (main.c) : La surface centrale de la fenêtre est dédiée à la rédaction du code source.

Journaux (Logs & others) : Dans le bas de la fenêtre, au-dessus de la barre d’état, prend place une sous-fenêtre avec une douzaine d’onglets affichant des informations techniques sur le projet en cours. Le volet que vous utiliserez le plus souvent est celui des messages du compilateur, Build Log.

Dans le menu principal View, vous trouverez des options pour afficher/masquer les composants de l’interface. Choisissez par exemple View/Manager pour masquer le panneau gauche ou décidez quelles barres d’outils conserver par le sous-menu View/Toolbars.

Faites en sorte de ne pas être débordé par l’apparente complexité visuelle de l’interface de Code::Blocks. Même si vous avez de l’expérience en programmation dans l’ancien style, un tel atelier peut intimider de par toutes ses options, panneaux et volets. Ne vous inquiétez pas : il ne vous faudra que peu de temps pour prendre vos marques.

Pour profiter du maximum d’espace d’affichage, pensez à déplier la fenêtre principale de Code::Blocks pour l’amener au format Plein écran. Vous devez pouvoir être à l’aise.

Chacune des sous-fenêtres et panneaux (Management, Éditeur, Logs) peut être retaillée : amenez le pointeur de souris entre deux zones et faites glisser dès qu’il prend l’aspect d’une double-flèche pour ajuster la largeur ou la hauteur relative des deux zones.

Le panneau de l’éditeur de code et celui des journaux en bas sont multivolets. Chaque zone peut comporter en haut plusieurs onglets pour basculer d’un volet à un autre.

Votre premier projet

En programmation classique, vous utilisez un programme indépendant pour créer et modifier vos textes source (l’éditeur de texte), puis un autre pour compiler et encore un autre pour lier le code (linker). Tous les ordres doivent être émis sur la ligne de commande en mode texte, sans souris. C’était un processus en étapes successives qui reste praticable pour les petits projets. Mais les systèmes d’exploitation modernes offrent tous une interface graphique permettant d’intégrer ces outils. C’est heureux, car la programmation de logiciels pour les appareils actuels (téléphones, consoles de jeu, etc.) devient plus complexe, ce qui rend l’ancienne méthode très peu performante.

Les ateliers IDE actuels réunissent les anciens outils, notamment l’éditeur de texte, le compilateur, le lieur et le débogueur. Ils possèdent des fonctions indispensables pour créer des programmes pour interface graphique et les projets les plus complexes. C’est pour cette raison que les ateliers proposent de créer non pas des programmes, mais des projets. Un projet peut incorporer plusieurs fichiers de code source.

Découvrons les grandes lignes de la création d’un projet avec l’atelier Code::Blocks.

Démarrage d’un nouveau projet

Tous les exemples de ce livre d’initiation à la programmation sont des applications de type Console, ce qui signifie qu’ils sont destinés à fonctionner en mode texte dans une fenêtre de terminal. J’ai considéré que l’approche la plus efficace pour vous faire découvrir les principes de la programmation consiste à vous éviter de vous noyer dans les détails complexes d’une application en mode graphique dite pilotée par événements. L’atelier est tout à fait capable de permettre ce genre de projet, mais dans ce livre, nous ne produirons que des projets simples en mode texte. Voici la procédure générale pour créer un projet :

❶ Si elle ne l’est pas encore, démarrez l’application Code::Blocks.

Vous arrivez dans l’écran d’accueil avec le logo de Code::Blocks et quelques liens. Si vous ne voyez pas cet écran, choisissez la commande File/Close Workspace.

➋ Choisissez le lien Create a New Project.

Vous arrivez dans la boîte de l’assistant de création New from Template (Figure 1.2).

❸ Choisissez le type Console Application et cliquez le bouton Go.

Vous accédez à l’assistant Console Application Wizard.

Si vous ne voulez plus voir apparaître la première page de l’assistant, activez la case d’option Skip This Page Next Time.

❹ Cliquez le bouton Next.

❺ Choisissez le langage C au lieu de C++ présélectionné puis validez votre choix par Next.

Le langage C est assez différent de son descendant C++. Certaines choses ne sont possibles que dans l’un ou l’autre langage.

❻ Comme nom de projet, indiquez ex0101.

Absolument tous les exemples et projets de ce livre obéissent à cette convention de nommage : les deux lettres ex en minuscules (pour exercice) suivi de deux chiffres pour le numéro de chapitre et de deux autres chiffres pour le numéro d’exercice.

Lorsque vous validerez votre nom de projet, ce nom servira de radical pour le nom du fichier de projet que va générer l’atelier dans la foulée.

❼ Utilisez le bouton de parcours ... à droite de la deuxième zone de saisie (Folder to create project in) pour décider du dossier dans lequel seront implantés les projets.

Figure 1.2 Démarrage d’un nouveau projet.

Je vous conseille de créer un dossier principal dédié à vos projets de programmation.

❽ Dans cette boîte, utilisez la fonction de création de dossier/répertoire pour créer ce dossier dédié.

Si vous possédez déjà un dossier pour vos projets de programmation, créez-y un sous-dossier nommé par exemple BegC4D. Ce nom est l’abréviation du titre anglais de ce livre, Beginning Programming with C For Dummies.

Si vous n’avez pas encore de dossier pour la programmation dans votre dossier principal ou personnel, créez un sous-dossier que vous nommez par exemple prog dans ce sous-dossier, créez le dossier c et encore un cran plus bas le dossier BegC4D dans lequel vous placerez tous vos projets.

Sur ma machine fonctionnant sous Windows 7, le chemin d’accès au dossier de mes projets s’écrit ainsi :

C:\Utilisateurs\Dan\prog\c\BegC4D\

❾ Avec le bouton OK, validez votre choix de dossier.

❿ Utilisez le bouton Next.

La prochaine page est la dernière. Elle permet de choisir un compilateur et de décider si vous avez besoin de la seule variante diffusable Release ou bien aussi de la version de mise au point Debug.

La présélection pour le compilateur devrait convenir ; le compilateur GNU GCC (ou celui proposé) est celui qu’il nous faut.

⓫ Enlevez la coche de l’option Create Debug Configuration.

Cette configuration n’a d’intérêt que lorsque vous pensez avoir besoin de mettre au point le programme (le débogueur) ou de l’étudier pendant son exécution. Nous verrons cela dans le Chapitre 25.

⓬ Terminez la procédure avec le bouton Finish.

L’atelier Code::Blocks crée le projet et un fichier squelette de source. Il n’est peut-être pas affiché au départ dans l’éditeur. Pour un projet simple sur ligne de commande, ce squelette contient assez d’instructions source pour commencer à rédiger le code source C.

Une application console ou application en mode texte est ce qu’il y a de plus simple à créer. Pour créer un programme devant fonctionner dans l’interface graphique (Windows, Linux, Mac OS), Code::Blocks aurait prédéfini plusieurs autres éléments et activé des outils pour dessiner la fenêtre principale, créer des icônes, etc. Un atelier rend ce travail un peu plus facile.

Analyse du code source

Lorsque vous demandez à Code::Blocks de démarrer un nouveau projet, il met en place d’office un certain nombre d’éléments de départ. Dans le cas d’une application de la catégorie Console, un seul élément est proposé : le fichier de code source principal main.c.

Un fichier de code source est un fichier ne contenant que du texte. Ce sont des lignes d’instructions écrites dans un langage de programmation. Dans le Chapitre 2, nous verrons ce contenu en détail. Pour l’instant, sachez que l’atelier Code::Blocks génère d’office un tel fichier quand vous utilisez son assistant pour démarrer un nouveau projet. Le fichier n’est pas créé vide : il contient quelques lignes, l’ensemble formant un programme source minimal appelé squelette ou ébauche. Vous allez presque toujours supprimer ce squelette pour écrire votre code source, mais le squelette est viable en tant que programme.

Dans l’atelier, les projets sont listés dans le panneau gauche (Management, dans la Figure 1.1 ci-dessus). Si vous ne voyez pas ce volet, utilisez le raccourci Maj + F2 ou la commande View/Manager.

La Figure 1.3 montre le volet Management avec la page Projects activée. Le projet en cours est celui dont vous voyez les détails, mais il y a d’autres projets dans la liste.

Figure 1.3 Les projets dans l’atelier.

Lorsque vous avez opté pour le type d’application Console dans votre projet, un fichier source a été créé sous le nom conventionnel main.c. Il est rangé dans le sous-dossier Sources du projet. Si vous ne le voyez pas (comme en Figure 1.3), double-cliquez dans les sous-catégories successives pour le rendre visible.

Double-cliquez enfin dans le nom main.c dans Sources pour faire charger le texte dans la fenêtre de l’éditeur. Vous devez voir le squelette de code reproduit dans le Listing 1.1. Cet embryon constitue un programme complet. Vous allez pouvoir le compiler et l’exécuter, comme nous l’expliquons dans la prochaine section.

LISTING 1.1 Le squelette de code source inséré par Code::Blocks

 #include <stdio.h>
 #include <stdlib.h>

 int main()

 {
    printf("Hello world!\n");
    return 0;
 }

Le Chapitre 2 entre dans les détails du contenu du Listing 1.1. Pour l’instant, contentez-vous d’admirer les différentes couleurs appliquées selon la nature des éléments et leur mise en forme.

• La fenêtre de l’éditeur affiche normalement des numéros de lignes en marge gauche. Si vous ne les voyez pas, allez activer l’option correspondante par la commande Edit/Editor Tweaks/Show Line Numbers. Nous supposons dans ce livre que vous pouvez voir les numéros de lignes, car nous y faisons référence dans nos explications.

Ces numéros de lignes ne sont pas stockés dans le fichier source C. Ils sont ajoutés par l’éditeur dans l’affichage, mais ils sont aussi cités dans les messages d’erreur de compilation pour désigner les lignes suspectes dans le code source.

• Vous pouvez décider du nombre d’espaces équivalant à un saut de tabulation dans le même sous-menu Edit/Editor Tweaks en choisissant une taille dans Tab Size. Personnellement, j’ai opté pour quatre espaces par tabulation.

• La colorisation du texte source dépend de l’option Edit/Highlight Mode/C/C++. Vous pouvez la désactiver par l’option Plain Text dans le sous-menu Highlight Mode (premier choix dans la liste).

Compiler et exécuter le projet

Pour obtenir un programme exécutable dans l’atelier Code::Blocks, vous devez demander la construction du projet (build). Ce terme désigne une séquence d’opérations élémentaires que nous étudierons en détail dans le prochain chapitre. Nous supposons que vous avez réalisé l’exercice pratique précédent de création de votre premier projet sous le nom ex0101. Ce projet est ouvert dans la fenêtre de Code::Blocks. Vous êtes prêt à demander une construction. Voici comment faire :

❶ Vérifiez que le projet désiré est celui sélectionné dans le panneau Projects de la sous-fenêtre Management.

Le projet actif est affiché en police grasse. Lorsque plusieurs projets sont ouverts dans le panneau Projects, vous en changez en cliquant droit dans le nom du projet désiré (icône de premier sous-niveau) pour choisir la commande locale Activate Project.

➋ Ouvrez le menu général Build et choisissez Build.

Dans le panneau inférieur Logs & others, le panneau Build Log affiche les résultats du traitement. S’il n’y pas d’erreur, vous devriez ne voir que quelques messages. Nous y reviendrons dans le Chapitre 2.

Puisque vous n’avez pas modifié le code source du squelette, aucune erreur ne devrait avoir été détectée. La compilation a réussi. Un message le confirme par la mention « 0 errors, 0 warnings » . En cas d’erreur, et ce ne sera pas rare dans la suite de votre découverte, vous devrez consulter ces messages pour savoir où corriger. Nous verrons comment dans le Chapitre 3.

Mais construire le projet n’est qu’une étape préliminaire. L’étape essentielle consiste à faire exécuter le programme. Vous pouvez lancer cette opération directement depuis l’atelier.

Pour faire exécuter le projet actif, choisissez la commande Build and Run. Vous voyez surgir une fenêtre de terminal, qui montre les affichages produits par votre programme, plus deux lignes de messages systématiques invitant à frapper une touche pour quitter le terminal (Figure 1.4).

Figure 1.4 Exécution d’un programme.

Pensez à refermer la fenêtre texte par une frappe sur n’importe quelle touche.

Et voici une belle astuce : vous pouvez, en une seule commande, faire enchaîner la construction/compilation du projet et son exécution. La commande s’écrit Build/Build and Run.

• Profitez des raccourcis clavier pour les commandes Build, Run et Build and Run : Ctrl + F9, Ctrl + F10 et F9, respectivement. Inutile de les mémoriser, car ils sont rappelés dans le menu.

• Vous disposez aussi de plusieurs boutons dans la barre d’outils du compilateur pour déclencher les mêmes actions : une icône avec un engrenage jaune pour Build, une flèche verte pour Run et une combinaison des deux pour Build and Run.

Les affichages du programme correspondent aux premières lignes dans la fenêtre de terminal (Figure 1.4). Les deux dernières lignes sont créées par l’atelier en fin d’exécution du programme. Elles indiquent le code de sortie qui a été renvoyé par votre programme vers le système d’exploitation (zéro ici) et la durée d’exécution en millisecondes. Le message Press any key to continue signifie que vous pouvez frapper par exemple la touche Entrée ou la barre d’espace pour quitter la fenêtre.

Enregistrer et fermer le projet

Prenez la saine habitude de sauvegarder votre projet après toute retouche sérieuse ou longue séance de saisie. Dans un environnement de type IDE, il n’y a pas que le fichier source à enregistrer : la configuration de l’espace de travail et les paramètres de projet vont aussi dans des fichiers. Le menu File comporte des commandes pour sauvegarder chaque type de fichier indépendamment.

Une technique très efficace pour lancer une sauvegarde rapidement est le raccourci clavier de la commande Save everything du menu File : Alt + Maj + S (Commande + Maj + S sous Mac OS).

Si vous n’avez pas encore sauvegardé, faites-le maintenant.

Pour fermer le projet actif, utilisez la commande File/Close Project.

• Vous pouvez quitter l’application Code::Blocks maintenant si désiré.

• Ne vous inquiétez pas ! Code::Blocks détecte si des fichiers contiennent des données non sauvegardées. Enregistrez-les avant de quitter.

• Vous savez que rien n'a besoin d'être sauvegardé si la commande Save Everything est grisée.

• La commande classique File/Save de Code::Blocks (raccourci Ctrl + S) sert à enregistrer un fichier de code source. Je vous conseille de vous en servir souvent pendant l’édition de vos sources.

Exploiter les pages de documentation man

L’atelier Code::Blocks possède une fenêtre facultative pour accéder à la documentation (Man/Html Pages Viewer). Elle établit un lien avec la documentation des librairies de fonctions standard du langage C. Man est l’abréviation de manuel. Pour afficher ce panneau, utilisez la commande View/Man Pages Viewer.

Vous vous en servez en commençant par saisir un nom de fonction C standard dans la zone de saisie du haut (sans les parenthèses) puis en validant avec le bouton de recherche à sa droite (ou en frappant Entrée). Soyez patient, car il faut un peu de temps pour accéder à l’information.

Si Code::Blocks ne trouve rien, vous chercherez sur le Web la documentation de la fonction désirée. Voici des pages recommandées :

http://man7.org/linux/man-pages/dir_section_2.html

http://man7.org/linux/man-pages/dir_section_3.html

Les fonctions C abordées dans ce livre sont décrites dans ces pages man 2 et 3.

SI vous travaillez sous Unix ou Linux, vous pouvez ouvrir une fenêtre de terminal et lancer la commande texte man pour naviguer dans la documentation des fonctions.

man random

La commande précédente affiche le descriptif de la fonction standard random().