{"id":489,"date":"2017-04-11T14:43:52","date_gmt":"2017-04-11T17:43:52","guid":{"rendered":"http:\/\/gianfratti.com\/?p=489"},"modified":"2017-04-11T14:52:32","modified_gmt":"2017-04-11T17:52:32","slug":"c-for-foreach-while","status":"publish","type":"post","link":"https:\/\/gianfratti.com\/index.php\/c-for-foreach-while\/","title":{"rendered":"C# For \u2013 Foreach \u2013 While"},"content":{"rendered":"<p>Ol\u00e1 Pessoal, Como fazer La\u00e7o de repeti\u00e7\u00e3o em C# dos tipos For \u2013 Foreach \u2013 While?<\/p>\n<p>Se voc\u00ea n\u00e3o sabe ou tinha d\u00favida, vamos aprender hoje!<br \/>\nOs la\u00e7os de repeti\u00e7\u00e3o est\u00e3o presentes desde as primeiras linguagens e at\u00e9 hoje s\u00e3o extremamente utilizados, basicamente o la\u00e7o repete um bloco de instru\u00e7\u00f5es at\u00e9 que uma condi\u00e7\u00e3o seja satisfeita.<br \/>\nVamos l\u00e1:<!--more--><\/p>\n<p>A simula\u00e7\u00e3o de c\u00f3digo foi feito em um projeto Windows Application.<\/p>\n<p><strong>La\u00e7o FOR<\/strong><\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nfor (int i = 0; i &lt;= 10; i++)\r\n{\r\n  MessageBox.Show(&quot;6 x &quot; + i.ToString() + &quot; = &quot; + (i * 6).ToString());\r\n}\r\n<\/pre>\n<p>Leitura:<br \/>\nPara i (inteiro) igual a 0 at\u00e9 i menor igual a 10 acrescente i+1<\/p>\n<p>Simples n\u00e9?<br \/>\nPodemos fazer um For inverso, onde ele come\u00e7a de um maior e regride:<\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nfor (int i = 11 - 1; i &gt;= 0; i--)\r\n{\r\n  MessageBox.Show(&quot;6 x &quot; + i.ToString() + &quot; = &quot; + (i * 6).ToString());\r\n}\r\n<\/pre>\n<p>Esse tipo de For \u00e9 \u00fatil quando temos um Array de valores onde sabemos o tamanho total dele.<\/p>\n<p><strong>La\u00e7o FOR EACH<\/strong><\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nforeach (Control item in this.Controls)\r\n{\r\n  MessageBox.Show(item.Name);\r\n}\r\n<\/pre>\n<p>Funciona um pouco diferente, \u00e9 muito utilizado para varrer tipos de objetos que est\u00e3o contidos em uma cole\u00e7\u00e3o (array de objetos).<\/p>\n<p>Por ex, neste c\u00f3digo foi criado um item do tipo Control (controle de formul\u00e1rio tipo button, label). Esse item a cada la\u00e7o do ForEach recebe um elemento da cole\u00e7\u00e3o de todos os controles do formul\u00e1rio.<\/p>\n<p><strong>La\u00e7o WHILE<\/strong><\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nint div = 1000;\r\nwhile (div != 3)\r\n{\r\n  div = div \/ 2;\r\n  MessageBox.Show(&quot;valor de n\u00famero \u00e9: &quot; + div.ToString());\r\n}\r\n<\/pre>\n<p>Leitura:<br \/>\nEnquanto (condi\u00e7\u00e3o esperada n\u00e3o ocorre) fa\u00e7a:<br \/>\nEm determinado momento a vari\u00e1vel div sendo dividida por 2 vai ser igual a 3 e satisfar\u00e1 a condi\u00e7\u00e3o do While, enquanto isso n\u00e3o ocorrer o la\u00e7o continuar\u00e1 em Loop.<br \/>\nPS \u2013 Cuidado com o la\u00e7o While, cometer um erro que resulta em loop infinito \u00e9 f\u00e1cil, nesse caso basta alterar para while (div != 2) e teremos um loop infinito &#x1f609;<\/p>\n<p><strong>La\u00e7o DO WHILE<\/strong><\/p>\n<pre class=\"brush: php; title: ; notranslate\" title=\"\">\r\nint num = 10;\r\ndo\r\n{\r\n  num += 5;\r\n  MessageBox.Show(&quot;valor de n\u00famero \u00e9: &quot; + num.ToString());\r\n}\r\nwhile (num &gt; 100);\r\n<\/pre>\n<p>\u00c9 a mesma ideia do primeiro While, o que muda \u00e9 que no primeiro a condi\u00e7\u00e3o \u00e9 testada no come\u00e7o do la\u00e7o e no Do While, \u00e9 testada no final do la\u00e7o. Isso \u00e9 importante dependendo do que precisar fazer.<\/p>\n<p>Essas s\u00e3o as estruturas de la\u00e7o de repeti\u00e7\u00e3o que temos no C#, procure memorizar e entender para qual cen\u00e1rio cada um \u00e9 mais adequado.<\/p>\n<p>Logo mais abordarei Express\u00f5es Lambda, que em determinados momentos podem substituir o uso de um ForEach.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ol\u00e1 Pessoal, Como fazer La\u00e7o de repeti\u00e7\u00e3o em C# dos tipos For \u2013 Foreach \u2013 While? Se voc\u00ea n\u00e3o sabe ou tinha d\u00favida, vamos aprender hoje! Os la\u00e7os de repeti\u00e7\u00e3o est\u00e3o presentes desde as primeiras linguagens e at\u00e9 hoje s\u00e3o extremamente utilizados, basicamente o la\u00e7o repete um bloco de instru\u00e7\u00f5es at\u00e9 que uma condi\u00e7\u00e3o seja <span class=\"ellipsis\">&hellip;<\/span> <span class=\"more-link-wrap\"><a href=\"https:\/\/gianfratti.com\/index.php\/c-for-foreach-while\/\" class=\"more-link\"><span>Read More &rarr;<\/span><\/a><\/span><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_exactmetrics_skip_tracking":false,"_exactmetrics_sitenote_active":false,"_exactmetrics_sitenote_note":"","_exactmetrics_sitenote_category":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[2,15],"tags":[],"class_list":["post-489","post","type-post","status-publish","format-standard","hentry","category-net-framework","category-back-end"],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/posts\/489","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/comments?post=489"}],"version-history":[{"count":2,"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/posts\/489\/revisions"}],"predecessor-version":[{"id":491,"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/posts\/489\/revisions\/491"}],"wp:attachment":[{"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/media?parent=489"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/categories?post=489"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gianfratti.com\/index.php\/wp-json\/wp\/v2\/tags?post=489"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}