Skip to content

Fonctions et procédures ​

Les fonctions encapsulent une logique réutilisable et renvoient une valeur. En tête de fichier, vous déclarez des fonctions avec le mot-clé function.

Déclarer une fonction ​

La forme générale est function nom(paramètres): Type begin ... return expr; end;. Notez le ; final après la déclaration au niveau supérieur :

npas
function saudar(nome: String): String
begin
    return "Olá, " + nome + "!";
end;

begin
    WriteLn(saudar("Ana"));
end.
Saída
 Olá, Ana! 

Le type situé après les : est le type de la valeur renvoyée. L'instruction return expr; restitue cette valeur et termine la fonction.

Paramètres ​

Les paramètres sont séparés par une virgule. Ils peuvent être typés ou non typés :

npas
// parâmetros tipados
function somar(a: Integer, b: Integer): Integer
begin
    return a + b;
end;

// parâmetros sem tipo explícito
function juntar(x, y): String
begin
    return x + " " + y;
end;

begin
    WriteLn(somar(3, 4));
    WriteLn(juntar("bom", "dia"));
end.
Saída
 7 bom dia 

Typez vos paramètres

Déclarer le type des paramètres rend l'intention claire et aide l'interpréteur à valider les valeurs. Préférez des paramètres typés chaque fois que possible.

Appeler des fonctions ​

Appelez une fonction par son nom, en passant les arguments entre parenthèses. Si la fonction n'a aucun argument, les parenthèses sont facultatives :

npas
function agora(): String
begin
    return "sempre agora";
end;

begin
    WriteLn(agora());   // com parênteses
    WriteLn(agora);     // sem parênteses — equivalente
end.
Saída
 sempre agora sempre agora 

Récursivité ​

Une fonction peut s'appeler elle-même. L'exemple classique est la factorielle :

npas
function fatorial(n: Integer): Integer
begin
    if n <= 1 then
        return 1;
    return n * fatorial(n - 1);
end;

begin
    WriteLn("5! = ", fatorial(5));
    WriteLn("6! = ", fatorial(6));
end.
Saída
 5! = 120 6! = 720 

Prévoyez toujours un cas de base

Toute fonction récursive a besoin d'une condition d'arrêt (ici, n <= 1). Sans elle, la récursivité ne se termine jamais.

Et les procédures ? ​

Une procédure est comme une fonction, mais ne renvoie pas de valeur — elle sert à produire des effets (afficher, modifier l'état). En NeoObjectPascal, les procédures existent en tant que membres de classes, déclarées avec le mot-clé procedure :

npas
class Logger
    public procedure registrar(msg: String)
    begin
        WriteLn("[LOG] " + msg);
    end;
end;

var log: Object;

begin
    log := new Logger();
    log.registrar("iniciando");
end.
Saída
 [LOG] iniciando 

Pour explorer les procédures, les méthodes et la visibilité en profondeur, voir Classes.

Ensuite, apprenez à travailler avec les collections dans Tableaux.