Aller au menu - Aller au contenu

[Plan du site] Vous êtes ici --- > Le Site du Zéro > Les tutoriels > Non-Officiels > Programmation > ActionScript / Flash / Flex > Introduction à l'ActionScript > Les bases de l'actionscript > Les Conditions > Lecture du tutoriel

Les Conditions

Vous vous apprêtez à lire un tutoriel rédigé par un membre de ce site. Malgré tout le soin que ce membre a pu apporter au tutoriel, nous ne pouvons pas garantir que les informations contenues sur cette page sont exactes à 100%. Merci de garder cela en tête lorsque vous lirez cette page ;o)
Avatar
Auteur : SuprazZz
Note : 20 / 20 (2 votes)
Visualisations : 20 414

Plus d'informations Plus d'informations
Les conditions sont à la base de tout langage de programmation. En effet, la seule chose qu'on peut demander à une machine c'est de faire ça si telle ou telle condition et remplie.
On va donc voir dans ce chapitre comment "tester" une variable, et exécuter une action selon le résultat du test ! :D
Sommaire du chapitre :
Icône du chapitre
Chapitre précédent Sommaire Chapitre suivant

Un nouveau type : Boolean

Vous m'excuserez de ne pas suivre un ordre "intuitif", mais avant de commencer à utiliser les conditions, je veux que vous les compreniez. Et pour cela nous allons faire appel à un nouveau type de variable : les variables booléennes, ou Boolean en anglais.

Vous avez dit booléen ?



C'est le type de variable le plus simple. Il n'a que deux valeurs possibles : true ou false (vrai ou faux en français).

Déclarons une variable booléenne, comme d'habitude, 3 techniques possibles :

Code : Autre
1
2
3
var mabool:Boolean = new Boolean(true); //Méthode complète
var mabool:Boolean = false; //Méthode plus simple, mais correcte
mabool = true; //Méthode courte, moins stricte, car on ne donne pas le type de variable


Maintenant, imaginons que nous ayons deux variables numériques, et que nous voulions savoir si elles ont la même valeur ou non.

Code : Autre
1
2
3
4
5
var mabool:Boolean = new Boolean(); // On définit une variable booléenne. En l'absence de valeur, elle prend d'elle même la valeur false
var nombre_a:Number = 100;
var nombre_b:Number = 50;
mabool = (nombre_a==nombre_b); // On assigne à mabool la valeur résultante du test
trace(mabool);


Et vous allez voir apparaître dans la fenêtre de sortie : false. Ce qui est tout à fait logique puisque 100 est différent de 50. :D
Vous avez pu constater qu'entre nombre_a et nombre_b on a intercalé l'opérateur ==. Cet opérateur permet de tester l'égalité entre deux variables.

Maintenant, refaisons le test de façon un peu plus rapide, sans passer par les variables :

Code : Autre
1
2
3
var mabool:Boolean = new Boolean(); // On définit une variable booléenne. En l'absence de valeur, elle prend d'elle même la valeur false
mabool = (100==100); // On assigne à mabool la valeur résultante du test
trace(mabool);


Et là, miracle, la fenêtre sortie nous gratifie d'un beau true.

Conversion vers Number ou String



Chose utile à savoir, mais qui ne devrait pas nous gêner puisqu'on code proprement en indiquant le type de chaque variable, pour Flash true et 1 et false et 0 sont la même chose.

Ainsi, testez donc cette ligne :

Code : Autre
1
2
var mabool:Boolean = true;
trace(mabool+mabool); // Horreur, on additionne deux booléens


Mais Flash ne se laisse pas démonter, et nous affiche 2. o_O
En effet Flash va adapter la variable selon les besoins. Là il s'agit d'un calcul numérique, il va donc modifier le true en 1. Ce qui explique le 2.

Et pour transformer le true en "true" et le false en "false" ?


Il faut utiliser la méthode toString() qui va transformer votre variable en chaîne de caractères.

Voilà ce qui ne marchera pas :

Code : Autre
1
2
3
4
var mabool:Boolean = true;
var monstring:String = "valeur : ";
monstring+=mabool; // on concatène un String avec un Boolean -> aïe caramba
trace(monstring);


Un beau message d'erreur d'incompatibilité des types s'affichera à vous.

Voilà ce qui fonctionnera :

Code : Autre
1
2
3
4
var mabool:Boolean = true;
var monstring:String = "valeur : ";
monstring+=mabool.toString(); // on concatène deux String -> no problemo
trace(monstring);

Opérateurs de test

Nous avons donc vu le célébrissime == qui permet de tester l'égalité. Passons à du plus lourd :

1. "N'est pas égal à"



Voilà l'exact opposé à ==, je parle bien sûr de !=.
Cet opérateur permet de vérifier que les valeurs de deux variables sont bien différentes.

Code : Autre
1
2
3
var mabool_a:Boolean = true;
var mabool_b:Boolean = false;
trace( mabool_a!=mabool_b);

Ce qui renvoie true, car true est différent de false.

On aurait pu aussi essayer cet opérateur avec des valeurs numériques ou des chaînes de caractères.

2. "Plus petit que" - "Plus grand que"



Il serait intéressant de pouvoir tester si un nombre est plus grand qu'un autre. Pas besoin de chercher dans le manuel de Flash l'opérateur, c'est le même que dans votre cours de Maths. :D

L'opérateur < correspond en français à "plus petit que" et à l'inverse, l'opérateur > correspond à "plus grand que".
Cela va nous permettre de comparer deux valeurs numériques. Testez chez vous ces différents lignes :

Code : Autre
1
2
3
4
trace (100<50); // Renvoie false, car 50 n'est pas plus grand que 100 !
trace (50<100); // Renvoie true, car 50 est plus petit que 100
trace (100<100); // Renvoie false, car 100 n'est pas plus petit que 100, mais égal
trace (500>10); // Renvoie true


Intéressant, non ? ;)
Mais je suis sûr qu'un détail vous a plus intéressé que le reste : le test sur 100<100

3. "Plus petit ou égal à" - "Plus grand ou égal à"



Il s'agit cette fois de l'opérateur >= ou à l'inverse <=
Testons :

Code : Autre
1
2
trace (100>=50); // Renvoie true, car 100 plus grand que 50
trace (100>=100); // Renvoie true, car 100 égal à 100


Et si on utilise > ou < avec des chaînes de caractères ?

Alors Flash comparera en fonction de la place de la lettre dans l'alphabet (en fait selon la place de la lettre dans la table des caractères ASCII (TABLE ASCII).
Quelques exemples enrichissants :
Code : Autre
1
2
3
trace("A"<"B"); //true car A avant B dans l'alphabet
trace("a"<"B"); //false car pour Flash, les majuscules sont avant les minuscules.
trace("ab"<"ac"); //true car b avant le c dans l'alphabet


4. "Égalité stricte"



Voilà un opérateur qu'on utilise assez rarement, mais qui peut se révéler utile.
Pour comprendre son intérêt, testons cela :

Code : Autre
1
2
3
var mabool:Boolean = true;
var monnombre:Number = 1;
trace(mabool==monnombre);

Ce qui nous renvoie true, car comme on l'a vu précédemment, pour Flash le booléen true équivaut au numérique 1.

Mais maintenant tapons :

Code : Autre
1
2
3
var mabool:Boolean = true;
var monnombre:Number = 1;
trace(mabool===monnombre);

Ce qui nous renvoie false ! L'opérateur === (oui, ça en fait beaucoup ;) ) va non seulement comparer l'égalité des valeurs contenues dans les variables mais aussi l'égalité des types des variables. Or ici, le type Boolean est différent de Number, d'où le false.

Existe-il une inégalité stricte ?

Eh oui, elle est assez rarement utilisé : !==
Cet opérateur renverra true si les valeurs ou les types sont différents.


C'était le petit tour des opérateurs de conditions les plus usités. :)

Opérations sur les booléens

Eh oui, tout comme les nombres, les booléens ont leurs opérations.
Pour les nombres on a 4 opérations, qu'on peut réduire à 2 (la somme et le produit).
Eh bien chez les booléens c'est pareil, on a deux opérations : ET et OU.

La logique binaire (c'est-à-dire les opérations sur les booléens) pourrait faire l'objet de plusieurs chapitres, je vais donc faire simple et n'expliquerai pas toutes les possibilités de la logique binaire.
Nous nous en tiendrons aux bases, c'est-à-dire :

1. Opposé
2. ET
3. OU

1. "Opposé"


Celui là, il est bien pratique, il s'agit du petit !
Ce dernier inverse tout simplement la valeur d'une variable booléenne.
Par exemple :

Code : Autre
1
2
var mabool:Boolean = false;
trace(!mabool); // Renvoie true


ou encore

Code : Autre
1
2
var mabool:Boolean = true;
trace(!mabool); // Renvoie false


2. "ET"


Vous voulez vérifier qu'une variable est égale à telle valeur ET une autre est égale à telle autre valeur ?
Utilisez l'opérateur &&
Imaginez, vous êtes directeur d'une boîte branchée. A chaque client vous demandez la variable age et argent. Vous ne voulez laisser rentrer (true) que les majeurs et ceux qui ont plus de 50 ¬.

En semi-français on aurait :
(age PLUS GRAND OU EGAL 18) ET (argent PLUS GRAND 50)

Ce qui nous donne en Actionscript :
(age>=18) && (argent>50)

Un petit exemple :
Code : Autre
1
2
3
var age:Number = 10;
var argent:Number = 100;
trace((age>=18) && (argent>50));

Le jeune garçon a bien l'argent, mais n'est pas majeur, donc éjection. :D Flash renvoie false.

3. "OU"


Opérateur : || (Ctrl+alt+6 pour les plus zéros d'entre nous).

Maintenant, imaginez-vous chef de casting :p pour la Zéros Académie. :lol:
Vous cherchez un Zéro qui soit possède un Q.I. inférieur au Q.I. d'une limace, ou alors un zéro qui possède une ancienneté supérieure à 3 ans sur le SDZ (un geek en somme ^^ ).

En semi-français :
(qi du zéro PLUS PETIT QUE qi de la limace) OU (ancienneté PLUS GRANDE QUE 3)

En Flash :
(zero_qi < limace_qi) || (zero_ancien > 3)

Et le petit exemple qui va bien :D :
Code : Autre
1
2
3
4
var zero_qi:Number = 90;
var limace_qi:Number = 2;
var zero_ancien:Number = 3.5;
trace((zero_qi < limace_qi) || (zero_ancien > 3));

Cela nous renvoie true, car le Zéro a beau posséder un QI approchant de la moyenne mondiale, son ancienneté le sauve. :D


Voilà c'était tout sur les opérations de logique booléenne. Sachez que si vous aimez vous triturer les méninges, vous pouvez combiner toutes ces opérations et même démontrer que le ET possède les mêmes propriétés que la multiplication (distributivité...) et le OU les mêmes que la somme.

La structure conditionnelle

On arrive enfin au lourd. :D
Regardons maintenant comment utiliser tout ce que nous avons appris sur ses booléens !


1. if


Intéressons-nous à la structure conditionnelle la plus classique : if
(if veut dire si en français pour les plus anglophobes d'entre nous :) )

L'instruction if va vérifier si une variable booléenne est vraie, si c'est le cas, elle va effectuer une action.
Vous pouvez voir la structure dans l'exemple ci-dessous. Entre parenthèses, on met la variable booléeene qui va être testée : ici c'est mabool. Dans le bloc d'instructions délimité par les accolades, on va écrire l'action qui se produira, si la variable booléenne est vraie.

Code : Autre
1
2
3
if (mabool) {
//l'action à effectuer si mabool vaut true
}


Petit exemple facile :

Code : Autre
1
2
3
if (50<100) {
trace("en effet, 50 plus petit que 100");
}


2. if else


else signifie en français sinon
Il va nous permettre d'ajouter une action dans le cas où la condition renvoie false

Code : Autre
1
2
3
4
5
if (50>100) {
trace("si la condition était vraie");
} else {
trace("mais en fait elle est fausse");
}


Ce code exécutera l'action contenue dans le else car la condition renvoie false

3. if else if


Et si on a plusieurs cas à éplucher ?
Code : Autre
1
2
3
4
5
6
7
8
9
10
11
12
var monnombre:Number = 2;
if (monnombre==0) {
trace("monnombre vaut 0");
} else if (monnombre==1) {
trace("monnombre vaut 1");
} else if (monnombre==2) {
trace("monnombre vaut 2");
} else if (monnombre==3) {
trace("monnombre vaut 3");
} else {
trace("je sais pas ce que vaut monnombre");
}


Ce code affichera "monnombre vaut 2".
Mais amusez-vous à changer la valeur de monnombre pour comprendre le système.
La dernière action else sera exécutée si aucune condition précédente s'est révélée vraie.
N'oubliez pas que les tests s'effectuent dans l'ordre. Et Flash s'arrêtera à la première condition vraie, il n'ira pas voir plus loin.

4. les ternaires


Voilà une structure conditionelle qui va nous faire gagner du temps :p
Prenons cet exemple :

Code : Autre
1
2
3
4
5
if (monnombre==0) {
trace("monnombre vaut 0");
} else { 
trace("monnombre ne vaut pas 0");
}

Ca nous fait : 5 lignes !

En ternaire :

Code : Autre
1
(monnombre==0) ? trace("monnombre vaut 0") : trace("monnombre ne vaut pas 0");

Ca fait : 1 ligne :p

Voici comment se présente un ternaire structurellement :

Citation : Strucuture ternaire
CONDITION ? ACTION SI CONDITION VRAIE : ACTION SI CONDITION FAUSSE ;


Maintenant un petit exercice difficile. :diable:
Vous vous souvenez de l'opérateur ! qui permet d'inverser la valeur d'un booléen ?
Et bien je veux qu'on écrive une ligne de code qui fasse exactement la même chose. :p

Réponse :
Secret (cliquez pour afficher)
Code : Autre
1
2
3
var mabool:Boolean = false;
mabool = (mabool==true) ? false : true;
trace(mabool); // affiche true


Comment ça marche ?
Pour comprendre, il suffit de remonter d'un cran dans la simplification de l'expression, on va "développer" :

Code : Autre
1
2
3
mabool = (mabool==true) ? false : true;
// Peut aussi s'écrire
(mabool==true) ? mabool=false : mabool=true;

Ce code a le même effet.

Ainsi que celui ci :
Code : Autre
1
2
3
4
5
if (mabool==false) {
        mabool = true;
} else {
        mabool = false;
}


Voilà vous savez tout sur les conditions. J'ai omis de parler de l'instruction switch, car elle est rarement utilisée, et peut souvent s'éviter en utilisant un outil plus pratique : les boucles ! Que nous verrons au prochain chapitre. Cela dit, si vous tenez à comprendre le switch, allez lire les tutos sur les conditions avec les langages C++ ou PHP : le système est le même. L'aide de Flash vous sera aussi très utile. :)

Récapitulatif

Valeur Booléenne et correspondance numérique



ValeursCorrespondance numérique
false 0
true 1


L'inverse n'est pas complètement vrai. Le 0 correspond bien à false, mais tous les autres chiffres correspondront à un true dans une condition.

Opérateurs de test



OpérateurSignificationVrai si ...Faux si ...
==
égal à les valeurs sont égales les valeurs sont différentes
!=
non égal à les valeurs sont différentes les valeurs sont égales
===
strictement égal à les valeurs ET les types sont égales les valeurs sont différentes
les types sont différents
!==
strictement non égal à les valeurs sont différentes
les types sont différents
les valeurs ET les types sont égales
A < B
plus petit que si la valeur de A est plus petite que la valeur de B si la valeur de A est plus grande que la valeur de B
si la valeur de A est égale à la valeur de B
A > B
plus grand que si la valeur de A est plus grande que la valeur de B si la valeur de A est plus petite que la valeur de B
si la valeur de A est égale à la valeur de B
A <= B
plus petit ou égal à si la valeur de A est plus petite que la valeur de B
si la valeur de A est égale à la valeur de B
si la valeur de A est plus grande que la valeur de B
A >= B
plus grand ou égal à si la valeur de A est plus grande que la valeur de B
si la valeur de A est égale à la valeur de B
si la valeur de A est plus petite que la valeur de B


Opérateurs booléens



OpérateurSignificationCe qui se passe ...
!A
opposé A prend la valeur opposée. false devient true et true devient false
A && B
ET Condition sur A ET sur B. Les deux doivent valoir true pour que le ET renvoie true
A || B
OU Condition sur A OU sur B. Un des deux doit valoir true pour que le OU renvoie true


Structures



Code : Autre
1
2
3
4
5
if (condition) {
//Si condition est vraie
} else {
// Si condition est fausse
}


Code : Autre
1
2
3
4
5
6
7
if (condition) {
//Si condition est vraie
} else if (condition2) {
//Si condition2 est vraie
} else {
// Si condition et condition2 sont fausses
}


Code : Autre
1
(condition) ? /*si vraie*/ : /* si faux */ ;

Q.C.M.

Qu'affiche ce code dans la fenêtre de sortie :

Code : Autre
1
trace(true+false);
Que dois-je mettre dans la fonction trace pour que la fenêtre de sortie m'affiche true ?

Code : Autre
1
2
3
var mabool:Boolean = false;
var machaine:String = "No Problemo";
var machaine2:String = "Aie, Caramba !";
Code : Autre
1
2
3
4
var mabool0:Boolean = false;
var mabool1:Boolean = true;
var mabool2:Boolean = false;
trace((mabool0 || mabool1) && (mabool0 || mabool2));



Qu'affiche ce code dans la fenêtre de sortie ?
Soit mabool variable de type booléenne.

Code : Autre
1
2
var mabool:Boolean = new Boolean(true);
mabool = false ? false : true;


Quelle va être la valeur de mabool à la fin du script ?
&lt;code&gt;
var mabool0:Boolean = false;
var mabool1:Boolean = true;
var mabool2:Boolean = false;
(mabool0==false) ? mabool1=false : mabool2=true;
trace(mabool1+mabool2);
&lt;/code&gt;

Aller, un bon gros morceau pour se quitter. :p

Que va nous afficher ce beau morceau de code ? :D

Statistiques de réponses au QCM


Chapitre précédent Sommaire Chapitre suivant
Retour en haut Retour en haut


Créé : le 30/11/2005 à 19:39:43
Modifié : le 22/08/2008 à 15:52:50
Avancement : 100%
Licence : Copie non autorisée

4 commentaires

Changer de design | En savoir plus | Plan du site | Politique d'accessibilité | Règles | RSS tutoriels | RSS news
Édité par Simple IT SARL : Nous contacter | Notre blog | Revue de presse | Publicité

Y'a plus rien à lire, faut remonter maintenant !

Hébergement web - Correction de tutoriels - Créer un site
Vous souhaitez apparaître ici ? Contactez-nous.

Nombre de connectés 416 Zéros connectés | Requêtes SQL 8 requêtes | Temps de génération de la page : Total (SQL) 0.0284s (0.0122s)