Estruturas de dados: array, lista encadeada, pilha, fila
Uma estrutura de dados é um jeito de organizar os dados para o programa usá-los de forma rápida e fácil.
- Array: tamanho fixo, os itens ficam lado a lado e qualquer item é acessado pelo índice (a[3]). Inserir no meio é lento.
- Lista encadeada (dinâmica): cada nó guarda um valor e um link para o próximo nó. Ela cresce e encolhe conforme a necessidade, mas para chegar ao item 5 você precisa passar pelos itens 1 a 4.
- Pilha: push e pop só em uma ponta (LIFO). Usada no desfazer, no botão voltar e na verificação de parênteses.
- Fila: entra no fim, sai pela frente (FIFO). Usada em trabalhos de impressão e filas de espera.
As bibliotecas já trazem essas ferramentas. No Python, uma list funciona como pilha (append, pop) e collections.deque funciona como uma fila rápida. Use a biblioteca quando ela existir; não reescreva o que já está pronto.
stack = []
stack.append(5); stack.append(8)
stack.pop() # gives 8
from collections import deque
q = deque([4, 9]); q.append(2)
q.popleft() # gives 4
Usando uma IDE: escrever, executar, testar
Uma IDE (ambiente de desenvolvimento integrado) reúne editor, botão de executar, depurador e ferramentas em um só lugar. Ela colore o código, sugere nomes e mostra os erros enquanto você digita.
- Execute o programa e leia a saída.
- Teste com entradas fáceis, normais e difíceis (uma lista vazia, zero, um número muito grande).
- Depure: coloque um ponto de parada (breakpoint) e avance linha por linha para ver as variáveis.
Visualização e animação em 2D e 3D
Imagens nos ajudam a ver padrões. Os programas podem desenhar gráficos (de barras, de linhas, de dispersão), desenhos em 2D e cenas em 3D. Uma animação é o mesmo desenho refeito várias vezes, com uma pequena mudança a cada vez (cerca de 30 a 60 vezes por segundo). Um jeito simples: guarde uma variável como x, some um pouco a ela a cada quadro e redesenhe. O 3D desta página é feito do mesmo modo, com uma biblioteca 3D.
Funções avançadas de planilha
As planilhas fazem trabalho de programa com funções:
IF(B2>=50,"Pass","Fail")(SE em português) escolhe entre dois resultados.SUMIF(B2:B5,">=50")(SOMASE) soma só as células que seguem uma regra;COUNTIF(CONT.SE) as conta.VLOOKUP(2, A2:B5, 2, FALSE)(PROCV) procura o 2 na primeira coluna e devolve o valor da coluna 2 na mesma linha.XLOOKUP(PROCX) faz o mesmo de forma mais simples.- As tabelas dinâmicas resumem grandes dados por grupos, e os gráficos mostram o resultado.
Bancos de dados relacionais e SQL
Um banco de dados relacional guarda os dados em tabelas de linhas e colunas. Cada tabela tem uma chave primária, uma coluna cujos valores são únicos (o id). Outra tabela usa esse valor como chave estrangeira para se ligar a ela. Um bom projeto guarda cada fato uma só vez, sem dados repetidos.
SQL é a linguagem para fazer perguntas e alterar dados:
SELECT name, score FROM students
JOIN marks ON students.id = marks.id
WHERE score >= 50 ORDER BY score DESC;
INSERT INTO marks (id, score) VALUES (5, 67);
UPDATE marks SET score = 55 WHERE id = 2;
DELETE FROM marks WHERE id = 5;Integridade significa que os dados continuam corretos: as chaves são únicas, uma chave estrangeira precisa apontar para uma linha real e os valores têm de ter o tipo certo. Segurança significa senhas para os usuários, dar a cada usuário só os direitos de que ele precisa, fazer backups e nunca montar o SQL juntando o texto do usuário à consulta (use parâmetros), o que evita a injeção de SQL.
Contribuindo com recursos abertos
Muitas ferramentas e bibliotecas são de código aberto (open source): qualquer pessoa pode ler, usar e melhorar, de acordo com uma licença. Você pode ajudar corrigindo um erro, melhorando um guia, traduzindo uma página ou acrescentando um exemplo. Leia sempre a licença, dê os créditos e escreva mensagens claras e educadas ao sugerir uma mudança.
Experimente
No passo 5 do 3D, faça push de 3 itens em uma pilha e depois pop neles. Anote a ordem. Faça o mesmo com uma fila. Depois, primeiro preveja e só depois confira: se você adicionar 4, 9 e 2 e remover um item, que valor sobra na frente da fila e no topo da pilha?
Fórmulas e definições principais
- Pilha = LIFO (o último a entrar é o primeiro a sair): push, pop.
- Fila = FIFO (o primeiro a entrar é o primeiro a sair): enqueue, dequeue.
- Array: tamanho fixo, acesso por índice. Lista encadeada: tamanho dinâmico, segue os links.
- SELECT colunas FROM tabela WHERE condição
- Chave primária = id único. Chave estrangeira = link para outra tabela.
Exemplos resolvidos
1. Os itens 5, 8 e 2 entram em uma pilha nessa ordem. Depois é feito pop duas vezes. O que está no topo agora?
Pilha depois dos pushes: 5, 8, 2 (o 2 no topo). O pop tira o 2 e depois o 8. Sobra: 5. Topo = 5.
2. Os itens 4, 9, 2 entram em uma fila nessa ordem. Faz-se um dequeue. Qual item está na frente agora?
O primeiro a entrar sai, então o 4 é removido. A frente é o 9.
3. Tabela de notas: ids de 1 a 4 com notas 72, 45, 88, 51. Quantas linhas WHERE score >= 50 devolve?
72, 88 e 51 são 50 ou mais. São 3 linhas.
4. As células B2:B5 têm 72, 45, 88, 51. Quanto dá =SUMIF(B2:B5,">=50")?
Ela soma só 72, 88 e 51: 72 + 88 + 51 = 211.
5. Por que usar uma pilha para verificar parênteses como ( [ ] ) em uma expressão?
Faça push de cada parêntese que abre. Quando vier um que fecha, faça pop e confira se combina. O último que abriu tem de ser o primeiro a fechar (LIFO), e é isso que a pilha oferece. Se a pilha estiver vazia no fim, os parênteses combinam.
Erros comuns
- Usar um array quando o tamanho não é conhecido de antemão. Uma lista ou lista encadeada é melhor.
- Confundir pilha e fila. A pilha remove o mais novo; a fila remove o mais antigo.
- Esquecer o WHERE em UPDATE ou DELETE, o que altera todas as linhas.
- Montar o SQL juntando o texto do usuário em uma string. Use parâmetros.