Partie I : 4) Les conditions

 
Dans ce chapitre nous allons rendre notre programme plus autonome
Vous serez capable, à la fin de ce chapitre, de faire un programme qui réagi différemment dans des situations différentes.




If...then...else...end if



Bon d'abord nous allons commencer par le début (ce qui est mieux non ? :p ).

Les conditions que-ce que c'est ?

Les conditions, dans la vie courante, se traduise par Si, alors...
Si il pleut alors je prends mon parapluie[/quote]

Comme le JB est un langage haut niveau, la syntaxe sera très ressemblante.
Mais c'est aussi un langage Anglais. Donc, le JB ressemble beaucoup à l'Anglais.

Le "Si" français se traduit par "If" en anglais et "Alors" par "Then".
On utilise le plus souvent des variables dans les conditions.

Voila un exemple de condition, simple, en JB

Code VB :
 
pluie = 1
if pluie = 1 then
    print "Je prends mon parapluie"
end if
 



Voyons voir un peu ce code.
La première ligne, on déclare la variable pluie.
Après on dit Si pluie est égale à 1 alors
On dit ce qui doit ce passer si pluie est égale à 1 (ici écrire " je prends mon parapluie ").
Et enfin on ferme la condition. En effet si l'on ne fermait pas la condition, l'ordinateur ne saurait pas où il faut reprendre le code si la condition est fausse.
Car nous faisons une condition et un condition peut être soit vraie soit fausse. Dans notre cas, si la condition est vrai alors on écrit " je prends mon parapluie " mais si elle est fausse on la saute et le programme continu après le end if.


Maintenant ajoutons un peu de complexité.
Nous allons faire:
Si il pleut alors je prends mon parapluie sinon je prends une ombrelle
[/quote]

En anglais,"Sinon" se traduit par "Else"
Ce qui nous donne:

Code VB :
 
pluie = 1
if pluie = 1 then
    print "Je prends mon parapluie"
else
    print "Je prends mon ombrelle"
end if
 


Donc
Si pluie est égale à 1 alors j'écris " je prends mon parapluie " sinon j'écris " je prends mon ombrelle ".
Voila ce n'est pas plus dur que ça.

Nous ne sommes pas obligé de mettre seulement des égalités.
Voici un tableau qui résume les signes.

Signe = <> < > <= >=
Signification est égal est différent est inférieur est supérieur est inférieur ou égal est supérieur ou égal


On peut aussi combiner plusieurs conditions:
Si il pleut ET si il y a du soleil alors il y a un arc-en-ciel[/quote]

Certains d'entre vous pourraient avoir l'idée de faire ça:
Code VB :
 
pluie=1
soleil=1
if pluie=1 then
    if soleil=1 then
        print "Il y a un arc-en-ciel"
    end if
end if
 


C'est très bien, ça fonctionne, ça montre que vous réfléchissez mais en tant que programmeur vous devez être feignant (enfin c'est pas obligé hein ;) ) et ce code ne ressemble pas à un code de feignant :p .
Bon, ceux qui ont créé le JB étaient aussi des programmeurs donc aussi des feignants alors ils ont simplifié le truc:
Code VB :
 
pluie=1
soleil=1
if pluie=1 and soleil=1 then
    print "Il y a un arc-en-ciel"
end if
 


Voila c'est pas plus simple ça ?
On a simplement traduit la phrase française en JB.
Le and ce traduit par ET donc :
Si pluie est égal à 1 et soleil est égale à 1 alors écrire "Il y a un arc-en-ciel".

On peut aussi faire un OU qui se traduit par or
Code VB :
 
eau=0
nourriture=0
if eau=0 or nourriture=0 then
    print "Je vais mourir !!"
end if
 


Avec le and il faut que les deux condition soit vrai pour que ça fonctionne alors qu'avec le or ce n'est pas obligé. Il suffit qu'une seule soit vraie.

Et enfin pour des conditions encore plus poussées, on peut assembler des AND et/ou des OR et leur mettre des priorités grâce à des parenthèses.

Code VB :
 
if (nbr1=20 or nbr2=20) and (nbr3>5 or nbr3<0) then
' La suite de votre code .........


Bon après ça devient compliqué mais ça peut être très utile.

Lors qu'une condition n'exécute qu'une seul action (par exemple si pluie=1 alors écrire "Il pleut"), on peut tout écrire sur une seul ligne.
Comme ça :
Code VB :
 
if pluie=1 then print "Il pleut"
 
.
Encore une astuce de flem... programmeur.




Exercice

Pour cet exercice je vous propose de faire un programme qui vous demande votre âge et vous dit si vous êtes mineur ou majeur.
Aide : (à ne regarder que si vous en avez vraiment besoin)
Il faut utiliser input, une condition avec un sinon et deux print.
===========
===========
===========
===========
===========
===========
===========
===============
===============
=============
===========
=========
=======
=====
===
=
Solution :
Voila la solution.
Caché:
Code VB :
 
input "Quel est votre âge ? ";age
if age >= 18 then
    print "Vous êtes majeur"
else
    print "Vous êtes mineur"
end if
 



select case ... end select


select case ... end select est une autre méthode pour faire des comparaisons en JB.
La grosse différence par rapport à if ... then c'est que select case ... end select est fait pour tester une seule variable plusieurs fois.

Je vais désormais appeler select case ... end select simplement case c'est plus court.

Case peut s'utiliser de deux façons différentes.

En sélectionnant une variable

Cette méthode est un peu restrictive car on ne peut tester que des égalités.
Exemple puis commentaire:

Code VB :
 
var=2
select case var
  case 1
    print "var est égale à 1"
  case 2
    print "var est égale à 2"
  case 3
    print "var est égale à 3"
  case else
    print "var est different de 1,2,3"
end select
 


La première ligne sert à déclarer notre variable.
La deuxième ligne à sélectionner sur quelle variable on veut faire des tests.
Ensuite, le case 1 teste si cette variable est égal à 1.
Si oui alors il exécute les actions jusqu'au prochain case; lorsqu'il arrive au prochain case il sort et reprend le programme à partir de end select.
Si non il continu à tester les autre case.
Le dernier case est étrange car on met un else au lieu d'un chiffre (ou d'un texte entre guillemets si on teste une variable alphanumérique). Cela sert à dire ce qu'il faut faire si aucune des conditions n'est remplie. Bien sûr c'est facultatif.

Sans sélectionner de variable

Exemple et commentaire:
Code VB :
 
var=5
select case
  case var=1 or var=3
    print "var =1 ou 3"
  case var>2 and var<8
    print "var est compris entre 2 et 8"
  case else
    print "var est non définissable par les conditions"
end select
 


On voie que dans la deuxième ligne on ne sélectionne pas la variable.
On peut donc tester plus que l'égalité et aussi plusieurs variables.




Voila la partie case finie.
C'est une technique très pratique pour remplacer plusieurs if.
Exemple.
Ce code :
Code VB :
 
nbr=5
if nbr=1 then print "c'est le 1"
if nbr=2 then print "c'est le 2"
if nbr=3 then print "c'est le 3"
if nbr<>1 and nbr<>2 and nbr<>3 then print "ce chiffre n'est pas entre 1 et 3"
 


Ça commence à en faire des if
Est maintenant avec un case
Code VB :
 
nbr=5
select case nbr
  case 1
    print "c'est le 1"
  case 2
    print "c'est le 2"
  case 3
    print "c'est le 3"
  case else
    print "ce chiffre n'est pas entre 1 et 3"
end select
 


C'est plus simple, plus lisible, plus compréhensible.
Mais il y a d'autre façon de faire la même chose.




Et voila maintenant vous apte à faire des conditions dans vos programmes
N'hésitez pas faite des programmes. Même si ils ne servent à rien ce n'est pas grave ça vous entraîne.


 
Cette page a été consultée 6294 fois