<?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>Forem: Daniel Dormin</title>
    <description>The latest articles on Forem by Daniel Dormin (@dormin).</description>
    <link>https://forem.com/dormin</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%2F762943%2F0d2374c9-3126-425a-8b4c-566991f54bee.png</url>
      <title>Forem: Daniel Dormin</title>
      <link>https://forem.com/dormin</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/dormin"/>
    <language>en</language>
    <item>
      <title>Ordenação rápida - Quick Sort</title>
      <dc:creator>Daniel Dormin</dc:creator>
      <pubDate>Fri, 11 Nov 2022 15:43:52 +0000</pubDate>
      <link>https://forem.com/dormin/ordenacao-rapida-quick-sort-171f</link>
      <guid>https://forem.com/dormin/ordenacao-rapida-quick-sort-171f</guid>
      <description>&lt;p&gt;Último post dessa série de algoritmos de ordenção! Já falamos do Bubble sort e do Selection sort, hoje vamos falar de um algoritmo que pode ser usado em seus projetos! O Quick sort, um algoritmo rápido que sua notação big O em O(n log n) no caso médio o que é bem melhor do que tinhamos antes nos algoritmos anteriores.&lt;/p&gt;

&lt;h2&gt;
  
  
  Como ele funciona?
&lt;/h2&gt;

&lt;p&gt;O quicksort adota a estratégia de divisão e conquista. A estratégia consiste em rearranjar de modo que os números maiores fiquem a direita do pivô e os números menores a esquerda, fazendo isso de forma recursiva, assim a lista fica cada vez menor.&lt;/p&gt;

&lt;p&gt;Os passos são:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Escolha um elemento da lista, denominado pivô;&lt;/li&gt;
&lt;li&gt;Particiona: rearranje a lista de forma que todos os elementos anteriores ao pivô sejam menores que ele, 
e todos os elementos posteriores ao pivô sejam maiores que ele.Ao fim do processo o pivô estará em sua posição final e 
haverá duas sub listas não ordenadas.Essa operação é denominada partição;&lt;/li&gt;
&lt;li&gt;Recursivamente ordene a sub lista dos elementos menores e a sub lista dos elementos maiores;&lt;/li&gt;
&lt;li&gt;O caso base da recursão são as listas de tamanho zero ou um, que estão sempre ordenadas.O processo é finito, 
pois a cada iteração pelo menos um elemento é posto em sua posição final e não será mais manipulado na iteração seguinte.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A escolha do pivô e os passos do Particiona podem ser feitos de diferentes formas e a escolha de uma implementação específica afeta fortemente a performance do algoritmo.&lt;br&gt;
A Imagem a baixo exemplifica bem como é feita divisão.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr8xco3mmscn7dow2k5yp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fr8xco3mmscn7dow2k5yp.png" alt="Image description"&gt;&lt;/a&gt;&lt;br&gt;
A escolha do pivô pode ser feita de forma aleátória ou por uma regra.&lt;/p&gt;

&lt;p&gt;O código é bem consiso e simples por não usar loop é totalmente aplicavel em códigos funcionais com algumas alterações dentro da função :D&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;


&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="kd"&gt;function&lt;/span&gt; &lt;span class="nf"&gt;quicksort&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;array&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nx"&gt;array&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;pivot&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;left&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;right&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[]&lt;/span&gt;

    &lt;span class="k"&gt;for &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;pivot&lt;/span&gt; &lt;span class="p"&gt;?&lt;/span&gt; &lt;span class="nx"&gt;left&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;right&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;push&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;array&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="nf"&gt;quicksort&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;left&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;concat&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;pivot&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nf"&gt;quicksort&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;right&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;quicksort&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;



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

&lt;/div&gt;

&lt;p&gt;No código como dito criamos uma função, definimos um pivô e criamos dois arrays auxiliares um para a direita e um para esquerda, é feito um loop para comparar os valores e colocarem no array certo, seja ele para esquerda ou para direita, depois concatatenamos e chamamos a função novamente até que o array esteja totalmente dividido para retornar o array ordenado, como visto na condicional de parada na linha 3.&lt;/p&gt;

&lt;p&gt;Muito obrigado por ler até aqui, fiquem a vontade em me enviar dúvidas comentários ou críticas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Referências
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.amazon.com.br/Entendendo-Algoritmos-Ilustrado-Programadores-Curiosos/dp/8575225634/ref=sr_1_1?keywords=entendo+algoritmos&amp;amp;qid=1665248064&amp;amp;qu=eyJxc2MiOiIwLjczIiwicXNhIjoiMC4yOSIsInFzcCI6IjAuMzQifQ%253D%253D&amp;amp;sprefix=entendo+al%252Caps%252C234&amp;amp;sr=8-1&amp;amp;_encoding=UTF8&amp;amp;tag=dormin0f-20&amp;amp;linkCode=ur2&amp;amp;linkId=c4974c19ccad271886d077fca1397935&amp;amp;camp=1789&amp;amp;creative=9325" rel="noopener noreferrer"&gt;Entendo algoritmos&lt;/a&gt; - Aditya Y. Bhargava &lt;/p&gt;

&lt;p&gt;&lt;a href="https://pt.wikipedia.org/wiki/Quicksort" rel="noopener noreferrer"&gt;Wikpédia quick sort&lt;/a&gt;&lt;/p&gt;

</description>
      <category>braziliandevs</category>
      <category>algorithms</category>
      <category>javascript</category>
      <category>algoritmos</category>
    </item>
    <item>
      <title>Ordenação por seleção - Selection Sort</title>
      <dc:creator>Daniel Dormin</dc:creator>
      <pubDate>Sat, 08 Oct 2022 17:08:35 +0000</pubDate>
      <link>https://forem.com/dormin/ordenacao-por-selecao-selection-sort-5hla</link>
      <guid>https://forem.com/dormin/ordenacao-por-selecao-selection-sort-5hla</guid>
      <description>&lt;p&gt;Seguindo nossos estudos vamos agora para o &lt;strong&gt;Selection Sort&lt;/strong&gt;, um algoritmo simples que é um pouquinho diferente que o último citado o &lt;a href="https://dev.to/dormin/ordenacao-por-flutuacao-bubble-sort-1hfe"&gt;Bubble sort&lt;/a&gt; seguindo a notação Big O a complexidade é O(n²)&lt;br&gt;
não é um algoritmo rápido mas como nosso objetivo é estudo ele nos serve bem :D&lt;/p&gt;
&lt;h2&gt;
  
  
  Como ele funciona?
&lt;/h2&gt;

&lt;p&gt;A ordenação por seleção é um algoritmo de ordenação baseado em se passar sempre o menor valor do vetor para a primeira posição (ou o maior dependendo da ordem requerida), depois o de segundo menor valor para a segunda posição, e assim é feito sucessivamente.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo6rqz66o9kca8aq0l32u.gif" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo6rqz66o9kca8aq0l32u.gif" alt="Image description"&gt;&lt;/a&gt; &lt;br&gt;
Na imagem acima é exemplificado!&lt;/p&gt;

&lt;p&gt;Ou seja ele é beeem parecido com o bubble sort que joga o maior valor para o final do vetor, em velocidade nós não ganhamos muito ¯_ (ツ)_/¯&lt;/p&gt;

&lt;p&gt;Mas vamos para o código&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;14&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;23&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;9&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;

&lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;min&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;
    &lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;aux&lt;/span&gt; 
    &lt;span class="k"&gt;for&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;j&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;j&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;j&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;){&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;j&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;min&lt;/span&gt;&lt;span class="p"&gt;]){&lt;/span&gt;
            &lt;span class="nx"&gt;min&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;j&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="k"&gt;if &lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;!=&lt;/span&gt; &lt;span class="nx"&gt;min&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="nx"&gt;aux&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;min&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
        &lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;min&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;aux&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;arr&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Como dito o código não é muito diferente, ainda temos um loop aninhado que resolve um valor por vez como é visto na imagem.&lt;br&gt;
Muito obrigado por ler até aqui, fiquem a vontade em me enviar dúvidas comentários ou críticas.&lt;/p&gt;

&lt;h2&gt;
  
  
  Referências
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://www.amazon.com.br/Entendendo-Algoritmos-Ilustrado-Programadores-Curiosos/dp/8575225634/ref=sr_1_1?keywords=entendo+algoritmos&amp;amp;qid=1665248064&amp;amp;qu=eyJxc2MiOiIwLjczIiwicXNhIjoiMC4yOSIsInFzcCI6IjAuMzQifQ%253D%253D&amp;amp;sprefix=entendo+al%252Caps%252C234&amp;amp;sr=8-1&amp;amp;_encoding=UTF8&amp;amp;tag=dormin0f-20&amp;amp;linkCode=ur2&amp;amp;linkId=c4974c19ccad271886d077fca1397935&amp;amp;camp=1789&amp;amp;creative=9325" rel="noopener noreferrer"&gt;Entendo algoritmos&lt;/a&gt; - Aditya Y. Bhargava &lt;/p&gt;

&lt;p&gt;&lt;a href="https://pt.wikipedia.org/wiki/Selection_sort" rel="noopener noreferrer"&gt;Wikpédia selection sort&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>algorithms</category>
      <category>algoritmos</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>Ordenação por flutuação - Bubble Sort</title>
      <dc:creator>Daniel Dormin</dc:creator>
      <pubDate>Mon, 03 Oct 2022 20:42:38 +0000</pubDate>
      <link>https://forem.com/dormin/ordenacao-por-flutuacao-bubble-sort-1hfe</link>
      <guid>https://forem.com/dormin/ordenacao-por-flutuacao-bubble-sort-1hfe</guid>
      <description>&lt;p&gt;Começando meus estudos de algoritmos cai no Bubble sort.&lt;br&gt;
Vamos entender o que é um algoritmo para começar nossa caminhada de estudo.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Em matemática e ciência da computação, um algoritmo é uma sequência finita de ações executáveis que visam obter uma solução para um determinado tipo de problema. Segundo Dasgupta, Papadimitriou e Vazirani; "Algoritmos são procedimentos precisos, não ambíguos, padronizados, eficientes e corretos."&lt;/em&gt; - Wikipédia&lt;/p&gt;

&lt;p&gt;Esse trecho do wikipédia é o suficiente para entendermos o que é um algoritmo. Sabendo disso podemos passar para o algoritmo de estudo, o bubble sort, como o nome diz esse é um algoritmo de ordenação, ou seja o objetivo dele é ordenar uma estrutura de dados como um array. Por exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="c1"&gt;//Um array desordenado&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="c1"&gt;//Um array ordenado&lt;/span&gt;
&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt; &lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Neste exemplo o array está ordenado de forma crescente mas a ordenação pode ser feita conforme a necessidade.&lt;br&gt;
O bubble sort reorganiza o array para que a ordenação seja feita.&lt;/p&gt;
&lt;h3&gt;
  
  
  Como o Bubble sort faz isso?
&lt;/h3&gt;

&lt;p&gt;O bubble sort funciona comparando de dois em dois valores, trocando-os de lugar do maior pro menor ou do menor pro maior por meio de um loop e uma condicional. exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;var&lt;/span&gt; &lt;span class="nx"&gt;arr&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Na primeira comparação ele compara o primeiro e o segundo valor (2 e 3), não há nada para trocar ele passa para a próxima dupla.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Na segunda volta ele compara o segundo e o terceiro valor (3 e 6), também não precisa ser alterado.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Na terceira volta compara o terceiro e o quarto valor (6, 1), aqui os valores são trocados assim os organizando (1, 6).&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;E assim continua até que o maior valor fique totalmente à direita, depois ele volta fazendo de novo a comparação, até o segundo maior valor está organizado, seguindo até que todo o array esteja organizado.&lt;br&gt;
Neste ponto podemos perceber que precisamos de dois loops, um loop para mais interno para comparar todos os valores e reorganizar o array e um mais externo para que ele faça isso para cada item do array.&lt;br&gt;
O código fica assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;lista&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;17&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;numero&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;lista&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="nx"&gt;lista&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kd"&gt;let&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;=&lt;/span&gt; &lt;span class="nx"&gt;lista&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;length&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;lista&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="nx"&gt;lista&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;])&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
            &lt;span class="nx"&gt;numero&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;lista&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
            &lt;span class="nx"&gt;lista&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;lista&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
            &lt;span class="nx"&gt;lista&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="nx"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nx"&gt;numero&lt;/span&gt;
        &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="nx"&gt;console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;log&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;lista&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fiz uma demonstração, caso queira conferir o link é: &lt;a href="https://codepen.io/ddparkas/pen/JjpVJdb"&gt;https://codepen.io/ddparkas/pen/JjpVJdb&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Muito obrigado por ler até aqui abaixo deixo as referências usadas:&lt;br&gt;
&lt;a href="https://pt.wikipedia.org/wiki/Algoritmo"&gt;https://pt.wikipedia.org/wiki/Algoritmo&lt;/a&gt;&lt;br&gt;
&lt;a href="https://pt.wikipedia.org/wiki/Bubble_sort"&gt;https://pt.wikipedia.org/wiki/Bubble_sort&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>braziliandevs</category>
      <category>algorithms</category>
    </item>
    <item>
      <title>Tipos primitivos em Python</title>
      <dc:creator>Daniel Dormin</dc:creator>
      <pubDate>Fri, 11 Feb 2022 18:59:51 +0000</pubDate>
      <link>https://forem.com/dormin/tipos-primitivos-em-python-10jg</link>
      <guid>https://forem.com/dormin/tipos-primitivos-em-python-10jg</guid>
      <description>&lt;p&gt;A pouquissimo tempo eu me interessei por Pyhton com o intuito de aprender inteligência artificial e análise de dados. Essa jornada começou esse ano, tenho muito que percorrer, e como provavelmente meu foco vai se voltar mais para Python mesmo eu amando JavaScript vou tentar sempre postar meu progresso, mais como um jeito de revisar meu conhecimento e reafirma-lo.&lt;br&gt;
Começando do começo &lt;strong&gt;O que são tipos primitivos?&lt;/strong&gt;&lt;br&gt;
Tipos primitivos são tipos de dados primitivos(básicos), ou seja tipos de dados que podemos manipular dentro de uma variavel, por exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;dinheiro&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;1.50&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No código a cima temos uma variavel nomeada como dinheiro contendo um valor, um dado de 1.50, por ser um valor com casas decimais o tipo deste dado é o tipo real ou &lt;strong&gt;float&lt;/strong&gt;. Para ficar mais claro vamos a outro exemplo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;nome&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;'Dormin'&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Certo agora percebemos que o valor a cima não é mais um dado do tipo real, agora se trata de um dado do tipo de texto ou &lt;strong&gt;string&lt;/strong&gt;.&lt;br&gt;
Agora que já sabemos o que é um tipo primitivo vamos aos &lt;strong&gt;tipos primitivos em python&lt;/strong&gt; que são:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Inteiro - int -&amp;gt; Numeros inteiros( -2,-1,1,2,3,4....)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Real, Ponto futuante - float -&amp;gt; Numeros com casas decimais(2.56)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Booleano - bool -&amp;gt; verdadeiro ou falso (true, false)&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;complexo - complex -&amp;gt; aindanão sei tenho de pesquisar mais :c&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;String - str -&amp;gt; textos alfanumericos("o rato roeu a roupa do rei")&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Para conferir cada tipo podemos usar a função type.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="n"&gt;nome&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="s"&gt;'Dormin'&lt;/span&gt; &lt;span class="c1"&gt;#string
&lt;/span&gt;&lt;span class="n"&gt;idade&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;26&lt;/span&gt; &lt;span class="c1"&gt;#int
&lt;/span&gt;&lt;span class="n"&gt;altura&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mf"&gt;1.75&lt;/span&gt; &lt;span class="c1"&gt;#float
&lt;/span&gt;&lt;span class="n"&gt;humano&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;true&lt;/span&gt; &lt;span class="c1"&gt;#bool
&lt;/span&gt;
&lt;span class="nb"&gt;type&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;nome&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Espero ter ajudado conforme for aprendendo postarei cada vez mais :)&lt;/p&gt;

</description>
      <category>python</category>
    </item>
    <item>
      <title>HTML5 Canvas - Criando e alterando tamanho</title>
      <dc:creator>Daniel Dormin</dc:creator>
      <pubDate>Tue, 30 Nov 2021 18:24:56 +0000</pubDate>
      <link>https://forem.com/dormin/html5-canvas-criando-e-alterando-tamanho-1jlk</link>
      <guid>https://forem.com/dormin/html5-canvas-criando-e-alterando-tamanho-1jlk</guid>
      <description>&lt;p&gt;Olá você que me lê. Hoje vamos criar e redimensionar o tamanho do canvas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Criação&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;de início precisamos abrir as tags html&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight html"&gt;&lt;code&gt;&lt;span class="nt"&gt;&amp;lt;canvas&lt;/span&gt; &lt;span class="na"&gt;id=&lt;/span&gt;&lt;span class="s"&gt;"canvas"&lt;/span&gt;&lt;span class="nt"&gt;&amp;gt;&lt;/span&gt;Seu navegador não suporta este conteúdo&lt;span class="nt"&gt;&amp;lt;/canvas&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Note que a tag canvas possui o atributo "ID" para que possamos capturar a tag pelo JavaScript. Também é usada uma frase em meio as tags para informar navegadores que não possuam compatibilidade com Canvas.&lt;/p&gt;

&lt;p&gt;Veja a lista de navegadores com suporte aqui &lt;/p&gt;

&lt;p&gt;Logo após precisamos capturar a tag HTML para o JavaScript&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;canvas&lt;/span&gt;&lt;span class="err"&gt; &lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;getElementById&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;canvas&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Foi utilizado a função de captura direto pelo id, mas nada impede de usar outras funções como a de querySelector.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Redimensionamento&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Após a criação só trabalharemos com o documento JavaScript, para fazer o redimensionamento utilizamos a constante canvas previamente capturada.&lt;/p&gt;

&lt;p&gt;Pode-se definir tamanhos em pixels passando os valores para a largura(width) e altura(height)&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;canvas&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;width&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;300&lt;/span&gt;

&lt;span class="nx"&gt;canvas&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;height&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;300&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Ou pode-se utilizar o tamanho completo da janela que o canvas será executado&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nx"&gt;canvas&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;width&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerWidth&lt;/span&gt;

&lt;span class="nx"&gt;canvas&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;height&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nb"&gt;window&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;innerHeight&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;é possivel alteração de estilo por CSS, porém para um melhor desempenho e para deixar o canvas dinâmico o melhor é redimensioná-lo diretamente no javaScript&lt;/p&gt;

&lt;p&gt;Pronto agora sabemos exatamente como podemos criar e alterar o tamanho do nosso canvas, para alteração de estilo, cor, bordas, sombras e etc utilizamos CSS.&lt;/p&gt;

&lt;p&gt;Obrigado por ler, dúvidas, sugestões ou críticas, aqui embaixo nos comentários ou por email. Terei o prazer em responder.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Referências:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Livro -&amp;gt; &lt;a href="https://amzn.to/3DaaJyz"&gt;Desenvolva jogos com HTML5 Canvas e JavaScript&lt;/a&gt;&lt;/p&gt;

</description>
      <category>javascript</category>
      <category>canvas</category>
      <category>ptbr</category>
      <category>braziliandevs</category>
    </item>
    <item>
      <title>HTML5 Canvas - conceitos básicos</title>
      <dc:creator>Daniel Dormin</dc:creator>
      <pubDate>Sat, 27 Nov 2021 02:22:56 +0000</pubDate>
      <link>https://forem.com/dormin/html5-canvas-conceitos-basicos-49k8</link>
      <guid>https://forem.com/dormin/html5-canvas-conceitos-basicos-49k8</guid>
      <description>&lt;p&gt;Olá você que me lê. &lt;/p&gt;

&lt;p&gt;Esse vai ser o primeiro post de uma série sobre canvas do zero, basedo em livros, videos, posts e testes.&lt;/p&gt;

&lt;p&gt;A cada conceito interessante ou importante, será escrito um post.&lt;/p&gt;

&lt;p&gt;Como primeiro post vamos falar um pouco do que é o canvas e conceitos importantes para domina-lo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;O que é HTML5 Canvas?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Canvas é uma tag do HTML5 usada para definir um quadro de desenho gráfico 2D ou 3D, para fazer eses desenhos é necessario o uso do JavaScript, ou seja a tag canvas no HTML5 só reserva o espaço assim como outras tags.&lt;/p&gt;

&lt;p&gt;É possivel ultilizar atributos globais nesta tag, como ID, Class, Style e por ai vai.&lt;/p&gt;

&lt;p&gt;A tag canvas é escrita: &lt;/p&gt;

&lt;p&gt;Contendo uma abertura e um fechamento.&lt;/p&gt;

&lt;p&gt;Qual a vantagem de usar canvas sendo que posso desenhar com svg ou css?&lt;/p&gt;

&lt;p&gt;Sendo o canvas um elemento dedicado para renderização de vários frames por segundo(fps), este tem a vantagem de ser mais performático do que outras formas de animação e interação gráficas dentro de projetos, não perdemos qualidade e nos dá a posibilidade criar animações, jogos e interações mais complexas.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conceitos básicos&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Cada conceito será melhor explicado com um post dedicado, abaixo está uma visão geral sobre o que precisamos aprender para dominar o canvas.&lt;/p&gt;

&lt;p&gt;1- Criar e Mudar o tamanho do canvas&lt;/p&gt;

&lt;p&gt;2- Desenhar elementos no canvas&lt;/p&gt;

&lt;p&gt;3- Animar elementos no canvas&lt;/p&gt;

&lt;p&gt;4- Interagir com os elementos do canvas&lt;/p&gt;

&lt;p&gt;A partir do ponto que conseguirmos fazer esses quatro passos sem dificuldade é possivel criar jogos , animações e elementos interativos em nossos projetos web.&lt;/p&gt;

&lt;p&gt;meu objetivo é começar por esse ponto e explorar todas as possibilidades que o JavaScript pode nos oferecer, essa linguagem tão estranha e tão maravilhosa ao mesmo tempo.&lt;/p&gt;

&lt;p&gt;Obrigado por ler, duvidas sugestões ou criticas, aqui em baixo nos comentários ou por email. Terei o prazer em responder.&lt;/p&gt;

&lt;p&gt;Referências:&lt;/p&gt;

&lt;p&gt;Video -&amp;gt; &lt;a href="https://www.youtube.com/watch?v=EO6OkltgudE&amp;amp;list=PLpPnRKq7eNW3We9VdCfx9fprhqXHwTPXL"&gt;Chris course&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Livro -&amp;gt; &lt;a href="https://amzn.to/3AgwfAM"&gt;Desenvolva jogos com HTML5 Canvas e JavaScript&lt;/a&gt;&lt;/p&gt;

</description>
      <category>braziliandevs</category>
      <category>javascript</category>
      <category>canvas</category>
      <category>ptbr</category>
    </item>
    <item>
      <title>Como aumentar as seguranças das senhas</title>
      <dc:creator>Daniel Dormin</dc:creator>
      <pubDate>Sat, 27 Nov 2021 01:54:59 +0000</pubDate>
      <link>https://forem.com/dormin/como-aumentar-as-segurancas-das-senhas-4jk4</link>
      <guid>https://forem.com/dormin/como-aumentar-as-segurancas-das-senhas-4jk4</guid>
      <description>&lt;p&gt;Hoje é muito comum a falta de privacidade, a principal causa da falta de segurança é o mau uso da internet em redes sociais e sites de compras. Em algumas pesquisa notamos que é possível evitar grandes dores de cabeça com alguns passos simples:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Ter uma senha segura.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Uma senha segura não significa uma senha complicada uma dica bem valiosa é escolher uma frase e usar só a primeira letra de cada palavra, por exemplo “cada um com seus pães” a senha ficaria cucsp, assim fica facil de lembrar e difícil de adivinhar, essa está bem simples mas poderia muito bem ser incrementada “Cada um com seus pães de R$1,50” ficaria CucspdR$150. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Não divulgar informações pessoais em redes sociais&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Postar fotos com cartões de crédito ou documentos são um prato cheio pra que está mal intencionado, devemos lembrar que nem sempre são só nossos amigos que veem nosso perfil no facebook, no instagram e etc.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Não dar informações a estranhos&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Muitas vezes recebemos mensagens que ganhamos um prêmio e para isso basta fazer um cadastro, isso tem altíssimas chances de ser um golpe, e podemos estar vulneráveis ao fazer cadastro sem verificar as fontes&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Verificar o endereço do site em que está&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Alguns criminosos simulam sites para obter informações, montam o site quase igual ou até mesmo igual o original, mas com o endereço levemente diferente, por exemplo “www.facebok.com “ pode ser um site para simular “www.facebook.com”  ao digitar seu login e sua senha estará dando acesso a outra pessoa.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Certificar que o site onde está é seguro&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Sempre que formos fazer uma compra ou qualquer tipo de transação bancária é necessário verificar se o endereço do site em que estamos é confiável, a maioria dos navegadores mostram o https em verde na barra de busca.&lt;/p&gt;

&lt;p&gt;Obrigado por ler!&lt;/p&gt;

&lt;p&gt;Críticas sugestões ou duvidas aqui em baixo ou por e-mail. Teremos sempre prazer em responder.Até o próximo post.&lt;/p&gt;

</description>
    </item>
  </channel>
</rss>
