Skip to content

Beispielgalerie

Das NeoObjectPascal-Repository enthält eine Sammlung fertiger Beispiele unter NeoObjectPascal/examples/, nummeriert von 01 bis 44. Sie reichen von „Hallo, Welt!" bis hin zu Objektorientierung, Tests mit Mocking und Ausführung in der Cloud. Diese Seite ordnet sie nach Thema und zeigt den Code einiger repräsentativer Beispiele.

Ausführung

Führen Sie ein beliebiges Beispiel aus, indem Sie den Dateipfad an das JAR des Interpreters übergeben:

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

Testdateien verwenden die Erweiterung .test.npas und werden im Testmodus ausgeführt:

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

Der tatsächliche Name des JAR hängt von Ihrem Build ab (zum Beispiel target/neoobjectpascal-*.jar). Weitere Informationen zum Erzeugen des Interpreters finden Sie in der Einführung.

Grundlagen

DateiZeigt
01-OlaMundo.npasDas minimale Programm: ein WriteLn im Hauptblock
02-Variaveis.npasVariablendeklaration (String, Integer) und Zuweisung
15-ConcatenacaoStrings.npasString-Verkettung mit + und Einlesen von Eingaben
16-ExemploOriginal.npasEinführungsbeispiel, das mehrere Funktionen kombiniert
npas
begin
  WriteLn("Olá, Mundo!");
end.
Saída
 Olá, Mundo! 

Steuerung und Funktionen

DateiZeigt
03-EstruturasDeControle.npasif ... then und Schleife for i := 1 to N do
04-Funcoes.npasFunktionsdeklaration und -aufruf mit return
07-ProgramacaoFuncional.npasVerketteter Pipe-Operator |>
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 

Der Pipe-Operator übergibt den linken Wert als erstes Argument der rechten Funktion:

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 

Daten und Ein-/Ausgabe

DateiZeigt
05-JSON.npasJSON.parse(...) into zum Laden eines Objekts
06-CSV.npasCSV.parse(...) into zum Laden von Zeilen
08-EntradaSaida.npasWriteLn und showMenu
13-MenuInterativo.npasNummeriertes Menü mit showMenu
14-EntradaUsuario.npasBenutzereingabe mit 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! 

Module und interne Bibliotheken

DateiZeigt
09-Modulos.npasuses eines lokalen .npas-Moduls
10-ModulosCompleto.npasVerwendung mehrerer Module
11-ProjetoHierarquico.npasModule in hierarchischen Ordnern (lib.core.calculadora)
17-BibliotecasInternas.npasFunktionen aus internal.math, internal.string, internal.datetime
26-TesteDatetime.npasBibliothek internal.datetime
28-TesteFile.npas / 29-TesteFileSimples.npasBibliothek 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.

Einzelheiten zu allen Funktionen finden Sie unter Interne Bibliotheken.

Java und hybride Systeme

DateiZeigt
20-SistemaHibrido.npasKombination von Pascal-Code und eingebettetem Java
21-TesteHibridoSimples.npasVereinfachte Version des hybriden Systems
22-TesteSemJava.npasEntsprechung ohne Java zum Vergleich
23-DebugJava.npasDebugging von Java-Blöcken
24-FuncaoJava.npasFunktion, die einen Wert aus einem Java-Block zurückgibt
25-JavaComParametros.npasJava-Block, der Parameter empfängt (param0, param1, ...)
27-SistemaHibridoFinal.npasVollständiges hybrides System
npas
function testeJava(): String
begin
    return java:() {
        return "Olá do Java!";
    };
end;

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

Mehr dazu unter Java-Integration.

Objektorientierung

DateiZeigt
30-ClasseSimples.npasKlasse mit Feldern, constructor Create und Methode
31-Heranca.npasVererbung mit extends, virtual/override
32-Interface.npasinterface und implements
33-Polimorfismo.npasPolymorphie mit überschriebenen Methoden
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. 

Vollständiges Handbuch unter Klassen, Vererbung und Interfaces.

Tests und Mocking

DateiZeigt
18-TesteSimples.npas / 19-TesteCompleto.npasEinführende test-Blöcke
34-TesteSimples.test.npasGIVEN-WHEN-THEN-Muster mit expect(...).toBe(...)
35-TesteHeranca.test.npasVererbungstests
36-TesteInterface.test.npasInterface-Tests
37-TestePolimorfismo.test.npasPolymorphie-Tests
38-TesteMocking.test.npasmock ... thenReturn und 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;

Ersetzen Sie eine Abhängigkeit durch einen Mock und überprüfen Sie anschließend, dass sie aufgerufen wurde:

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;

Vollständiges Handbuch unter Unit-Tests.

Debugging und Cloud

DateiZeigt
39-DebugSimples.npasEinfaches Programm für den interaktiven Debugger (-d)
40-CloudExample.npasBeispiel für die Ausführung in NeoObjectPascal Cloud
debug-boolean.npas, debug-class.npas, debug-class2.npasErgänzende Debugging-Szenarien

Neue Funktionen

Beispiele, die aktuelle Sprachfunktionen einsetzen:

DateiZeigt
41-OperadoresBooleanos.npasOperatoren and, or, not in Bedingungen
42-AritmenticaReal.npasArithmetik mit Real und automatische Heraufstufung von Integer
43-Arrays.npasArray-Literale, nullbasierter Index, Elementzuweisung und for ... in
44-TratamentoErros.npastry/catch/finally und 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 

Fehlerbehandlung mit try/catch/finally und 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 

Weiter erkunden

Neu hier? Beginnen Sie mit der Einführung, um den Interpreter zu installieren und Ihr erstes Programm auszuführen. Die vollständige Syntax finden Sie in der Sprachreferenz.