GreenfootKara

Chapitre 3: Variables

Au chapitre précédent, nous avons appris à répéter certaines actions tant qu’une condition est remplie. Maintenant notre objectif est de réaliser que :

Kara positionne une suite de 5 feuilles en ligne.

Loop Example

Evidemment ce serait très facile si on faisait appel à putLeaf() et move() cinq fois successivement. Mais ce n’est pas une façon de coder très élégante. Ce qui serait bien, c’est que Kara compte combien de feuilles elle a déjà placées. Pour cela, Kara a besoin d’un “cerveau”, c.à d. une sorte de mémoire. En informatique on utilise la mémoire à l’aide de variables.

Kara sait compter

int i;
i = 0;

while (i < 5) {
    putLeaf();
    move();

    i = i + 1;
}

Explanations

  1. Avec int i; Nous réservons un espace mémoire que nous appelons i qui pourra stocker une valeur de type entier. On dit que l’on déclare la variable i. En Java, il existe différents types de varia-bles qui peuvent être utilisés (cf. les tableaux, plus bas).
  2. Avec i = 0; on affecte à la variable i la valeur 0. Comme c’est la première affectation pour cette variable, on dit qu’on initialise la variable i.
  3. On peut déclarer et initialiser une variable en une seule ligne : int i = 0;
  4. Pour la condition condition i < 5, l’opérateur de comparaison < signifie inférieur à (cf. les tableaux ci-dessous pour les autres opérateurs de comparaison).
  5. Pour l’affectation i = i + 1, nous devons d’abord examiner la partie droite. Cela signifie : “prends la valeur courante de i, ajoute 1 à cette valeur et sauvegarde le résultat en remplaçant la valeur de i.”

Informations complémentaires à propos des Variables

  • Il est possible de donner à une variable une valeur intangible, c.à d. d’en faire une constante : final int NUMBER = 5;
    Nous aurions pu alors écrire l’exemple précédent : while (i < NUMBER)
    Le nom des constantes est écrit complétement en lettres majuscules.
  • Le nom des variables qui ne sont pas des constante commence toujours par une lettre minuscule.

Types de données élémentaires ou primitifs en Java

Ces types de données sont appelés “élémentaires” ou “primitifs” car ce sont les types de base en Java. (Plus tard nous apprendrons à créer de types de variables pour des objets).

Entiers et Caractères

Type Depuis la valeur Jusqu'à la valeur incluse Memoire nécessaire
`byte` -128 127 8 bit
`short` -32'768 32'767 16 bit
`int` -2'147'483'648 2'147'483'647 32 bit
`long` -9'223'372'036'854'775'808 9'223'372'036'854'775'807 64 bit
`char` 0 65'635 16 bit

Nombres à virgule flottante

Type Depuis la valeur Jusqu'à la valeur incluse Memoire nécessaire
`float` -3.4 \* 1038 3.4 \* 1038 32 bit
`double` -1.7 \* 10308 1.7 \* 10308 64 bit

Valeurs logiques

Type Fourchette de valeurs Memoire nécessaire
`boolean` `true` ou `false` 1 bit

Opérateurs de Comparaison

Les opérateurs suivants peuvent être utilisés pour comparer dans Java. Le résultat est toujours un boolean (soit true ou false).

Opérateur Signifie Exemple
`==` égal (deux signes = accolés) `k == 2`
`!=` différent de `k < 12`
`>` strictement supérieur à `k > 67`
`<` strictement plus petit que `k < 12`
`>=` supérieur ou égal à `k >= 45`
`<=` plus petit ou égal à `k <= 23`

Note: Le signe de comparaison de l’égalité est toujours constitué de deux signes égal ==. Le signe égal tout seul = est utilisé pour les affectations !


Opérateurs Arithmétiques

Pour calculer nous utilisons les opérateurs arithmétiques suivants :

Opérateur Signification Exemple
`+` Addition `h = value + 34`
`-` Soustraction `y = 3.4 – t`
`*` Multiplication `z = h * 3.56`
`/` Division `d = m / v`
`%` Modulo (donne seulement le **reste** de la Division) `count = w % 2`

TÂCHE 3.01 : Compter les feuilles

TASK 3.01

Kara se déplace horizontalement de la gauche vers la droite jusqu’à l’arbre en comptant les feuilles.

Notes:

  • À la fin, on peut afficher le résulat sur la console avec la commande suivante : System.out.println("The result is: " + count);
  • Un texte doit toujours être écrit entre guillemets. Le signe + sert à ajouter la valeur de la variable count (qui bien sûr aurait pu être nommée différemment).
  • Portée des variables : les variables locales sont visibles seulement dans le bloc (c.à d. entre les accolades), à l’intérieur desquelles elles ont été déclarées ; et leur durée de vie est limitée à la durée de l’exécution de la méthode qui les porte. Quand elles sont déclarées en-dehors d’une méthode, au niveau de la classe elles sont visibles quel que soit l’endroit de la classe et pour la durée d’utilisation de la classe ; elles sont appelées champs ou attributs ou variables d’instance.

TÂCHE 3.02 : Kara das une boite I

TASK 3.02

Une surface carrée est délimitée par des arbres. À l’intérieur de cet espace un ensemble de feuilles est disposé que Kara va devoir inverser. Kara démarre du coin supérieur gauche et regarde vers la droite.

Aide:

  • Pour cette tâche,Il est pratique d’utiliser des variables booléennes, c.à d.:
    • déclaration et initialisation : boolean goingRight = false;
    • permuter de “true” à “false” et vice versa : goingRight = !goingRight;
    • booléen utilisé comme condition : if (goingRight)

TÂCHE 3.03 : Kara das une boite II

TASK 3.03

Une surface carrée est délimitée par des arbres. Dans cet espace Kara doit réaliser un damier de feuilles. Kara démarre du coin supérieur gauche et regarde vers la droite.

TÂCHE 3.04 (difficile) : La plus longue ligne d’arbres

TASK 3.04

Dans notre monde Il ya plusieurs colonnes d’arbres. Kara doit déterminer la longueur (en nombre d’arbres) de la colonne d’arbres la plus grande et afficher le résultat dans la console. Entre chaque colonne d’arbres il y a toujours au moins un espace. Une feuille indique la fin de l’espace de travail.

TÂCHE 3.05 (très difficile) : Pousser un champignon dans un tunnel

TASK 3.05

Le monde de Kara est constitué de deux boites reliées par un tunnel. On trouve dans la boite de gauche Kara et une feuille. Dans la boite de droite il y a un champignon. Kara doit rejoindre l’autre boite, trouver le cham-pignon et le pousser jusqu’à sa résidence habituelle. Une fois de l’autre côté, le champignon doit être poussé jusqu’à la feuille.

Kara démarre toujours dans le coin supérieur gauche et la feuille est toujours dans le coin inférieur gauche. Le champignon,lui , peut être placé n’importe où dans l’autre boite.

Note:

  • Ce problème peut être résolu par paires et en collaboration. Ensuite, certains sous-problèmes peuvent être divisés entre eux :
    • Trouver l’entrée du tunnel
    • Trouver le champignon
    • Déplacer le champignon jusqu’à l’entrée du tunnel
    • Déplacer le champignon sur la feuille

Complément sur les Variables

Nous avons fait une rapide introduction aux variables. Voilà quelques compléments sur les différents types :

Types de données primitifs (ou élémentaires)

Elementary Types

Types de données élémentaires sont comme des coupes (en mémoire) où la valeur est enregistré directement dans la variable.

Les Types “référence”

Reference Types

La valeur dans k est une référence à l’objet “Kara”. En utilisant l’opérateur “point” (k.) ou autrement dit, la notation pointée (k.move()) k peut être utilisée comme une télécommande pour l’objet “Kara” !


Etape suivante ?

Chapitre 4: Jeu Sokoban


Sources: Les idées et concepts de Kara ont été developpés par Jürg Nievergelt, Werner Hartmann, Raimond Reichert et al. Quelques exercices Kara s’appuient sur le travail de Horst Gierhardt.

Traduction française: Christian Malen - thank you for your contributions!


Comments