|
PROFESSIONAL NEWSGROUPS WINDEV, WEBDEV and WINDEV Mobile |
| | | | | |
Home → WINDEV 25 → Compreendendo a linguagem WLanguage com 3 exemplos praticos |
Compreendendo a linguagem WLanguage com 3 exemplos praticos |
Started by Boller, Apr., 10 2025 2:33 PM - No answer |
| |
| | | |
|
| |
Registered member 3,963 messages |
|
Posted on April, 10 2025 - 2:33 PM |
Calculando Idade com WLanguage:
Três Maneiras de Arrasar! Bom dia, Adriano! Hoje eu acordei inspirado e decidi criar algo simples, mas poderoso: vamos calcular a idade de alguém de três jeitos diferentes usando WLanguage. Vou mostrar um básico, um preciso e um com OOP pra ficar chique – tudo isso com o sabor LowCode da PCSOFT que a gente ama! Pegue seu café e vem comigo!
Exemplo 1: Básico e Rápido //############################## // Procedure: CalculaIdadeBasica - Um cálculo simples e direto Procedure CalculaIdadeBasica(dataNasc is string) nascimento is Date idade is int
nascimento = DateToString(dataNasc, "DDMMYYYY") // Formata a data direitinho idade = DateDifference(nascimento, Today()) / 365 // Diferença em dias, dividida por ano Trace("Sua idade é: " + idade) // Mostra o resultado no trace Result(idade)
//############################## Esse é o jeitinho básico! Uso DateDifference pra calcular os dias entre a data de nascimento e hoje, divido por 365 e pronto! Claro, não é superpreciso por causa dos anos bissextos, mas é rapidinho pra um cálculo aproximado. Como usar? CalculaIdadeBasica("25031985"). Exemplo 2: Preciso e Elegante //############################## // Procedure: CalculaIdadePrecisa - Considera meses e dias pra ser exato Procedure CalculaIdadePrecisa(dataNasc is string) nascimento is Date = dataNasc hoje is Date = Today() idade is int
idade = hoje..Year - nascimento..Year // Pego a diferença bruta de anos IF hoje..Month < nascimento..Month OR (hoje..Month = nascimento..Month AND hoje..Day < nascimento..Day) THEN idade = idade - 1 // Ajusto se o aniversário ainda não rolou esse ano END//If Info("Você tem " + idade + " anos com precisão cirúrgica!") // Mostro pro usuário Result(idade)
//############################## Aqui a coisa fica séria! Comparo ano, mês e dia pra garantir que a idade seja exata. Se o aniversário ainda não passou, diminuo 1. Testei com minha data de “nascimento digital” (digamos, 01/01/2023) e funcionou que é uma beleza! Uso: CalculaIdadePrecisa("01011990"). Exemplo 3: OOP pra Impressionar //############################## // Classe: Pessoa - Um toque de modernidade com OOP Classe Pessoa dataNasc is Date END
// Procedure: CalculaIdadeOOP - Calcula idade a partir de um objeto Pessoa Procedure CalculaIdadeOOP(p is Pessoa) idade is int hoje is Date = Today()
idade = hoje..Year - p..dataNasc..Year // Diferença de anos IF hoje..Month < p..dataNasc..Month OR (hoje..Month = p..dataNasc..Month AND hoje..Day < p..dataNasc..Day) THEN idade = idade - 1 // Ajuste fino pro aniversário END//If Result(idade)
//############################## E pra fechar com chave de ouro, um exemplo OOP! Criei uma classe Pessoa com a propriedade dataNasc e uso ela na procedure. É perfeito pra projetos maiores onde você quer encapsular dados. Como usar? pessoa is Pessoa pessoa..dataNasc = "25031985" idade is int = CalculaIdadeOOP(pessoa) Info("Idade OOP: " + idade) Teste Unitário pra Garantir Qualidade //############################## // Procedure: TestaCalculaIdade - Teste unitário pra validar tudo Procedure TestaCalculaIdade() idade is int
idade = CalculaIdadePrecisa("25031985") IF idade = Today()..Year - 1985 - 1 THEN Trace("Teste 1 passou: idade correta!") ELSE Trace("Ops, algo deu errado no teste 1!") END//If
pessoa is Pessoa pessoa..dataNasc = "01012000" idade = CalculaIdadeOOP(pessoa) IF idade = Today()..Year - 2000 THEN Trace("Teste 2 passou: OOP funcionando!") ELSE Trace("Teste 2 falhou, hora de debugar!") END//If //##############################
Esse teste unitário verifica se as procedures estão funcionando direitinho. Uso Trace pra ver os resultados e garantir que ninguém vai reclamar no fórum depois, hehe!
Nota Comparativa com Python Em Python, você precisaria importar datetime, fazer umas 10 linhas de código e ainda lidar com exceções manualmente. Aqui na WLanguage, com 5 linhas eu resolvo tudo e ainda tomo um café enquanto o Python tá compilando! WLanguage é LowCode e 10x mais rápido, como a PCSOFT promete!
Dica de Performance
Se for calcular várias idades, use Today() fora do loop e armazene numa variável pra evitar chamadas repetidas ao sistema. Exemplo: hoje is Date = Today() FOR i = 1 TO 10 idade = CalculaIdadePrecisa(listaDatas[i]) END//For
-- Adriano José Boller ______________________________________________ Consultor e Representante Oficial da PcSoft no Brasil +55 (41) 99949 1800 adrianoboller@gmail.com skype: adrianoboller http://wxinformatica.com.br/ |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|