Skip to content

Bibliotecas internas

O NeoObjectPascal acompanha cinco bibliotecas prontas para uso, empacotadas dentro do próprio interpretador. Elas cobrem tarefas comuns de texto, matemática, datas, arquivos e coleções. Carregue qualquer uma com o prefixo internal.:

npas
uses internal.string, internal.math, internal.datetime;

begin
    WriteLn(toUpperCase("neo"));
    WriteLn(factorial(5));
    WriteLn(getMonthName(7));
end.
Saída
 NEO 120 Julho 

Como são carregadas de dentro do JAR, estão sempre disponíveis, independentemente do diretório do projeto. Consulte Módulos e uses para a mecânica do uses.

internal.string

Funções para inspecionar, formatar e transformar strings.

FunçãoDescrição
isEmpty(s) / isNotEmpty(s)Verifica se a string está (ou não) vazia
strLength(s)Comprimento da string
toUpperCase(s) / toLowerCase(s)Converte para maiúsculas / minúsculas
trim(s)Remove espaços nas pontas
repeat(s, count)Repete a string count vezes
join(sep, s1, s2)Junta 2 strings com um separador
join3(sep, s1, s2, s3) / join4(...)Junta 3 ou 4 strings
quote(s) / singleQuote(s)Envolve em aspas duplas / simples
bracket(s) / parenthesize(s)Envolve em colchetes / parênteses
inStr(haystack, needle)Posição da substring (1-based; 0 se ausente)
contains(haystack, needle)Se contém a substring
startsWith(s, prefix) / endsWith(s, suffix)Se começa / termina com o trecho
subString(s, from, len)Extrai len caracteres a partir de from (1-based)
replaceStr(s, from, to)Substitui todas as ocorrências de from por to
intToStr(n) / strToInt(s)Converte entre inteiro e string
npas
uses internal.string;

begin
    WriteLn(quote("NeoObjectPascal"));
    WriteLn(repeat("*", 3));
    WriteLn(contains("NeoObjectPascal", "Pascal"));
    WriteLn(join(" ", "João", "Silva"));
end.
Saída
 "NeoObjectPascal" *** true João Silva 

internal.math

Funções matemáticas para inteiros.

FunçãoDescrição
abs(x)Valor absoluto
max(a, b) / min(a, b)Maior / menor entre dois valores
square(x) / cube(x)Quadrado / cubo
factorial(n)Fatorial de n
fibonacci(n)N-ésimo número de Fibonacci
isEven(n) / isOdd(n)Se é par / ímpar
gcd(a, b) / lcm(a, b)Máximo divisor comum / mínimo múltiplo comum
sign(x)Sinal do número (-1, 0 ou 1)
clamp(value, minVal, maxVal)Limita value ao intervalo [minVal, maxVal]
npas
uses internal.math;

begin
    WriteLn(abs(-15));
    WriteLn(factorial(5));
    WriteLn(gcd(24, 36));
    WriteLn(clamp(120, 0, 100));
end.
Saída
 15 120 12 100 

internal.datetime

Funções para obter, validar, formatar e calcular datas e horas.

CategoriaFunções
Data/hora atualgetCurrentYear, getCurrentMonth, getCurrentDay, getCurrentHour, getCurrentMinute, getCurrentSecond
FormataçãoformatDate(y, m, d), formatTime(h, m, s), getCurrentDate, getCurrentTime, getCurrentDateTime
ValidaçãoisLeapYear(year), isValidDate(y, m, d), isValidTime(h, m, s)
CálculogetDaysInMonth(y, m), getAge(ano, mes, dia), addDays(...), addMonths(...), addYears(...)
NomesgetMonthName, getMonthNameEn, getDayOfWeekName, getDayOfWeekNameEn
npas
uses internal.datetime;

begin
    WriteLn("Ano atual: ", getCurrentYear());
    WriteLn("2024 é bissexto? ", isLeapYear(2024));
    WriteLn("Dias em fevereiro/2024: ", getDaysInMonth(2024, 2));
    WriteLn("Nome do mês 10: ", getMonthName(10));
end.
Saída
 Ano atual: 2026 2024 é bissexto? true Dias em fevereiro/2024: 29 Nome do mês 10: Outubro 

internal.file

Funções para trabalhar com caminhos e arquivos.

CategoriaFunções
Componentes do caminhogetFileExtension, getFileName, getFileNameWithoutExtension, getParentDirectory, joinPath
NormalizaçãonormalizePath, isAbsolutePath, isRelativePath
Validação de nomeisValidFilename, sanitizeFilename, createTempFilename
Sistema de arquivosfileExists, directoryExists, isFile, isDirectory, getFileSize
ClassificaçãoisTextFile, isBinaryFile, formatFileSize
npas
uses internal.file;

begin
    WriteLn(getFileExtension("relatorio.pdf"));
    WriteLn(getFileName("/docs/notas.txt"));
    WriteLn(joinPath("docs", "notas.txt"));
    WriteLn(isTextFile("dados.csv"));
end.
Saída
 pdf notas.txt docs/notas.txt true 

internal.collections

Funções para manipular arrays e listas.

CategoriaFunções
BásicascreateArray, arraySize, arrayIsEmpty, arrayFirst, arrayLast
BuscaarrayContains, arrayIndexOf
TransformaçãoarrayReverse, arraySlice, arraySort, arraySortDesc, arrayUnique, arrayConcat
AgregaçãoarraySum, arrayMax, arrayMin, arrayJoin, arrayReduce
Ordem superiorarrayMap, arrayFilter, arrayRange
npas
uses internal.collections;

var lista: Object;

begin
    lista := createArray();
    WriteLn("Vazio? ", arrayIsEmpty(lista));
    WriteLn("Tamanho: ", arraySize(lista));
end.
Saída
 Vazio? true Tamanho: 0 

Arrays nativos

Para a maioria dos casos, os arrays nativos da linguagem ([10, 20, 30], índice a[0], for x in a do) já resolvem. Veja Arrays. A biblioteca internal.collections complementa com utilitários nomeados.

Combinando bibliotecas

Nada impede carregar várias bibliotecas de uma vez e combiná-las livremente:

npas
uses internal.string, internal.math;

begin
    WriteLn(quote(intToStr(square(8))));
end.
Saída
 "64" 

A seguir, garanta a qualidade do seu código com Testes de unidade.