{"id":344,"date":"2018-10-02T15:16:08","date_gmt":"2018-10-02T18:16:08","guid":{"rendered":"http:\/\/lucianodev.com.br\/blog\/?p=344"},"modified":"2018-10-02T16:04:12","modified_gmt":"2018-10-02T19:04:12","slug":"resolvendo-algoritmos-passo-a-passo-introducao","status":"publish","type":"post","link":"https:\/\/lucianodev.com.br\/blog\/resolvendo-algoritmos-passo-a-passo-introducao\/","title":{"rendered":"Resolvendo Algoritmos Passo a Passo (Introdu\u00e7\u00e3o)"},"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><\/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>Fala ai pessoal, tudo bem com voc\u00eas?<\/p>\n<p>H\u00e1 algum tempo eu venho planejando escrever este post (que ir\u00e1 resultar em uma s\u00e9rie de outros posts daqui para frente), com o objetivo de ajudar e encorajar voc\u00eas, que est\u00e3o iniciando na \u00e1rea de programa\u00e7\u00e3o para sistemas de informa\u00e7\u00e3o a resolver sem mist\u00e9rios e complica\u00e7\u00f5es exerc\u00edcios de algoritmos por meio de v\u00e1rias pr\u00e1ticas que irei mostrar aqui (e nos futuros posts sobre o assunto).<\/p>\n<p>Sabemos que hoje para ser um bom programador de sistemas s\u00e3o necess\u00e1rias diversas horas de estudo e dedica\u00e7\u00e3o, com o objetivo de adquirirmos habilidades e t\u00e9cnicas de desenvolvimento que ser\u00e3o muito importantes em nosso cotidiano como programadores.<\/p>\n<p>Para aqueles que j\u00e1 fazem ensino m\u00e9dio t\u00e9cnico em processamento de dados ou at\u00e9 mesmo uma faculdade de desenvolvimento de sistemas, \u00e9 muito comum sentirmos dificuldades na disciplina de algoritmos (que normalmente \u00e9 a primeira mat\u00e9ria que aprendemos antes de iniciarmos realmente a cria\u00e7\u00e3o de sistemas na pr\u00e1tica), mesmo at\u00e9 sabendo que em algoritmos j\u00e1 aprendemos a criar programas passo a passo, de uma forma simples (teoricamente falando). Normalmente sentimos essa dificuldade por lidarmos com l\u00f3gica e racioc\u00ednio, que dependente de como isso \u00e9 abordado pelo professor de programa\u00e7\u00e3o, pode gerar muita confus\u00e3o em nossa cabe\u00e7a, contribuindo &#8220;fortemente&#8221; para desist\u00eancia dessa mat\u00e9ria (ou at\u00e9 mesmo da \u00e1rea de desenvolvimento) e muitos de voc\u00eas j\u00e1 sabem que &#8220;alguns professores&#8221; de programa\u00e7\u00e3o n\u00e3o costumam ter &#8220;paci\u00eancia&#8221; para ensinar programa\u00e7\u00e3o, atropelando o ensino daqueles que tem dificuldade.<\/p>\n<p>Ent\u00e3o pensando nesses fatores venho atrav\u00e9s desse post iniciar uma s\u00e9rie de artigos sobre &#8220;COMO APRENDER A RESOLVER EXERC\u00cdCIOS DE ALGORITMOS&#8221; sem dificuldades e passo a passo, mostrando dicas, t\u00e9cnicas e tudo mais.<\/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><\/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>Interpreta\u00e7\u00e3o do enunciado &#8211; A base para resolver qualquer exerc\u00edcio<\/h2>\n<p>Uma coisa que \u00e9 muito comum com aqueles que est\u00e3o aprendendo programa\u00e7\u00e3o \u00e9 saber e conhecer a finalidade de cada comando da linguagem (independente de qual seja), por\u00e9m, a maior dificuldade (e provavelmente voc\u00ea j\u00e1 sabe disso) \u00e9 saber COMO E QUANDO USAR cada um dos comandos, e essa situa\u00e7\u00e3o se depara quando lidamos com exerc\u00edcios de algoritmos (que normalmente o professor passa) para a gente resolver, pois n\u00e3o sabemos por onde come\u00e7ar (e terminar).<\/p>\n<p>Uma das t\u00e9cnicas para resolver qualquer exerc\u00edcio que seja \u00e9 SABER INTERPRETAR o enunciado do problema a ser resolvido, e muitos ainda tem dificuldade nisso.<\/p>\n<p>Irei mostrar agora, de uma forma bem simples como resolver problemas por meio da cria\u00e7\u00e3o de algoritmos, fazendo a correta interpreta\u00e7\u00e3o do enunciado. Segue:<\/p>\n<blockquote><p>Desenvolver um algoritmo que efetue a leitura do nome e da idade de uma pessoa (via teclado). No final o programa dever\u00e1 mostrar na tela o nome e a idade lida.<\/p><\/blockquote>\n<p>Lendo o enunciado mostrado acima, o algoritmo a ser desenvolvido parece absolutamente simples (e na verdade \u00e9 bem simples mesmo), por\u00e9m, muitos ainda tem dificuldade de saber por onde come\u00e7ar (apesar de saber os comandos da linguagem).<\/p>\n<p>A primeira coisa a identificarmos do enunciado <strong>o que deve ser feito primeiro<\/strong>, e pela leitura identificamos o que deve ser feito \u00e9\u00a0 &#8220;LER O NOME E A IDADE DO USU\u00c1RIO&#8221;. Ent\u00e3o j\u00e1 identificamos o que tem que ser feito primeiro.<\/p>\n<p>Agora dentro do que temos que fazer primeiro \u00e9 descobrir quais comandos da linguagem s\u00e3o necess\u00e1rios para realizar o que \u00e9 pedido. Vamos considerar aqui o PORTUGOL (ou Portugu\u00eas Estruturado) para a demonstra\u00e7\u00e3o desse exemplo (ser\u00e1 enfatizado aqui o modelo do PORTUGOL da ferramenta <strong>VisualG<\/strong>).<\/p>\n<p>Sabemos que para ler a informa\u00e7\u00e3o (via teclado) utilizamos o comando <strong>leia<\/strong>, e que as informa\u00e7\u00f5es que ser\u00e3o lidas via teclado precisam estar armazenadas em\u00a0 vari\u00e1veis, que neste caso ser\u00e3o duas vari\u00e1veis (uma para guardar o nome e outra para guardar a idade).<\/p>\n<p>Como boa pr\u00e1tica, devemos saber que quando uma informa\u00e7\u00e3o \u00e9 solicitada para o usu\u00e1rio digitar, devemos &#8220;mostrar na tela&#8221; que tipo de informa\u00e7\u00e3o o mesmo deve fornecer (sabemos que no PORTUGOL o comando usado para mostrar na tela alguma informa\u00e7\u00e3o \u00e9 o comando <strong>escreva<\/strong>).<\/p>\n<p>Uma outra coisa que identificamos s\u00e3o os tipos de informa\u00e7\u00f5es que devem ser fornecidas: <strong>nome<\/strong> e <strong>idade<\/strong>. Cada informa\u00e7\u00e3o ser\u00e1 armazenado, como vimos antes, em uma vari\u00e1vel, e cada vari\u00e1vel dever\u00e1 assumir um tipo de dados espec\u00edfico (com isso identificamos que a vari\u00e1vel nome ser\u00e1 do tipo <strong>caractere<\/strong> e a vari\u00e1vel idade do tipo <strong>inteiro<\/strong>).<\/p>\n<p>Com isso , j\u00e1 podemos construir a estrutura inicial do nosso algoritmo (que ser\u00e1 expresso no modelo do <strong>VisualG<\/strong>)<\/p>\n<p>A primeira coisa que devemos digitar ser\u00e1 o cabe\u00e7alho do nosso programa (comando <strong>algoritmo<\/strong>):<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">algoritmo \"ler nome e idade\"<\/pre>\n<p>Em seguida devemos fazer a declara\u00e7\u00e3o das vari\u00e1veis, antes de iniciarmos a execu\u00e7\u00e3o passo a passo do programa:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">var\r\n nome: caractere\r\n idade: inteiro<\/pre>\n<p>Agora vamos abrir a estrutura de execu\u00e7\u00e3o de comandos (<strong>inicio<\/strong> e <strong>fimalgoritmo<\/strong>)<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">inicio\r\n \/\/As pr\u00f3ximas instru\u00e7\u00f5es de execu\u00e7\u00e3o ser\u00e3o adicionadas aqui\r\nfimalgoritmo<\/pre>\n<p>Logo ap\u00f3s o coment\u00e1rio inserido entre os comandos <strong>inicio<\/strong> e <strong>fimalgoritmo <\/strong>vamos inserir as seguintes linhas de comando, informando que o usu\u00e1rio precisa digitar o seu nome (al\u00e9m de um comando que faz a leitura do seu nome):<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">escreva(\"Digite o seu nome: \")\r\nleia(nome)<\/pre>\n<p>Logo ap\u00f3s os comandos inseridos acima vamos inserir as seguintes instru\u00e7\u00f5es, informando que o usu\u00e1rio precisa digitar o sua idade (al\u00e9m de um comando que faz a leitura de sua idade):<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">escreva(\"Digite sua idade: \")\r\nleia(idade)<\/pre>\n<p>At\u00e9 aqui conseguimos desenvolver o que <strong>tinha que ser feito primeiro.<\/strong> Em seguida precisamos identificar o que precisa ser feitos depois no enunciado do algoritmo. Pela leitura do enunciado, identificamos que \u00e9\u00a0 preciso no final mostrar o nome e a idade lida, cujas informa\u00e7\u00f5es ficam armazenadas na vari\u00e1vel, logo, para finalizar, vamos digitar ap\u00f3s \u00faltimas instru\u00e7\u00f5es digitadas anteriormente os seguintes comandos:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">escreva(\"O seu nome \u00e9 \",nome,\" e sua idade \u00e9 \",idade)<\/pre>\n<p>Como resultado final temos o seguinte c\u00f3digo completo do algoritmo:<\/p>\n<pre class=\"lang:default highlight:0 decode:true\">algoritmo \"ler nome e idade\"\r\n\r\nvar \r\n  nome: caractere \r\n  idade: inteiro\r\ninicio \r\n \/\/As pr\u00f3ximas instru\u00e7\u00f5es de execu\u00e7\u00e3o ser\u00e3o adicionadas aqui\r\n escreva(\"Digite o seu nome: \")\r\n leia(nome) \r\n escreva(\"Digite sua idade: \")\r\n leia(idade) \r\n escreva(\"O seu nome \u00e9 \",nome,\" e sua idade \u00e9 \",idade)\r\nfimalgoritmo<\/pre>\n<p>Executando o c\u00f3digo acima na ferramenta <strong>VisualG<\/strong> teremos o seguinte resultado:<\/p>\n<p>&nbsp;<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-362 size-full\" src=\"https:\/\/lucianodev.com.br\/blog\/wp-content\/uploads\/2018\/10\/imagem_post_resolvendo_exercicios_intro_1.jpg\" alt=\"Resolvendo Algoritmos Passo a Passo (Introdu\u00e7\u00e3o)\" width=\"552\" height=\"359\" srcset=\"https:\/\/lucianodev.com.br\/blog\/wp-content\/uploads\/2018\/10\/imagem_post_resolvendo_exercicios_intro_1.jpg 552w, https:\/\/lucianodev.com.br\/blog\/wp-content\/uploads\/2018\/10\/imagem_post_resolvendo_exercicios_intro_1-300x195.jpg 300w, https:\/\/lucianodev.com.br\/blog\/wp-content\/uploads\/2018\/10\/imagem_post_resolvendo_exercicios_intro_1-110x72.jpg 110w, https:\/\/lucianodev.com.br\/blog\/wp-content\/uploads\/2018\/10\/imagem_post_resolvendo_exercicios_intro_1-420x273.jpg 420w\" sizes=\"auto, (max-width: 552px) 100vw, 552px\" \/><\/p>\n<p>Vamos experimentar digitar as informa\u00e7\u00f5es solicitadas para conferirmos o resultado no logo em seguida:<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-363 size-full\" src=\"https:\/\/lucianodev.com.br\/blog\/wp-content\/uploads\/2018\/10\/imagem_post_resolvendo_exercicios_intro_2.jpg\" alt=\"Resolvendo Algoritmos Passo a Passo (Introdu\u00e7\u00e3o)\" width=\"552\" height=\"359\" srcset=\"https:\/\/lucianodev.com.br\/blog\/wp-content\/uploads\/2018\/10\/imagem_post_resolvendo_exercicios_intro_2.jpg 552w, https:\/\/lucianodev.com.br\/blog\/wp-content\/uploads\/2018\/10\/imagem_post_resolvendo_exercicios_intro_2-300x195.jpg 300w, https:\/\/lucianodev.com.br\/blog\/wp-content\/uploads\/2018\/10\/imagem_post_resolvendo_exercicios_intro_2-110x72.jpg 110w, https:\/\/lucianodev.com.br\/blog\/wp-content\/uploads\/2018\/10\/imagem_post_resolvendo_exercicios_intro_2-420x273.jpg 420w\" sizes=\"auto, (max-width: 552px) 100vw, 552px\" \/><\/p>\n<p>E ai,\u00a0 viu como o desenvolvimento foi simples fazendo a correta interpreta\u00e7\u00e3o do enunciado do exerc\u00edcio?<\/p>\n<p>Nos pr\u00f3ximos posts estarei fazendo alguns exerc\u00edcios em que iremos resolver de forma pr\u00e1tica e passo a passo, com o intuito de auxiliar o desenvolvimento dos algoritmos de forma f\u00e1cil, baseado na interpreta\u00e7\u00e3o do enunciado dos exerc\u00edcios.<\/p>\n<p>Voc\u00ea gostaria de COMPARTILHAR algum exerc\u00edcio\u00a0de algoritmos seu que tenha d\u00favidas sobre como resolver? Ent\u00e3o voc\u00ea pode preencher o formul\u00e1rio abaixo e enviar o enunciado do seu exerc\u00edcio. Quem sabe no meu pr\u00f3ximo post esteja resolvendo a sua d\u00favida ?<\/p>\n<p>Um forte abra\u00e7o<\/p>\n<noscript class=\"ninja-forms-noscript-message\">\n\tAviso: O JavaScript \u00e9 necess\u00e1rio para esse conte\u00fado.<\/noscript>\nEste formul\u00e1rio est\u00e1 em manuten\u00e7\u00e3o no momento. Tente novamente mais tarde.\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Fala ai pessoal, tudo bem com voc\u00eas? H\u00e1 algum tempo eu venho planejando escrever este post (que ir\u00e1 resultar em uma s\u00e9rie de outros posts daqui para frente), com o&hellip;<\/p>\n","protected":false},"author":1,"featured_media":365,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5,4,3],"tags":[],"class_list":["post-344","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-algoritmo","category-dicas","category-programacao"],"_links":{"self":[{"href":"https:\/\/lucianodev.com.br\/blog\/wp-json\/wp\/v2\/posts\/344","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=344"}],"version-history":[{"count":23,"href":"https:\/\/lucianodev.com.br\/blog\/wp-json\/wp\/v2\/posts\/344\/revisions"}],"predecessor-version":[{"id":371,"href":"https:\/\/lucianodev.com.br\/blog\/wp-json\/wp\/v2\/posts\/344\/revisions\/371"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/lucianodev.com.br\/blog\/wp-json\/wp\/v2\/media\/365"}],"wp:attachment":[{"href":"https:\/\/lucianodev.com.br\/blog\/wp-json\/wp\/v2\/media?parent=344"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/lucianodev.com.br\/blog\/wp-json\/wp\/v2\/categories?post=344"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/lucianodev.com.br\/blog\/wp-json\/wp\/v2\/tags?post=344"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}