Analisar

Guia do usuário

Como usar o Big O Analyzer, passo a passo.

Índice

Visão geral da interface

A interface do Big O Analyzer é dividida em três áreas principais:

Editor de código

No painel esquerdo, o editor Monaco permite escrever ou colar seu código, com realce de sintaxe, IntelliSense e validação em tempo real.

Painel de controle

Na parte superior, você encontra o seletor de linguagem, de tema e o botão de análise.

Painel de resultados

No painel direito, são exibidos a complexidade, a explicação e as sugestões de otimização.

Dica: no desktop, arraste o divisor entre editor e resultados para redimensionar os painéis.

Recursos do editor

O Monaco traz uma experiência parecida com VS Code:

Destaque de sintaxe

Palavras-chave, strings, comentários e operadores têm cores distintas, facilitando a leitura.

IntelliSense

Sugestões de autocompletar enquanto você digita. Use Ctrl+Espaço (ou Cmd+Espaço no Mac) para forçar a sugestão.

Validação em tempo real

Erros de sintaxe aparecem sublinhados no código e o contador de erros é mostrado no cabeçalho do editor.

Atalhos de teclado
Formatar documentoShift+Alt+F
LocalizarCtrl+F
SubstituirCtrl+H
Ir para linhaCtrl+G
Comentar/descomentarCtrl+/

Seleção de linguagem

Escolha a linguagem no painel superior.

JavaScript

Suporte a ES6+ incluindo:

  • Arrow functions
  • Async/await
  • Desestruturação
  • Template literals
  • Sintaxe moderna
Python

Suporte a Python 3.x incluindo:

  • List comprehensions
  • Geradores
  • Type hints
  • f-strings
  • Biblioteca padrão
Java

Suporte a Java 8+ incluindo:

  • Expressões lambda
  • Streams API
  • Collections Framework
  • Generics
  • Bibliotecas padrão

Importante: ao trocar de linguagem, o editor pode carregar um exemplo padrão. Salve seu código antes de mudar, se quiser preservá-lo.

Personalização de tema

Três temas de editor estão disponíveis:

Escuro padrão

Ideal para ambientes com pouca luz.

Claro padrão

Melhor em ambientes bem iluminados.

Alto contraste

Focado em acessibilidade, com contraste máximo.

O tema afeta apenas o editor; o restante da interface segue o tema do sistema.

Executando a análise

Botão Analisar

Clique em "Analisar" para iniciar o processo. O botão fica desabilitado se:

  • Há erros de sintaxe no código
  • Uma análise já está em andamento
O que acontece na análise

Durante a análise, um loader é exibido. Em alto nível, o processo passa por:

  1. Conversão para Árvore de Sintaxe Abstrata (AST)
  2. Normalização em uma representação intermediária
  3. Construção de um grafo de fluxo de controle (CFG)
  4. Análise de loops e recursão
  5. Cálculo da complexidade e geração dos resultados

Toda a análise é feita localmente no navegador.

6. Entendendo os resultados

Ao final da análise, você verá:

Complexidade do pior caso

A notação Big O final. O badge é colorido conforme a classe:

O(1), O(log n)
O(n)
O(n log n), O(n²)
O(2ⁿ), O(n!)
Explicação

Um texto que justifica a complexidade calculada, apontando loops, recursão e padrões relevantes.

Sugestões de otimização

Ideias para reduzir a complexidade ou tornar o algoritmo mais eficiente.

  • Trocar estruturas de dados
  • Reduzir níveis de loops aninhados
  • Aplicar dividir e conquistar
  • Aproveitar métodos nativos otimizados
  • Remover cálculos redundantes
Referência de complexidade

Uma visão geral das classes de O(1) até O(n!), para comparar o seu resultado com outras complexidades possíveis.

7. Cenários comuns

Função única

De preferência, envie uma função completa, com parâmetros e return, em vez de apenas o corpo.

Múltiplas funções

Você pode incluir mais de uma função; o analisador considera o fluxo como um todo e foca na parte mais custosa.

Classes em Java

Inclua a classe e os métodos relevantes. A análise foca na implementação dos métodos, não nos detalhes de encapsulamento.

Recursão

Para boa detecção de recursão, mantenha o mesmo nome na definição e nas chamadas. Padrões clássicos (como fatorial) são reconhecidos com mais facilidade.

8. Solução de problemas

Botão desabilitado

Possíveis causas:

  • Erros de sintaxe ainda presentes
  • Análise em andamento
  • Código vazio

userGuide.troubleshooting.buttonDisabled.solutionLabel Corrija os erros, aguarde a análise atual terminar ou adicione código antes de tentar novamente.

Resultado inesperado

Possíveis causas:

  • Uso de metaprogramação
  • Padrões de código muito abstratos
  • Funções muito grandes sem divisão em partes menores

userGuide.troubleshooting.unexpectedComplexity.solutionLabel Tente isolar a função principal, remover detalhes não essenciais e rodar a análise novamente.

Erros de sintaxe não aparecem

Possíveis causas:

  • Em JavaScript, os erros vêm do próprio Monaco
  • Em Python/Java, validadores específicos podem levar um instante para acusar erro

userGuide.troubleshooting.syntaxErrors.solutionLabel Espere alguns segundos, tente rodar a análise ou reformatar o código para facilitar a detecção.

Análise demorando

Em geral, a análise leva milissegundos. Se parecer travada, tente:

  • Diminuir o tamanho do código
  • Simplificar estruturas muito aninhadas
  • Recarregar a página

9. Boas práticas

Código completo

Prefira funções completas com início, meio e fim claros.

Nomes descritivos

Variáveis como left/right/mid facilitam a identificação de padrões como busca binária.

Foque na lógica central

Imports, wrappers de I/O e detalhes de interface geralmente não são necessários para entender a complexidade.

Confirme manualmente

Use o resultado como apoio para seu próprio raciocínio, especialmente em problemas mais complexos.

Use como ferramenta de estudo

Compare o que você esperava de complexidade com o que o analisador retorna e veja onde seu raciocínio pode ser refinado.

Recursos adicionais

Aprofunde seus estudos em algoritmos e Big O:

Precisa de mais ajuda? Veja o FAQ ou contato.

FAQcontato