{"id":553,"date":"2019-05-22T18:45:32","date_gmt":"2019-05-22T21:45:32","guid":{"rendered":"http:\/\/lucianodev.com.br\/blog\/?p=553"},"modified":"2019-05-22T18:49:11","modified_gmt":"2019-05-22T21:49:11","slug":"instrucoes-uteis-e-praticas-parte-1-operadores-de-prefixo-e-sufixo","status":"publish","type":"post","link":"https:\/\/lucianodev.com.br\/blog\/instrucoes-uteis-e-praticas-parte-1-operadores-de-prefixo-e-sufixo\/","title":{"rendered":"Instru\u00e7\u00f5es \u00fateis e pr\u00e1ticas: Parte #1 (Operadores de prefixo e sufixo)"},"content":{"rendered":"<p><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><span style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" data-mce-type=\"bookmark\" class=\"mce_SELRES_start\">\ufeff<\/span><span style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" data-mce-type=\"bookmark\" class=\"mce_SELRES_start\">\ufeff<\/span><span style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" data-mce-type=\"bookmark\" class=\"mce_SELRES_start\">\ufeff<\/span><\/script><br \/>\n<ins class=\"adsbygoogle\" style=\"display: block; text-align: center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-4648498281437791\" data-ad-slot=\"5451138398\"><\/ins><br \/>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script><\/p>\n<p>Ol\u00e1 pessoal,<\/p>\n<p>Este \u00e9 o primeiro POST (de muitos que ainda v\u00e3o vir) onde irei falar sobre instru\u00e7\u00f5es \u00fateis e pr\u00e1ticas, que \u00e9 muito comum utilizar durante a programa\u00e7\u00e3o, mas que alguns programadores tem a dificuldade de compreender e expressar o seu REAL SIGNIFICADO.<\/p>\n<p>Irei falar nesse PRIMEIRO POST dos OPERADORES DE PREFIXO E SUFIXO, muito presente em linguagens como C\/C++, C#, Java, PHP e etc. Ent\u00e3o vamos l\u00e1.<\/p>\n<p><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><span style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" data-mce-type=\"bookmark\" class=\"mce_SELRES_start\">\ufeff<\/span><span style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" data-mce-type=\"bookmark\" class=\"mce_SELRES_start\">\ufeff<\/span><\/script><br \/>\n<ins class=\"adsbygoogle\" style=\"display: block; text-align: center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-4648498281437791\" data-ad-slot=\"5451138398\"><\/ins><br \/>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script><\/p>\n<h2>Os operadores de PREFIXO e SUFIXO<\/h2>\n<p>Os operadores de PREFIXO E SUFIXO s\u00e3o muito \u00fateis quando queremos incrementar (somar) ou decrementar (subtrair) um valor num\u00e9rico (normalmente tipos como inteiro).<\/p>\n<p>Quem aprendeu programa\u00e7\u00e3o sabe que uma das formas e ATUALIZAR o valor de uma vari\u00e1vel num\u00e9rica incrementando o seu valor e realizando a execu\u00e7\u00e3o da seguinte instru\u00e7\u00e3o, demonstrado na sintaxe abaixo:<\/p>\n<pre class=\"lang:c# decode:true\">&lt;vari\u00e1vel&gt; = &lt;vari\u00e1vel&gt; + 1<\/pre>\n<p>A instru\u00e7\u00e3o acima diz que a &lt;vari\u00e1vel&gt; receber\u00e1 (=) o seu valor incrementado com \u201cmais 1\u201d. Supondo como exemplo uma vari\u00e1vel chamada \u201cx\u201d, cujo valor inicial \u00e9 \u201c12\u201d, considere a seguinte instru\u00e7\u00e3o abaixo:<\/p>\n<pre class=\"lang:c# decode:true \">int x = 12;\r\nx = x + 1;<\/pre>\n<p>Como resultado final a vari\u00e1vel \u201cx\u201d assume no final o valor \u201c13\u201d, por\u00e9m h\u00e1 uma forma mais simples e curta de realizar esse mesmo incremento usando um operador de prefixo ou sufixo, onde ambos incrementam o valor de uma vari\u00e1vel. Vejamos abaixo a sintaxe da aplica\u00e7\u00e3o do operador de prefixo e sufixo respectivamente:<\/p>\n<pre class=\"lang:c# decode:true \">\/\/Para incremento\r\n++&lt;vari\u00e1vel&gt;; \r\nou\r\n&lt;vari\u00e1vel&gt;++;\r\n\r\n\/\/Para decremento\r\n--&lt;vari\u00e1vel&gt;; \r\nou\r\n&lt;vari\u00e1vel&gt;--;<\/pre>\n<p>Logo, a instru\u00e7\u00e3o de incremento poderia ser encurtada de duas formas, conforme mostrado abaixo:<\/p>\n<pre class=\"lang:c# decode:true \">int x = 12;\r\n\/\/Usando operador de prefixo\r\n++x;<\/pre>\n<p>Ou<\/p>\n<pre class=\"lang:c# decode:true \">int x = 12;\r\n\/\/Usando operador de sufixo\r\nx++;<\/pre>\n<p>Pelo o que podemos ver acima, chegamos a conclus\u00e3o de que:<\/p>\n<p><span style=\"color: #993300;\">x++<\/span> <strong>OU<\/strong> <span style=\"color: #993300;\">++x<\/span> <strong>\u00c9 IGUAL A:\u00a0<\/strong> <span style=\"color: #993300;\">x = x + 1\u00a0 <\/span><\/p>\n<p>Para ambas as demonstra\u00e7\u00f5es mostradas anteriormente, o valor final da vari\u00e1vel \u201cx\u201d \u00e9 13, mas qual a <strong>REAL DIFEREN\u00c7A<\/strong> entre os operadores de prefixo e sufixo? Vamos conferir:<\/p>\n<p><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><span style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" data-mce-type=\"bookmark\" class=\"mce_SELRES_start\">\ufeff<\/span><span style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" data-mce-type=\"bookmark\" class=\"mce_SELRES_start\">\ufeff<\/span><\/script><br \/>\n<ins class=\"adsbygoogle\" style=\"display: block; text-align: center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-4648498281437791\" data-ad-slot=\"5451138398\"><\/ins><br \/>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script><\/p>\n<h2>Qual a diferen\u00e7a entre &#8216;++x&#8217;\u00a0 E &#8216;x++&#8217; ?<\/h2>\n<p>Apesar de ambos fazerem a mesma coisa existe uma pequena diferen\u00e7a entre eles, que n\u00e3o \u00e9 poss\u00edvel notar na demonstra\u00e7\u00e3o anterior.<\/p>\n<p>Usando os operadores de prefixo ou sufixo, \u00e9 poss\u00edvel escrever instru\u00e7\u00f5es parecidas como a mostrada abaixo:<\/p>\n<pre class=\"lang:c# decode:true \">\/\/Usando operadores de prefixo\r\nint x = 12;\r\nint y = x++;\r\n\/\/Usando operadores de sufixo\r\nint x = 12;\r\nint y = ++x;<\/pre>\n<p>Nas demonstra\u00e7\u00f5es mostradas anteriormente podemos ver que a vari\u00e1vel \u201cy\u201d recebe como atribui\u00e7\u00e3o (=) o valor de \u201cx\u201d precedido ou seguido de um operador de incremento (++).<\/p>\n<p>A ordem como o operador (++) aparece em \u201cx\u201d afetar\u00e1 no resultado final de \u201cy\u201d. Considerando o operador de prefixo, vamos traduzir de uma forma simples a instru\u00e7\u00e3o mostrada anteriormente:<\/p>\n<p>A instru\u00e7\u00e3o abaixo:<\/p>\n<pre class=\"lang:c# decode:true \">int x=12;\r\nint y = ++x;<\/pre>\n<p>Equivale a:<\/p>\n<pre class=\"lang:c# decode:true \">int x = 12;\r\nx = x + 1;\r\ny = x;<\/pre>\n<p>Como o operador vem na frente da var\u00e1vel \u201cx\u201d, ocorre antes da atribui\u00e7\u00e3o o seu incremento para depois o valor j\u00e1 incrementado ser atribu\u00eddo para \u201cy\u201d. No final teremos a vari\u00e1vel \u201cx\u201d com o valor 13 e \u201cy\u201d tamb\u00e9m com 13.<\/p>\n<p>J\u00e1 usando o operador de sufixo, o cen\u00e1rio j\u00e1 muda, conforme mostrado a seguir:<\/p>\n<p>A instru\u00e7\u00e3o abaixo:<\/p>\n<pre class=\"lang:c# decode:true \">int x=12;\r\nint y = x++;<\/pre>\n<p>Equivale a:<\/p>\n<pre class=\"lang:c# decode:true \">int x = 12;\r\ny = x;\r\nx = x + 1;<\/pre>\n<p>Como o operador vem ap\u00f3s vari\u00e1vel \u201cx\u201d, ocorre primeiramente a atribui\u00e7\u00e3o do seu valor atual (12) para \u201cy\u201d, ocorrendo em seguido o seu incremento. No final teremos a vari\u00e1vel \u201cy\u201d com o valor 12 e \u201cx\u201d com 13.<\/p>\n<p><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><span style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" data-mce-type=\"bookmark\" class=\"mce_SELRES_start\">\ufeff<\/span><span style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" data-mce-type=\"bookmark\" class=\"mce_SELRES_start\">\ufeff<\/span><\/script><br \/>\n<ins class=\"adsbygoogle\" style=\"display: block; text-align: center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-4648498281437791\" data-ad-slot=\"5451138398\"><\/ins><br \/>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script><\/p>\n<h2>Se eu quiser incrementar e decrementar valores acima de 1?<\/h2>\n<p>As instru\u00e7\u00f5es mostradas aqui s\u00e3o v\u00e1lidas para incrementar ou decrementar de forma curta valores de 1 em 1. Agora, que seu quiser atualizar o valor incrementando ou decrementando valores acima de 1? Isso \u00e9 poss\u00edvel utilizando uma outra express\u00e3o. Vejamos a situa\u00e7\u00e3o abaixo:<\/p>\n<pre class=\"lang:c# decode:true \">int x = 12;\r\nx = x + 3;<\/pre>\n<p>Veja que na \u00faltima instru\u00e7\u00e3o incrementamos o valor atual da vari\u00e1vel &#8220;x&#8221; em 3, resultando no final o valor &#8220;15&#8221;. A instru\u00e7\u00e3o de incremento de valores acima de um poderia ser simplificada usando a seguinte sintaxe:<\/p>\n<pre class=\"lang:c# decode:true \">&lt;vari\u00e1vel&gt;+=&lt;valor&gt;;<\/pre>\n<p>Utilizando a sintaxe mostrada acima, poder\u00edamos escrever o c\u00f3digo da demonstra\u00e7\u00e3o anterior da seguinte forma:<\/p>\n<pre class=\"lang:c# decode:true \">int x = 12;\r\nx+=3;<\/pre>\n<p>Logo podemos chegar a conclus\u00e3o de que:<\/p>\n<p><span style=\"color: #993300;\">x+=3\u00a0<\/span> <strong>\u00c9 IGUAL A:\u00a0<\/strong> <span style=\"color: #993300;\">x = x + 3\u00a0 <\/span><\/p>\n<p><script async src=\"\/\/pagead2.googlesyndication.com\/pagead\/js\/adsbygoogle.js\"><span style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" data-mce-type=\"bookmark\" class=\"mce_SELRES_start\">\ufeff<\/span><span style=\"display: inline-block; width: 0px; overflow: hidden; line-height: 0;\" data-mce-type=\"bookmark\" class=\"mce_SELRES_start\">\ufeff<\/span><\/script><br \/>\n<ins class=\"adsbygoogle\" style=\"display: block; text-align: center;\" data-ad-layout=\"in-article\" data-ad-format=\"fluid\" data-ad-client=\"ca-pub-4648498281437791\" data-ad-slot=\"5451138398\"><\/ins><br \/>\n<script>\n     (adsbygoogle = window.adsbygoogle || []).push({});\n<\/script><\/p>\n<h2>Usando outros operadores<\/h2>\n<p>Para a sintaxe demonstrada anteriormente \u00e9 poss\u00edvel a utiliza\u00e7\u00e3o de outros operadores al\u00e9m da soma. Vejamos abaixo:<\/p>\n<pre class=\"lang:c# decode:true \">x+=4; \/\/Equivale a 'x = x + 4'\r\nx-=2; \/\/Equivale a 'x = x - 2'\r\nx*=3; \/\/Equivale a 'x = x * 3'\r\nx\/=3; \/\/Equivale a 'x = x \/ 3'<\/pre>\n<p>Bom pessoal, por hoje \u00e9 s\u00f3. Em breve estarei postando mais dicas de uso de instru\u00e7\u00f5es parecidas como essa, que aceleram muito o processo de codifica\u00e7\u00e3o, de uma forma muito pr\u00e1tica\u00a0 e simples.<\/p>\n<p>Se voc\u00ea achou legal este POST compartilhe com seus amigos, pois dicas como essa s\u00e3o de grande import\u00e2ncia.<\/p>\n<p>Um forte abra\u00e7o para todos<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ol\u00e1 pessoal, Este \u00e9 o primeiro POST (de muitos que ainda v\u00e3o vir) onde irei falar sobre instru\u00e7\u00f5es \u00fateis e pr\u00e1ticas, que \u00e9 muito comum utilizar durante a programa\u00e7\u00e3o, mas&hellip;<\/p>\n","protected":false},"author":1,"featured_media":554,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4,16,11,3],"tags":[],"class_list":["post-553","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-dicas","category-java","category-linguagem-c","category-programacao"],"_links":{"self":[{"href":"https:\/\/lucianodev.com.br\/blog\/wp-json\/wp\/v2\/posts\/553","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/lucianodev.com.br\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/lucianodev.com.br\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/lucianodev.com.br\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/lucianodev.com.br\/blog\/wp-json\/wp\/v2\/comments?post=553"}],"version-history":[{"count":10,"href":"https:\/\/lucianodev.com.br\/blog\/wp-json\/wp\/v2\/posts\/553\/revisions"}],"predecessor-version":[{"id":564,"href":"https:\/\/lucianodev.com.br\/blog\/wp-json\/wp\/v2\/posts\/553\/revisions\/564"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/lucianodev.com.br\/blog\/wp-json\/wp\/v2\/media\/554"}],"wp:attachment":[{"href":"https:\/\/lucianodev.com.br\/blog\/wp-json\/wp\/v2\/media?parent=553"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lucianodev.com.br\/blog\/wp-json\/wp\/v2\/categories?post=553"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lucianodev.com.br\/blog\/wp-json\/wp\/v2\/tags?post=553"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}