<?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[ Jorge Felipe Ribeiro Portela - 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[ Jorge Felipe Ribeiro Portela - freeCodeCamp.org ]]>
            </title>
            <link>https://www.freecodecamp.org/portuguese/news/</link>
        </image>
        <generator>Eleventy</generator>
        <lastBuildDate>Sat, 16 May 2026 19:16:34 +0000</lastBuildDate>
        <atom:link href="https://www.freecodecamp.org/portuguese/news/author/jorge-portela/rss.xml" rel="self" type="application/rss+xml" />
        <ttl>60</ttl>
        
            <item>
                <title>
                    <![CDATA[ Como criar tabelas responsivas com CSS puro usando o Grid Layout ]]>
                </title>
                <description>
                    <![CDATA[ Versão resumida A maneira mais popular de exibir uma coleção de dados semelhantes é pelo uso de tabelas, mas a tabela do HTML têm a desvantagem de ser difícil de tornar responsivas. Neste artigo, eu uso o Grid Layout do CSS e suas propriedades (sem usar o JavaScript) para criar ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/como-criar-tabelas-responsivas-com-css-puro-usando-o-grid-layout/</link>
                <guid isPermaLink="false">63e9264f58018c06027be980</guid>
                
                    <category>
                        <![CDATA[ Design responsivo ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Jorge Felipe Ribeiro Portela ]]>
                </dc:creator>
                <pubDate>Mon, 08 May 2023 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/1_CthvMCprY75MLB_q8BygXg.png" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/https-medium-com-nakayama-shingo-creating-responsive-tables-with-pure-css-using-the-grid-layout-module-8e0ea8f03e83/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to create responsive tables with pure CSS using Grid Layout Module</a>
      </p><h3 id="vers-o-resumida"><strong>Versão resumida</strong></h3><p>A maneira mais popular de exibir uma coleção de dados semelhantes é pelo uso de tabelas, mas a tabela do HTML têm a desvantagem de ser difícil de tornar responsivas.</p><p>Neste artigo, eu uso o Grid Layout do CSS e suas propriedades (sem usar o JavaScript) para criar tabelas que encapsulam colunas, dependendo da largura da tela, com ainda mais mudanças para um <em>card</em> baseado em layout para telas pequenas.</p><p>Para os impacientes, vejam no Codepen a seguir a implementação de um exemplo.</p><figure class="kg-card kg-embed-card"><iframe id="cp_embed_LMLeRZ" src="https://codepen.io/ShingoNakayama/embed/preview/LMLeRZ?default-tabs=html%2Cresult&amp;height=300&amp;host=https%3A%2F%2Fcodepen.io&amp;slug-hash=LMLeRZ" title="Responsive tables with pure CSS using Grid Layout Module" scrolling="no" frameborder="0" height="300" allowtransparency="true" class="cp_embed_iframe" style="width: 100%; overflow: hidden;" loading="lazy"></iframe></figure><h3 id="uma-pequena-hist-ria-sobre-as-tabelas-responsivas-do-html"><strong>Uma pequena história sobre as tabelas responsivas do HTML </strong></h3><p>Tabelas responsivas não são um novo tópico. Muitas soluções já foram propostas. <strong><a href="https://css-tricks.com/responsive-data-table-roundup/">Responsive Data Table Roundup</a> </strong>(Resumo sobre tabelas responsivas de dados, em português), publicado pela primeira vez em 2012 por Chris Coyier, faz um bom resumo de modo muito claro (incluindo uma atualização de 2018).</p><p><a href="https://css-tricks.com/responsive-data-table-roundup/"><strong>Really Responsive Tables using CSS3 Flexbox</strong></a> (Tabelas realmentes responsivas usando CSS3 Flexbox, em português) por Vasan Subramanian, mostra uma ideia de agrupar colunas, implementada com o Flexbox.</p><p>Embora muitas ideias interessantes tenham sido propostas, bibliotecas como &nbsp;o <a href="https://getbootstrap.com/docs/4.0/content/tables/#responsive-tables">Bootstrap</a> optam pela rolagem horizontal para telas pequenas.</p><p>Como agora temos o CSS Grid, penso que poderíamos ter uma alternativa comum para uma melhor rolagem horizontal.</p><h3 id="tabelas-em-html"><strong>Tabelas em HTML </strong></h3><p>Iniciando pelo básico, uma tabela no HTML é um formato de layout para mostrar uma coleção de itens através de uma matriz de linhas e colunas. Os itens são dispostos em linhas, com os mesmos atributos de dados nas mesmas colunas, com as linhas frequentemente ordenadas com um ou mais atributos ordenáveis. O formato oferece uma visão panorâmica para compreender e examinar rapidamente grandes quantidades de dados.</p><p>Por exemplo, aqui está uma tabela hipotética de detalhes do pedido de compra, que você pode ver em uma aplicação de compras.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/1_B78yFFUVc1X8uEp_gVLcNw.png" class="kg-image" alt="1_B78yFFUVc1X8uEp_gVLcNw" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/1_B78yFFUVc1X8uEp_gVLcNw.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/1_B78yFFUVc1X8uEp_gVLcNw.png 800w" sizes="(min-width: 720px) 720px" width="800" height="57" loading="lazy"><figcaption>Detalhes de uma tabela de pedidos de compra</figcaption></figure><p>Um item, neste caso, é um detalhe do pedido de compra, que possui atributos como número da peça, descrição da peça etc.</p><p>Ao usar tabelas em HTML, o layout dos dados é codificado como linhas e colunas (<code>&lt;tr&gt;</code> e <code>&lt;td&gt;</code>, respectivamente). Isso pode ser suficiente para uso por uma tela que se encaixe em toda a largura da tabela, mas, na realidade, não se aplica aos inúmeros tipos de dispositivos que existem hoje. Em termos de <em>hacks</em>, você pode alterar a propriedade de exibição das tabelas e usar qualquer layout que possa fazer com CSS em geral, mas não parece semanticamente correto. &nbsp;</p><h3 id="tabelas-redefinidas-ou-uma-cole-o-de-itens-"><strong>Tabelas redefinidas (ou uma c</strong>oleção de itens<strong>)</strong></h3><p>Vamos iniciar redefinindo como os dados da tabela devem ser expressos em HTML.</p><p>Conforme falado anteriormente, como os dados da tabela são essencialmente uma coleção ordenada de itens, parece natural usar listas ordenadas. Além disso, como as tabelas são frequentemente usadas para gerar descrições textuais, parece natural incluir isso uma seção, mas isso pode depender do contexto de como os dados da tabela são usados.</p><pre><code class="language-html">&lt;section&gt;
 &lt;ol&gt;
  &lt;!-- O primeiro item da lista é o cabeçalho da tabela --&gt;
  &lt;li&gt;
   &lt;div&gt;#&lt;/div&gt;
   &lt;!-- Envolva atributos semanticamente semelhantes como uma hierarquia de divs --&gt;
   &lt;div&gt;
    &lt;div&gt;Número da peça&lt;/div&gt;
    &lt;div&gt;Descrição da peça&lt;/div&gt;
   &lt;/div&gt;
   ...
  &lt;/li&gt;
  &lt;!-- O resto dos itens da lista são os dados de fato --&gt;
  &lt;li&gt;
   &lt;div&gt;1&lt;/div&gt;
   &lt;!-- Informações relacionadas ao grupo de peças --&gt;
   &lt;div&gt;
    &lt;div&gt;100-10001&lt;/div&gt;
    &lt;div&gt;Descrição das peças&lt;/div&gt;
   &lt;/div&gt;
  ...
  &lt;/li&gt;
 ...
 &lt;/ol&gt;
&lt;/section&gt;</code></pre><p>As <code>&lt;div&gt;</code> "puras" são usadas para expressar atributos de itens, uma vez que o HTML5 não define uma tag apropriada para isso. A chave aqui é expressar semanticamente atributos similares como um hierarquia de <code>&lt;div&gt;</code>. Essa estrutura será usada ao definir como os dados devem ser dispostos. Voltarei nesse ponto na próxima seção de tópicos de estilos.</p><p>Quanto aos dados reais dentro do elemento <code>&lt;div&gt;</code>, o primeiro item da lista é o cabeçalho e o restante dos itens são os dados principais.</p><p>Agora, é o momento de falar sobre estilizar os itens de estilos com o CSS Grid.</p><h3 id="estilizando-cole-es-de-itens"><strong>Estilizando coleções de itens</strong></h3><p>A ideia básica aqui é exibir todos os atributos de itens como uma tabela normal, se a largura de exibição permitir. Esse layout ajuda a poder ver o máximo de itens (<em>linhas</em>) possíveis.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/1_6sZipUcqB3hru4Q5r0kORw.png" class="kg-image" alt="1_6sZipUcqB3hru4Q5r0kORw" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/1_6sZipUcqB3hru4Q5r0kORw.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/1_6sZipUcqB3hru4Q5r0kORw.png 800w" sizes="(min-width: 720px) 720px" width="800" height="48" loading="lazy"><figcaption>Tabela completa</figcaption></figure><p>Quando a largura da exibição fica mais estreita, alguns atributos são empilhados verticalmente para economizar espaço horizontal. A escolha dos atributos empilhados deve ser baseada em:</p><ol><li>Os atributos fazem sentido quando estão empilhados ? </li><li>Quando empilhados verticalmente, o espaço horizontal é preservado? </li></ol><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/1_llLsnXzdnBBfMRPqoKNBmw.png" class="kg-image" alt="1_llLsnXzdnBBfMRPqoKNBmw" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/1_llLsnXzdnBBfMRPqoKNBmw.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/1_llLsnXzdnBBfMRPqoKNBmw.png 800w" sizes="(min-width: 720px) 720px" width="800" height="110" loading="lazy"><figcaption>Agrupando a tabela 1: comece agrupando as colunas que precisam de pouca largura e dê espaço para as outras colunas</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/1_DdQ-n4VzeGU1EzhRKdHj8w.png" class="kg-image" alt="1_DdQ-n4VzeGU1EzhRKdHj8w" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/1_DdQ-n4VzeGU1EzhRKdHj8w.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/1_DdQ-n4VzeGU1EzhRKdHj8w.png 800w" sizes="(min-width: 720px) 720px" width="800" height="116" loading="lazy"><figcaption>Agrupando a tabela 2: agrupe "Part Description" (descrição da peça) para poder ver a descrição</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/1_ys0ukWXXtbWhVyXTD9E0Zw.png" class="kg-image" alt="1_ys0ukWXXtbWhVyXTD9E0Zw" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/1_ys0ukWXXtbWhVyXTD9E0Zw.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/1_ys0ukWXXtbWhVyXTD9E0Zw.png 800w" sizes="(min-width: 720px) 720px" width="800" height="145" loading="lazy"><figcaption>Agrupando a tabela 3: agrupe ainda mais com "Vendor Name" (nome do fornecedor)</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/1_-ik1zA0LDXzWib7Ux-4EpQ.png" class="kg-image" alt="1_-ik1zA0LDXzWib7Ux-4EpQ" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/1_-ik1zA0LDXzWib7Ux-4EpQ.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/1_-ik1zA0LDXzWib7Ux-4EpQ.png 800w" sizes="(min-width: 720px) 720px" width="800" height="267" loading="lazy"><figcaption>Agrupando a tabela 4: envolva as informações relacionadas ao <em>"Vendor"</em> (fornecedor) em informações relacionadas à <em>"Part" (peça)</em></figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/1_sEvQQjZoux7PEii3JQpCRg.png" class="kg-image" alt="1_sEvQQjZoux7PEii3JQpCRg" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/1_sEvQQjZoux7PEii3JQpCRg.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/1_sEvQQjZoux7PEii3JQpCRg.png 747w" sizes="(min-width: 720px) 720px" width="747" height="353" loading="lazy"><figcaption>Agrupando a tabela 5: tabela totalmente agrupada</figcaption></figure><p>Quando a largura diminui ainda mais para o tamanho de um dispositivo móvel, cada item é exibido como um <em>card</em>. Este layout tem redundância, pois os nomes dos atributos são exibidos repetidamente em cada <em>card </em>e tem a menor capacidade de visualização, mas isso não compromete a usabilidade (por exemplo, rolagem horizontal, texto muito pequeno etc).</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/1_jI0hhzrpYpjbO3-fGh8IWA.png" class="kg-image" alt="1_jI0hhzrpYpjbO3-fGh8IWA" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/1_jI0hhzrpYpjbO3-fGh8IWA.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/1_jI0hhzrpYpjbO3-fGh8IWA.png 695w" width="695" height="485" loading="lazy"><figcaption>Layout de <em>card</em> de duas colunas</figcaption></figure><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/1_XCCcicUngRBcBaKyETC4vg.png" class="kg-image" alt="1_XCCcicUngRBcBaKyETC4vg" width="445" height="722" loading="lazy"><figcaption>Layout de <em>card</em> de uma coluna</figcaption></figure><p>Agora vamos aos detalhes.</p><h3 id="estiliza-o-passo-1-a-tabela-inteira">Estilização – passo 1: a tabela inteira</h3><p>Aqui está um resumo visual de como serão as alterações implementadas com o CSS Grid.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/05/1_uA9PfcQ9JCzY54mH7p_v-A.png" class="kg-image" alt="1_uA9PfcQ9JCzY54mH7p_v-A" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/05/1_uA9PfcQ9JCzY54mH7p_v-A.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/05/1_uA9PfcQ9JCzY54mH7p_v-A.png 755w" sizes="(min-width: 720px) 720px" width="755" height="344" loading="lazy"><figcaption>Contêineres do grid</figcaption></figure><p>Para fazer com que as colunas sejam agrupadas, vários <em>grid containers</em> são definidos como uma hierarquia. As caixas<em> </em>vermelhas são um tipo de <em>grid</em> <em>container</em> para cada linha e as caixas azuis são para cada grupo de colunas que é agrupado.</p><p>Vamos começar ajustando a lista como um <em>grid container</em>, definindo uma classe chamada <code>.item-container</code> e inserindo <code>&lt;li&gt;</code> (caixa vermelha).</p><pre><code class="language-css">.item-container {
    display: grid;
    grid-template-columns: 2em 2em 10fr 2fr 2fr 2fr 2fr 5em 5em;
}</code></pre><p>O número de colunas explícitas especificadas com &nbsp;<code>grid-template-columns</code> é igual a nove, que é o número de <code>&lt;div&gt;</code> de nível superior, diretamente aninhadas em &nbsp;<code>&lt;li&gt;</code>. </p><p>A largura da coluna é definida em comprimento relativo para fazer com que as colunas sejam agrupadas. A fração real deve ser ajustada com base no conteúdo.</p><p>As colunas que não foram encapsuladas são definidas em comprimento absoluto para maximizar o uso de largura para as colunas de quebra automática. No exemplo dos detalhes dos pedidos de compras (<em>purchase order details</em>), a segunda coluna é um ID de dois dígitos, então defino a largura para dobrar esse tamanho de 2 <em>em</em>. &nbsp; &nbsp;</p><p>Em seguida, definimos outro <em>grid container </em>chamado<em> </em><code>.attribute-container</code> e o aplicamos em todas as <code>&lt;div&gt;</code> intermediárias sob a lista (caixas azuis). </p><pre><code class="language-css">.attribute-container {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(var(--column-width-min), 1fr));
    }</code></pre><p>A largura mínima da coluna para todos os itens do grid em <code>.attribute-container</code> é especificada com variável do CSS chamada <code>--column-width-min</code> &nbsp;(abordaremos isso mais tarde) usando a função <code>minmax</code>, com o máximo definido para ocupar o resto do espaço (exemplo: uma fração). Como <code>grid-template-columns</code> está definido como <code>repeat</code>, o espaço horizontal disponível será dividido ao número máximo de colunas que possa ocupar, pelo menos, <code>--column-width-min</code>. O restante das colunas vai para a próxima linha. A largura da coluna será esticada se houver excesso de espaço horizontal, pois o <code>repeat</code> está definido como <code>auto-fit</code>. </p><h4 id="estiliza-o-passo-2-agrupando-a-tabela"><strong>Estilização – passo 2: agrupando a tabela </strong></h4><p>Em seguida, <code>--column-width-min</code> precisa ser independentemente especificado para cada coluna, a fim de agrupá-las. Só para ficar claro, as variáveis precisam ser especificadas para que a tabela inteira também seja renderizada corretamente. Para fazer isso, a <em>class </em>é definida para cada <code>.attribute-container</code>. Uma <code>--column-width-min</code> diferente é especificada para cada escopo de <em>class. </em></p><p>Vamos dar uma olhada no HTML, onde <code>.part-id</code> é aplicado,</p><pre><code class="language-html">&lt;div class="attribute-container part-id"&gt;
    &lt;div&gt;Part Number&lt;/div&gt;
    &lt;div&gt;Part Description&lt;/div&gt;
&lt;/div&gt;</code></pre><p>Vejamos também o CSS:</p><pre><code class="language-css">.part-id {
    --column-width-min: 10em;
}</code></pre><p>Esse grid container específico terá duas colunas, contanto que a largura disponível seja maior que 10 <em>em </em>para cada item do grid (exemplo: o <em>grid container </em>é mais largo do que 20 <em>em</em>).<em> </em>Uma vez que a largura do <em>grid container </em>se torne mais estreita do que 20 <em>em</em>, o segundo item <em>grid </em>passará para a próxima linha.</p><p>Quando combinamos as propriedades do CSS desse modo, precisaremos somente de um<em> grid container </em><code>.attribute-container</code>, com os detalhes alterados onde a <em>class</em> é aplicada.</p><p>Podemos ainda aninhar <code>.attribute-container</code>, para obter múltiplos níveis de agrupamento com diferentes larguras, como no exercício a seguir: </p><pre><code class="language-html">&lt;div class="attribute-container part-information"&gt;
    &lt;div class="attribute-container part-id"&gt;
        &lt;div class="attribute" data-name="Part Number"&gt;Número de peça&lt;/div&gt;
        &lt;div class="attribute" data-name="Part Description"&gt;Descrição da peça
    &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="attribute-container vendor-information"&gt;
        &lt;div class="attribute"&gt;Número do fornecedor&lt;/div&gt;
        &lt;div class="attribute"&gt;Nome do fornecedor&lt;/div&gt;
    &lt;/div&gt;
&lt;/div&gt;
.part-information {
    --column-width-min: 10em;
}
.part-id {
    --column-width-min: 10em;
}
.vendor-information {
    --column-width-min: 8em;
}</code></pre><p>Todos os itens acima estão incluídos na <em>media query</em> abaixo. O <em>breakpoint </em>deve ser selecionado com base na largura necessária quando sua tabela é agrupada ao extremo.</p><pre><code>@media screen and (min-width: 737px) {
...
}</code></pre><h4 id="estiliza-o-passo-3-layout-de-cards"><strong>Estilização – passo 3: <em>layout </em>de <em>cards</em></strong></h4><p>O <em>layout </em>de <em>cards </em>será semelhante a um formulário típico, com nomes de atributos &nbsp;na primeira coluna e valores de atributos na segunda coluna.</p><p>Para fazer isso, uma <em>class</em> chamada <code>.attribute</code> é definida e aplicada para <em>todas as tags </em><code>&lt;div&gt;</code> <em>sob as </em><code>&lt;li&gt;</code>.</p><pre><code class="language-js">.attribute {
    display: grid;
    grid-template-columns: minmax(9em, 30%) 1fr;
}</code></pre><p>Os nomes dos atributos são obtidos de um atributo personalizado das <code>div</code> chamadas <code>data-name</code>, por exemplo &nbsp;<code>&lt;div class="atributo" data-name="Número da pela"&gt;</code> e um pseudoelemento é criado. O pseudoelemento estará sujeito ao layout do <em>grid container.</em></p><pre><code class="language-js">.atributo::before {
    content: attr(data-name);
}</code></pre><p>O primeiro item da lista é o cabeçalho e não precisa ser mostrado.</p><pre><code class="language-js">/* Não exiba o primeiro item, pois ele é usado para exibir o cabeçalho para layouts tabulares */
.collection-container&gt;li:first-child {
    display: none;
}</code></pre><p>Finalmente, os <em>cards</em> são expostos em uma coluna em dispositivos móveis, mas em duas para telas com um pouco mais de largura, mas não o bastante para mostrar uma tabela.</p><pre><code>/* 2 Colunas para o Card Layout */
@media screen and (max-width: 736px) {
    .collection-container {
        display: grid;
        grid-template-columns: 1fr 1fr;
        grid-gap: 20px;
    }
...
}
/* 1  Coluna para Card Layout */
@media screen and (max-width:580px) {
    .collection-container {
        display: grid;
        grid-template-columns: 1fr;
    }
}</code></pre><h3 id="notas-finais"><strong>Notas finais</strong></h3><p>Acessibilidade é uma área que não foi considerada neste artigo e pode haver espaço para melhorias nesse quesito. Obrigado pela leitura.</p> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Como utilizar a repetição espaçada com o Anki para aprender a programar mais rapidamente ]]>
                </title>
                <description>
                    <![CDATA[ Escrito por: Steven Gilbert  Imagine que você pode acelerar o seu aprendizado e melhorar a memorização nos fundamentos, técnicas e comandos de programação. Hoje, mostrarei a você como fazer isso, utilizando a repetição espaçada e uma ferramenta gratuita de código aberto chamada Anki.  Muito atestam os benefícios da ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/como-utilizar-a-repeticao-espacada-com-o-anki-para-aprender-a-programar-mais-rapidamente/</link>
                <guid isPermaLink="false">63696e2e1c6e8805bd494b59</guid>
                
                    <category>
                        <![CDATA[ Desenvolvimento para a Web ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Jorge Felipe Ribeiro Portela ]]>
                </dc:creator>
                <pubDate>Tue, 11 Apr 2023 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/1_Nhu0oiFBy4jJLlpJpRWGtA.jpeg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/use-spaced-repetition-with-anki-to-learn-to-code-faster-7c334d448c3c/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">How to use spaced repetition with Anki to learn to code faster</a>
      </p><p>Escrito por: Steven Gilbert </p><p>Imagine que você pode acelerar o seu aprendizado e melhorar a memorização nos fundamentos, técnicas e comandos de programação.</p><p>Hoje, mostrarei a você como fazer isso, utilizando a repetição espaçada e uma ferramenta gratuita de código aberto chamada <strong>Anki</strong>. </p><p>Muito atestam os benefícios da repetição espaçada:</p><ul><li>O campeão do jogo Jeopardy!, <a href="https://en.wikipedia.org/wiki/Roger_Craig_%28Jeopardy!_contestant%29">Robert Craig</a>, afirma que ele deve parte do seu sucesso a utilizar o Anki para memorizar curiosidades. </li><li>O perfil <a href="https://www.freecodecamp.org/news/use-spaced-repetition-with-anki-to-learn-to-code-faster-7c334d448c3c/undefined">Googley as Heck</a>, que estudou em tempo integral por 8 meses para uma <a href="https://medium.freecodecamp.com/why-i-studied-full-time-for-8-months-for-a-google-interview-cc662ce9bb13#.3d9qfnhq5">entrevista para o Google</a> (texto em inglês), diz que <em>"Repetição espaçada é a chave para a memorização... Você se tornará um expert ao revisitar e revisar ao longo do tempo. Se fizer isso, chegará em um ponto onde não esquecerá dos detalhes."</em></li><li><a href="https://sivers.org/">Derek Sivers</a>, fundador do CDBaby, <a href="https://sivers.org/srs">escreveu</a> (texto em inglês) que a repetição espaçada é <em>"a técnica de programação mais útil que encontrei em 14 anos de programação de computadores."</em></li></ul><p>Para mim, pessoalmente, o Anki tem sido uma parte indispensável do meu esforço para aprender a programar. Uso o Anki para lembrar de ideias importantes para programar em HTML, CSS, JavaScript e de comandos do Git e do Bash.</p><p>Atualmente, estou em <a href="https://partiuintercambio.org/o-que-e-deferral-e-para-que-ele-serve/">processo de adiamento de matrícula (deferral)</a> na UC-Berkeley Law School. O Anki será parte integral da minha estratégia para dominar as leis.</p><p>Neste artigo, abordarei:</p><ul><li>O que é repetição espaçada</li><li>Como o Anki auxilia com a repetição espaçada</li><li>Como isso pode acelerar o seu aprendizado e aumentar a sua retenção de conceitos de programação. </li></ul><h3 id="o-que-a-repeti-o-espa-ada"><strong>O que é a repetição espaçada?</strong></h3><p>A <a href="https://pt.wikipedia.org/wiki/Repeti%C3%A7%C3%A3o_espa%C3%A7ada">repetição espaçada</a> visa resolver o <a href="https://www.supermemo.com/english/princip.htm#optimal_intervals">problema de esquecimento</a> (texto em inglês). Ela sustenta que o momento ideal para se lembrar de uma nova informação é no momento em que você está prestes a esquecê-la.</p><p>Por exemplo, supondo que você não saiba qual é a capital da <a href="https://pt.wikipedia.org/wiki/Col%C3%B4mbia">Colômbia</a> e que, neste exato momento, eu diga para você qual é a capital do país: </p><p><em>"A capital da Colômbia é Bogotá</em>."</p><p>Vamos supor que sua memória seja do tipo que se lembrará desse novo fato – que a capital da Colômbia é Bogotá – após sua primeira exposição à informação, por um período de<strong> 20 minutos</strong>. Depois disso, você esquecerá da informação.</p><p>Mas, se em <strong>19 minutos e 59 segundos</strong>, enquanto estamos tomando um café, eu relembrar você dessa informação... &nbsp;</p><p>"A capital da Colômbia é Bogotá."</p><p>...a teoria da repetição espaçada diz que você será capaz de lembrar que Bogotá é a capital da Colômbia por agora, digamos <strong>40 minutos</strong>. Depois disso, você esquecerá novamente.</p><p>Se eu relembrar você novamente <strong>39 minutos e 59 segundos depois </strong>disso...</p><p>"A capital da Colômbia é Bogotá."</p><p>...você será capaz de reter essa informação geográfica na memória por um período ainda maior – digamos, até <strong>uma hora</strong>.</p><p>Se continuarmos assim – eu continuarei lembrando você de que a capital da Colômbia é Bogotá, justamente no momento em que você estiver prestes a esquecer – o tempo entre os lapsos de memória cresce exponencialmente de horas para dias, depois para meses, depois para anos.</p><p>Ao final, como diz a teoria, o conhecimento – de que Bogotá é a capital da Colômbia – ficará mais ou menos permanentemente alojado em sua memória.</p><p>Essa noção de declínio da memória ao longo do tempo é conhecida como a curva de esquecimento e foi desenvolvida por <a href="https://en.wikipedia.org/wiki/Hermann_Ebbinghaus">Herman Ebbinghaus</a>, em 1885.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/lmXQiQYcqNbLyTGoAVxbKZvmbGURF20DmZxq.jpg" class="kg-image" alt="lmXQiQYcqNbLyTGoAVxbKZvmbGURF20DmZxq" width="449" height="497" loading="lazy"><figcaption>Stahl et al 2010; CNS Spectr</figcaption></figure><p>Essa ideia – de que é mais eficiente e eficaz espaçar o aprendizado ao longo do tempo em vez de estudar demais – é conhecida como <a href="https://pt.wikipedia.org/wiki/Efeito_do_espa%C3%A7amento">efeito de espaçamento</a>.</p><p>Juntos, a curva de esquecimento e o efeito de espaçamento são conceitos fundamentais por trás da repetição espaçada.</p><p>Dependendo da sua curva de esquecimento, você determina o <a href="http://www.lac.ane.pl/pdf/5409.pdf">intervalo ideal</a> (texto em inglês) para relembrar você mesmo de um item da memória (qualquer informação). Você espaça o reforço do item de memória de acordo. Piotr Woźniak, um pioneiro em pesquisa de memória, <a href="https://www.supermemo.com/english/princip.htm#optimal_intervals">resume</a> essas ideias (texto em inglês):</p><blockquote>O intervalo ideal é calculado com base em dois critérios contraditórios:<br><br>1. Os intervalos devem ser o mais longos possível para obter a frequência mínima de repetições e aproveitar melhor o chamado efeito de espaçamento, que diz que intervalos mais longos entre repetições, até certo limite, produzem memórias mais fortes.<br><br>2. Os intervalos devem ser curtos o bastante para garantir que o aprendizado ainda seja lembrado.</blockquote><p>Nesse momento, você pode estar se perguntando: "mas como saber<em> precisamente</em> o momento em que estamos prestes a esquecer de que a capital da Colômbia é Bogotá? Como saber qual é o intervalo ideal?".</p><p>É claro que seria muito difícil saber com exatidão sem muitas tentativas e erros detalhados e uma atenção aos detalhes no nível de Charles Darwin. Felizmente, porém, não precisamos de tanta diligência porque um amigo bem conhecido pode nos ajudar: <strong>o software </strong>(você também pode usar um sistema não automatizado chamado de <a href="https://en.wikipedia.org/wiki/Leitner_system">sistema Leitner</a> – texto em inglês).</p><p>O software, construído sobre muitas pesquisas sobre a memória, pode ajudá-lo a determinar o momento ideal para reforçar a memorização. Mais especificamente, estamos falando do <strong>software de repetição espaçada</strong>.</p><h3 id="o-que-o-anki"><strong>O que é o Anki? </strong></h3><p>O <a href="https://apps.ankiweb.net/">Anki </a>é uma ferramenta de software de repetição espaçada de <a href="https://github.com/dae/anki">código aberto</a> desenvolvida e cuidada por <a href="https://github.com/dae/">Damien Elmes</a>. Você pode pensar que ele é uma espécie de "programa de flashcards inteligente", que aproveita a repetição espaçada e torna a memorização mais eficiente. </p><p>O Anki foi construído com base na premissa de que você se lembra melhor do conhecimento com lembretes periódicos e estrategicamente cronometrados. O que significa que é construído sobre as vantagens da repetição espaçada.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/8eeD7QQ2cqKBAmq4ivMcDzQhmrNbY0uKd4HZ.jpg" class="kg-image" alt="8eeD7QQ2cqKBAmq4ivMcDzQhmrNbY0uKd4HZ" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2023/04/8eeD7QQ2cqKBAmq4ivMcDzQhmrNbY0uKd4HZ.jpg 600w, https://www.freecodecamp.org/portuguese/news/content/images/2023/04/8eeD7QQ2cqKBAmq4ivMcDzQhmrNbY0uKd4HZ.jpg 630w" width="630" height="369" loading="lazy"><figcaption><a href="https://www.wired.com/2008/04/ff-wozniak/">Créditos da imagem no link</a></figcaption></figure><p>Você pode usar o Anki para lembrar virtualmente de qualquer coisa que precise ser lembrada.</p><p>Observe, no entanto, que o Anki não substitui o aprendizado. Você deve primeiro entender o material que está aprendendo e, em seguida, recorrer ao Anki, o que o ajudará de maneira brilhante a reter o conhecimento adquirido. O Anki é uma parte do processo de aprendizagem que vem após a compreensão.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/UG2cK2im2551HZaYin9OhVyLVdWE-ip0kKx4.png" class="kg-image" alt="UG2cK2im2551HZaYin9OhVyLVdWE-ip0kKx4" width="480" height="170" loading="lazy"><figcaption><a href="https://www.gwern.net/Spaced%20repetition">Créditos da imagem no link</a></figcaption></figure><p>Existem outros softwares de repetição espaçada no mundo, como o <a href="https://www.supermemo.com/english/smintro.htm">SuperMemo</a>, criado por Piotr Woźniak, mencionado acima. Na verdade, o Anki utiliza uma versão do <a href="https://en.wikipedia.org/wiki/Anki_%28software%29">algoritmo</a> que foi utilizado no SuperMemo. </p><p>Eu me concentrei no Anki porque é o software que me acostumei a utilizar, e funciona bem. Além disso, ele é de código aberto e gratuito. Se você já usou o SuperMemo ou outra ferramenta de software de repetição espaçada, ficaremos felizes de saber sobre suas experiências.</p><p>Se você decidir usar o Anki também, eu o encorajo a<a href="https://www.wired.com/2008/04/ff-wozniak/?currentPage=all"> ler sobre</a> Woźniak (texto em inglês) e sobre o que ele tem a dizer sobre memória, aprendizado e <a href="https://www.supermemo.com/articles/genius.htm">criatividade</a> (texto em inglês), pois é bastante pontual.</p><p>No que diz respeito aos dispositivos para uso, o Anki vem em uma versão para desktop na qual, se você nunca usou o Anki antes, é recomendável começar. Há também:</p><ul><li>Um aplicação para a web gratuita, <a href="https://apps.ankiweb.net/" rel="noopener">AnkiWeb</a>.</li><li>Um aplicação para Android gratuita, <a href="https://play.google.com/store/apps/details?id=com.ichi2.anki&amp;hl=en" rel="noopener">AnkiDroid</a>, totalmente compatível e sincronizável com o AnkiWeb para desktop.</li><li>Para usuários de Iphone, a aplicação <a href="https://itunes.apple.com/us/app/ankimobile-flashcards/id373493387?mt=8" rel="noopener">AnkiMobile</a> encontra-se no valor de U$24,99 na App Store (no momento em que este texto foi escrito).</li></ul><h3 id="como-o-anki-funciona"><strong>Como o Anki funciona</strong></h3><p>Saiba que você pode se <a href="https://apps.ankiweb.net/docs/manual.html">aprofundar</a> em como usar e configurar o Anki (documentação em inglês). Eu apenas dou a você uma visão geral para que você entenda a essência do software.</p><ol><li>Você cria "<strong>baralhos</strong>", ou seja, um grupo de cartas que representam uma grande categoria. Por exemplo, "JavaScript" ou "Capitais de Lugares" podem compor o "baralho".</li></ol><p>Este é um exemplo de um deck no app Anki na versão desktop (não se preocupe com os itens "New", "Learning" e "To Review" por agora. Comentarei sobre essas opções mais a frente):</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/ZiDvGOE4JheKaajYqHONhZGSxWvO14YsOD-j.png" class="kg-image" alt="ZiDvGOE4JheKaajYqHONhZGSxWvO14YsOD-j" width="283" height="220" loading="lazy"><figcaption>Exemplo de um baralho do Anki</figcaption></figure><p>2. &nbsp;Você adiciona <strong><em>cards</em></strong><em> (cartões)</em> ao seu <em><strong>deck </strong>(baralho), </em>que é customizado com HTML e CSS.</p><p>Um <em>card </em>pode ser um <em>flashcard </em>com conteúdo frontal e traseiro padrão, onde você primeiro é apresentado ao lado frontal. Aqui é um exemplo de um <em>deck </em>de "Capitais":</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/ryIdZ3jHPJw83npgNb9pIfwcnlHj73IMf-N3.png" class="kg-image" alt="ryIdZ3jHPJw83npgNb9pIfwcnlHj73IMf-N3" width="189" height="287" loading="lazy"><figcaption>Exemplo de um cartão do Anki — Parte da frente padrão</figcaption></figure><p>Quando você já souber a resposta, selecione <em><strong><strong>Show Answer</strong> </strong></em>(mostrar a resposta) para revelar a resposta localizada no verso do cartão:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/JSE9oBdeDkYfFUobJdpbkTI-Of-Za28eot6o.png" class="kg-image" alt="JSE9oBdeDkYfFUobJdpbkTI-Of-Za28eot6o" width="221" height="288" loading="lazy"><figcaption>Cartão do Anki – frente e verso padrão</figcaption></figure><p>Dica: há outros tipos de cartões, além do tipo flashcard com frente e verso, como o de <a href="https://en.wikipedia.org/wiki/Cloze_test">exclusão cloze</a> (texto em inglês) com a qual você se familiarizará. A exclusão cloze é um tipo de cartão particularmente útil que eu utilizo o tempo todo (na verdade, a maioria dos meus cartões utilizam a exclusão cloze) porque é útil e simples na organização das informações. Criar <strong><em>cards </em></strong>no Anki é uma arte. Quanto mais você praticar, melhor você ficará. Como regra geral, você vai querer tentar seguir o <a href="https://www.supermemo.com/en/articles/20rules">princípio de informação mínima</a> (texto em inglês), que significa, essencialmente, manter algo muito simples. Você quer manter os seus <em><strong>cards </strong></em>o mais simples possível, porque o simples é mais fácil de lembrar.</p><p>3. Assim que terminar de adicionar os <strong><em>cards</em></strong>, você deve começar a praticar no Anki. </p><p>Vamos voltar ao <strong><em>card </em></strong>Colômbia-Bogotá para ver como o processo funciona.</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/D4napkahfAswTdCBbFhamvi8IrQNDwQwkS11.png" class="kg-image" alt="D4napkahfAswTdCBbFhamvi8IrQNDwQwkS11" width="220" height="287" loading="lazy"><figcaption>Escolha quando você gostaria de ser lembrado novamente</figcaption></figure><p>Depois de selecionar <strong><em>Show Answer</em></strong>, é mostrado o verso do <strong><em>card</em></strong>. Você, então, pode se perguntar:</p><p>Foi muito difícil chegar à resposta?</p><ul><li>Se você não souber a resposta, você pode selecionar <strong><em>Again </em></strong>(novamente)<strong><em>, </em></strong>que mostrará o <strong><em>card </em></strong>novamente em <strong><em>menos de um minuto</em></strong>. </li><li>Se você encontrou a resposta depois de fazer uma pausa e vasculhar em sua memória, pode selecionar <strong><em>Good </em></strong>(bom), que mostrará o cartão novamente em <strong><em>menos de 10 minutos</em></strong>.</li><li>Se a resposta foi fácil, você pode escolher <strong><em>Easy </em></strong>(fácil) e <strong>não</strong> visualizará o <strong><em>card </em></strong>novamente por <strong><em>quatro dias</em></strong>.</li></ul><p>O programa Anki, então, acompanha o estado do seu progresso: quais cartões revisar e quando. Isso significa que o Anki está fazendo o trabalho tedioso de acompanhar sua curva de esquecimento para cada cartão.</p><p>Esse é o poder da automatizar a repetição espaçada com software.</p><p>Eu poderia apontar que você pode mudar algumas variáveis do algoritmo de repetição espaçada do Anki. Você faz isso acessando as opções do deck e personalizando o que deseja personalizar, como o número de cartões revisáveis por dia, as opções de intervalo de tempo, entre outras variáveis.</p><figure class="kg-card kg-image-card kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/xshWnFcgpmakDQP6jDl1bJt-PGcKAhTUNM4D.png" class="kg-image" alt="xshWnFcgpmakDQP6jDl1bJt-PGcKAhTUNM4D" width="434" height="372" loading="lazy"><figcaption>Personalizando as opções do seu deck</figcaption></figure><p>No começo, porém, talvez você queira deixar essas configurações de lado e apenas usar os padrões. À medida que você se sentir mais confortável com o Anki, poderá começar a ser criativo com as opções do deck.</p><p>Vamos revisitar nosso <strong><em>deck</em></strong> JavaScript:</p><figure class="kg-card kg-image-card kg-width-wide kg-card-hascaption"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2023/04/pvwi8XDqMFmczxQBCTLVAT04fOS93JjhhOXy.png" class="kg-image" alt="pvwi8XDqMFmczxQBCTLVAT04fOS93JjhhOXy" width="283" height="220" loading="lazy"><figcaption>Exemplo de deck do Anki</figcaption></figure><ul><li><strong><em>New </em></strong>(novo) significa que você adicionou 4 novos cartões ao seu baralho de JavaScript e eles estão prontos para serem revisados.</li><li><strong><em>Learning</em></strong> (em fazer de aprendizado) significa que, se você estiver trabalhando em um deck e escolher, digamos, <em><strong>Good </strong></em>(bom) &lt; 10m, o Anki armazenará esse cartão na fila de aprendizado e o mostrará novamente em 10 minutos. Veja mais detalhes <a href="https://apps.ankiweb.net/docs/manual.html#learning">aqui</a>.<strong> </strong></li><li><strong><em>To Review</em></strong> (para revisar) representa o número de cartões pendentes para revisão.<strong> &nbsp;</strong></li></ul><p>Tudo isso ficará muito mais claro quanto mais você usar o Anki.</p><h3 id="com-come-ar-com-o-anki"><strong>Com começar com o Anki </strong></h3><p>A respeito de tutoriais e como usar o Anki, a <a href="https://apps.ankiweb.net/docs/manual.html">documentação</a> do sites é fenomenal e provavelmente responderá a maioria das suas perguntas. Também há alguns <a href="https://www.youtube.com/channel/UCFt1oYUNiwkMaJTSZiFEodQ">vídeos de tutoriais</a> úteis. &nbsp;</p><p>Enquanto isso, darei a você uma lista para iniciar com o Anki e o porquê a <a href="https://www.amazon.com/Checklist-Manifesto-How-Things-Right/dp/0312430000">checklist</a> pode ser útil.</p><p>1. &nbsp; Leia o <a href="https://sivers.org/srs">artigo </a>de Derek Siver (em inglês) sobre repetição espaçada e o porquê ela reforça muito do que descrevi.</p><p>2. Leia a <a href="https://www.wired.com/2008/04/ff-wozniak/">entrevista </a>da Wired com Piotr Woźniak (em inglês), pois ela oferece uma visão holística da repetição espaçada, aprendizado e pesquisa de memória. </p><p>3. Leia <a href="https://www.supermemo.com/en/articles/20rules" rel="noopener">Effective learning: Twenty rules of formulating knowledge</a> (em inglês), de Piotr Wózniack. Ele fornece técnicas de como formular e estruturar seus <strong>cartões</strong> do Anki. </p><p>Em especial, lembre-se de que a repetição espaçada não substitui o aprendizado. Por isso, é importante você entender o material antes de iniciar o método de repetição espaçada. Primeiro, entenda. Depois, reforce com o Anki. Lembre-se de usar imagens e a <strong>metodologia de manter as coisas simples </strong>para criar os seus <strong>cards </strong>quando possível.</p><p>4. Crie seus próprios <strong>decks</strong>.</p><p>5. Lembre-se de manter seus <strong>decks </strong>com tópicos amplos e gerais. Por exemplo, se você está aprendendo JavaScript, não crie um <strong>deck </strong>chamado "Closures" e outro chamado "Herança prototipada". Em vez disso, crie um <strong>deck </strong>"JavaScript". Consulte <a href="https://apps.ankiweb.net/docs/manual.html#manydecks">Using Decks Appropriately</a>, na documentação para mais detalhes.</p><p>6. Procure se acostumar com a <a href="https://www.youtube.com/watch?v=FnrigOzpJQo">exclusão cloze</a> (vídeo em inglês), pois ela ajudará bastante o seu aprendizado.</p><p>7. Entenda as desvantagens.</p><p>Existem poucas desvantagens na repetição espaçada. A interferência na recordação é uma delas.</p><p>Por exemplo, você pode imaginar sofrer interferência na recordação com, digamos, as capitais de Martinica, Mauritânia e Ilhas Maurício, pois todas elas possuem nomes parecidos. </p><p>Algumas interferências são difíceis de escapar e você pode querer implementar outros <em>hacks </em>de memória nesses casos. Você, porém, pode limitar a desvantagem mantendo seus cartões com conteúdo simples.</p><p>Aprenda mais sobre as desvantagens <a href="https://www.gwern.net/Spaced%20repetition">aqui</a> (vejas as desvantagens abaixo) e <a href="https://www.supermemo.com/en/articles/20rules">aqui</a> (veja como combater as interferências abaixo) - textos em inglês.</p><p>8. Lembre-se de manter seus <em>decks </em>e <em>cards</em> sincronizados. Escolha uma "base inicial" como a versão para desktop e, em seguida, sincronize com o AnkiWeb e um dos aplicativos de celular sempre que fizer uma alteração. Criar seus <em>cards</em> e <em>decks</em> leva um certo tempo. Evite a dor de cabeça de ter que refazer esse trabalho.</p><p>9. Faça do Anki um hábito. Para ver os frutos da magia dessa ferramenta acontecerem, você deve tomar uma decisão e se comprometer a revisar seus <strong>cards </strong>todos os dias. Associe o Anki a uma xícara de café, pela manhã, ou na hora do almoço, ou com algo positivo. Encontre maneiras de tornar o Anki um hábito. </p><h4 id="recapitulando-"><strong>Recapitulando<strong><strong><strong>:</strong></strong></strong></strong></h4><ul><li>A repetição espaçada é a ideia de que você pode se lembrar de uma informação com mais eficiência se for exposto a ela no momento do esquecimento;</li><li>A ferramenta Anki automatiza a repetição espaçada. Isso contribui para uma ferramenta de memorização incrivelmente eficiente e útil.</li><li>O Anki pode ajudá-lo a construir sua base de conhecimento de fundamentos, técnicas e práticas recomendadas de programação de computadores. &nbsp;</li><li>Além do conhecimento de programação de computadores, você pode usar o Anki para lembrar de qualquer outra coisa que queira adicionar à sua memória. </li><li>Lembre-se: o Anki faz parte do processo de aprendizado, não é um substituto dele. Você deve primeiro entender, depois usar o Anki.</li></ul><p>Se você tiver dúvidas, pode enviar uma mensagem para o <a href="https://twitter.com/gilbertginsberg">Twitter do autor</a>.</p><h4 id="leituras-adicionais-algumas-em-ingl-s-"><strong>Leituras adicionais (algumas em inglês):</strong></h4><ul><li><a href="https://pt.wikipedia.org/wiki/Repeti%C3%A7%C3%A3o_espa%C3%A7ada">Repetição espaçada</a>, Wikipédia</li><li><a href="https://pt.wikipedia.org/wiki/Curva_do_esquecimento">Curva do esquecimento</a>, Wikipédia</li><li><a href="https://pt.wikipedia.org/wiki/Efeito_do_espa%C3%A7amento">Efeito do espaçamento</a>, Wikipédia</li><li><a href="https://pt.wikipedia.org/wiki/Hermann_Ebbinghaus">Hermann Ebbinghaus</a>, Wikipédia</li><li><a href="https://en.wikipedia.org/wiki/Leitner_system">Sistema Leitner</a>, Wikipedia (em inglês)</li><li><a href="https://github.com/dae/anki" rel="noopener">Damien Elmes</a>, criador do Anki</li><li><a href="https://docs.ankiweb.net/#/">Documentação do Anki</a> (em inglês)</li><li><a href="https://www.supermemo.com/english/princip.htm" rel="noopener">General principles of SuperMemo</a> (em inglês), por Piotr Woźniak</li><li><a href="https://www.supermemo.com/articles/genius.htm" rel="noopener">The roots of creativity and genius</a> (em inglês), por Piotr Woźniak</li><li><a href="https://www.wired.com/2008/04/ff-wozniak/?currentPage=all" rel="noopener">Want to Remember Everything You’ll Ever Learn? Surrender to This Algorithm</a> (em inglês), por Gary Wolf para Wired</li><li><a href="https://sive.rs/srs">Memorizing a programming language using spaced repetition software</a> (em inglês), por Derek Sivers</li><li><a href="https://www.jackkinsella.ie/articles/janki-method" rel="noopener">Using spaced repetition systems to learn and retain technical knowledge</a> (em inglês), por Jack Kinsella</li></ul> ]]>
                </content:encoded>
            </item>
        
            <item>
                <title>
                    <![CDATA[ Inserção, rotação e fator de balanceamento da árvore AVL explicados ]]>
                </title>
                <description>
                    <![CDATA[ O que é uma árvore AVL? Uma árvore AVL é um tipo de árvore binária de busca. Nomeada em homenagem aos seus criadores, Adelson-Velsky e Landis, as árvores AVL possuem a propriedade de autobalanceamento dinâmico, além de todas as outras propriedades mostradas pelas árvores binárias de busca. Uma árvore binária ]]>
                </description>
                <link>https://www.freecodecamp.org/portuguese/news/insercao-rotacao-e-fator-de-balanceamento-da-arvore-avl-explicados/</link>
                <guid isPermaLink="false">635fde827e77d305f28d87b2</guid>
                
                    <category>
                        <![CDATA[ Busca binária ]]>
                    </category>
                
                <dc:creator>
                    <![CDATA[ Jorge Felipe Ribeiro Portela ]]>
                </dc:creator>
                <pubDate>Thu, 29 Dec 2022 21:00:00 +0000</pubDate>
                <media:content url="https://www.freecodecamp.org/portuguese/news/content/images/2022/11/5f9c9f18740569d1a4ca40ca.jpg" medium="image" />
                <content:encoded>
                    <![CDATA[ <p data-test-label="translation-intro">
        <strong>Artigo original:</strong> <a href="https://www.freecodecamp.org/news/avl-tree-insertion-rotation-and-balance-factor/" target="_blank" rel="noopener noreferrer" data-test-label="original-article-link">AVL Tree Insertion, Rotation, and Balance Factor Explained</a>
      </p><h2 id="o-que-uma-rvore-avl"><strong>O que é uma árvore AVL?</strong></h2><p>Uma árvore AVL é um tipo de árvore binária de busca. Nomeada em homenagem aos seus criadores, Adelson-Velsky e Landis, as árvores AVL possuem a propriedade de autobalanceamento dinâmico, além de todas as outras propriedades mostradas pelas árvores binárias de busca.</p><p>Uma árvore binária de busca, ou BST (do inglês, <em>binary search tree</em>), é uma estrutura de dados compostas de nós. Ela tem as seguintes garantias:</p><ol><li>Cada árvore possui um nó raiz (no topo)</li><li>O nó raiz tem zero, um ou dois filhos </li><li>Cada nó filho tem zero, um ou dois nós filhos. </li><li>Cada nó tem até dois filhos </li><li>Para cada nó, seus descendentes da esquerda são menores que o nó atual, que é menor que o descendentes da direita</li></ol><p>As árvores AVL têm uma garantia adicional:</p><ol><li>A diferença entre as profundidade das camadas do lado direito e esquerdo não pode ser maior que um. Essa diferença é chamada de fator de balanço.<br><br>Para manter essa garantia, a implementação de uma AVL incluirá um algoritmo para balanceamento da árvore quando a adição de um elemento prejudicar essa garantia. &nbsp;</li></ol><p>As árvores AVL têm uma complexidade de tempo de busca, inserção e exclusão, no pior dos casos, de <code>O(log n)</code>, onde <code>n</code> é o número de nós na árvore. A complexidade de espaço de pior caso é <code>O(n)</code>. </p><h3 id="processo-de-inser-o-na-avl"><strong>Processo de inserção na AVL</strong></h3><p>A inserção em uma árvore AVL é similar à inserção em uma árvore binária de busca. &nbsp;Depois de inserir um elemento, no entanto, você precisa ajustar as propriedades da AVL utilizando rotações para esquerda ou para a direita: </p><ul><li>Se houver um desbalanceamento na subárvore da direita do filho da esquerda do nó, faça uma rotação dupla à direita. </li><li>Se houver um desbalanceamento na subárvore da esquerda do filho da esquerda do nó, faça uma rotação simples à direita. </li><li>Se houver um desbalanceamento na subárvore da direita do filho da direita do nó, faça uma rotação simples à esquerda.</li><li>Se houver um desbalanceamento &nbsp;na subárvore da esquerda do filho da direita do nó, faça uma rotação dupla à esquerda. &nbsp;</li></ul><h2 id="rota-es-da-rvore-avl"><strong>Rotações da árvore AVL</strong></h2><p>Nas árvores AVL, após cada operação, como inserção e exclusão, o fator de balanceamento de cada nó precisa ser verificado. Se cada nó satisfizer a condição do fator de balanceamento, a operação pode ser concluída. Caso contrário, a árvore precisa ser rebalanceada utilizando as operações de rotação. </p><p>Existem quatro rotações e elas são classificadas em dois tipos: </p><h3 id="rota-o-simples-esquerda-rota-o-se-"><strong>Rotação simples à esquerda<strong> (</strong>rotação SE<strong>)</strong></strong></h3><p>Na rotação simples à esquerda, cada nó se move uma posição para a direita da posição atual.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/11/image-5.png" class="kg-image" alt="image-5" srcset="https://www.freecodecamp.org/portuguese/news/content/images/size/w600/2022/11/image-5.png 600w, https://www.freecodecamp.org/portuguese/news/content/images/2022/11/image-5.png 609w" width="609" height="204" loading="lazy"></figure><h3 id="rota-o-simples-direita-rota-o-sd-">Rotação simples à direita (rotação SD)</h3><p>Na rotação simples à direita, cada nó se move uma posição para a direita da posição atual.</p><figure class="kg-card kg-image-card"><img src="https://www.freecodecamp.org/portuguese/news/content/images/2022/11/image-4-1.png" class="kg-image" alt="image-4-1" width="578" height="203" loading="lazy"></figure><h3 id="rota-o-dupla-direita-rota-o-dd-"><strong>Rotação dupla à direita<strong> (</strong>rotação DD<strong>)</strong></strong></h3><p>As rotações duplas à direita são uma combinação de uma única rotação para a esquerda seguida de uma rotação para a direita. <br><br>Primeiro, cada nó se move uma posição para a esquerda. Depois, se move uma posição para a direita da posição atual. </p><h3 id="rota-o-dupla-esquerda-rota-o-de-"><strong>Rotação dupla à esquerda <strong>(</strong>rotação DE<strong>)</strong></strong></h3><p>As rotações duplas à esquerda são uma combinação de uma única rotação para a direita seguida de uma rotação para a esquerda.</p><p>Primeiro, cada nó se move uma posição para a direita. Depois, se move uma posição para a esquerda da posição atual.</p><h2 id="aplica-o-das-rvores-avl"><strong>Aplicação das árvores AVL </strong></h2><p>As árvores AVL são benéficas em casos de bancos de dados, onde inserções e exclusões não são frequentes, mas onde você confere as entradas com frequência.</p> ]]>
                </content:encoded>
            </item>
        
    </channel>
</rss>
