Une boucle "for" permet de repeter un certain nombre de fois un bloc de code. Vous trouverez ci-dessous des exemples comment afficher des nombres pair ou impair ? Comment récuperer chaque lettre d'un string ? Comment afficher l'inverse d'une chaine de caractère ? Comment effectuer un tirage aléatoire simple sans doublons ?
for Integer; to | downto Integer; do begin (code) end;
for Char; to | downto Char; do begin (code) end;
Exemple :
procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
begin
// Boucle de 5 tours
For i := 1 to 5 do begin
ListBox1.Items.Add('i = '+IntToStr(i));
end;
// La ListBox Affiche :
// i = 1
// i = 2
// i = 3
// i = 4
// i = 5
end;
S'il n'y a qu'une instruction, nous pouvons alléger la syntaxe en suppriment "begin" et "end" de la boucle For.
procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
begin
// Boucle de 5 tours
For i := 1 to 5 do
ListBox1.Items.Add('i = '+IntToStr(i));
// La ListBox Affiche :
// i = 1
// i = 2
// i = 3
// i = 4
// i = 5
end;
Exemple : Boucle qui affiche dans une ListBox les nombres impair de 1 à 10.
procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
begin
// Boucle de 10 tours
For i := 1 to 10 do begin
if odd(i) then // si le nombre est impair
ListBox1.Items.Add('i = '+IntToStr(i));
end;
// La ListBox Affiche :
// i = 1
// i = 3
// i = 5
// i = 7
// i = 9
end;
Exemple : Boucle qui affiche dans une ListBox les nombres pair de 1 à 10.
procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
begin
// Boucle de 10 tours
For i := 1 to 10 do begin
if not odd(i) then // si le nombre est pair
ListBox1.Items.Add('i = '+IntToStr(i));
end;
// La ListBox Affiche :
// i = 2
// i = 4
// i = 6
// i = 8
// i = 10
end;
Exemple : Boucle inversé DownTo qui affiche dans une ListBox les nombres de 5 à 1.
procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
begin
// Boucle de 5 tours
For i := 1 downto 5 do
ListBox1.Items.Add('i = '+IntToStr(i));
// La ListBox Affiche :
// i = 5
// i = 4
// i = 3
// i = 2
// i = 1
end;
Exemple : Boucle qui affiche dans une ListBox les caractères de A à F.
procedure TForm1.Button1Click(Sender: TObject);
var
c : char;
begin
// Boucle de 5 tours
For c := 'A' to 'F' do begin
ListBox1.Items.Add('c : '+c);
end;
// La ListBox Affiche :
// c : A
// c : B
// c : C
// c : D
// c : E
// c : F
end;
Exemple : Boucle inversé DownTo qui affiche dans une ListBox les caractères de F à A.
procedure TForm1.Button1Click(Sender: TObject);
var
c : char;
begin
// Boucle de 5 tours
For c := 'A' downto 'F' do begin
ListBox1.Items.Add('c : '+c);
end;
// La ListBox Affiche :
// c : F
// c : E
// c : D
// c : C
// c : B
// c : A
end;
Exemple : Boucle qui affiche dans une ListBox chaque caractères d'une string.
procedure TForm1.Button1Click(Sender: TObject);
var
chaine : string;
i : Integer;
begin
// Boucle de 12 tours
chaine := 'YAKAFAIRE.EU';
For i := 1 to 12 do begin
ListBox1.Items.Add(chaine[i]);
end;
// La ListBox Affiche :
// Y
// A
// K
// A
// F
// A
// I
// A
// R
// E
// .
// E
// U
end;
Exemple : Boucle qui affiche dans une ListBox les éléments d'un tableau.
procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
const
Jour : array[1..7] of string = ('Lundi','Mardi','Mercredi','Jeudi','Vendredi','Samedi','Dimanche');
begin
// Boucle de 7 tours
For i := 1 to 7 do begin
ListBox1.Items.Add(Jour[i]);
end;
// La ListBox Affiche :
// Lundi
// Mardi
// Mercredi
// Jeudi
// Vendredi
// Samedi
// Dimanche
end;
Exemple : Tirage aléatoire simple sans doublons par random. (Le nombre de tirage à effectuer est illimité, il suffit juste de modifier la taille du tableau et de modifier le nombre de boucles à effectuer.) Dans l'exemple pour plus de faciliter à comprendre nous effectuons un tirage de 10 nombres de 1 à 10.
procedure TForm1.Button1Click(Sender: TObject);
var
i, boule, reste : Integer;
Tirage: array [1..10] of Integer; // 10 rangées de type "Interger" (nous rangerons ici le tirage)
begin
Randomize;
// Place 10 boules dans la ListBox1
For i := 1 to 10 do begin
ListBox1.Items.Add(IntToStr(i));
end;
// nombre de boule qu'il reste dans la ListBox1
reste :=10;
// Effectue une boucle de 10 tirages
For i := 1 to 10 do begin
boule := Random(reste); // Tir une boule au hazard
// Place la boule dans le tableau Tirage
Tirage[i] := strtoint(ListBox1.Items[boule]);
// supprime la boule de la ListBox pour ne pas la retirer une seconde fois
ListBox1.items.Delete(boule);
dec(reste); // decremente le nombre de boule à tirer
end;
// Affiche le tableau tirage dans la ListBox
For i := 1 to 10 do begin
ListBox1.Items.Add(Inttostr(Tirage[i]));
end;
// La ListBox Affiche :
// 4
// 8
// 2
// 5
// 9
// 7
// 10
// 1
// 3
// 6
end;