<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/"
    xmlns:atom="http://www.w3.org/2005/Atom" xmlns:media="http://search.yahoo.com/mrss/" version="2.0">
    <channel>
        
        <title>
            <![CDATA[ Resolução de problemas - freeCodeCamp.org ]]>
        </title>
        <description>
            <![CDATA[ Aprenda a codificar - de graça. Tutoriais de programação em Python, JavaScript, Linux e muito mais. ]]>
        </description>
        <link>https://www.freecodecamp.org/portuguese/news/</link>
        <image>
            <url>https://cdn.freecodecamp.org/universal/favicons/favicon.png</url>
            <title>
                <![CDATA[ Resolução de problemas - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/portuguese/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sun, 07 Jun 2026 14:16:12 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/portuguese/news/tag/resolucao-de-problemas/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Como solucionar problemas de programação com um método simples em quatro etapas ]]>
                </title>
                <description>
                    <![CDATA[ Restavam quinze minutos. Eu sabia que não conseguiria. Passei dois meses estudando para minha primeira entrevista técnica. Achei que estava preparada, mas, quando a entrevista estava chegando ao fim, percebi: eu não tinha a menor ideia de como resolver os problemas de programação. Entre todos os tutoriais que vi quando ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/como-solucionar-problemas-de-programacao-com-um-metodo-simples-em-quatro-etapas/</link>
                <guid isPermaLink="false">6467c5abae2709063d5da45d</guid>
                
                    <category>
                        <![CDATA[ Resolução de problemas ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Giálisson Rocha ]]>
                </dc:creator>
                <pubDate>Thu, 15 Jun 2023 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2023/06/iStock-527234840.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/how-to-solve-coding-problems/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to Solve Coding Problems with a Simple Four Step Method</a>
      </p><p>Restavam quinze minutos. Eu sabia que não conseguiria.</p><p>Passei dois meses estudando para minha primeira entrevista técnica.</p><p>Achei que estava preparada, mas, quando a entrevista estava chegando ao fim, percebi: eu não tinha a menor ideia de como resolver os problemas de programação.</p><p>Entre todos os tutoriais que vi quando estava aprendendo a programar, nenhum deles incluía uma abordagem para resolver problemas de programação.</p><p>Eu tinha que encontrar um método para resolver problemas – minha carreira como desenvolvedora dependia disso.</p><p>Imediatamente, comecei a pesquisar métodos. Encontrei um. De fato, o que descobri foi uma estratégia inestimável. Era um método em quatro etapas testado pelo tempo que, de algum modo, estava fora do radar no ecossistema de desenvolvedores.</p><p>Neste artigo, abordarei esse método de solução de problemas em quatro etapas que você pode usar para começar a resolver problemas de programação com confiança.</p><p>A solução de problemas de programação não é apenas parte do processo de entrevista de emprego para desenvolvedores – é o que um desenvolvedor faz o dia todo. Afinal de contas, <em>escrever código é resolver problemas.</em></p><h2 id="um-m-todo-para-solucionar-problemas">Um método para solucionar problemas</h2><p>Esse método foi extraído do livro <em><em>How to Solve It</em></em>, de George Pólya. Ele foi lançado originalmente em 1945 e já vendeu mais de um milhão de cópias.</p><p>Seu método de solução de problemas tem sido usado e ensinado por muitos programadores, desde professores de ciência da computação (veja o curso <em>Intro to CS</em>, da Udacity, ministrado pelo professor David Evans) até professores modernos de desenvolvimento da Web, como Colt Steele.</p><p>Vamos solucionar um problema simples de programação usando o método de solução de problemas em quatro etapas. Isso nos permite ver o método em ação à medida que aprendemos. Usaremos JavaScript como nossa linguagem de escolha. O problema é o seguinte:</p><p>Crie uma função que some dois números e retorne esse valor.<br><br>Há quatro etapas no método de solução de problemas:</p><ol><li>Compreender o problema.</li><li>Elaborar um plano.</li><li>Executar o plano.</li><li>Olhar para trás.</li></ol><p>Vamos começar com a primeira etapa.</p><h2 id="etapa-1-entender-o-problema">Etapa 1: entender o problema</h2><p>Ao receber um problema de codificação em uma entrevista, é tentador se apressar em programar. Isso é difícil de evitar, especialmente se você tiver um limite de tempo.</p><p>Entretanto, tente resistir a esse impulso. Certifique-se de que você realmente entendeu o problema antes de começar a resolvê-lo.</p><p>Leia o problema. Se estiver em uma entrevista, você pode ler o problema em voz alta, se isso o ajudar a se acalmar.</p><p>Ao ler o problema, esclareça qualquer parte dele que você não tenha entendido. Se estiver em uma entrevista, você pode fazer isso perguntando ao entrevistador sobre a descrição do problema. Se estiver sozinho, pense e/ou pesquise no Google partes da pergunta que talvez não tenha compreendido.</p><p><strong>Essa primeira etapa é fundamental, pois, muitas vezes, não dedicamos tempo para entender completamente o problema. Se você não entender completamente o problema, será muito mais difícil resolvê-lo.</strong></p><p>Para ajudá-lo a entender melhor o problema, pergunte a si mesmo:</p><h3 id="quais-s-o-as-entradas">Quais são as entradas?</h3><p>Que tipos de entradas serão usadas nesse problema? Neste exemplo, as entradas são os argumentos que nossa função receberá.</p><p>Só de ler a descrição do problema até agora, sabemos que as entradas serão números. Porém, para sermos mais específicos sobre quais serão as entradas, podemos perguntar:</p><p>"As entradas serão sempre apenas dois números? O que deve acontecer se nossa função receber como entrada <em>três</em> números?"</p><p>Aqui, poderíamos pedir esclarecimentos ao entrevistador ou analisar melhor a descrição do problema.</p><p>O problema de progamação pode ter uma nota dizendo: "Você só deve esperar duas entradas para a função". Se for esse o caso, você sabe como proceder. Você pode ser mais específico, pois, provavelmente, perceberá que precisa fazer mais perguntas sobre os tipos de entradas que pode estar recebendo.</p><p>As entradas serão sempre números? O que a nossa função deve fazer se recebermos as entradas "a" e "b"? Esclareça se nossa função sempre receberá números ou não.</p><p>Opcionalmente, você pode anotar as possíveis entradas em um comentário de código para ter uma ideia de como elas serão:</p><p><code>//entradas: 2, 4</code></p><p>Depois, pergunte:</p><h3 id="quais-s-o-as-sa-das">Quais são as saídas?</h3><p>O que essa função retornará? Nesse caso, a saída será um número que é o resultado das duas entradas de números. Certifique-se de entender quais serão seus resultados.</p><h3 id="crie-exemplos-"><strong><strong>Cr</strong>ie exemplos<strong>.</strong></strong></h3><p>Depois de entender o problema e conhecer as possíveis entradas e saídas, você pode começar a trabalhar em alguns exemplos concretos.</p><p>Os exemplos também podem ser usados como verificações de integridade para testar seu eventual problema. A maioria dos editores de desafios de código em que você trabalhará (seja em uma entrevista ou apenas usando um site como o Codewars ou o HackerRank) tem exemplos ou casos de teste já escritos para você. Mesmo assim, escrever seus próprios exemplos pode ajudá-lo a consolidar sua compreensão do problema.</p><p>Comece com um ou dois exemplos simples de possíveis entradas e saídas. Vamos voltar à nossa função de adição.</p><p>Vamos chamar nossa função de "add" (em português, adicionar ou somar).</p><p>O que é um exemplo de entrada? Um exemplo de entrada pode ser:</p><p><code>// add(2, 3)</code></p><p>Qual é a saída para isso? Para escrever o exemplo de saída, podemos escrever:</p><p><code>// add(2, 3) ---&gt; 5</code></p><p>Isso indica que nossa função receberá uma entrada de 2 e 3 e retornará 5 como saída.</p><h3 id="crie-exemplos-complexos-">Crie exemplos complexos<strong><strong>.</strong></strong></h3><p>Ao analisar exemplos mais complexos, você pode reservar um tempo para procurar casos extremos que talvez precisem ser considerados.</p><p>Por exemplo, o que devemos fazer se nossas entradas forem <em>strings</em> em vez de números? Se tivermos como entrada duas <em>strings</em>, por exemplo, add('a', 'b'), como proceder?</p><p>Seu entrevistador talvez diga para retornar uma mensagem de erro se houver entradas que não sejam números. Nesse caso, você pode adicionar um comentário de código para lidar com a questão, se ajudar a lembrar que isso é algo necessário.</p><pre><code class="language-javascript">// retornar erro se as entradas não forem números.</code></pre><p>Seu entrevistador também pode dizer a você para presumir que suas entradas serão sempre números e, nesse caso, você não precisará escrever nenhum código adicional para lidar com esse caso extremo de entrada específico.</p><p>Se você não tem um entrevistador e está apenas resolvendo esse problema, o problema pode dizer o que acontece quando você insere dados inválidos.</p><p>Por exemplo, alguns problemas dirão: "Se houver zero entradas, retorne indefinido". Para casos como esse, você pode, opcionalmente, escrever um comentário.</p><p><code>// Verifique se não há entradas.</code></p><p><code>// Se não houver entradas, retorne indefinido.</code></p><p>Para nossos propósitos, assumiremos que nossas entradas serão sempre números. Porém, em geral, é bom pensar em casos extremos.</p><p>O professor de ciência da computação David Evans recomenda escrever o que os desenvolvedores chamam de código <em>defensivo</em>. Pense no que poderia dar errado e em como seu código poderia se defender contra possíveis erros.</p><p>Antes de passarmos para a etapa 2, vamos resumir a etapa 1: entender o problema:</p><p><code>- Leia o problema.</code></p><p><code>- Quais são as entradas?</code></p><p><code>- Quais são as saídas?</code></p><p><code>- Crie exemplos simples. Em seguida, crie exemplos mais complexos.</code></p><h2 id="etapa-2-elaborar-um-plano-para-solucionar-o-problema">Etapa 2:<strong><strong> </strong></strong>elaborar um plano para solucionar o problema</h2><p>Em seguida, elabore um plano de como resolverá o problema. Ao elaborar um plano, escreva-o em pseudocódigo.</p><p>Pseudocódigo é uma descrição em linguagem simples das etapas de um algoritmo. Em outras palavras, o pseudocódigo é o plano passo a passo de como resolver o problema.</p><p>Escreva as etapas que você precisa seguir para resolver o problema. Para um problema mais complicado, você teria mais etapas. Para esse problema, você poderia escrever:</p><p><code>// Crie uma variável de soma.</code></p><p><code>// Adicione a primeira entrada à segunda entrada usando o operador de adição.</code></p><p><code>// Armazene o valor de ambas as entradas na variável de soma.</code></p><p><code>// Retorne como saída a variável de soma.</code><br><br>Agora, você tem seu plano passo a passo para resolver o problema.<br><br>Para problemas mais complexos, o professor Evans observa: "Considere sistematicamente como um ser humano resolve o problema". Ou seja, esqueça por um momento como seu código pode resolver o problema e pense em como você o resolveria como um ser humano. Isso pode ajudá-lo a ver as etapas com mais clareza.</p><h2 id="etapa-3-executar-o-plano-resolver-o-problema-">Etapa 3:<strong><strong> </strong></strong>executar o plano (resolver o problema)</h2><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/06/hand-2208491_960_720.jpg" class="kg-image" alt="hand-2208491_960_720" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/06/hand-2208491_960_720.jpg 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/06/hand-2208491_960_720.jpg 960w" sizes="(min-width: 720px) 720px" width="960" height="540" loading="lazy"></figure><p>A próxima etapa da estratégia de solução de problemas é resolver o problema. Usando seu pseudocódigo como guia, escreva seu código real.</p><p>O professor Evans sugere que você se concentre em uma solução simples e mecânica. Quanto mais fácil e simples for a solução, maior a probabilidade de você programá-la corretamente.</p><p>Usando nosso pseudocódigo, poderíamos escrever o seguinte:</p><pre><code class="language-javascript">function add(a, b) {
 const sum = a + b;
 return sum;
}</code></pre><p>O professor Evans acrescenta: lembre-se de não <em>otimizar prematuramente</em>. Ou seja, você pode ficar tentado a começar a dizer: "Espere, estou fazendo isso e o código será ineficiente!"</p><p>Primeiro, pegue sua solução simples e mecânica.</p><p>Se você não conseguir resolver todo o problema, o que fazer? Caso haja uma parte dele que você ainda não sabe como resolver, como proceder?</p><p>Colt Steele dá um ótimo conselho aqui: se você não conseguir resolver parte do problema, ignore a parte difícil que está atrapalhando. Em vez disso, concentre-se em tudo o mais que você pode começar a escrever.</p><p>Ignore temporariamente a parte difícil do problema que você não está entendendo bem e escreva as outras partes. Depois de fazer isso, volte à parte mais difícil.</p><p>Isso permite que você termine pelo menos uma <em>parte</em> do problema. Muitas vezes, você perceberá como lidar com a parte mais difícil do problema quando voltar a ela.</p><h2 id="etapa-4-analisar-o-que-voc-fez">Etapa 4: analisar o que você fez</h2><p>Quando sua solução estiver funcionando, reserve um tempo para refletir sobre ela e descobrir como fazer melhorias. Esse pode ser o momento de refatorar sua solução para torná-la mais eficiente.</p><p>Ao analisar seu trabalho, aqui estão algumas perguntas que Colt Steele sugere que você faça a si mesmo para descobrir como pode melhorar sua solução:</p><ul><li>Você pode obter o resultado de modo diferente? Que outras abordagens são viáveis?</li><li>Você consegue entendê-lo em uma olhada rápida? Faz sentido?</li><li>Você pode usar o resultado ou o método em outro problema?</li><li>Você pode melhorar o desempenho de sua solução?</li><li>Você consegue pensar em outras maneiras de refatorar?</li><li>Como outras pessoas resolveram esse problema?</li></ul><p>Uma maneira de refatorar nosso problema para tornar nosso código mais conciso é remover nossa variável e usar um retorno implícito:</p><pre><code class="language-javascript">function add(a, b) {
 return a + b;
}</code></pre><p>Com a etapa 4, seu problema pode nunca parecer concluído. Até mesmo os grandes desenvolvedores ainda escrevem códigos que, mais tarde, olham e querem mudar. Essas são perguntas de orientação que podem ajudá-lo.</p><p>Se ainda tiver tempo em uma entrevista, você pode passar por essa etapa e melhorar sua solução. Se estiver programando por conta própria, reserve um tempo para revisar essas etapas.</p><p>Quando estou praticando programar por minha conta, quase sempre observo as soluções existentes que são mais elegantes ou eficazes do que as que eu criei.</p><h2 id="conclus-o">Conclusão</h2><p>Neste artigo, examinamos a estratégia de solução de problemas em quatro etapas para resolver problemas de programação.</p><p>Vamos analisá-las aqui:</p><ul><li>Etapa 1: <strong>entender o problema</strong></li><li>Etapa 2: <strong>criar um plano passo a passo de como você resolverá o problema</strong></li><li>Etapa 3: <strong>executar o plano</strong> e escrever o código real</li><li>Etapa 4: <strong>analisar o que foi feito</strong> e, possivelmente, refatorar sua solução se ela puder ser melhor.</li></ul><p>Praticar esse método de resolução de problemas me ajudou imensamente em minhas entrevistas técnicas e em meu trabalho como desenvolvedora.<br><br>Se você não se sentir confiante quando se trata de resolver problemas de programação, lembre-se de que a solução de problemas é uma habilidade que qualquer pessoa pode aprimorar com o tempo e a prática.</p><p>Boa sorte!</p><h3 id="se-voc-gostou-deste-artigo-participe-do-clube-de-programa-o-da-autora-onde-os-participantes-enfrentam-desafios-de-programa-o-juntos-todos-os-domingos-e-apoiam-uns-aos-outros-medida-que-aprendem-novas-tecnologias-">Se você gostou deste artigo, participe do <a href="https://madisonkanna.us14.list-manage.com/subscribe/post?u=323fd92759e9e0b8d4083d008&amp;id=033dfeb98f"><strong><strong>c</strong>lube de<strong> </strong></strong>programação</a> da autora, onde os participantes enfrentam desafios de programação juntos todos os domingos e apoiam uns aos outros à medida que aprendem novas tecnologias.<br></h3><h3 id="se-voc-tiver-coment-rios-ou-perguntas-sobre-esta-publica-o-sinta-se-vontade-para-enviar-um-tweet-para-a-autora-">Se você tiver comentários ou perguntas sobre esta publicação, sinta-se à vontade para enviar um tweet para a <a href="https://twitter.com/Madisonkanna">autora</a><strong><strong>.</strong></strong></h3> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
