Infoforall

2 - LIRE L'ENTREE CLAVIER

Ce premier volet (C++ 1) visait à vous montrer comment on doit ordonner les instructions pour que l’ordinateur puisse afficher quelque chose à l’écran. Le second volet (C++ 2) explique comment interagir avec lui via le clavier et surtout comment le préparer à gérer vos données : on va voir qu’on doit avertir l’ordinateur du type de grandeurs qu’il va devoir stocker.

On commence par un petit programme qui vous demande votre nom et qui l’affiche ensuite sur la console.

#include <iostream>

#include <string>

using namespace std;


int main()

{

    // Phase d'allocation et d’initialisation

    string nomUtilisateur("");

    int ageUtilisateur(0) ;


    // Acquisition des donnees

    cout << "Quel est votre nom ?" << endl;

    cin >> nomUtilisateur ;

    cout << "Quel est votre age ?" << endl;

    cin >> ageUtilisateur ;

    cout << "\n";


    // Restitution des donnees

    cout << "L'utilisateur est<< nomUtilisateur << et il a "<<ageUtilisateur<<" ans."<< endl;


    // Preparation de l’arret de la fonction

    return 0;

}

Que fait ce code ?

Facile, non ?

Non.

1 - Quelques exercices d’acquisition de données et de restitution à l’écran

01° Rajouter quelques lignes de code pour pouvoir lire le prénom et l’afficher correctement dans la console après le nom de l’utilisateur.

02° Créer le code permettant de stocker l’argent contenu (en euro, sans les centimes) dans la poche gauche, puis l’argent contenu dans la poche droite.

03° Rajouter le code pour afficher l’argent total que porte la personne.

Pas facile n’est-ce pas ? Vous vouliez réussir à afficher 50 en rentrant 45 et 5. Mais, votre programme affiche certainement 455. Pas terrible comme calcul… Si vous trouvez bien 50, c'est que vous avez déjà compris le principe de ce chapitre ! Bravo !

2 - Le bon type de variable pour le bon type d’action

En réalité, puisqu’on veut faire du calcul, il ne faut pas chercher à stocker une chaîne de caractère mais bien un nombre. Si on additionne avec l’opération + deux chaînes de caractères « 45 » et « 5 », on a la concaténation des deux « 455 » et pas le calcul 45+5=50.

On doit donc stocker un nombre dans les variables de type Integer ou Int (voir la première activité).

Les types de variables disponibles et les contenus attendus de ces variables sont donnés ci-dessous :

Type de variableNom de déclarationCe qu'il peut contenir
Booléen – BooleanboolUne valeur parmi deux possibles, vrai (true) ou faux (false).
Caractère - CharactercharUn caractère unique.
Chaîne de caractère ou stringstringUne chaîne de caractères, c'est-à-dire un mot ou une phrase.
Entier - IntegerintUn nombre entier (attention aux limites maximales)
Entier - Integer positifunsigned intUn nombre entier positif ou nul (plus de latitude en valeur max)
Nombre réelfloatUn nombre à virgule (attention aux limites maximales)
Nombre réeldoubleUn nombre à virgule (prend plus de place mais valeur max plus grande)

04° Modifier les types de variables pour afficher l’argent total que porte la personne.

05° Essayez avec 10,5 et 0,60. Pourquoi est-ce ça ne fonctionne pas ?

06° Modifier les types de variables pour stocker et afficher correctement l’argent total que porte la personne, même si elle porte des centimes.

Remarque : Attention, en C, on déclare

C’est une source assez courante d’erreurs lors de la compilation. C’est assez facile de passer à côté si on ne regarde pas les couleurs de l’éditeur.

Remarque 2 : Il existe des « règles » liées à la nomination des variables que la plupart des programmateurs respectes car elle permet de faire facilement la différence entre variable et fonction :

Java, Python et C++ sont sensibles à la casse : ils distinguent majuscules et minuscules.

Remarque 3 :Modifier le contenu d’une variable se nomme une affectation. Si l’ancien contenu d’une variable n’est plus d’importante après traitement de l’information, on peut éventuellement l’utiliser pour garder en mémoire le calcul qu’on a fait à partir d’elle. Par exemple, on a 2,8% de rémunération sur un compte et qu’on désire connaître la somme en fin de mois, on peut utiliser :

#include <iostream>

#include <string>

using namespace std;


int main()

{

    // Phase d'allocation et d’initialisation

    int sousSous(0);

    float rendement(0);


    // Acquisition des donnees

    cout << "Combien d'argent en euros sur le compte ?" << endl;

    cin >> sousSous ;

    cout << "Quel rendement en pourcentage pour le compte ?" << endl;

    cin >> rendement ;

    cout << "\n";


    // Restitution des donnees

    sousSous = sousSous*(1+rendement/100) ;

    cout << "Le compte est credite en fin de mois de "<< sousSous << " euros. " << endl;


    // Preparation de l’arret de la fonction

    return 0;

}

Ainsi, on peut modifier la valeur de sousSous en faisant un calcul sur la valeur actuelle de sousSous.

07° Utiliser le code et tester le calcul pour 400 euros et 10% de rendement.

08° Faire de même avec 448 euros et 10% de rendement. En théorie, on a 448 + 44.8 = 492.8 euros. Et ici ?

09° Modifier le type de certaines variables pour régler le problème de l’absence de cents.

3 - Mémoriser plus qu’un mot à la fois : la fonction GETLINE

Il reste un problème : lorsqu’on utilise cin pour obtenir une chaîne de caractère, la fonction ne va enregistrer que le premier mot d’un ensemble contenant des mots séparés par des espaces.

Pour lire une ligne entière, il faut utiliser le code suivant :

getline(cin, chaineAStocker);

10° Créer un code qui enregistre trois phrases et qui les restitue dans le désordre. N’oubliez pas #include <string> pour gérer correctement les chaînes de caractères.

Dernier problème : le mélange des fonctions getline et cin. Si vous utilisez un cin, il faudra placer une ligne de code supplémentaire juste après le cin pour réinitialiser la prise en compte des espaces :

cin.ignore();

Sans cela, un getline situé à la suite du cin ne va pas être rempli correctement.

11° Créer un code qui demande combien de lignes on compte écrire. Dans le cadre de ce programme, on répondra 3. Écrire ensuite les phrases dans un ordre différent et afficher le nombre de phrases affichées..

La prochaine étape dans la conception d’un programme : les choix logiques.