Skip to content

Galerie d'exemples

Le dépôt de NeoObjectPascal inclut une collection d'exemples prêts à l'emploi dans NeoObjectPascal/examples/, numérotés de 01 à 44. Ils vont du « Hello, World! » à l'orientation objet, aux tests avec mocking et à l'exécution dans le cloud. Cette page les organise par thème et montre le code de quelques-uns, représentatifs.

Comment exécuter

Exécutez n'importe quel exemple en passant le chemin du fichier au JAR de l'interpréteur :

bash
java -jar neoobjectpascal.jar examples/01-OlaMundo.npas

Les fichiers de test utilisent l'extension .test.npas et s'exécutent en mode test :

bash
# um arquivo de teste
java -jar neoobjectpascal.jar -t examples/34-TesteSimples.test.npas

# todos os testes de um diretório (recursivo, com cobertura)
java -jar neoobjectpascal.jar --test-all examples/

TIP

Le nom réel du JAR dépend de votre build (par exemple, target/neoobjectpascal-*.jar). Consultez l'Introduction pour générer l'interpréteur.

Fondamentaux

FichierDémontre
01-OlaMundo.npasLe programme minimal : un WriteLn dans le bloc principal
02-Variaveis.npasDéclaration de variables (String, Integer) et affectation
15-ConcatenacaoStrings.npasConcaténation de chaînes avec + et lecture d'entrée
16-ExemploOriginal.npasExemple introductif combinant plusieurs fonctionnalités
npas
begin
  WriteLn("Olá, Mundo!");
end.
Saída
 Olá, Mundo! 

Contrôle et fonctions

FichierDémontre
03-EstruturasDeControle.npasif ... then et boucle for i := 1 to N do
04-Funcoes.npasDéclaration et appel de fonction avec return
07-ProgramacaoFuncional.npasOpérateur pipe |> enchaîné
npas
function somar(a, b): Integer;
begin
  return a + b;
end;

var resultado: Integer;

begin
  resultado := somar(20, 22);
  WriteLn("O resultado da soma é: ", resultado);
end.
Saída
 O resultado da soma é: 42 

L'opérateur pipe passe la valeur de gauche comme premier argument de la fonction à droite :

npas
function dobrar(x: Integer): Integer;
begin
  return x * 2;
end;

function adicionarUm(x: Integer): Integer;
begin
  return x + 1;
end;

begin
  WriteLn("O resultado do pipeline é: ", 5 |> dobrar |> adicionarUm);
end.
Saída
 O resultado do pipeline é: 11 

Données et E/S

FichierDémontre
05-JSON.npasJSON.parse(...) into pour charger un objet
06-CSV.npasCSV.parse(...) into pour charger des lignes
08-EntradaSaida.npasWriteLn et showMenu
13-MenuInterativo.npasMenu numéroté avec showMenu
14-EntradaUsuario.npasEntrée de l'utilisateur avec ReadLn
npas
var dados: Object;
var jsonString: String;

begin
  jsonString := '{"nome": "Carmen Sandiego", "idade": 30, "cidade": "São Paulo"}';
  JSON.parse(jsonString) into dados;
  WriteLn("Dados JSON processados com sucesso!");
end.
Saída
 Dados JSON processados com sucesso! 

Modules et bibliothèques internes

FichierDémontre
09-Modulos.npasuses d'un module .npas local
10-ModulosCompleto.npasUtilisation de plusieurs modules
11-ProjetoHierarquico.npasModules dans des dossiers hiérarchiques (lib.core.calculadora)
17-BibliotecasInternas.npasFonctions de internal.math, internal.string, internal.datetime
26-TesteDatetime.npasBibliothèque internal.datetime
28-TesteFile.npas / 29-TesteFileSimples.npasBibliothèque internal.file
npas
uses internal.math, internal.string;

begin
  WriteLn("Fatorial de 5: ", factorial(5));
  WriteLn("Fibonacci(8): ", fibonacci(8));
  WriteLn("Maiúsculas: ", toUpperCase("neoobjectpascal"));
end.

Détails de toutes les fonctions dans Bibliothèques internes.

Java et systèmes hybrides

FichierDémontre
20-SistemaHibrido.npasCombinaison de code Pascal et de Java embarqué
21-TesteHibridoSimples.npasVersion simplifiée du système hybride
22-TesteSemJava.npasÉquivalent sans Java, pour comparaison
23-DebugJava.npasDébogage de blocs Java
24-FuncaoJava.npasFonction qui retourne une valeur d'un bloc Java
25-JavaComParametros.npasBloc Java recevant des paramètres (param0, param1, ...)
27-SistemaHibridoFinal.npasSystème hybride complet
npas
function testeJava(): String
begin
    return java:() {
        return "Olá do Java!";
    };
end;

begin
    WriteLn("Resultado: ", testeJava());
end.
Saída
 Resultado: Olá do Java! 

Plus d'informations dans Intégration avec Java.

Orientation objet

FichierDémontre
30-ClasseSimples.npasClasse avec champs, constructor Create et méthode
31-Heranca.npasHéritage avec extends, virtual/override
32-Interface.npasinterface et implements
33-Polimorfismo.npasPolymorphisme avec méthodes surchargées
npas
class Pessoa
    var nome: String;
    var idade: Integer;

    constructor Create(n: String, i: Integer)
    begin
        self.nome := n;
        self.idade := i;
    end;

    public function apresentar(): String
    begin
        return "Olá, meu nome é " + self.nome + " e tenho " + self.idade + " anos.";
    end;
end;

var pessoa: Pessoa;

begin
    pessoa := new Pessoa("João", 30);
    WriteLn(pessoa.apresentar());
end.
Saída
 Olá, meu nome é João e tenho 30 anos. 

Guide complet dans Classes, Héritage et Interfaces.

Tests et mocking

FichierDémontre
18-TesteSimples.npas / 19-TesteCompleto.npasBlocs test introductifs
34-TesteSimples.test.npasModèle GIVEN-WHEN-THEN avec expect(...).toBe(...)
35-TesteHeranca.test.npasTests d'héritage
36-TesteInterface.test.npasTests d'interface
37-TestePolimorfismo.test.npasTests de polymorphisme
38-TesteMocking.test.npasmock ... thenReturn et verify
npas
class Calculadora
    public function somar(a: Integer, b: Integer): Integer
    begin
        return a + b;
    end;
end;

test "Calculadora deve somar dois números corretamente"
begin
    var calc: Calculadora;
    calc := new Calculadora();

    var resultado: Integer;
    resultado := calc.somar(5, 3);

    expect(resultado).toBe(8);
end;

Remplacez une dépendance par un mock puis vérifiez qu'elle a été appelée :

npas
test "NotificadorUsuario deve chamar EmailService ao notificar"
begin
    var emailService: EmailService;
    emailService := new EmailService();

    mock EmailService enviarEmail thenReturn true;

    var notificador: NotificadorUsuario;
    notificador := new NotificadorUsuario(emailService);

    var resultado: Boolean;
    resultado := notificador.notificar("usuario@teste.com");

    expect(resultado).toBeTrue();
    verify EmailService enviarEmail;
end;

Guide complet dans Tests unitaires.

Débogage et cloud

FichierDémontre
39-DebugSimples.npasProgramme simple pour le débogueur interactif (-d)
40-CloudExample.npasExemple à exécuter sur NeoObjectPascal Cloud
debug-boolean.npas, debug-class.npas, debug-class2.npasScénarios auxiliaires de débogage

Nouvelles fonctionnalités

Exemples qui mettent en œuvre des fonctionnalités récentes du langage :

FichierDémontre
41-OperadoresBooleanos.npasOpérateurs and, or, not dans les conditions
42-AritmenticaReal.npasArithmétique avec Real et auto-promotion d'Integer
43-Arrays.npasTableaux littéraux, index base 0, affectation d'élément et for ... in
44-TratamentoErros.npastry/catch/finally et raise
npas
var numeros: Array;
var item: Integer;
var soma: Integer;

begin
    numeros := [10, 20, 30, 40, 50];
    numeros[2] := 99;              // atribuição de elemento (base 0)

    soma := 0;
    for item in numeros do
        soma := soma + item;

    WriteLn("Soma: ", soma);
end.
Saída
 Soma: 219 

Gestion des erreurs avec try/catch/finally et raise :

npas
function validarIdade(idade: Integer): String
begin
    if idade < 0 then
        raise "Idade invalida: " + idade;
    return "Idade valida: " + idade;
end;

begin
    try
    begin
        WriteLn(validarIdade(0 - 5));
    end
    catch (erro)
    begin
        WriteLn("Capturado: ", erro);
    end
    finally
    begin
        WriteLn("Cleanup concluido");
    end;
end.
Saída
 Capturado: Idade invalida: -5 Cleanup concluido 

Continuez à explorer

Nouveau ici ? Commencez par l'Introduction pour installer l'interpréteur et exécuter votre premier programme. Pour la syntaxe complète, voir la Référence du langage.