Les structures de contrôle
Avant de pouvoir se lancer dans le développement, il est bon de s'initier aux structures conditionnelles ou structures de contrôle. Elles vous permettront de gérer la plupart des cas que vous rencontrerez en programmation. Il est donc très important de bien en comprendre le fonctionnement et les paramétrages.
À ce propos, il serait peut-être temps de jeter un œil aux opérateurs de comparaison arythmétique. Ils sont assez simples :
|
|
==
|
égal
|
>
|
strictement supérieur
|
>=
|
supérieur ou égal
|
<
|
strictement inférieur
|
<=
|
inférieur ou égal
|
!=
|
différent
|
Ceux-ci seront appelés plus loin
opérateurs de comparaison, pour faire plus simple...
Et il y a aussi les opérateurs booléens :
|
|
AND
|
'ET'
|
OR
|
'OU'
|
&&
|
'ET'
|
||
|
'OU'
|
SI ... ALORS ... SINON ...
SI ALORS SINON, le schéma théorique :
SI( $variable 'opérateur de comparaison' 'valeur de la condition' )
ALORS
Action_alors;
SINON
Action_sinon;
SI( $variable 'opérateur de comparaison' 'valeur de la condition' )
ALORS
{
Action_alors;
Action_alors;
Action_alors;
}
SINON
{
Action_sinon;
Action_sinon;
}
Même si les instructions SINON vous paraissent inutiles dans certains cas, imprimez toujours dans votre texte un commentaire en
HTML pour dire que vous y êtes passé, cela peut servir à résoudre des bugs...
SI ALORS SINON, la pratique en PHP :
En PHP, le 'ALORS' est implicite. Exemple :
<?php
if( $nombre
== 10 )
echo "Test OK : " . $nombre .
" = 10<br />\n";
else
echo "Test KO : " . $nombre .
" est différent de 10<br />\n";
?>
Si il y a plusieurs lignes d'actions dans la clause 'ALORS' ou 'SINON', il faut recourir aux accolades pour encadrer les portions de code. Celles-ci jouent le même rôle que les balises 'FIN_ALORS', 'FIN_SINON' et 'FIN_SI' que l'on trouve dans le schéma algorythmique, et parfois dans les langages de programmation sous la forme d'un
begin et d'un
end... mais heureusement le
PHP n'utilise pas cette syntaxe ;-))
<?php
if( $nombre
== 10 )
{
echo "Test OK :<br />\n";
echo "re�u " . $nombre .
" sur 10<br />\n";
}
else
echo "Test KO : " . $nombre .
" est différent de 10<br />";
?>
POUR ... FAIRE ...
Le schéma théorique :
POUR( $variable
'affectation' 'valeur initiale'; $variable
'opérateur de comparaison' 'valeur terminale'; $variable
'opérateur d'implémentation' 'valeur d'implémentation' )
FAIRE
{
Action_1;
Action_2;
}
L'affectation se fait toujours avec le caractère '
=' ('égal'). Par contre la
'valeur intitiale' n'est pas forcément inférieure à la
'valeur terminale', on peut très bien parcourir le POUR à reculons, à condition de bien mettre une soustraction en guise
'd'opérateur d'implémentation'. Dans le même ordre d'idée, on peut implémenter avec une raison arythmétique différente de 1, rien n'empêche de faire un sur deux, sur vingt...
La pratique :
Code |
Résultat |
<?php
for( $compteur = 1; $compteur <= 10; $compteur++ )
{
echo $compteur . "<br />\n";
}
?>
|
1
2
3
4
5
6
7
8
9
10
|
Code |
Résultat |
<?php
for( $compteur = 100; $compteur >= 21; $compteur-=8 )
{
echo $compteur . "<br />\n";
}
?>
|
100
92
84
76
68
60
52
44
36
28
|
Code |
Résultat |
<?php
for( $compteur = 10; $compteur >= 0; $compteur-- )
{
echo $compteur . "<br />\n";
}
?>
|
10
9
8
7
6
5
4
3
2
1
0
|
TANT QUE ... FAIRE ... / FAIRE ... TANT QUE ...
Cette structure de contrôle PHP permet d'effectuer un traitement tant qu'une condition requise n'est pas remplie. La première, 'tant que ... faire ...', peut ne pas aller dans la section 'faire ...' si la condition n'est pas ou jamais remplie. Par contre 'faire ... tant que ...' effectue au moins une fois l'action, même si la condition requise ne se présente pas !
le schéma théorique :
TANT QUE($variable 'opérateur de comparaison' 'valeur requise')
FAIRE
{
Action_1;
Action_2;
$variable 'opérateur d'implémentation' 'valeur d'implémentation';
}
FAIRE
{
Action_1;
Action_2;
$variable 'opérateur d'implémentation' 'valeur d'implémentation';
}
TANT QUE($variable 'opérateur de comparaison' 'valeur requise')
Attention : n'oubliez jamais jamais jamais d'implémenter la variable de test au sein de la section FAIRE, sinon vous lancerez une très jolie boucle infinie. Et là, c'est la saturation des processus du serveur garantie !
et maintenant, la pratique :
Code | Résultat |
<?php
$valeur = 0;
while($valeur <= 10)
{
echo $valeur . "<br>";
$valeur ++;
}
?>
|
0 1 2 3 4 5 6 7 8 9 10
|
Code | Résultat |
<?php
$valeur = 0;
do
{
echo $valeur . "<br>";
$valeur --;
}
while ($valeur > 0);
?>
|
0
|
Code | Résultat |
<?php
$valeur = 10;
while($valeur < 10)
{
echo $valeur . "<br>";
$valeur ++;
}
?>
|
|
Les deuxième et troisième exemples sont les plus parlant : dans le second code, on fait l'action tant que le critère n'est pas atteint, et pourtant il affiche la valeur alors qu'elle ne réponds pas au test. Avec la syntaxe '
faire ... tant que ...', la section '
faire ...' est exécutée systématiquement, et le test à lieu après.
Dans la troisième portion de code, on fait le test, et ensuite on affiche. Comme le test de la section '
tant que ...' est vrai, alors on ne rentre même pas dans le '
faire ...'.
Je vous recommande vivement le '
Tant que ... faire ...', tout simplement parce qu'il est à mon avis personnel à moi même le plus pertinent et le plus logique ! Libre à vous d'utiliser l'autre syntaxe si un jour vous en trouvez l'utilité...