O que é um flowchart?
Pensando em imagens
Um flowchart (fluxograma) é um diagrama visual que representa um processo como uma sequência de passos conectados por setas. Cada passo é desenhado como uma forma geométrica, e as setas mostram o fluxo: a ordem em que os passos executam.
Flowcharts são usados desde os anos 1920 na engenharia industrial, mas se tornaram essenciais para a computação nos anos 1940 quando Herman Goldstine e John von Neumann os desenharam em 1947 para planejar programas para o computador IAS que construíam em Princeton.
Um flowchart está para um programa assim como uma planta está para um edifício: um plano visual que mostra a estrutura antes de construir.
Por que flowcharts importam
Você pode pensar: "Posso escrever código. Por que desenhar uma imagem primeiro?"
Porque flowcharts ajudam você a:
- Pensar antes de codificar: Diagramar força você a entender a lógica antes de escrever uma única linha.
- Identificar casos faltantes: Um flowchart torna lacunas na sua lógica visíveis. Aquele caso extremo que você perderia no código? É óbvio quando um ramo não leva a lugar nenhum.
- Comunicar com não-desenvolvedores: Gerentes de produto, designers e clientes conseguem ler um flowchart. Eles não conseguem ler Ruby.
- Debugar lógica complexa: Quando um processo de múltiplos passos tem um bug, rastrear pelo flowchart é mais rápido que ler condicionais aninhadas.
- Documentar decisões: Seis meses depois, um flowchart explica por que o código funciona do jeito que funciona.
Os elementos básicos
Todo flowchart é construído com poucas formas. Aqui estão as quatro essenciais:
1. Terminal (retângulo arredondado)
flowchart TB
S([INÍCIO])
Marca o início ou fim de um processo. Todo flowchart tem um INÍCIO e pelo menos um FIM.
2. Processo (retângulo)
flowchart TB
P[Calcular total]
Representa uma ação ou operação: algo que faz trabalho. No código, mapeia para uma instrução ou chamada de método.
3. Decisão (losango)
flowchart TB
D{idade >= 18?}
D -->|Sim| Y[ ]
D -->|Não| N[ ]
Representa uma pergunta com dois ou mais resultados. Mapeia diretamente para if/else no código. Cada caminho de saída deve ser rotulado.
4. Seta de fluxo
flowchart LR
A[ ] --> B[ ]
Conecta formas e mostra a direção da execução. Setas sempre apontam de um passo para o próximo.
Seu primeiro flowchart: login
Vamos desenhar um processo simples de login:
flowchart TB
S([INÍCIO]) --> I[Digitar email e senha] --> V{Credenciais válidas?}
V -->|Sim| R[Redirecionar pro painel] --> E1([FIM])
V -->|Não| X["Mostrar erro "Login inválido""] --> E2([FIM])
Agora compare com o código Rails:
class Auth::SessionsController < ApplicationController
def create
result = Auth::AuthenticateUserService.call(
email: params[:email],
password: params[:password]
)
if result.success # Losango de decisão
reset_session
session[:user_id] = result.user.id
redirect_to post_sign_in_path(result.user) # Ramo Sim
else
flash.now[:alert] = result.error # Ramo Não (.now: só neste render)
render :new, status: :unprocessable_content
end
end
end
Veja como o flowchart e o código têm a mesma estrutura? Esse é o poder dos flowcharts: eles tornam a estrutura do código visível.
Flowcharts vs. outros diagramas
Flowcharts são um entre muitos tipos de diagrama. Aqui está quando usar cada um:
| Diagrama | Melhor Para | Mostra |
|---|---|---|
| Flowchart | Lógica de processo, algoritmos | Fluxo passo a passo com decisões |
| Diagrama de sequência | Interações entre objetos | Quem chama quem, em que ordem |
| Entidade-Relacionamento (ER) | Design de banco | Tabelas, colunas, relacionamentos |
| Máquina de estados | Ciclo de vida de objetos | Estados e transições |
| Diagrama de classes | Estrutura de objetos | Classes, métodos, herança |
Flowcharts se destacam em responder: "O que acontece passo a passo?"
Uma requisição Rails como flowchart
Toda requisição Rails segue um fluxo:
flowchart TB
R([Requisição chega]) --> RT[Router casa a rota] --> C[Action do controller] --> B{before_action passa?}
B -->|Sim| M[Consulta ao model] --> V[Renderiza a view] --> H([HTML enviado])
B -->|Não| X[Redireciona ou interrompe]
Esse modelo mental (Router → Controller → Model → View) é a fundação de toda aplicação Rails.
Lendo um flowchart: as regras
- Comece no INÍCIO: sempre comece no terminal marcado INÍCIO.
- Siga as setas: nunca pule entre formas sem uma seta.
- Nas decisões, escolha um caminho: leia a pergunta, siga a saída rotulada (Sim/Não, Verdadeiro/Falso).
- Caixas de processo executam: quando você chega em uma caixa de processo, aquela ação acontece.
- Pare no FIM: quando você chega em um terminal marcado FIM, o processo está completo.
Regra de ouro: Se você não consegue traçar um caminho claro do INÍCIO ao FIM, o flowchart (e provavelmente o código) tem um bug.
Resumo
| Conceito | Definição |
|---|---|
| Flowchart | Diagrama visual mostrando um processo como passos conectados |
| Terminal | Retângulo arredondado marcando INÍCIO ou FIM |
| Processo | Retângulo representando uma ação ou operação |
| Decisão | Losango representando uma pergunta com caminhos ramificados |
| Seta de fluxo | Seta mostrando direção da execução |
| Propósito | Pensar antes de codificar, identificar casos faltantes, comunicar lógica |
| Paralelo Rails | Estrutura do flowchart mapeia diretamente para lógica do controller |
Continue com a aula 2
Símbolos e notação de flowcharts
Mostra os símbolos do padrão ISO 5807, regras de setas, pontos de merge e erros comuns de notação, com paralelos em Ruby.
Com uma conta grátis você também tem os quizzes, seu progresso e suas anotações, e a discussão.