Eficiência de algoritmos: por que tempo não é o único critério
Ensino eficiência de algoritmos como comparação entre soluções corretas, tempo e recursos — não como sinônimo de código curto ou linguagem popular. Veja os erros recorrentes nas questões e como diagnosticar a compreensão da turma.
Eu vejo a confusão aparecer quando peço que a turma compare duas soluções para o mesmo problema. Um aluno aponta para o algoritmo com menos linhas e diz que ele é mais eficiente; outro escolhe o que usa menos memória, mesmo sem saber se termina a tarefa corretamente. Quando pergunto o que significa “melhor”, percebo que muitos estão tentando adivinhar qual característica eu quero ouvir, em vez de analisar a solução.
Também já encontrei alunos que defendem uma troca de linguagem ou mais condições como resposta automática para um programa lento. Por isso, começo pelo que eles observam: o resultado está correto? Quanto tempo leva? Que recursos consome? Nas questões analisadas, aparecem confusões entre tempo, memória, quantidade de passos e aparência do código. Esse padrão ajuda a planejar um diagnóstico que não se limite a marcar certo ou errado: a alternativa escolhida pode mostrar exatamente qual ideia ainda precisa ser discutida.
O que é eficiência de algoritmos, explicado para o professor
Eficiência de algoritmos é a avaliação de quanto recurso uma solução exige para resolver corretamente um problema, considerando especialmente tempo de execução e memória ou espaço utilizado. Não basta ser rápida em um exemplo pequeno: também importa observar o que acontece quando a quantidade de dados cresce. Para o 6º ano, posso comparar passos equivalentes; no 8º e no 9º, a turma pode interpretar tempos para entradas de tamanhos diferentes e discutir escalabilidade. O conceito aparece em Computação e se articula às habilidades EF69CO03, EF69CO06, EF06CO02, EF69CO02, EF06CO03 e EF08CO03. Na prática, eficiência não é sinônimo de código curto, linguagem popular ou complexidade visual: comparo soluções que resolvem o mesmo problema e explicito quais critérios estão sendo considerados.
Uma ressalva didática importante: em uma comparação introdutória, menos passos pode indicar maior eficiência quando os passos são comparáveis e as soluções fazem a mesma tarefa. Isso não autoriza concluir que contar instruções seja suficiente para qualquer algoritmo. A questão com dez contra sete passos declara essa condição justamente para tornar a comparação justa; a tabela do 9º ano, por sua vez, mostra que o desempenho pode variar conforme o tamanho da entrada. Convém nomear o critério em cada atividade: “mais rápido nestes dados”, “menos passos equivalentes” ou “menor uso de recursos”. Assim, a conclusão fica apoiada em evidência, não em uma regra absoluta.
O que o aluno precisa saber antes
Antes de avaliar eficiência, verifico se a turma reconhece o que é um algoritmo e entende que seus passos executam uma tarefa. Também é preciso alguma noção de tempo computacional: não necessariamente medir segundos com precisão, mas compreender que uma solução pode exigir mais ou menos etapas. Para comparar tabelas, o estudante precisa ler dados organizados e relacionar cada resultado ao tamanho da entrada. As fichas apontam ainda análise de algoritmos, complexidade de tempo, análise de desempenho e eficiência computacional como bases relevantes. Uma forma rápida de verificar essa preparação é propor duas sequências de instruções para resolver o mesmo problema e perguntar o que permanece igual, o que muda e qual critério permitiria comparar. Se a turma compara soluções para problemas diferentes, lê os valores sem relacioná-los às entradas ou toma “mais complicado” como “melhor”, vale retomar a base antes de avançar.
Faço essa checagem sem nota, em conversa ou bilhete de saída. Peço que expliquem como decidiram, porque uma resposta correta por palpite não confirma o pré-requisito. Para o 6º ano, uso passos equivalentes e números pequenos; para o 8º e o 9º, incluo tempo, recursos ou uma tabela simples. Não exijo cálculo nas sete questões do acervo, mas a interpretação de dados e a comparação ainda demandam atenção. Anoto se o aluno entende que as soluções precisam ser comparáveis e se distingue correção de desempenho. Quando essas condições não estão claras, a atividade diagnóstica me informa que preciso ensinar a comparação, não apenas repetir a definição de eficiência.
Quais são os erros mais comuns e por que acontecem?
As fichas não sustentam uma contagem única de um mesmo erro em todas as sete questões: cada item focaliza aspectos diferentes. Ainda assim, o padrão mais visível é reduzir eficiência a uma característica isolada. Em uma questão, o distrator mais provável é escolher apenas memória; em outra, é priorizar a média aritmética; em outras, aparecem tempo sozinho, linguagem de programação, tamanho do código ou quantidade de variáveis. Na comparação por passos, o distrator mais provável inverte a diferença e afirma que B usa três passos a mais. Já na otimização, a opção mais atraente é adicionar condições. Eu trato essas escolhas como pistas diagnósticas: revelam qual critério o estudante tomou como absoluto. A intervenção funciona melhor quando pede que ele justifique o critério e retorne ao enunciado, em vez de apenas ouvir que marcou a letra errada.
Confundir eficiência com economizar apenas memória
Na questão conceitual, a alternativa A é o distrator mais provável. Ela mostra que o aluno reconhece um recurso importante, mas o transforma no único critério. Eu pergunto se a solução entrega o resultado correto e quanto tempo leva; depois, comparo situações em que economizar memória não resolve uma demora excessiva. A intervenção é nomear os critérios separadamente.
Usar a média ou a linguagem como atalho para decidir
Na tabela de tempos, o distrator mais provável é a alternativa C: escolher A por sua menor média aritmética. O erro revela dificuldade para considerar o tamanho da entrada e a escalabilidade. Também pode surgir a ideia de que sem conhecer a linguagem não há comparação possível. Peço que leiam cada linha e comparem os tempos diretamente: A vence na entrada pequena, mas B é mais rápido nas médias e grandes.
Inverter a comparação de passos ou ignorar que são comparáveis
Na questão dos 10 e 7 passos, o distrator mais provável é A, que afirma que B usa três passos a mais. Essa escolha revela uma inversão na subtração ou leitura apressada dos números. Outros erros possíveis são preferir o algoritmo mais longo ou dizer que não se pode comparar, apesar das condições dadas. Eu peço que a turma marque qual quantidade pertence a cada algoritmo antes de concluir.
Achar que acrescentar condições ou variáveis torna a solução melhor
Na questão de desempenho, a alternativa D é o distrator mais provável; na de média de notas, o distrator B indica a crença de que adicionar variáveis ajuda. O padrão é confundir mais componentes ou código mais elaborado com mais eficiência. Intervenho pedindo que identifiquem operações repetidas e expliquem o que cada condição ou variável acrescenta. Se não há benefício para a tarefa, adicionar elementos não é uma otimização.
Reduzir eficiência ao tempo ou ao tamanho do código
Na questão sobre organizar dados, o distrator B considera apenas tempo. Ele revela que o aluno compreendeu um aspecto central, mas deixou de lado os recursos. Em outra questão, tamanho e complexidade do código também podem ser confundidos com desempenho. Peço que comparem duas soluções em uma pequena matriz: correção, tempo e recursos. A matriz torna visível que um algoritmo pode ser rápido e consumir mais espaço, e que a resposta depende do critério avaliado.
Como ensinar eficiência de algoritmos passo a passo?
Começo com um problema familiar que possa ser resolvido por duas sequências de passos, como localizar um elemento em uma lista pequena. Primeiro, a turma confirma que ambas chegam à resposta; depois, compara etapas equivalentes. Em seguida, aumento a entrada e registro o que acontece, sem prometer que uma amostra pequena prova o desempenho em qualquer situação. Para o 8º e o 9º ano, apresento uma tabela como a dos algoritmos A e B e peço que comparem os valores por tamanho da entrada, não apenas por uma média. Só então amplio a conversa para tempo e recursos. As dicas das fichas orientam bem essa progressão: considerar correção e tempo, comparar os tempos de cada entrada, contar passos comparáveis, simplificar a lógica, reduzir operações repetidas e observar tempo e espaço de execução.
Na etapa de intervenção, organizo a turma em duplas e peço que cada estudante defenda um critério com evidências do enunciado. Quando surge a ideia de trocar a linguagem, pergunto que dado da tarefa sustentaria essa decisão; quando aparece a proposta de acrescentar condições, peço que identifiquem se isso reduz trabalho ou só aumenta a lógica. Finalizo com um exemplo de melhoria e outro em que uma alteração não traz benefício demonstrado. Essa sequência cabe em uma ou duas aulas, conforme a familiaridade da turma. Não começo por termos formais de complexidade: construo a necessidade de comparar soluções e, depois, introduzo vocabulário para descrever o que observaram.
Como avaliar: que tipo de questão usar em cada momento?
Para abrir uma prova ou fazer uma avaliação rápida, uso uma questão direta, curta, de leitura baixa e sem cálculo, como a definição de eficiência. Ela serve para prova, atividade, lição, diagnóstico, simulado e avaliação rápida, mas tem poder de discriminação baixo ou médio: identifica confusões gerais, não necessariamente análise aprofundada. Para consolidar, proponho a comparação de passos ou a tabela de tempos. A primeira é curta e não exige cálculo; a segunda leva tempo médio, tem leitura média e alto poder de discriminação, sendo especialmente útil para verificar se o aluno acompanha a mudança do desempenho com entradas maiores. Itens situacionais sobre otimização e recursos também funcionam em prova, atividade e diagnóstico, mas não são indicados nas fichas para lição ou avaliação rápida. Escolho o item pelo objetivo, não por parecer mais difícil.
O papel indicado nas fichas ajuda a montar uma progressão: as questões conceituais ocupam a abertura, a tabela e a comparação de passos favorecem consolidação, e as situações de simplificação ou recursos cumprem papel de progressão. Não transformo essa classificação em regra rígida; uso-a como orientação. Em sala, observo ainda leitura e tempo: uma questão de leitura média pede espaço para consultar dados, mesmo sem cálculo. Os itens de alto poder de discriminação são bons para separar níveis de compreensão, mas não devem ser a única evidência de aprendizagem. Para combinar formatos, posso selecionar questões no gerador de provas do GeraProva e ajustar a sequência ao conteúdo já trabalhado. O cadastro de professor é gratuito em cadastro grátis.
O que ensinar antes de eficiência de algoritmos?
Ensino primeiro o que é um algoritmo: uma sequência de instruções para resolver um problema. O link definição de algoritmo ajuda a separar algoritmo de software, uma confusão que atrapalha quando o estudante atribui desempenho à linguagem. Depois, trabalho estrutura de algoritmo, para que a turma reconheça passos, repetições e condições. Análise de algoritmos e análise de desempenho dão instrumentos para comparar soluções, enquanto tempo de execução permite discutir quanto trabalho uma solução exige. Também é útil retomar análise de dados, pois uma tabela de tempos só faz sentido quando os valores são lidos em conjunto e relacionados ao tamanho da entrada. As fichas apontam esses conhecimentos como pré-requisitos em diferentes itens; não significam que todos precisam ser ensinados com formalismo avançado antes de qualquer exemplo.
Posso introduzir o conceito em espiral: uma comparação simples de passos no 6º ano, seguida de uma conversa sobre desempenho e dados em séries posteriores. O importante é não cobrar que a turma interprete uma tabela de crescimento sem antes praticar leitura de linhas, colunas e unidades. Também verifico se entende que os algoritmos resolvem a mesma tarefa; sem isso, comparar eficiência é injusto. Se a turma já domina a ideia de sequência, mas ainda confunde execução correta com rapidez, retomo correção e tempo juntos. A revisão deve responder ao diagnóstico observado, não virar uma lista extensa de pré-aulas desconectadas.
Para onde o conceito de eficiência de algoritmos leva?
Depois de aprender a comparar soluções, os estudantes estão mais preparados para estudar algoritmo de ordenação. Ordenar dados oferece problemas concretos nos quais diferentes procedimentos podem produzir a mesma saída, mas gastar quantidades distintas de passos ou tempo. A eficiência também leva à otimização de algoritmos: revisar uma solução, localizar operações repetidas e buscar uma alternativa que preserve a correção com uso mais adequado de recursos. Essa transição deve manter explícito o problema original; uma versão que executa menos passos, mas deixa de ordenar corretamente, não é uma melhoria. No ensino fundamental, basta construir a comparação com evidências observáveis e linguagem acessível. Mais adiante, a turma poderá ampliar a análise de desempenho e discutir como o comportamento se altera quando a entrada cresce, sem confundir um teste isolado com uma garantia universal.
Uma boa ponte é pedir que os alunos expliquem por que certa mudança melhora ou não a solução. Reduzir operações repetidas pode ajudar, como sugere a questão da média; acrescentar variáveis sem necessidade não demonstra ganho. Ao estudar ordenação, os alunos podem registrar o número de comparações ou etapas em exemplos pequenos, sempre distinguindo a contagem observada de uma conclusão geral sobre qualquer tamanho de lista. Esse percurso cria um motivo para otimizar: não é deixar o código “mais bonito” por si só, mas resolver com correção e melhor desempenho segundo critérios definidos. Assim, eficiência deixa de ser uma definição decorada e se torna ferramenta para tomar decisões sobre soluções computacionais.
Que ligações existem com outros temas?
As questões associam o conceito ao tema transversal ciência e tecnologia e, em alguns casos, a contextos científicos, cotidianos ou abstratos. Posso relacioná-lo a situações em que processar mais dados aumenta o trabalho, desde que não invente uma comparação numérica que a atividade não oferece. A dimensão socioemocional aparece sobretudo em tomada de decisão e pensamento crítico: o estudante precisa justificar uma escolha, comparar evidências e rever uma hipótese quando os dados a contradizem. Isso não significa transformar toda questão em avaliação de comportamento; significa criar espaço para argumentação respeitosa e explicitação de critérios. Uma conversa sobre qual algoritmo escolher pode perguntar se a prioridade é tempo, memória ou equilíbrio entre recursos. Essa pergunta também mostra que decisões técnicas dependem do problema e das condições de uso, e não de uma preferência automática por código curto, linguagem popular ou maior complexidade.
Para manter a discussão ancorada, uso as características presentes nas fichas: eficiência de sistemas, análise de dados e tecnologia. Posso solicitar que grupos defendam uma alternativa e depois revisem a conclusão diante de uma entrada maior. Essa prática trabalha pensamento crítico sem exigir que todos concordem de início. Quando o foco é tomada de decisão, peço uma justificativa curta que mencione o critério usado. A habilidade socioemocional é observada na disposição para comparar argumentos e decidir com base nas informações disponíveis, não na resposta específica escolhida. A conversa também aproxima Computação de situações reais: recursos são limitados, entradas variam e uma solução deve atender ao problema. Esse vínculo dá sentido ao conteúdo sem afirmar que as questões tratam de contextos que não aparecem nelas.
Quais questões ajudam a diagnosticar eficiência de algoritmos?
As sete questões a seguir percorrem compreensão, comparação, análise e avaliação, com diferentes níveis de leitura e tempo. Não são um roteiro obrigatório nem um conjunto para aplicar inteiro em uma avaliação rápida. Eu seleciono conforme o que quero observar: a questão conceitual abre a conversa; a tabela examina interpretação e escalabilidade; a comparação de passos verifica uma condição simples; e os itens de otimização mostram como o estudante pensa sobre mudanças na solução. Em cada alternativa incorreta, explicito o tipo de raciocínio que pode estar por trás da escolha, sem tratar um único erro como prova definitiva de desconhecimento. Depois de corrigir, vale pedir ao aluno que explique a evidência que o levou à resposta. Esse retorno transforma o item em instrumento diagnóstico e indica se devo retomar tempo, recursos, passos ou análise de dados.
Questão 1 — Quando um algoritmo é considerado eficiente?
- ❌ A) Quando utiliza a menor quantidade de memória possível. Memória é um critério, mas não o único; a escolha revela uma visão incompleta da eficiência.
- ✅ B) Quando resolve o problema de forma correta e rápida. A resposta considera correção e tempo aceitável.
- ❌ C) Quando não apresenta erros de sintaxe. Isso confunde a implementação sem erros sintáticos com o desempenho; revela mistura entre correção formal do código e eficiência.
- ❌ D) Quando é escrito em uma linguagem popular. Popularidade não determina eficiência; a escolha sugere atribuição automática de desempenho à linguagem.
- ❌ E) Quando é complexo e difícil de entender. Complexidade visual não é eficiência; revela associação entre dificuldade e qualidade.
Gabarito: B. Peço que o estudante justifique a resposta mencionando correção e tempo, e não apenas a palavra “rápido”.
Questão 2 — O que mostram os tempos dos algoritmos A e B?
Entrada pequena — A: 0,2 s; B: 0,4 s. Entrada média — A: 1,1 s; B: 0,9 s. Entrada grande — A: 5,6 s; B: 4,8 s. Qual conclusão é correta?
- ❌ A) Nenhum pode ser comparado sem saber a linguagem de implementação. Os dados permitem comparar os tempos observados; essa escolha revela dependência excessiva da linguagem.
- ✅ B) B é mais eficiente para entradas grandes; A aumenta mais com o tamanho. B leva menos tempo nas entradas média e grande e apresenta melhor desempenho nos dados maiores.
- ❌ C) A é preferível porque tem menor tempo médio aritmético. A média não responde à pergunta sobre desempenho conforme a entrada cresce; revela uso de um resumo que apaga a escala.
- ❌ D) A é sempre mais rápido. A vence somente na entrada pequena; a escolha revela generalização a partir de um único caso.
- ❌ E) Os dois têm desempenho idêntico. Os valores são diferentes; essa opção revela leitura insuficiente da tabela.
Gabarito: B. A dica é comparar os tempos em cada tamanho de entrada.
Questão 3 — Qual algoritmo usa menos passos comparáveis?
Dois algoritmos resolvem o mesmo problema e usam o mesmo tipo de passo: A tem 10 passos e B tem 7. Considerando apenas a quantidade de passos, qual é mais eficiente?
- ❌ A) B usa três passos a mais. B tem sete, portanto usa três a menos; revela inversão na comparação ou leitura apressada.
- ❌ B) O algoritmo A é mais eficiente. A usa mais passos; a resposta pode indicar que o estudante inverteu a relação entre quantidade e eficiência.
- ❌ C) Não é possível comparar. O enunciado informa que problema e tipo de passo são comparáveis; essa escolha mostra que a condição de comparação passou despercebida.
- ❌ D) Os dois são igualmente eficientes. Dez e sete são quantidades diferentes; revela que a diferença não foi considerada.
- ✅ E) O algoritmo B é mais eficiente. Nas condições dadas, B usa menos passos comparáveis.
Gabarito: E. A comparação só vale porque o enunciado delimita o critério.
Questão 4 — O que considerar para melhorar um algoritmo que demora?
- ❌ A) Aumentar a quantidade de dados processados. Mais dados podem piorar a demora; revela confusão entre ampliar a entrada e otimizar.
- ✅ B) Simplificar a lógica do algoritmo. Uma lógica mais simples pode melhorar a eficiência, desde que preserve a solução correta.
- ❌ C) Trocar a linguagem sem motivo. A troca não garante melhoria; revela solução baseada em associação, sem evidência.
- ❌ D) Adicionar mais condições. Isso pode complicar e lentificar; é o distrator mais provável e revela a crença de que adicionar lógica sempre ajuda.
- ❌ E) Testar apenas com dados pequenos. É preciso observar diferentes escalas; revela generalização a partir de casos limitados.
Gabarito: B. A simplificação precisa ser avaliada, não presumida.
Questão 5 — Como melhorar a eficiência de um algoritmo que calcula médias?
- ✅ A) Reduzir o número de operações repetidas. Menos repetição pode reduzir trabalho sem alterar o resultado.
- ❌ B) Adicionar mais variáveis ao código. Variáveis desnecessárias podem aumentar a complexidade; a escolha revela confusão entre quantidade de elementos e eficiência.
- ❌ C) Usar apenas números inteiros nas notas. Isso pode limitar a precisão da média; revela que o estudante prioriza uma alteração inadequada ao problema.
- ❌ D) Incluir comentários no código. Comentários ajudam a compreensão, mas não reduzem por si só operações de execução; revela mistura entre legibilidade e desempenho.
- ❌ E) Aumentar os dados de entrada. Mais dados podem tornar o processamento mais lento; revela confusão entre o tamanho da tarefa e sua otimização.
Gabarito: A. A turma deve localizar trabalho repetido e preservar a precisão da resposta.
Questão 6 — O que considerar ao avaliar um algoritmo que organiza dados?
- ❌ A) Apenas a quantidade de dados. O tamanho da entrada importa, mas não informa sozinho o desempenho; revela análise incompleta.
- ❌ B) Apenas o tempo de execução. Tempo é central, mas há outros recursos; essa é a escolha mais provável e revela uma visão de eficiência restrita ao relógio.
- ✅ C) Tempo de execução e recursos. A avaliação considera quanto tempo e quais recursos são usados.
- ❌ D) Apenas a complexidade do código. A aparência ou dificuldade do código não substitui a análise de desempenho; revela confusão entre forma e custo.
- ❌ E) Apenas o tamanho do código. Código curto não garante execução eficiente; revela uso de um indicador visual inadequado.
Gabarito: C. A dica é considerar tempo e espaço de execução.
Questão 7 — Qual é a principal característica de um algoritmo eficiente?
- ❌ A) Deve ser longo e complexo. Comprimento e dificuldade não demonstram eficiência; revela associação entre complexidade visual e qualidade.
- ✅ B) Deve resolver o problema em um curto espaço de tempo. A alternativa identifica o tempo como característica central, embora a avaliação completa também considere recursos.
- ❌ C) Deve ser escrito em qualquer linguagem de programação. A possibilidade de tradução entre linguagens não define eficiência; revela confusão sobre o critério.
- ❌ D) Deve usar o máximo de recursos disponíveis. Eficiência não significa consumir o máximo; esse é o distrator mais provável e revela inversão sobre uso de recursos.
- ❌ E) Deve ser impossível de entender. Clareza é útil; a opção revela que o aluno associa dificuldade a sofisticação.
Gabarito: B. Depois, amplio a resposta: rapidez é importante, mas não é o único critério de eficiência.
Quais dúvidas frequentes os professores têm sobre eficiência de algoritmos?
As dúvidas mais comuns envolvem o nível de formalismo, a escolha de exemplos e a interpretação de respostas parcialmente corretas. Não é necessário começar com notação matemática para ensinar o conceito: posso trabalhar com passos, tempos observados e recursos nomeados. O cuidado principal é não apresentar uma regra simplista, como “menos linhas sempre é melhor” ou “o mais rápido em um teste é sempre o melhor”. Também vale diferenciar uma questão introdutória de uma avaliação completa: um item direto pode verificar compreensão inicial, mas não substitui a análise de dados ou de trade-offs. Abaixo, respondo a perguntas que ajudam a planejar o ensino e a usar as alternativas como evidência pedagógica, respeitando o ano escolar e o que foi efetivamente ensinado.
Preciso ensinar complexidade assintótica no 6º ano?
Não é necessário para trabalhar a comparação inicial. Posso usar passos equivalentes e exemplos pequenos, deixando claro que a conclusão vale para as condições apresentadas. O vocabulário formal pode ser aprofundado posteriormente.
Um algoritmo com menos passos é sempre mais eficiente?
Não. A comparação por passos é válida quando os passos são comparáveis e ambos resolvem o mesmo problema, como informa a questão de 10 e 7 passos. Em outros casos, também preciso considerar tempo, memória e tamanho da entrada.
Como interpretar quem marca a alternativa de memória ou tempo?
Como uma pista, não como diagnóstico definitivo. A escolha pode indicar que o estudante reconhece um critério, mas o trata como único. Peço justificativa e proponho uma comparação que explicite outros recursos.
Uma questão sem cálculo ainda avalia análise?
Sim. A questão da tabela não exige cálculo, mas pede que o aluno interprete os dados e compare o desempenho conforme a entrada cresce. A exigência cognitiva está na leitura e na conclusão, não necessariamente em fazer contas.
Como diferenciar eficiência de legibilidade?
Legibilidade trata de quão compreensível é a solução; eficiência trata dos recursos necessários para executá-la corretamente. As duas qualidades podem importar, mas comentários ou código curto não provam, por si, melhor desempenho.
Que questão escolher para uma avaliação rápida?
Uma questão direta, de leitura baixa e resolução curta pode verificar a ideia geral. Para observar análise mais profunda, reservo tempo para uma tabela ou situação de otimização, em vez de exigir que tudo caiba em poucos minutos.
Se você também quer transformar objetivos de aprendizagem em avaliações alinhadas ao que ensinou, conheça o GeraProva e experimente o gerador de provas; o cadastro de professor é gratuito.
O GeraProva busca questões com gabarito comentado e BNCC no acervo e monta a prova pronta para imprimir.
Criar minha prova