ÔĽŅ

1.4 - Variables

Nous allons voir comment faire de la programmation dynamique avec les variables.
Les variables sont pratiques pour changer les valeurs et les comportements du programme sans changer le code.

synopsis

  1. prérequis
  2. notions de base
  3. déclaration
  4. factorisation
  5. modification
  6. concaténation
  7. plus de fun avec le hasard
  8. question utilisateur
  9. à vous de jouer
  10. sommaire

  11. << retour aux tu(r)toriaux

prérequis

Avant de lire ce tutoriel, il est important d'avoir lu : 1.1 - Qu'est ce qu'un programme ?1.3 - Boucles loops

notions de base

Qu'est ce qu'une variable ?
Une variable est l'association entre un nom symbolique (un identifiant) et une information (une valeur).
Une variable peut être modifiée au cours de l'exécution du programme, par le programme lui-même ou lors de la réponse d'un utilisateur.
Une variable AL peut contenir différents types de valeurs :

  • Bool√©en: true (vrai), false (faux)
  • Nombre: 1, 2, 3, 45.7, -5, ....
  • Cha√ģne de caract√®re: "mon nom est Yann", "√™tes vous s√Ľr ?"

C'est tout pour le moment ! Nous verrons d'autres types dans le futur.
Notez qu'une valeur Cha√ģne (String en anglais) se note entre guillemets (").

déclaration

Pour déclarer une variable, vous devez utiliser le mot clé : set.
Déclarer une variable indique au programme qu'il peut dorénavant utiliser cette variable et sa valeur.
Toute la suite du programme y aura accès, mais pas ce qui est situé avant.
Pour assigner une valeur à la variable, utilise le symbole "=".

 
variable my_name: 
  • 1
  • 2
  • 3
  • 4
  • 5
// my_name est inconnu avant cette ligne
set my_name;
my_name = "yann"; // my_name est connue et utilisable après cette ligne
algo.hide ();
algo.text (my_name);

L'assignation d'une valeur peut-être faite lors de la déclaration :

 
assignation directe: 
  • 1
set my_name = "yann";

factorisation

Les variables peuvent être utilisées pour changer les paramètres du programme. Pour illustrer ceci, utilisons notre exemple du carré et modifions le ainsi :

 
carr√© param√©tr√©: 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
// taille du carré
set size = 100;
algo.go (size); // variable utilisée ici
algo.turnRight (90);
algo.go (size); // variable utilisée ici
algo.turnRight (90);
algo.go (size); // variable utilisée ici
algo.turnRight (90);
algo.go (size); // variable utilisée ici
algo.turnRight (90);
 

Pour le moment, rien n'a changé !
Maintenant, essaiez de changer la valeur de size par 200 et observez ce qui se passe.
La taille du carré a changée.

 
carr√© param√©tr√©: 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
// taille du carré
set size = 200;
// le code suivant n'a pas changé !
algo.go (size); // variable utilisée ici
algo.turnRight (90);
algo.go (size); // variable utilisée ici
algo.turnRight (90);
algo.go (size); // variable utilisée ici
algo.turnRight (90);
algo.go (size); // variable utilisée ici
algo.turnRight (90);
 

Voyez vous l'avantage d'utiliser les variables ?
Vous n'avez plus √† r√©p√©ter la modification de la valeur partout o√Ļ elle est utilis√©e.
Ce n'est pas le seul avantage, comme vous allez le voir.

modification

Un autre avantage à l'utilisation des variables viens de leur capacité à être modifiée par le programme.
Cela s'appelle la mutabilitée des variables.
Par exemple une variable peut avoir une valeur de 5 à un moment puis devenir 7 après un traitement du programme.
Par exemple :

 
mutabilit√©: 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
set a = 5;
// a est égale à 5
algo.text (a);

a = 7; // mutation
// a est maintenant égale à 7
algo.text (a);


Une autre possibilité est d'ajouter 2 à la valeur comme ceci :

 
addition: 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
set a = 5;
// a est égale à 5
algo.text (a);

a = a + 2; // peu aussi s'écrire a += 2;
// a est maintenant égale à 7 (5 + 2) CQFD
algo.text (a);


L'opérateur += indique que la valeur initiale vas être modifié par ajout d'un nombre.
a+= 2 signifie à "a" ajoute 2 soit l'équivalent de : a = a + 2 Tous les opérateurs disponnibles en AL sont ici : expression

concaténation

Le nombre peut-être manipuée avec des opérations arithmétiques comme +, -, * (multiplié), / (divisé) etc...
Les cha√ģnes de caract√®res ont un op√©rateur qui leur est propre : '..' pour assembler deux cha√ģnes ensemble. Cela s'appelle la concat√©nation.

 
concat√©nation de cha√ģne: 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
// cha√ģne 1
set str1 = "salut";
// cha√ģne 2
set str2 = " android";
// résultat
set res = str1 .. str2; // res = "salut android"
algo.hide ();
algo.text (res);


L'exemple pr√©c√©dent cr√©e une cha√ģne compos√©e de str1 suivit de str2.
Note: comme les opérateurs numériques que nous avons vus, la concaténation fonctionne sur des variables ou directement sur les valeurs.
L'exemple précédent pourrait être écrit comme ceci :

 
concat√©nation de cha√ģne: 
  • 1
  • 2
  • 3
set res = "salut" .. " " .. "android"; // res = "salut android"
algo.hide ();
algo.text (res);

plus de fun avec le hasard

Les variables donnent de grandes possibilités pour manipuler les valeurs.
Une fonctionnalité intéressante est la fonction qui génère un nombre aléatoire : math.random()
Cette fonction donne un nombre au hasard compris entre 0 et les paramètres choisis.

 
hasard: 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
// récupère une valeur aléatoire
set a;
loop (4) {
  a = math.random (400); // al√©atoire entre 0 et 400
  algo.circle (a);
}

Le programme ne vas pas toujours donner le même diamètre au cercle à chaque fois que vous l'exécutez.

question utilisateur

Il est également possible de demander une valeur à l'utilisateur du programme.
C'est le fondement des interfaces utilisateur.
A cet effet, AL propose deux fonctions pour interroger l'utilisateur : text.inputText (asking msg) et text.inputNumber (asking msg).
La fonction text.output (msg) est utilisée pour envoyer un message seulement à l'utilisateur, sans attendre de réponse.

 
question: 
  • 1
  • 2
  • 3
// récupère le nombre choisi
set a = text.inputNumber ("quel nombre désirez vous ?");
text.output ("vous avez choisi: " .. a);

à vous de jouer

Cube paramétré

Demandez à l'utilisateur la taille du cube et dessinez le avec la valeur qu'il a choisi.

 
Solution: 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
// demandez à l'utilisateur
set size = text.inputNumber ("quel taille désirez vous ?");
text.output ("vous avez choisi: " .. size);

// dessin du cube à la taille choisie
loop (4) {
  algo.go (size);
  algo.turnRight (90);
}

Forme aléatoire

Dessinez une forme avec 4 cotés de 4 angles différents

 
Solution: 
  • 1
  • 2
  • 3
  • 4
  • 5
// dessin d'une forme aux angles aléatoires
loop (4) {
  algo.go (100);
  algo.turnRight (math.random(360));
}

Exécutez ce programme plusieurs fois pour voir ce qu'il fait.

Variation de la forme aléatoire

Dessinez une forme avec 4 cotés et pour chaque coté le même angle, mais choisi initialement au hasard

 
Solution: 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
// déterminez l'angle
set a = math.random (360);
// dessinez le cube avec l'angle
loop (4) {
  algo.go (100);
  algo.turnRight (a);
}

Exécutez ce programme plusieurs fois pour voir ce qu'il fait.

Demandez le nom de l'utilisateur et dites lui "bonjour [nom]".

 
Solution: 
  • 1
  • 2
  • 3
// demandez à l'utilisateur
set name = text.inputText("Quel est votre nom ?");
text.output ("Bonjour " .. name);

Labyrinthe

Jouez avec la variable size en l'incrémentant de 10 en 10 (size = size + 10) afin d'obtenir la figure suivante :

 
Solution: 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
// labyrinthe
set size = 0; // initialisez la variable
// boucle de la spirale
loop (45) {
  size = size + 10;
  algo.go (size);
  algo.turnLeft (90);
}

Spirale Triangulaire

Avec un angle de 121¬į, quel est le r√©sultat ?

 
Solution: 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
// spirale
set size = 0; // initialisez la variable
// boucle de la spirale
loop (45) {
  size = size + 10;
  algo.go (size);
  algo.turnLeft (121);
}

Vous pouvez aussi jouer avec le hasard sur l'angle : set angle = math.random(360);

ÔĽŅ

sommaire

connaissances

Dans ce tutoriel, vous avez appris :

  • qu'est-ce qu'une variable ?
  • comment les cr√©er et les utiliser pour rendre les programmes dynamiques ?
  • comment ajouter du fun avec les valeurs al√©atoires ?
  • comment poser une question √† l'utilisateur ?

fonctions utilisées :

FonctionDéscription