Skip to content

Structures de contrôle

Les structures de contrôle décident quelles instructions exécuter et combien de fois. NeoObjectPascal propose if/else, while, le for numérique et for..in.

Dans chacune d'elles, le corps peut être une instruction unique ou un bloc begin ... end contenant plusieurs instructions.

if ... then ... else

Le if exécute une instruction lorsque la condition est vraie. Le else est facultatif :

npas
var idade: Integer;

begin
    idade := 20;

    if idade >= 18 then
        WriteLn("Maior de idade")
    else
        WriteLn("Menor de idade");
end.
Saída
 Maior de idade 

Pour exécuter plusieurs instructions, utilisez un bloc comme corps :

npas
var saldo: Integer;

begin
    saldo := 100;

    if saldo > 0 then
    begin
        WriteLn("Saldo positivo");
        WriteLn("Valor: ", saldo);
    end;
end.
Saída
 Saldo positivo Valor: 100 

Enchaîner les conditions

Combinez if avec les opérateurs booléens (and, or, not) pour former des conditions composées — voir Opérateurs.

while ... do

Le while répète le corps tant que la condition est vraie. La condition est testée avant chaque itération :

npas
var contador: Integer;

begin
    contador := 1;
    while contador <= 3 do
    begin
        WriteLn("Iteração ", contador);
        contador := contador + 1;
    end;
end.
Saída
 Iteração 1 Iteração 2 Iteração 3 

Attention aux boucles infinies

Assurez-vous qu'un élément à l'intérieur du while modifie la condition (comme contador := contador + 1), sinon la boucle ne se termine jamais.

for i := début to fin do

Le for numérique compte d'une valeur initiale jusqu'à une valeur finale, les deux incluses (intervalle inclusif), en incrémentant de 1 à chaque pas :

npas
var i: Integer;

begin
    for i := 1 to 5 do
        WriteLn("Número ", i);
end.
Saída
 Número 1 Número 2 Número 3 Número 4 Número 5 

Un exemple additionnant les valeurs de l'intervalle avec un bloc :

npas
var i: Integer;
var soma: Integer;

begin
    soma := 0;
    for i := 1 to 10 do
    begin
        soma := soma + i;
    end;
    WriteLn("Soma de 1 a 10: ", soma);
end.
Saída
 Soma de 1 a 10: 55 

for x in array do

La variante for..in itère sur chaque élément d'un tableau, sans avoir besoin d'indices :

npas
var nomes: Array;
var nome: String;

begin
    nomes := ["Alice", "Bob", "Carlos"];
    for nome in nomes do
        WriteLn("Olá, ", nome, "!");
end.
Saída
 Olá, Alice! Olá, Bob! Olá, Carlos! 

Cela fonctionne aussi avec des blocs, idéal pour accumuler des résultats :

npas
var numeros: Array;
var n: Integer;
var soma: Integer;

begin
    numeros := [10, 20, 30];
    soma := 0;
    for n in numeros do
    begin
        WriteLn("  ", n);
        soma := soma + n;
    end;
    WriteLn("Total: ", soma);
end.
Saída
 10 20 30 Total: 60 

Les blocs comme corps

Chaque fois que vous avez besoin de plus d'une instruction à l'intérieur de if, while ou for, encadrez-les avec begin ... end. Une instruction unique n'a pas besoin de bloc.

Ensuite, apprenez à organiser une logique réutilisable dans Fonctions et procédures.