<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Gustavo Medeiros</title>
    <description>The latest articles on DEV Community by Gustavo Medeiros (@gusmedeirost).</description>
    <link>https://dev.to/gusmedeirost</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F1924884%2Fcc40df4c-660a-46d3-aaf5-69e7a5541021.png</url>
      <title>DEV Community: Gustavo Medeiros</title>
      <link>https://dev.to/gusmedeirost</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/gusmedeirost"/>
    <language>en</language>
    <item>
      <title>Introdução a algoritmos: Pesquisa binária</title>
      <dc:creator>Gustavo Medeiros</dc:creator>
      <pubDate>Tue, 17 Sep 2024 22:42:33 +0000</pubDate>
      <link>https://dev.to/gusmedeirost/introducao-a-algoritmos-pesquisa-binaria-3f2n</link>
      <guid>https://dev.to/gusmedeirost/introducao-a-algoritmos-pesquisa-binaria-3f2n</guid>
      <description>&lt;h2&gt;
  
  
  Introdução
&lt;/h2&gt;

&lt;p&gt;Algoritmo é um conjunto de instruções que realizam uma tarefa.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pesquisa Binária
&lt;/h2&gt;

&lt;p&gt;Vamos supor que você entre no Facebook. Ao fazer isso, o Facebook precisa verificar se você tem uma conta no site. Logo, ele procura seu nome de usuário em um banco de dados. Digamos que seu usuário seja "TonyStark". O Facebook poderia começar pela letra "A" para procurar seu nome, mas faz mais sentido começar pelo meio.&lt;/p&gt;

&lt;p&gt;Isso é um problema de busca. E todos esses casos usam um algoritmo para resolvê-lo: Pesquisa Binária.&lt;/p&gt;

&lt;p&gt;A pesquisa binária é um algoritmo cuja entrada é uma lista ordenada de elementos. Se o elemento que você está buscando está na lista, a pesquisa binária retorna sua localização. Caso contrário, a pesquisa binária retorna &lt;code&gt;None&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Nota: A pesquisa binária só funciona quando a lista está ordenada. Por exemplo, os nomes em uma agenda telefônica estão em ordem alfabética.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Vamos escrever a pesquisa binária em Python. O exemplo de código que utilizaremos aqui usa arrays. A função &lt;code&gt;pesquisa_binaria&lt;/code&gt; recebe um array ordenado e um item. Se o item estiver no array, a função retorna sua posição. Dessa maneira, você sabe a partir de qual ponto do array deve continuar procurando. No início, o código do array segue assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;baixo = 0
alto = len(lista) - 1

meio = (baixo + alto) // 2
chute = lista[meio]
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;em&gt;Nota: meio será arredondado para baixo automaticamente pelo Python se (baixo + alto) não for um número par.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Se o chute for baixo, você atualizará a variável baixo proporcionalmente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if chute &amp;lt; item:
    baixo = meio + 1

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E se o chute for muito alto, você atualizará a variável alto. Aqui está o código completo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;def pesquisa_binaria(lista, item):
     baixo = 0
     alto = len(lista) - 1

     while baixo &amp;lt;= alto:
          meio = (baixo + alto) // 2
          chute = lista[meio]
          if chute == item:
              return meio
          if chute &amp;gt; item:
              alto = meio - 1
          else:
              baixo = meio + 1
     return None

minha_lista = [1, 3, 5, 7, 9]

print(pesquisa_binaria(minha_lista, 3)) # =&amp;gt; 1
print(pesquisa_binaria(minha_lista, -1)) # =&amp;gt; None

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Explicação
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;baixo e alto acompanham a parte da lista que você está procurando;&lt;/li&gt;
&lt;li&gt;Enquanto ainda não chegou a um único elemento, verifique o elemento central;&lt;/li&gt;
&lt;li&gt;Encontre o item;&lt;/li&gt;
&lt;li&gt;O chute foi muito alto;&lt;/li&gt;
&lt;li&gt;O chute foi muito baixo;&lt;/li&gt;
&lt;li&gt;O item não existe;&lt;/li&gt;
&lt;li&gt;Vamos testá-lo;&lt;/li&gt;
&lt;li&gt;Lembre-se: as listas começam no índice 0. O próximo endereço tem índice 1;&lt;/li&gt;
&lt;li&gt;None significa nulo em Python. Ele indica que o item não foi encontrado.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Livro de referência: Para um entendimento mais profundo sobre algoritmos, recomendo o livro "Entendendo Algoritmos: Um Guia Ilustrado para Programadores e Outros Curiosos" de Aditya Y. Bhargava. Esse livro fornece explicações claras e ilustradas de diversos algoritmos, incluindo a pesquisa binária.&lt;/p&gt;

</description>
      <category>algorithms</category>
      <category>programming</category>
      <category>beginners</category>
    </item>
    <item>
      <title>Problema HackerRank em Python - Base Data Types Lists</title>
      <dc:creator>Gustavo Medeiros</dc:creator>
      <pubDate>Wed, 04 Sep 2024 02:54:06 +0000</pubDate>
      <link>https://dev.to/gusmedeirost/problema-hackerrank-em-python-base-data-types-lists-5h91</link>
      <guid>https://dev.to/gusmedeirost/problema-hackerrank-em-python-base-data-types-lists-5h91</guid>
      <description>&lt;p&gt;Este código em Python é projetado para executar uma série de operações em uma lista com base em comandos fornecidos pelo usuário. Vamos analisar o código passo a passo para entender seu funcionamento:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;if __name__ == '__main__':
    N = int(input())
    l = []
    while(N&amp;gt;0):
        cmd_l = input().split()
        if(len(cmd_l) == 3 and cmd_l[0] == "insert"):
            #insert statement
            l.insert(int(cmd_l[1]),int(cmd_l[2]))
        elif(len(cmd_l) == 2 and (cmd_l[0] == "remove" or cmd_l[0] == "append")):
            if(cmd_l[0] == "remove"):
                l.remove(int(cmd_l[1]))
            elif(cmd_l[0] == "append"):
                l.append(int(cmd_l[1]))
        elif(len(cmd_l) == 1):
            if(cmd_l[0] == "sort"):
                l.sort()
            elif(cmd_l[0] == "reverse"):
                l.reverse()
            elif(cmd_l[0] == "pop"):
                l.pop()                
            elif(cmd_l[0] == "print"):
                print(l)
        N -= 1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;if __name__ == '__main__':&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Essa linha verifica se o script está sendo executado diretamente. Pratica adotada para garantir que o código dentro deste bloco só será executado se o arquivo for o ponto de entrada do programa.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;N = int(input())&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;O programa espera que o usuário insira um número inteiro que é armazenado na variável &lt;code&gt;N&lt;/code&gt;. Este número representa quantas operações o usuário vai realizar.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;l = []&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Lista vazia &lt;code&gt;l&lt;/code&gt; usada para armazenar os elementos conforme as operações forem sendo realizadas.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;while(N&amp;gt;0):&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Um loop &lt;code&gt;while&lt;/code&gt; é iniciado que continuará executando enquanto &lt;code&gt;N&lt;/code&gt; for maior que 0. isso significa que o loop executará &lt;code&gt;N&lt;/code&gt; vezes, uma vez para cada operação que o usuário desejar realizar.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;cmd_l = input().split()&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dentro do loop o programa espera que o usuário insira uma linha de texto, que é dividida em uma lista de strings (&lt;code&gt;cmd_l&lt;/code&gt;) usando o método &lt;code&gt;split()&lt;/code&gt;. Cada elemento da lista &lt;code&gt;cmd_l&lt;/code&gt; representa uma parte da operação a ser realizada.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;if(len(cmd_l) == 3 and cmd_l[0] == "insert"):&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Esta linha verifica se a operação é um comando de "insert" com três partes (&lt;code&gt;cmd_l&lt;/code&gt; deve ter comprimento 3 e o primeiro elemento deve ser "insert").&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;l.insert(int(cmd_l[1]),int(cmd_l[2]))&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Se a condição acima for verdadeira, o método &lt;code&gt;insert&lt;/code&gt; da lista &lt;code&gt;l&lt;/code&gt; é chamado. Os argumentos são convertidos de string para inteiro: &lt;code&gt;cmd_l[1]&lt;/code&gt; é a posição onde o elemento será inserido, e &lt;code&gt;cmd_l[2]&lt;/code&gt; é o elemento a ser inserido.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;elif(len(cmd_l) == 2 and (cmd_l[0] == "remove" or cmd_l[0] == "append")):&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Esta linha verifica se a operação é um comando de "remove" ou "append" com duas partes &lt;code&gt;cmd_l&lt;/code&gt; deve ter comprimento 2 e o primeiro elemento deve ser "remove" ou "append".&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;if(cmd_l[0] == "remove"):&lt;br&gt;
                l.remove(int(cmd_l[1]))&lt;br&gt;
            elif(cmd_l[0] == "append"):&lt;br&gt;
                l.append(int(cmd_l[1]))&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dependendo do comando(&lt;code&gt;remove&lt;/code&gt; ou &lt;code&gt;append&lt;/code&gt;), o método correspondente da lista &lt;code&gt;l&lt;/code&gt; é chamado. Para &lt;code&gt;remove&lt;/code&gt;, o elemento &lt;code&gt;cmd_l&lt;/code&gt; (convertido para inteiro) é removido da lista. Para &lt;code&gt;append&lt;/code&gt;, o elemento &lt;code&gt;cmd_l[[1]&lt;/code&gt;(convertido para inteiro) é adicionado ao final da lista.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;elif(len(cmd_l) == 1):&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Verifica se a operação é um comando com uma única parte (&lt;code&gt;cmd_l&lt;/code&gt; deve ter comprimento 1).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;if(cmd_l[0] == "sort"):&lt;br&gt;
                l.sort()&lt;br&gt;
            elif(cmd_l[0] == "reverse"):&lt;br&gt;
                l.reverse()&lt;br&gt;
            elif(cmd_l[0] == "pop"):&lt;br&gt;
                l.pop()                &lt;br&gt;
            elif(cmd_l[0] == "print"):&lt;br&gt;
                print(l)&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Dependendo do comando(&lt;code&gt;sort&lt;/code&gt;, &lt;code&gt;reverse&lt;/code&gt;, &lt;code&gt;pop&lt;/code&gt;, ou &lt;code&gt;print&lt;/code&gt;), o método correspondente da lista &lt;code&gt;l&lt;/code&gt; é chamado. &lt;code&gt;sort&lt;/code&gt; ordena a lista, &lt;code&gt;reverse&lt;/code&gt; inverte a ordem dos elementos, &lt;code&gt;pop&lt;/code&gt; remove o último elemento, e &lt;code&gt;print&lt;/code&gt; imprime a lista.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;N -= 1&lt;br&gt;
&lt;/code&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No final do loop, &lt;code&gt;N&lt;/code&gt; é decrementado em 1, indicando que uma operação foi realizada. Isso continua até que &lt;code&gt;N&lt;/code&gt; seja 0, quando o loop termina.&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>python</category>
      <category>hackerrank</category>
      <category>basedatatypes</category>
    </item>
    <item>
      <title>Problema encontrado durante o primeiro uso com Node.js e React com Visual Studio Code</title>
      <dc:creator>Gustavo Medeiros</dc:creator>
      <pubDate>Wed, 14 Aug 2024 18:48:32 +0000</pubDate>
      <link>https://dev.to/gusmedeirost/problema-encontrado-durante-o-primeiro-uso-com-nodejs-e-react-com-visual-studio-code-4657</link>
      <guid>https://dev.to/gusmedeirost/problema-encontrado-durante-o-primeiro-uso-com-nodejs-e-react-com-visual-studio-code-4657</guid>
      <description>&lt;p&gt;Em algum momento, dependendo da trajetória da qual irá seguir, terá de usar Node.js e React para a criação de um projeto, seja como desenvolvedor front-end ou até como mesmo como desenvolvedor fullstack. Durante esse processo pode haver problemas simples, mas que acabam consumindo o nosso tempo.&lt;/p&gt;

&lt;p&gt;&lt;code&gt;PS C:\users\name\Desktop\exemple&amp;gt; npx create-react-app.&lt;br&gt;
npx: O termo 'npx' não é reconhecido como nome de cmlet, função, arquivo de script ou programa operável. Verifique a grafia do nome ou, se um caminho tiver sido incluído, veja se o caminho está correto e tente novamente.&lt;br&gt;
No linha: 1 caractere: 1&lt;br&gt;
+npx create-react-app.&lt;br&gt;
...&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Primeiro verificar se o node.js está instalado e de preferência com a versão mais atualizado do software. Entre no seu terminal &lt;code&gt;windows powershell&lt;/code&gt; e digite &lt;code&gt;node -v&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;PS C:\Users\name&amp;gt; node -v
v20.16.0
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Caso não esteja instalado o node.js entre no &lt;a href="https://nodejs.org/pt" rel="noopener noreferrer"&gt;Site oficial&lt;/a&gt;. Se possuir duvidas acesse então &lt;a href="https://nodejs.org/pt/learn/getting-started/how-to-install-nodejs" rel="noopener noreferrer"&gt;Como instalar Node.js&lt;/a&gt;.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Verificar se o arquivo da instalação está no diretório PATH para executar o node.js no sistema. O PATH é onde contém os diretórios que o sistema operacional irá buscar para poder executar.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Primeiro encontre onde está o arquivo da instalação do node.js e para isso siga esse passo a passo:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Use a caixa de diálogo de pesquisa e digite por &lt;code&gt;node.js&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Clique &lt;code&gt;Abrir local de arquivo&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Em cima do &lt;code&gt;Node.js&lt;/code&gt; clique com o botão direito e vá em &lt;code&gt;Abrir local de arquivo&lt;/code&gt; novamente.&lt;/li&gt;
&lt;li&gt;Copie o caminho do arquivo na barra superior, como exemplo &lt;code&gt;C:\Program Files\nodejs&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Após descobrir o caminho do seu arquivo onde está o node aplicativo, vamos abrir o diretório do PATH&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Clique no &lt;code&gt;ícone da área de trabalho&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Clique em &lt;code&gt;Configurações&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Clique em &lt;code&gt;Sistema&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Clique em &lt;code&gt;Sobre&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Clique em &lt;code&gt;Configurações avançadas do sistema&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Clique no botão &lt;code&gt;Variáveis de Ambiente...&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Vá em &lt;code&gt;path&lt;/code&gt; e clique no botão &lt;code&gt;Editar...&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Clique no botão &lt;code&gt;Novo&lt;/code&gt; e cole o caminho do seu arquivo como o exemplo &lt;code&gt;C:\Program Files\nodejs&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;clique &lt;code&gt;Ok&lt;/code&gt;
&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Feito isso reinicie seu terminal e o Node.js é para funcionar normalmente. Caso ainda tenha problema com o &lt;code&gt;npx create-react-app.&lt;/code&gt;, pode apenas desinstalar &lt;code&gt;npm uninstall -g create-react-app&lt;/code&gt; e instalar novamente &lt;code&gt;npm install -g create-react-app&lt;/code&gt; e teste a função &lt;code&gt;npx create-react-app.&lt;/code&gt;&lt;/p&gt;

</description>
      <category>node</category>
      <category>react</category>
      <category>npm</category>
      <category>404</category>
    </item>
  </channel>
</rss>
