Infoforall

C++ 1 - AFFICHER SUR LA CONSOLE

Programmer c’est donner à l’ordinateur une série d’ordre (nommé instruction) selon un ordre et une codification bien précise. Le respect de la codification est vital car votre code va être ensuite traduit de façon automatisée en langage machine. L’ordinateur n’étant qu’une machine, elle exécute votre code mot à mot sans pouvoir comprendre le but de vos instructions et surtout sans pouvoir sortir du cadre rigide des instructions qu’elle comprend.

Ce premier volet (C++ 1) vise à vous montrer comment on doit ordonner les instructions pour que l’ordinateur puisse afficher quelque chose à l’écran.

Le second volet (C++ 2) expliquera comment interagir avec lui via le clavier et surtout comment le préparer à gérer vos données.

Ensuite, nous verrons comment :

(C++ 3) faire réagir l’ordinateur de façon logique à des événements bien précis.

(C++ 4) ranger des informations dans des tableaux de façon à numéroter les informations et permettre à l’ordinateur de les gérer de façon autonome.

(C++ 5) créer des fonctions : des séries d’instructions à réaliser plusieurs fois, que ce soit de façon identique à chaque fois ou avec de petites variations à chaque fois.

Le C++ est un langage compilé : avant de pouvoir voir le résultat de votre programme, il faut créer un fichier interprétable par l’ordinateur (un fichier .exe par exemple) à l’aide d’un logiciel particulier : le compilateur. Le désavantage est qu’il faut un compilateur compatible avec le système d’exploitation : le .exe obtenu pour Windows, ni conviendra pas à Linux ou à un Macintosh. L’avantage est qu’au final on obtient un programme souvent rapide et qu’on ne demande aucun programme préinstallé sur l’ordinateur de la personne qui veut exécuter votre programme.

Le Java ou le Python sont des langages interprétés : pour les faire fonctionner, on a besoin que l’ordinateur où il s’exécute possède déjà le logiciel nécessaire à la compréhension de votre programme. Pour un utilisateur lambda, pas facile de se rendre compte que votre logiciel ne fonctionne pas car il lui manque le plugin ou le logiciel qui va bien. On peut créer des installateurs qui gèrent automatiquement le téléchargement de ces logiciels mais comme tout système automatique, rien ne garantit que l’installation ne rentrera pas en conflit avec quelque chose. Et dans ce cas, le programme ne pourra pas fonctionner.

1 - Les logiciels de base

Pour programmer en C++, il vous faut :

Un IDE : (Code Blocks par exemple) : pour Integrated Development Environment. C’est un logiciel qui intègre un éditeur de codes sources, des outils d’édition et un debugger.

Un compilateur C++ (comme MinGW pour "Minimalist GNU for Windows")

CodeBlocks

Une fois dans Code Blocks, activer le menu Settings / Compiler / Toolchain … pour donner le bon chemin d’accès vers MinGW à votre IDE. Le bouton détection automatique est votre ami.

2 - La console

Nous commencerons par apprendre à gérer les affichages vers la console. C’est basique en terme d’affichage mais cela ne nécessite aucune gestion des fenêtres. Pour débuter, c’est donc pratique. Et ça permet au passage de savoir que la console existe  …

01° Ouvrir une console en utilisant les indications ci-dessous :

Sous Windows 10, ça reste compliqué d’y accéder :

Start Menu à All Apps à Windows System à Command Prompt

Menu Démarrer à Système Windows à Invite de Commande

Sous Windows 7 ou moins, c’était simple :

Menu Démarrer à Exécuter.

L’intérêt de la console vient de ses choix limités d’interaction qui ne nécessitent donc aucune déclaration et aucun réglage préalable : pas de choix de couleur, pas de gestion de souris, pas de taille d’affichage … On lit les informations claviers et on affiche le texte brut. Linux l’utilise beaucoup plus que Windows qui tente de cacher tout l’aspect technique de l’informatique puisqu’il est destiné au grand public.

3 - Premier contact avec Code Blocks : Afficher des caractères sur la console

02° Pour commencer à programmer, il faut :

Lancer un projet

choisir application console

choisir C++ comme langage

Donner un nom à votre projet

Dans main.ccp, vous avez normalement le programme suivant :

#include <iostream>

using namespace std;

int main()

{

    cout << "Hello world!" << endl;

    return 0;

}

03° En cliquant sur Compiler et Exécuter, vous devriez voir la console s’ouvrir et le programme afficher « Hello World ! » sur la console.

04° En faisant une recherche sur « nom_du_projet.exe » ou en allant voir où Code Blocks enregistre vos projets, vous allez pouvoir trouver votre (fichier) exécutable dans le dossier « bin ». En cliquant dessous, vous activez le programme. C’est magique. Bon, la console se renferme toute seule, mais bon…

La différence de fermeture tient au fait que Code Blocks rajoute du code pour maintenir la console ouverte. L’exécutable .exe lui même ne fait pas cela car la plupart du temps on ne veut pas montrer que le programme s’est mis en route ou s’arrête.

Que fait le programme exactement ?

CodeExplications
#include <iostream>Cela va aller chercher la bibliothèque de fonctions permettant de gérer les entrées (input : le clavier et la souris par exemple) et sorties (output : l’écran par exemple).
using namespace std;On verra que cela permet de faire appel plus facilement aux fonctions de base. Pour l’instant, on met l ‘explication de côté. On remarquera par contre la présence du « ; » qui indique la fin de l’ordre. Ne pas le mettre provoque un défaut d’interprétation. A retenir : mettre un ; après chaque ordre !
int main()Là, il n’y a pas de point virgule … En fait c’est normal : c’est une déclaration de fonction. C’est d’ailleurs la fonction principale (main en anglais) : tous les programmes commencent leur déroulement en respectant les instructions données dans main. C’est leur protocole. Le int veut dire que la fonction sert à générer un nombre entier (int pour integer).
{code code code}Les accolades indiquent le début et la fin des instructions.
cout << "Hello world!" << endl;C’est la première instruction (action) de la fonction main : Le flux nommé cout permet d’afficher des choses à l’écran. En Java et en Python, c’est print. En javascript, c’est log. On doit la lire « c-out », ce qui exprime bien l’idée qu’on va vers l’extérieur. Comme c’est une instruction, on met un ;. On remarque que le texte est donné entre les doubles guillemets " ". Chaque chose à afficher est précédé de <<. endl veut dire « aller à la ligne ». Du point de vue du programme, le passage à la ligne est un caractère comme un autre. En gros, le code exécute << "Hello world!" puis exécute le code << endl (pour end line).
return 0;Les fonctions peuvent généralement renvoyer quelque chose à la fonction qui les a appelé. Return permet donc de renvoyer une valeur, un caractère, une chaîne de caractère ou même un tableau. Comme main est déclarée en int (integer), il faut renvoyer un nombre. Le 0 est le résultat attendu lorsque le programme se passe bien. Comme c’est une instruction, on met un ; .

05° Tentez de renvoyer (via le return) 1 ou même "a". Pourquoi cela semble-t-il légèrement disfonctionner ?

4 - Commençons à modifier le code

06° Réaliser un programme qui affiche votre nom, votre prénom et votre adresse sur trois lignes différentes.

Comme vous l’avez vu, certains caractères ont un rôle particulier : " permet de commencer ou de finir une chaîne de caractère …

07° Tentez d’afficher quelque chose qui contient les deux caractères spéciaux sans provoquer d’erreur.

Pour afficher un nombre, vous pouvez utiliser <<"120" pour afficher la chaîne de caractère 120 ou utiliser <<120 pour afficher le nombre 120.

08° Faire afficher ceci en utilisant les tabulations :

Nom : votre nom    Prénom : votre prénom Age : votre age (en chiffre, pas en caractère)

Nom : un autre nom Prénom : autre prénom Age : un autre age

Remarque : \ se nomme antislash ou backslash. / se nomme slash.

Sur la plupart des systèmes d'exploitation, les adresses sur des périphériques de données s'écrivent avec la barre oblique. Pour Microsoft Windows, c'est la barre oblique inversée (exemple : C:\Mes Documents\Mes Images) alors que dans les systèmes UNIX, ainsi que pour les adresses réseau et internet (URL), les adresses de fichier s'écrivent avec la barre oblique normale (exemple dans votre barre d'adresse).

5 - Commentaires et mise en forme

L’un des points fondamentaux de la programmation est la clarté : votre code sera certainement un jour utilisé ou modifié par quelqu’un d’autre. Ou par vous même quelques mois ou années plus tard.

Lorsqu’un programme est simple, pas besoin d’explication. Mais lorsque le code commence à gonfler, on regrette souvent de ne plus savoir pourquoi on a codé ceci ou cela quelques semaines avant… Les commentaires servent à donner des explications sur ce que fait le code ou sur ce que doit contenir telle ou telle variable. Autre cas courant : la personne qui lit le code n’est pas celui que l’a codé. Sans commentaire, pas facile de comprendre le but de chaque ligne de code.

Pour rajouter une ligne de commentaire, on utilise l’autre slash :

// Je marque mon commentaire

Ce n’est pas une instruction : pas de ; en fin de ligne.

Si vous voulez rajouter plusieurs lignes de commentaires, on utilise un code pour dire « début de commentaires » et un code pour dire « fin de commentaire ». Parfois, on se demande dans quel sens on note le commentaire. C’est facile, c’est comme sur le clavier numérique : le slash / se trouve avant l’étoile *.

/* Début du Blabla

Bla bla du milieu

Fin du bla bla */

09° Rajouter quelques lignes de commentaires.

6 - Quelques dernières instructions

Le passage à la ligne peut s’effectuer à l’aide de << endl.

De la même façon que la tabulation peut être vue comme un caractère (avec \t), on peut faire passer le texte à la ligne à l’aide d’un code intégré au texte à afficher : \n.

10° Que va afficher la ligne de code suivante ? Va-t-elle provoquer une erreur ? Si oui, pourquoi ?

cout << " 1\n2\n3\n4 " ;

11° Que va afficher la ligne de code suivante ? Va-t-elle provoquer une erreur ? Si oui, pourquoi ?

cout << 1\n2\n3\n4 ;

12° Que va afficher la ligne de code suivante ? Va-t-elle provoquer une erreur ? Si oui, pourquoi ?

cout << 21 << endl << 22 << endl << 23 << endl << 24 ;

Et avec

cout << 21=19+2 << endl << 22 << endl << 23 << endl << 24 ;

Et pour finir : la blague du jour :

Le problème de la logique des informaticiens :

Ma mère : « Mon chéri, peux-tu aller au supermarché et me ramener une bouteille de lait. Si ils ont des œufs, prends en 6 ».

Je suis revenu avec 6 bouteilles de lait.

Ma mère a dit : « Pourquoi as-tu pris 6 bouteilles de lait ? »

J’ai répondu : « Car ils avaient des œuf … »

13° Logique ou pas ?