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

Contenu supprimé Contenu ajouté
maintenance
Ftiercel (discussion | contributions)
m Relecture.
Ligne 8 :
 
== Introduction ==
Les structures répétitives, ou les boucles, servent comme le nom l'indique aà répéter un certain nombre de fois une instruction ou un bloc d'instructions. Un bloc d'instructions est une série d'instructions qui se suivent et qui commence par '''begin''' et finisse par '''end'''.
Un bloc d'instructions est une série d'instructions qui se suivent et qui commence par '''begin''' et finisse par '''end'''.
 
== If ==
Le '''if''' qui se traduit en français par '''si''' exprime la condition. onOn l'associe à '''then''' (alors) et accessoirement à '''else''' (sinon). Concrètement si l'expression située à coté du '''if''' renvoie la valeur booléenne '''true''' (vrai) le bloc d'instruction situé après '''then''' est exécuté sinon c'est celui situé après '''else''' qui l'est. La clause '''else''' est facultative, c'est-à-dire que si vous n'avez pas d'instruction à y associer vous n'êtes pas obligés de l'écrire.
Concrètement si l'expression situé a coté du '''if''' renvoie la valeur booléennes '''true''' (vrai) le bloc d'instruction situé après '''then''' est exécuté sinon c'est celui situé après '''else''' qui l'est.
La clause '''else''' est facultative, c'est-à-dire que si vous n'avez pas d'instruction a y associer vous n'êtes pas obligés de l'écrire.
 
{{Exemple
Ligne 29 ⟶ 26 :
if (x = y) then
begin
//bloc
//d'instruction
end;
Ligne 62 ⟶ 59 :
if (x = y) then
begin
//bloc
//d'instruction
end
else
begin
//bloc
//d'instruction
end;
Ligne 73 ⟶ 70 :
</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.
Mais ne vous inquietez pas si jamais vous vous trompez le compilateur vous rappellera gentiment a l'ordre.
}}
 
== Case ==
 
Quand on ne peut répondre que par oui ou par non aà une question, le if convient très bien (if FaitBeau then sortir le parasol else le ranger). Mais si par exemple on veut traiter de l'âge de quelqu'un se limiter à jeune/vieux est peut être un peu sectaire.
Mais si par exemple on veut traiter de l'âge de quelqu'un se limiter à jeune/vieux est peut être un peu sectaire.
 
Il arrivait donc souvent de se retrouver avec ça :
<source lang="Delphi">
if Age in [1..5] then
Ligne 94 ⟶ 89 :
</source>
 
Comme c'est illisible et fastidieux, on àa créecréé le '''case''' ('''switch''' en C). La syntaxe du case est la suivante :
 
<source lang="Delphi">
case expressionSelection of
listeCas1: instruction1;
...
listeCasn: instructionn;
else
instructions;
end
</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: :
<source lang="Delphi">
case Age of
Ligne 118 ⟶ 113 :
</source>
 
C'est tout de même plus clair et concis. ÀPar noter quecontre, l'on ne peut utiliser que des valeurs ordonnées, Cc'est-à-dire que seules les variables d'entiers ou les énumérations peuvent être testés dans un Case.
 
== Repeat ==
Ligne 147 ⟶ 142 :
== While ==
L'instruction '''While''' se traduit par "tant que". Concrètement le bloc d'instruction associé à while se répétera indéfiniment tant que la condition associée renverra la valeur booléenne True(vrai).
While est donc similaire aà repeat aà la différence près que la condition est évalué avant l'exécution,. parPar conséquent il se peut qu'une boucle while ne soit jamais exécutéexécutée alors qu'une repeat garanti au moins une itération.
 
<source 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 aà la case suivante // Inc() signifie Incrémenter , Ajouter 1
</source>
 
'''Attention''' : Si jamais la condition ne peut jamais être vraifausse, vous créez ce qu'on appel une boucle infinie, votre programme ne se termine jamais. CCe n'est à éviterutiliser absolumentque dans des cas très spécifiques. Exemple :
Exemple:
<source lang="delphi">
Index := 1;
Ligne 165 ⟶ 159 :
== For ==
 
La boucle '''for''' est une boucle dont le nombre d'exécution est définitdéfini, il ne dépend pas d'une condition.
 
Sa syntaxe est la suivante :
for compteur := valeurInitiale to valeurFinale do instruction
ou
for compteur := valeurInitiale downto valeurFinale do instruction
 
Avec un exemple ce sera plus clair. '''Essayez de le comprendre sans commentaire, l'explication est plus bas mais aà ce stade vous devriez pouvoir comprendre sans aide.''' Sinon relisez les cours.
 
<source lang="delphi">
Ligne 183 ⟶ 177 :
begin
Write('Entrez la température du jour n°', Index, ': ');
ReadLn(Temperatures[Index]);
end;
for Index:= 10 downto 1 do
Ligne 191 ⟶ 185 :
</source>
 
Explication : Dans la première boucle '''for''' on demande aà 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.
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.
 
{{Bas de page
Ligne 201 ⟶ 193 :
}}
 
{{cléClé de tri|delphi/structures conditionnelles et repetitives}}