DELPHI TUTORIEL :
LES BOUCLES FOR

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...To...Do :
for Integer; to | downto Integer; do begin (code) end;
for Char; to | downto Char; do begin (code) end;
Entier pour la boucle :

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;
Caractère pour la boucle :

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;
Tirage aléatoire simple sans doublons

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;

1209 visites depuis le 06/01/2023