abcdAlgos

abcdAlgosCollectif d'auteurs [x]

Un tutoriel sur les variables.

Objectif

Le but de ce tutoriel est de comprendre comment utiliser des variables. Il faut déjà savoir utiliser l'interface.

Introduction

  1. Dialoguer avec un utilisateur.

    Voici un exemple de programme qui "dialogue" avec un utilisateur :
    void main() {
        println("Bonjour, quel est ton nom ?");
        String texte = readString();
        println("Enchanté " + texte + ", et ... à bientôt !");
    }
    Analysons ces quelques lignes :
    • Nous retrouvons le bloc void main() { .. } qui permet de spécifier un bloc d'instructions à faire exécuter, comme lors du 1er tutoriel.
    • Nous retrouvons un println qui permet d'imprimer une ligne pour saluer l'utilisateur.
    • Mais voici quelque chose de nouveau : il va entrer son nom. Or chaque utilisateur a un nom probablement différent, il faut donc prévoir une "boite", une variable où mémoriser le nom que l'utilisateur va entrer au clavier.
      • Cette boite est une variable, nous lui avons donné le nom "texte" (who_is_it, c'est à dire "qui est-ce"), mais nous aurions pu choisir un autre nom simple.
      • La valeur de cette variable est une chaîne de caractères, on parle de String en anglais et ... en Java'sCool.
      • La fonction readString() lit un String.
      La ligne String texte = readString(); signifie donc, de droite à gauche,
      1. readString(); Lire une chaine de caratère ...
      2. texte = readString(); Et mettre le résultat dans la variable de nom texte ...
      3. String texte = readString(); Cette variable étant de type String, une chaine de caratères donc.
      On voit donc ici que le symbole = signifie affecter une valeur à une variable (ici affecter la valeur lue grâce à readString à la variable texte.
    • La dernière ligne met bout à bout "Enchanté ", texte (dont la valeur est le nom entré par l'utilisateur) et ", et ... à bientôt !" pour imprimer un message de salutation où le nom de l'utilisateur est employé.
  2. Trois couleurs pour trois sortes de mots.

    Regardons ces lignes, il y a des mots en ocre, en vert et en noir :
    • Les mots en ocre (String, println, ..) sont les mots de base du langage et ceux des fonctions prédéfinies. Ils sont fixés à l'avance (ce sont les mots du langage Java'sCool), et doivent être utilisés tels quels. Chaque mot a un sens précis que nous découvrons au fur et à mesure.
    • Les mots en noir (ici texte) sont les identificateurs de nos variables, nous les choisissons et nous donnons à ces variables des valeurs, un peu comme les "x" et les "y" en mathématiques.
      • Attention1: Les identificateurs en Java'sCool sont uniquement composés de lettres minuscules sans accent et du signe "_", par exemple vous pouvez écrire leprenom ou le_prenom mais PAS le-prenom (on ne peut utiliser le tiret "-") ou leprénom (on ne peut utiliser d'accent).
    • Les mots en vert sont des chaines de caractères, constantes, que nous utilisons "telles quelles".
    Apprenons à bien distinguer ces trois sortes de mots.
  3. Les verbes et les adjectifs du langage.

    Parmi les mots en ocre qui forment la base du langage, nous découvrons qu'ils sont de deux sortes :
    1. Les verbes comme println (imprimer) ou readString() (lire un ``String´´ c'est à dire une chaine de caractères) désignent des fonctions à réaliser, certaines de ces actions retournent le résultat de leurs opérations (par exemple readString() renvoie la chaine de caractères lue au clavier), d'autres font une action sans retourner de résultat (par exemple println imprime une chaine de caractères et voilà). Nous découvrirons plus en détail ces fonctions: nous pourrons même définir nous même de nouvelles fonctions.
    2. Les adjectifs comme String qui permet de spécifier que la variable texte est une chaine de caractères (et pas un nombre ou un autre objet numérique). Il est bien sûr essentiel de bien préciser quel est le type de chaque variable grâce à ces adjectifs. Voici les premiers adjectifs que nous devons connaître :
      • String qui désigne les chaines de caractères, nous les utilisons déja !
      • int qui désigne les nombres entiers (int est l'abréviation de "integer number"´, nombre entier) positifs ou négatifs (entre environ -2 millards et 2 milliards, cela permet de manipuler de très grands nombres entiers ... mais pas jusqu'à l'infini !).
      • double qui désigne les nombres décimaux (double est l'abréviation de "double precision floating point number", nombres décimaux à double précision) comme sur une calculette. Bien entendu ces nombres sont approximatifs : il y a forcément des erreurs d'arrondis lorsque l'on calcule avec. A l'inverse les int permettent de faire des calculs exacts (sauf erreur de programmation !).
      • ... ensuite chaque objet numérique (texte, image, liste de valeurs, tableau de chiffres, ..) aura un type, que nous découvrirons au fur et à mesure, et nous désignerons tous les objets qui seront dans la même classe, autrement dit qui auront le même type, avec des adjectifs comme String, int ou double.

Travail proposé

  1. A nous de jouer.

    Taper sans se tromper les cinq lignes du programme, puis essayer (c'est à dire: sauver2, compiler et ... exécuter).
    • Vérifier que si l'utilisateur entre des noms différents, alors le programme va bien stocker le nom dans la variable, le réutiliser pour dire "Enchanté ..".
    • Vérifier que si nous changeons l'identificateur de la variable (par exemple remplacer texte par son_nom), cela ne change pas le fonctionnement du programme.
    • Constatez bien que l'identificateur (le nom de la variable ici, texte) n'a rien à voir avec la valeur de la variable (ici le nom entré par l'utilisateur).
    • Modifier maintenant le programme (la forme de la question, l'utilisation de la réponse) pour le rendre un peu original, à vous de jouer.
  2. Utilisons une variable numérique.

    Modifions un peu le programme en utilisant au bon endroit les trois lignes supplémentaires suivantes :
        println("Enchanté " + texte + ", quel est ton âge ?");
        int age = readInteger();
        println("Oh," + age + ", est un bel âge !");
    • Essayer le code modifié et vérifier qu'il fonctionne de manière satisfaisante.
    • Noter que maintenant nous avons une autre variable, qui n'est plus de type String mais de type numérique.
    • Remplacer le int par un double (c'est à dire avec la ligne double age = readFloat();, que constatons nous ?
    • L'âge de quelqu'un (son nombre d'années de vie) est il plutôt un nombre entier (un int) ou un nombre décimal (un double) ? Ou, mais, .. sa taille en mètre ? Et le numéro de sa classe au collège ? Et sa note scolaire moyenne ? Voyez comment selon la valeur numérique que l'on cherche à représenter numériquement il faut utiliser soit un int soit un double.

Remarques

  1. A propos des identificateurs.

    Selon les langages informatiques et les règles de codage les identificateurs peuvent être composés avec autre chose que des lettres minuscules sans accent et du signe "_" (par exemple on peut glisser des chiffres après l'identificateur, mettre des majuscules, etc..) mais ce n'est PAS une bonne habitude de le faire, car cela a tendance à embrouiller les choses, cela dépend des langages, etc... En programmation il faut non seulement respecter la syntaxe mais aussi choisir de bonnes habitudes pour spécifier ses programmes.
  2. Comment garder une trace du travail réalisé.

    Sauver le texte source du programme dans un fichier d'extension .jvs, par exemple Var1.jvs, puis Var2.jvs pour la version suivante, etc.. De cette façon chaque version du travail peut-être gardée, corrigée, etc.. De plus, on peut facilement ajouter des lignes de commentaires qui permettent de sauvegarder les réponses aux questions posées. Ce sont des lignes qui commencent par // et sont donc de la forme

    // Voici deux lignes de commentaire ignorée par l'ordinateur ...

    //  ... et qui permettent de donner des informations aux humains qui lisent ce code !