📘 Material Completo de Estudo

Domine a Lógica e as Linguagens de Programação

Do raciocínio computacional fundamental às linguagens que moldam a indústria — com exemplos reais e coloração de sintaxe profissional.

🧠

Lógica de Programação: Do zero às estruturas essenciais

Conceitos fundamentais que formam a base de qualquer linguagem. Exemplos com sintaxe destacada e colorida.

O que é um programa?

Um programa é uma sequência de instruções que manipulam dados e tomam decisões. A lógica de programação organiza essas instruções de forma correta e compreensível.

Variáveis e Tipos de Dados

Variáveis

Espaço na memória que guarda um valor. Use nomes significativos.

Python exemplo
idade = 25
nome = "Maria"
altura = 1.68

Tipos primitivos

TipoExemploDescrição
int42, -7Números sem parte decimal
float3.14Números com casas decimais
string"Olá"Sequência de caracteres
boolTrue, FalseVerdadeiro ou falso

Conversão de tipos

Python conversão
ano = 2025
texto_ano = str(ano)        # "2025"
proximo = int("2026")       # 2026
altura = float("1.75")      # 1.75
💡Desafio: Crie variáveis para armazenar nome de produto, quantidade, preço e disponibilidade.

Operadores e Expressões

Aritméticos

OperadorSignificadoExemplo (a=10,b=3)
+Adiçãoa + b13
-Subtraçãoa - b7
*Multiplicaçãoa * b30
/Divisãoa / b3.33
//Divisão inteiraa // b3
%Móduloa % b1
**Exponenciaçãoa ** b1000

Relacionais e lógicos

Python lógica
idade = 20
tem_carteira = True
pode_dirigir = idade >= 18 and tem_carteira  # True
💡Desafio: Expressão verdadeira se número entre 10 e 20 (inclusive).

Estruturas de Controle

Condicionais

Python if/elif/else
nota = 8.0
if nota >= 9.0:
    print("Excelente")
elif nota >= 7.0:
    print("Bom")
else:
    print("Insuficiente")

Laço while

Python while
contador = 0
while contador < 5:
    print(contador)
    contador = contador + 1

Laço for e break/continue

Python for
for i in range(10):
    if i == 3:
        continue
    if i == 7:
        break
    print(i)
# Saída: 0, 1, 2, 4, 5, 6
💡Desafio: Some todos os números pares de 1 a 100 com for e condicional.

Funções

Python definição
def saudacao(nome):
    return "Olá, " + nome + "!"

print(saudacao("João"))

Parâmetros padrão e escopo

Python parâmetros
def aumentar_preco(valor, percentual=10):
    return valor * (1 + percentual/100)

print(aumentar_preco(100))   # 110.0
print(aumentar_preco(100,20)) # 120.0
💡Desafio: Função e_par(numero) que retorna True se par.

Recursão

Fatorial

Python fatorial
def fatorial(n):
    if n == 0:
        return 1
    else:
        return n * fatorial(n - 1)

print(fatorial(5))  # 120

Fibonacci

Python fibonacci
def fibonacci(n):
    if n == 0: return 0
    elif n == 1: return 1
    else: return fibonacci(n-1) + fibonacci(n-2)

# 0 1 1 2 3 5 8 13 21 34
⚠️Fibonacci recursivo ingênuo é O(2ⁿ) — ineficiente para n grande.
💡Desafio: Função recursiva soma(n) que retorne 1+2+...+n.

Estruturas de Dados

Lista

Python lista
frutas = ["maçã", "banana"]
frutas.append("uva")
print(frutas[0])  # maçã

Pilha (LIFO)

Python pilha
pilha = []
pilha.append("A")
pilha.append("B")
print(pilha.pop())  # B

Fila (FIFO)

Python fila
from collections import deque
fila = deque()
fila.append("João")
fila.append("Maria")
print(fila.popleft())  # João
EstruturaOrdemInserçãoRemoção
ListaÍndiceFim/posiçãoFim/posição
PilhaLIFOTopoTopo
FilaFIFOFinalInício

Complexidade (Big O)

NotaçãoNomeExemplo
O(1)ConstanteAcesso por índice
O(log n)LogarítmicoBusca binária
O(n)LinearPercorrer lista
O(n log n)Log-linearMerge sort
O(n²)QuadráticoDois laços aninhados
O(2ⁿ)ExponencialFibonacci recursivo
📊Para n=1.000.000, O(n²) faz ~1 trilhão de operações, O(n log n) faz ~20 milhões.

Exemplo integrado: consultório

Python sistema completo
from collections import deque

def adicionar_paciente(fila, nome, prioridade=False):
    if prioridade:
        fila.appendleft(nome)
    else:
        fila.append(nome)

def chamar_proximo(fila):
    if len(fila) == 0:
        print("Nenhum paciente.")
    else:
        print(f"Chamando {fila.popleft()}")

fila = deque()
adicionar_paciente(fila, "Ana")
adicionar_paciente(fila, "Bruno")
adicionar_paciente(fila, "Carla", prioridade=True)
chamar_proximo(fila)
chamar_proximo(fila)
chamar_proximo(fila)
💻

Linguagens de Programação na Prática

Seis linguagens que representam paradigmas distintos e nichos importantes. Clique nos cards para explorar detalhes.

Java
Orientação a Objetos

Compilada para bytecode, roda na JVM. Filosofia "write once, run anywhere".

Ver detalhes
Casos de uso
  • Sistemas corporativos (Spring, Jakarta EE)
  • Android (milhões de apps)
  • Big Data (Hadoop, Spark, Kafka)
  • Nuvem (Netflix, AWS)
Curiosidades
  • Projeto Oak para TV a cabo interativa.
  • Mascote Duke é ícone cultural.
  • JIT e GCs modernos (ZGC) trazem performance nativa.
λ
Haskell
Funcional Pura

Puramente funcional, lazy evaluation, sistema de tipos forte.

Ver detalhes
Casos de uso
  • Compiladores (GHC, Pandoc)
  • Verificação formal (Cryptol)
  • Finanças quantitativas
  • Pipelines funcionais (Meta)
Curiosidades
  • Nome em homenagem a Haskell Curry.
  • Mônadas tornaram I/O prático.
  • Listas infinitas graças à lazy evaluation.
🐍
Python
Scripting / Multiuso

Interpretada, dinâmica, sintaxe limpa. A "cola universal" da computação.

Ver detalhes
Casos de uso
  • IA/ML (TensorFlow, PyTorch)
  • Web (Django, Flask)
  • DevOps (Ansible, scripts)
  • Ciência de dados
Curiosidades
  • Criado por Guido van Rossum em 1989.
  • Nome veio do Monty Python.
  • import this mostra o Zen do Python.
⚙️
C
Linguagem de Sistema

Compilada, controle absoluto sobre memória. Base de kernels, drivers e engines.

Ver detalhes
Casos de uso
  • Kernels (Linux, Windows, XNU)
  • Drivers e firmware
  • Engines de jogos
  • OpenSSL, Redis, Nginx
Curiosidades
  • Criada por Dennis Ritchie em 1972.
  • O "Hello, World!" veio do livro K&R.
  • Comportamento indefinido permite otimizações extremas.
🔷
TypeScript
Web / Mobile

Superset tipado do JavaScript. Tipagem estática opcional, transcompila para JS.

Ver detalhes
Casos de uso
  • Front-end escalável (Angular, React)
  • Back-end (NestJS, Deno)
  • Mobile (React Native)
  • CLIs e ferramentas
Curiosidades
  • Criado por Anders Hejlsberg (Turbo Pascal, C#).
  • Compilador auto-hospedado em TS.
  • Tipos apagados em runtime, sem overhead.
Zig
Emergente / Nicho

Alternativa moderna ao C, com comptime, cross-compilation e sem hidden control flow.

Ver detalhes
Casos de uso
  • Sistemas de baixo nível
  • Build systems (compila C/C++)
  • Desenvolvimento de jogos
  • Segurança cibernética
Curiosidades
  • Projeto solo de Andrew Kelley (2015).
  • Comptime executa código em tempo de compilação.
  • Cross-compilação nativa com -target.

Conclusão

  • Java — portabilidade e ecossistema corporativo.
  • Haskell — pureza funcional com elegância.
  • Python — a cola universal de dados e IA.
  • C — alicerce insubstituível de sistemas.
  • TypeScript — engenharia previsível para web.
  • Zig — sistemas modernos, seguros e explícitos.

Conhecer essas linguagens é expandir seu repertório de pensamento computacional.

Desafios Finais

  1. Função que retorna o maior elemento de uma lista (sem funções prontas).
  2. Função recursiva para inverter uma string.
  3. Modele uma pilha de livros e simule operações.
  4. Algoritmo com laço até n e laço interno até 10 → qual complexidade?