« Delphi/Structures conditionnelles et répétitives » : différence entre les versions

Contenu supprimé Contenu ajouté
m Robot : Remplacement de texte automatisé (-\n(==={0,3})(?: *)([^\n=]+)(?: *)\1(?: *)\n +\n\1 \2 \1\n)
m Robot : Remplacement de texte automatisé (-(<|</)source([ \t>]) +\1syntaxhighlight\2)
Ligne 16 :
| contenu =
 
<sourcesyntaxhighlight lang="Delphi">
 
var
Ligne 30 :
end;
end.
</syntaxhighlight>
</source>
 
Pour alléger la syntaxe il est permis de ne pas utiliser les '''begin''' et '''end''' s'il n'y a qu'une instruction dans le bloc.
 
<sourcesyntaxhighlight lang="Delphi">
 
var
Ligne 46 :
end.
 
</syntaxhighlight>
</source>
 
Le '''else''' s'utilise comme ceci
<sourcesyntaxhighlight lang="Delphi">
 
var
Ligne 68 :
end;
end.
</syntaxhighlight>
</source>
 
'''Attention le end qui précède le else ne doit jamais être suivit par un ";"''' Mais ne vous inquiétez pas. Si jamais vous vous trompez, le compilateur vous rappellera gentiment à l'ordre.
Ligne 78 :
 
Il arrivait donc souvent de se retrouver avec ça :
<sourcesyntaxhighlight lang="Delphi">
if Age in [1..5] then
Caption := 'Marmot'
Ligne 87 :
else
Caption := 'Gné?!';
</syntaxhighlight>
</source>
 
Comme c’est illisible et fastidieux, on a créé le '''case''' ('''switch''' en C). La syntaxe du case est la suivante :
 
<sourcesyntaxhighlight lang="Delphi">
case expressionSelection of
listeCas1: instruction1;
Ligne 99 :
instructions;
end
</syntaxhighlight>
</source>
où instructions est un suite d'instructions séparées par des points virgules. Quand une instruction case est exécutée, au moins l'une des instruction1 ... instructionn est exécutée. Le listeCas dont la valeur est égale à celle de expressionSelection détermine l'instruction à utiliser. Si aucun des listeCas n'a la même valeur qu'expressionSelection, alors ce sont les instructions de la clause else (s'il y en a) qui sont exécutées.
 
Donc si on reprend le premier exemple avec un case ça donne :
<sourcesyntaxhighlight lang="Delphi">
case Age of
1..5: Caption := 'Marmot';
Ligne 111 :
Caption := '';
end;
</syntaxhighlight>
</source>
 
C'est tout de même plus clair et concis. Par contre, on ne peut utiliser que des valeurs ordonnées, c'est-à-dire que seules les variables d'entiers ou les énumérations peuvent être testés dans un Case.
Ligne 125 :
Voici des exemples d'instructions repeat :
 
<sourcesyntaxhighlight lang="delphi">
repeat
K := I mod J;
Ligne 131 :
J := K;
until J = 0;
</syntaxhighlight>
</source>
 
<sourcesyntaxhighlight lang="delphi">
repeat
Write('Entrez une valeur (0..9): ');
Readln(I);
until (I >= 0) and (I <= 9);
</syntaxhighlight>
</source>
 
== While ==
Ligne 144 :
While est donc similaire à repeat à la différence près que la condition est évalué avant l'exécution. Par conséquent il se peut qu'une boucle while ne soit jamais exécutée alors qu'une repeat garanti au moins une itération.
 
<sourcesyntaxhighlight lang="delphi">
while (Tableau[Index] <> X) do //Tant que la valeur contenue dans cette "case" du tableau n’est pas celle qu'on attend
Inc(Index); //On se déplace à la case suivante // Inc() signifie Incrémenter, Ajouter 1
</syntaxhighlight>
</source>
 
'''Attention''' : Si jamais la condition ne peut jamais être fausse, vous créez ce qu'on appelle une boucle infinie, votre programme ne se termine jamais. Ce n'est à utiliser que dans des cas très spécifiques. Exemple :
<sourcesyntaxhighlight lang="delphi">
Index := 1;
while True do //
//instructions;
</syntaxhighlight>
</source>
Il parait évident que cette boucle ne peut pas se finir.
 
Ligne 168 :
Avec un exemple ce sera plus clair. '''Essayez de le comprendre sans commentaire, l'explication est plus bas mais à ce stade vous devriez pouvoir comprendre sans aide.''' Sinon relisez les cours.
 
<sourcesyntaxhighlight lang="delphi">
Var
Index, Moyenne: integer;
Ligne 183 :
Moyenne = Moyenne div 10;
end.
</syntaxhighlight>
</source>
 
Explication : Dans la première boucle '''for''' on demande à l'utilisateur de saisir des températures relevées sur 10 jours. Dans la seconde on additionne tous les nombres entrés dans la même variable puis on la divise par deux pour en obtenir la moyenne. Vous aurez probablement remarqué que les boucles se prêtent particulièrement aux tableaux.