SQLite Playground com Lazarus: construindo um sistema do zero na prática

Se você programa com Lazarus e quer aprender a trabalhar com banco de dados de forma prática, preparei um conteúdo que pode te interessar bastante: um SQLite Playground junto com uma série de vídeos no canal Programming Drops, onde estou construindo um sistema do zero usando Lazarus + SQLite.


A proposta dessa série é sair um pouco da teoria e mostrar, na prática, como podemos desenvolver uma aplicação desktop completa, organizada e funcional, utilizando ferramentas leves, gratuitas e muito poderosas.

Por que usar SQLite com Lazarus?

O SQLite é uma excelente opção para vários tipos de projeto, principalmente quando queremos:

  • simplicidade na configuração
  • banco de dados embutido no próprio projeto
  • portabilidade
  • bom desempenho para aplicações desktop;
  • facilidade de distribuição.

Quando combinamos isso com o Lazarus, temos uma stack muito interessante para criar sistemas locais, utilitários, cadastros, ferramentas administrativas e até projetos maiores, dependendo da necessidade.

Uma das grandes vantagens do SQLite é que ele não exige um servidor de banco de dados rodando separadamente. Em muitos casos, tudo fica concentrado em um único arquivo, o que torna o desenvolvimento, os testes e a distribuição muito mais simples.


O que é o SQLite Playground?

O SQLite Playground é a ideia de criar um ambiente de experimentação e aprendizado, onde podemos testar consultas, estruturar tabelas, validar regras de negócio e entender melhor como o SQLite se comporta dentro de uma aplicação feita em Lazarus.

Mais do que apenas conectar ao banco, o objetivo é usar esse playground como base para construir um sistema real, passo a passo.

Ou seja: em vez de apenas mostrar exemplos isolados de SQL ou componentes visuais, a proposta é evoluir um projeto completo, abordando desde a estrutura inicial até recursos práticos de uso no dia a dia.


O que você vai encontrar na série

Na série publicada no canal Programming Drops, estou mostrando o desenvolvimento do sistema de forma progressiva, o que facilita bastante o acompanhamento, principalmente para quem está aprendendo ou quer organizar melhor seus projetos.

Entre os pontos trabalhados ao longo dos vídeos, estão:

  • criação da base do projeto no Lazarus
  • integração com SQLite
  • modelagem inicial do banco de dados
  • criação de telas e formulários
  • operações de cadastro, consulta, edição e exclusão
  • organização do código
  • boas práticas para evoluir o sistema com mais segurança.

A ideia é que você possa acompanhar cada etapa e, ao mesmo tempo, adaptar os conceitos ao seu próprio projeto.


Aprendizado prático faz diferença

Uma das melhores formas de aprender banco de dados e desenvolvimento desktop é justamente construindo algo real. Quando colocamos a mão no código, surgem dúvidas importantes sobre estrutura, persistência de dados, organização de telas e manutenção do sistema.

É nesse ponto que a prática faz toda a diferença.

Ao desenvolver um sistema do zero com Lazarus + SQLite, fica muito mais fácil entender como as peças se conectam: interface, regras de negócio e banco de dados trabalhando em conjunto.


Para quem essa série é indicada?

Esse conteúdo pode ser útil para:

  • quem está começando com Lazarus;
  • quem quer aprender SQLite de forma aplicada;
  • quem já usa Delphi/Object Pascal e quer explorar soluções leves;
  • quem deseja construir sistemas desktop sem depender de infraestrutura complexa;
  • quem gosta de aprender acompanhando projetos reais.

Se você já trabalha com Pascal, Delphi ou Lazarus, essa série pode servir tanto como aprendizado quanto como inspiração para seus próprios projetos.


Acompanhe a série no canal

Se você quiser ver a construção desse sistema na prática, acompanhe os vídeos no canal Programming Drops no YouTube.


Curso de Pascal | Aula 06 - Vetores

 Se você quer armazenar e manipular conjuntos de valores de forma organizada, os vetores (ou arrays) são fundamentais. Nesta sexta aula do nosso curso de Pascal grátis, você aprenderá a criar, acessar e percorrer vetores, além de resolver problemas práticos usando essa estrutura de dados.

Um vetor é um conjunto indexado de elementos do mesmo tipo. Em Pascal, ele pode ser estático (com tamanho fixo) ou dinâmico, mas aqui trabalharemos com vetores estáticos, em que cada posição guarda um valor e é acessada por um índice. Os índices não precisam começar em 1 – podem iniciar em 0 ou qualquer outro valor inteiro, proporcionando flexibilidade para representar diferentes situações.

🎯 O que você vai aprender nesta aula

  1. Conceito de vetor e analogia com uma fila de senhas.

  2. Declaração de vetores em Pascal com diferentes intervalos de índices.

  3. Acesso e manipulação de elementos, incluindo índices negativos.

  4. Uso de laços for para preencher e percorrer vetores.

  5. Exercícios práticos envolvendo leitura de números, filtragem de pares, cálculo de médias e outras operações.


📺 Assista à Aula 6




📚 Conteúdo da Aula

O que é um vetor?

Um vetor é uma estrutura que armazena uma sequência ordenada de elementos do mesmo tipo. Pense em uma fila de senhas com dez posições; cada posição guarda um número, e você pode acessar qualquer uma delas diretamente pelo índice (a posição na fila).

Como declarar um vetor em Pascal

Para criar um vetor estático em Pascal, usamos a sintaxe:

var numeros: array[1..10] of integer;

Esse exemplo declara numeros com dez posições, indo do índice 1 ao índice 10. Os índices não precisam começar em 1: podemos declarar um vetor com índices de -55, ou mesmo começar em 0:

var exemplo: array[-5..5] of integer;

Acessando elementos do vetor

Cada posição do vetor é acessada com o operador []. No exemplo abaixo, usamos índices negativos para representar os dias passados, onde 0 é o dia atual:

var clima: array[-4..0] of string; begin clima[-4] := 'Chuva'; clima[-3] := 'Nublado'; clima[-2] := 'Ensolarado'; clima[-1] := 'Parcialmente nublado'; clima[ 0] := 'Chuva leve'; end.

Assim, clima[0] contém o clima de hoje e clima[-2] representa anteontem.

Usando laços para preencher e percorrer vetores

Quando o vetor possui várias posições, não é prático atribuir valores manualmente. Em vez disso, utilizamos laços for. Por exemplo, para ler cinco números digitados pelo usuário:

var i: integer; numeros: array[1..5] of integer; begin for i := 1 to 5 do begin write('Digite o número da posição ', i, ': '); readln(numeros[i]); end; end.

Para exibir os valores:

for i := 1 to 5 do writeln('Posição ', i, ': ', numeros[i]);

Também é possível preencher vetores automaticamente:

for i := 1 to 5 do numeros[i] := i * 10; randomize; for i := 1 to 5 do numeros[i] := random(100); // valores de 0 a 99

Exemplo completo: Mostrar apenas os pares

var i: integer; numeros: array[1..5] of integer; begin for i := 1 to 5 do begin write('Digite o número ', i, ': '); readln(numeros[i]); end; writeln('Números pares digitados:'); for i := 1 to 5 do if (numeros[i] mod 2 = 0) then writeln(numeros[i]); end.

📝 Exercícios

  1. Scanner de números positivos: leia dez números e mostre somente os positivos.

  2. Mini banco de notas: armazene quatro notas e calcule a média final.

  3. Caça ao maior número: leia sete números e mostre qual foi o maior.

  4. Contador de pares e ímpares: conte e exiba quantos números pares e ímpares foram digitados.

  5. Soma dos elementos extremos: some o primeiro e o último valor do vetor.


✍️ Exercício proposto para a aula

Faça um programa em Pascal que leia seis nomes de pessoas e depois exiba:
• O primeiro nome digitado
• O último nome digitado
• Todos os nomes em ordem inversa

Treine bastante! Quanto mais você pratica a manipulação de vetores, mais naturais se tornam essas operações no dia a dia da programação.


📂 Recursos

📜 Código Fontehttps://github.com/Programming-Drops/pascal-course

Curso de Pascal | Aula 05 - Manipulando Strings

Se você quer dominar a manipulação de textos no Pascal e escrever programas que tratem dados de forma eficiente, essa quinta aula do nosso curso de Pascal grátis é para você! Nessa etapa exploramos como acessar cada caractere de uma string, localizar e substituir partes do texto e utilizar a unit SysUtils, compatível com a versão Delphi e presente em todas as plataformas suportadas. Também conhecemos funções essenciais como Length – que retorna o tamanho de uma string ou array – e LowerCase e UpperCase, que transformam toda a string em minúsculas ou maiúsculas.

🎯 O que você vai aprender nesta aula

  1. O que são strings em Pascal e como indexar cada caractere.

  2. Como localizar e substituir caracteres ou trechos dentro de uma string.

  3. Como utilizar a unit SysUtils e suas rotinas de manipulação de texto.

  4. Como usar as funções Length, LowerCase e UpperCase para medir e alterar o texto.

  5. Exercícios práticos: contar vogais em um texto e capitalizar a primeira letra de cada palavra.


📺 Assista à Aula 5


📚 Conteúdo da Aula

Uma string em Pascal é uma sequência de caracteres. Nesta aula mostramos como acessar cada caractere pelo índice (por exemplo, S[i]) e como percorrer a string com loops. Você aprenderá a trabalhar com a unit SysUtils, que oferece várias utilidades, como:

  • Length(s) – retorna o tamanho de uma string ou array;

  • LowerCase(s) – gera uma versão totalmente em minúsculas;

  • UpperCase(s) – gera uma versão totalmente em maiúsculas.

Exemplo de uso:

var s: string; begin s := 'Olá Mundo'; writeln('Tamanho: ', Length(s)); // imprime 9 writeln(LowerCase(s)); // olá mundo writeln(UpperCase(s)); // OLÁ MUNDO end;

📝 Exercícios

  1. Contar vogais: escreva um programa que percorra um texto e conte quantas vezes cada vogal aparece.

  2. Capitalizar palavras: crie um procedimento para colocar a primeira letra de cada palavra em maiúscula (ex.: fulano de talFulano De Tal).

Acesse o artigo completo no blog para ver o código fonte e as soluções desses desafios.

📌 Próxima aula: veremos como utilizar vetores no Pascal.


📂 Recursos

📜 Código Fontehttps://github.com/Programming-Drops/pascal-course

Curso de Pascal Grátis | Aula 4: Procedimentos e Funções

Se você quer escrever códigos mais organizados, reutilizáveis e fáceis de manter, vai adorar esta quarta aula do nosso curso de Pascal grátis! 🚀

Nesta etapa, exploramos procedimentos e funções, dois recursos fundamentais para estruturar melhor seus programas, evitar repetição de código e melhorar a clareza do que você escreve.
Você vai aprender quando usar cada um, como criar parâmetros, como retornar valores e boas práticas para aplicar no dia a dia da programação.

🎯 O que você vai aprender nesta aula

  1. O que são funções e procedimentos no Pascal

  2. Quando usar funções para retornar valores

  3. Quando usar procedimentos para executar ações sem retorno

  4. Estrutura e sintaxe de cada um

  5. Exemplos práticos com cálculos e mensagens na tela


📺 Assista à Aula 4



📚 Conteúdo da Aula

Funções

Uma função é como uma máquina que recebe entradas (parâmetros), processa algo e retorna um valor como resultado.
Usamos funções quando precisamos calcular um valor e utilizá-lo em outras partes do programa.

Sintaxe:

function NomeDaFuncao(parametro1: tipo; parametro2: tipo): tipoDeRetorno;
var variavelLocal: tipo; begin // Código da função NomeDaFuncao := valorDeRetorno; end;

Exemplo – Calcular área de um retângulo:

function CalcularAreaRetangulo(base: real; altura: real): real;
begin CalcularAreaRetangulo := base * altura; end; var largura, comprimento, area: real; begin largura := 10; comprimento := 5; area := CalcularAreaRetangulo(largura, comprimento); WriteLn('A área do retângulo é: ', area); end.


Procedimentos

Um procedimento é como um robô que executa uma ação, mas não retorna valores.
Utilizamos para mostrar mensagens, manipular dados ou controlar o fluxo do programa.

Sintaxe:

procedure NomeDoProcedimento(parametro1: tipo; parametro2: tipo);
var variavelLocal: tipo; begin // Código do procedimento end;

Diferença entre Funções e Procedimentos

  • Função → sempre retorna um valor.

  • Procedimento → executa ações, mas não retorna valores diretamente.

💡 Dica: Procedimentos e funções ajudam a evitar código duplicado e tornam seu programa mais fácil de entender e manter. Sempre que encontrar um bloco de código repetido, considere transformá-lo em uma função ou procedimento.

Se você perdeu a Aula 3 – Estruturas de Controle, recomendo assistir antes para manter a sequência de aprendizado.

📌 Próxima aula: veremos manipulação de strings no Pascal.


📂 Recursos

📜 Código Fonte: https://github.com/Programming-Drops/pascal-course

Curso de Pascal Grátis | Aula 3: Estruturas de Controle

 Se você está começando a aprender programação ou quer reforçar sua base na linguagem Pascal, esta terceira aula do nosso curso de Pascal grátis é para você! 🚀

Nesta etapa, exploramos as estruturas de controle em Pascal, que são responsáveis por alterar a ordem de execução de um programa, permitindo desvios e repetições de acordo com condições específicas.
Com elas, podemos criar códigos mais inteligentes, dinâmicos e eficientes.

🎯 O que você vai aprender nesta aula

  1. O que são estruturas de controle e como elas funcionam no Pascal

  2. Estruturas de desvio: if..then e else

  3. Estruturas de repetição: for, while..do e repeat..until

  4. Diferenças entre as estruturas de repetição e quando utilizar cada uma

  5. Exemplos práticos, como tabuada, somatório e cálculo de IMC


📺 Assista à Aula 3




📚 Conteúdo da Aula

Estruturas de Controle de Desvio

  • if..then: executa um bloco de código se a condição for verdadeira.

var x: integer; begin x := 100; if (x > 200) then begin WriteLn('o valor de x é maior que 200!'); end; end.
  • else: executa um bloco de código se a condição for falsa.

var
x: integer; begin x := 100; if (x > 200) then begin WriteLn('o valor de x é maior que 200!'); end else begin WriteLn('o valor de x é menor que 200!'); end; end.


Estruturas de Controle de Repetição

Permitem a execução de um conjunto de instruções várias vezes.

  • for – repete um conjunto de instruções um número definido de vezes.

var n: integer; // variável de controle (contador)
begin for n := 1 to 10 do begin { código a ser repetido } end; end.
  • while..do – repete enquanto a condição for verdadeira.

var
x: integer; begin x := 15; while (x <= 20) do begin x := x + 1; end; end.
  • repeat..until – executa pelo menos uma vez e testa a condição no final.

var
x: integer; begin x := 1; repeat x := x + 1; until (x > 10); end.

💻 Exemplos Práticos

1. Tabuada

var
i, x: integer; begin for i := 1 to 10 do begin x := i * 2; WriteLn(i, '* 2 = ', x); end; end.

2. Somatório

var
n, soma: integer; begin n := 1; soma := 0; while (n <= 100) do begin soma := soma + n; n := n + 1; end; WriteLn(soma); end.

3. IMC – Índice de Massa Corporal
Calcule o IMC sabendo que:

IMC = peso (kg) / (altura (m) ^ 2)

Tabela de classificação:

CategoriaIMC
Abaixo do normal< 18.5
Normal18.5 a 24.9
Sobrepeso24.9 a 29.9
Obesidade> 29.9

💡 Dica: Essa é uma aula prática. Tenha seu compilador Pascal e seu editor de código prontos para digitar os exemplos junto comigo. Assim, você assimila o conteúdo muito mais rápido.

Se você perdeu a Aula 2 – Variáveis e Estruturas Condicionais, recomendo assistir antes para manter a sequência de aprendizado.

📌 Próxima aula: veremos procedimentos e funções, que permitem organizar e reaproveitar partes do código de forma mais eficiente.


📂 Recursos

📜 Código Fonte: https://github.com/Programming-Drops/pascal-course