{"id":40208,"date":"2020-02-01T06:04:35","date_gmt":"2020-02-01T03:04:35","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/kak-nauchit-preodolevat-trudnosti-a-zaodno-i-pisat-czikly"},"modified":"2020-02-01T06:04:35","modified_gmt":"2020-02-01T03:04:35","slug":"kak-nauchit-preodolevat-trudnosti-a-zaodno-i-pisat-czikly","status":"publish","type":"post","link":"https:\/\/prohoster.info\/pt\/blog\/kak-nauchit-preodolevat-trudnosti-a-zaodno-i-pisat-czikly","title":{"rendered":"Como ensinar a superar dificuldades, enquanto ensina a escrever ciclos","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Apesar de ser um dos t\u00f3picos b\u00e1sicos, este artigo foi escrito para profissionais experientes. O objetivo \u00e9 mostrar quais s\u00e3o os equ\u00edvocos comuns entre novatos em programa\u00e7\u00e3o. Para desenvolvedores pr\u00e1ticos, esses problemas j\u00e1 foram resolvidos h\u00e1 muito tempo, esquecidos ou simplesmente n\u00e3o notados. Este artigo pode ser \u00fatil caso voc\u00ea precise ajudar algu\u00e9m com este tema. O conte\u00fado faz paralelos com materiais de v\u00e1rios livros de programa\u00e7\u00e3o de autores como Schildt, Stroustrup e Okulov.<\/p>\n<p>O tema dos loops foi escolhido porque \u00e9 um ponto onde muitos se afastam ao aprender programa\u00e7\u00e3o.<\/p>\n<p>Esta metodologia \u00e9 direcionada a estudantes com dificuldades. Normalmente, os alunos mais fortes n\u00e3o ficam travados nesse t\u00f3pico e n\u00e3o \u00e9 necess\u00e1rio criar metodologias especiais para eles. O objetivo secund\u00e1rio do artigo \u00e9 transformar essa metodologia de \"funciona para todos os alunos, mas apenas com um professor\" para \"funciona para todos os alunos e todos os professores\". N\u00e3o pretendo ser absolutamente original. Se voc\u00ea j\u00e1 aplica uma metodologia semelhante para ensinar este tema, por favor, compartilhe como sua abordagem difere. Se decidir aplicar, conte como foi a experi\u00eancia. Se uma metodologia similar estiver descrita em algum livro, por favor, compartilhe o t\u00edtulo.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nDesenvolvi esta metodologia ao longo de 4 anos, trabalhando individualmente com estudantes de diferentes n\u00edveis de prepara\u00e7\u00e3o. Foram cerca de cinquenta estudantes e duas mil horas de aulas. No in\u00edcio, os estudantes costumavam ficar presos neste tema e desistir. Ap\u00f3s cada aluno, a metodologia e os materiais eram ajustados. No \u00faltimo ano, os alunos j\u00e1 n\u00e3o ficam presos nesse t\u00f3pico, ent\u00e3o decidi compartilhar as minhas descobertas.<\/p>\n<h4>Por que tanto texto? Loopings s\u00e3o t\u00e3o simples!<\/h4>\n<p>\nComo j\u00e1 mencionei acima, para desenvolvedores pr\u00e1ticos e alunos fortes, a complexidade do conceito de loops pode ser subestimada. Por exemplo, pode-se realizar uma longa palestra, ver cabe\u00e7as acenando e olhos brilhantes. Mas, ao tentar resolver um problema, surgem bloqueios e problemas inexplic\u00e1veis. Ap\u00f3s a palestra, os alunos certamente ter\u00e3o uma compreens\u00e3o apenas parcial. A situa\u00e7\u00e3o \u00e9 agravada pelo fato de que os alunos n\u00e3o conseguem expressar o que exatamente os confunde.<br \/>\nUm dia, percebi que os alunos viam meus exemplos como hier\u00f3glifos. Ou seja, como partes indivis\u00edveis de texto, nas quais precisavam adicionar uma 'letra m\u00e1gica' e tudo funcionaria.<br \/>\n\u00c0s vezes, eu notava que os alunos achavam que para resolver uma tarefa espec\u00edfica era necess\u00e1rio <i>alguma outra<\/i> estrutura que eu simplesmente ainda n\u00e3o tinha mencionado. Embora para a solu\u00e7\u00e3o fosse apenas necess\u00e1rio modificar um pouco o exemplo.<\/p>\n<p>Portanto, cheguei \u00e0 ideia de que o foco deve estar n\u00e3o na sintaxe das express\u00f5es, mas na ideia de refatorar o c\u00f3digo repetitivo atrav\u00e9s de loops. Assim que os alunos dominam essa ideia, qualquer sintaxe \u00e9 assimilada por meio de pequenos exerc\u00edcios.<\/p>\n<h4>Para quem e por que eu ensino<\/h4>\n<p>\nComo n\u00e3o h\u00e1 exames de admiss\u00e3o, nas aulas pode haver tanto alunos fortes quanto muito fracos. Mais detalhes sobre meus alunos podem ser lidos no artigo <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/350360\/\">Retrato dos ouvintes dos cursos noturnos<\/a><\/noindex><br \/>\nEu buscava que todos que quisessem aprendessem programa\u00e7\u00e3o.<br \/>\nMinhas aulas s\u00e3o individuais e os alunos pagam por cada uma delas. \u00c0 primeira vista, os alunos iriam otimizar os custos e exigir o m\u00ednimo. No entanto, as pessoas participam das aulas presenciais com um professor n\u00e3o apenas pelos conhecimentos em si, mas pela confian\u00e7a de que realmente compreenderam, pela sensa\u00e7\u00e3o de progresso e pelo reconhecimento de um especialista (professor). Se os alunos n\u00e3o sentirem progresso em seu aprendizado, eles v\u00e3o embora. De modo geral, \u00e9 poss\u00edvel estruturar as aulas de forma que os alunos sintam progresso no aumento do n\u00famero de constru\u00e7\u00f5es conhecidas. Ou seja, primeiro estudamos detalhadamente o while, depois o for, em seguida o do while e ent\u00e3o temos um curso de mil e uma noites, onde durante dois meses s\u00e3o estudados apenas loops, e no final o aluno escreveu a biblioteca padr\u00e3o por ditado. No entanto, para resolver problemas pr\u00e1ticos, \u00e9 necess\u00e1rio n\u00e3o apenas o conhecimento do material, mas tamb\u00e9m a autonomia em sua aplica\u00e7\u00e3o e na busca de novas informa\u00e7\u00f5es. Portanto, para os cursos presenciais, considero correto o princ\u00edpio de ensinar o essencial e incentivar o aprendizado aut\u00f4nomo de nuances e t\u00f3picos correlatos. No t\u00f3pico sobre loops, eu considero o m\u00ednimo a constru\u00e7\u00e3o while. Com isso, \u00e9 poss\u00edvel entender o princ\u00edpio. Conhecendo o princ\u00edpio, pode-se aprender o for e o do-while de forma aut\u00f4noma.<\/p>\n<p>Para garantir a compreens\u00e3o do material por alunos com dificuldades, descrever a sintaxe n\u00e3o \u00e9 suficiente. \u00c9 necess\u00e1rio oferecer uma variedade maior de tarefas simples e detalhar os exemplos de forma mais clara. No final, a velocidade de aprendizado \u00e9 limitada pela capacidade do aluno de transformar express\u00f5es e buscar padr\u00f5es. Para alunos mais inteligentes, a maioria das tarefas pode parecer mon\u00f3tona. Durante as aulas com eles, n\u00e3o \u00e9 preciso insistir na resolu\u00e7\u00e3o de 100% das tarefas. Meu material pode ser encontrado em <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/AKryukov92\/programming-basics\">meu GitHub<\/a><\/noindex>. Entretanto, o reposit\u00f3rio mais parece um grim\u00f3rio de um mago \u2014 ningu\u00e9m al\u00e9m de mim entender\u00e1 onde est\u00e1 cada coisa, e se falhar a verifica\u00e7\u00e3o, pode-se enlouquecer<\/p>\n<h4>A metodologia \u00e9 orientada para a pr\u00e1tica<\/h4>\n<p>\nA teoria \u00e9 explicada atrav\u00e9s da resolu\u00e7\u00e3o de um problema. Nas aulas de introdu\u00e7\u00e3o \u00e0 programa\u00e7\u00e3o, onde se estudam ramifica\u00e7\u00f5es e loops, n\u00e3o \u00e9 poss\u00edvel realizar uma palestra \u00fatil sobre um \u00fanico t\u00f3pico durante uma hora. Quinze a vinte minutos s\u00e3o suficientes para explicar o conceito. As principais dificuldades surgem ao realizar tarefas pr\u00e1ticas.<br \/>\nProfessores iniciantes podem apresentar operadores, ramifica\u00e7\u00f5es, loops e arrays em uma \u00fanica aula. No entanto, os alunos enfrentar\u00e3o dificuldades para assimilar essa informa\u00e7\u00e3o.<br \/>\n\u00c9 necess\u00e1rio n\u00e3o apenas apresentar o material, mas tamb\u00e9m garantir que os ouvintes o entenderam.<\/p>\n<p>O fato de um tema ter sido compreendido \u00e9 determinado pela forma como o aluno lida com o trabalho independente. <br \/>\nSe o aluno conseguiu resolver a tarefa sobre o tema sem a ajuda do professor, isso significa que o tema foi compreendido. Para garantir a verifica\u00e7\u00e3o independente, cada tarefa \u00e9 acompanhada por uma tabela com cen\u00e1rios de teste. As tarefas t\u00eam uma ordem bem definida. N\u00e3o \u00e9 recomend\u00e1vel pular tarefas. Se a tarefa atual for muito dif\u00edcil, passar para a pr\u00f3xima \u00e9 in\u00fatil. Ela ser\u00e1 ainda mais complicada. Para que o aluno consiga lidar com a tarefa atual, s\u00e3o explicadas algumas t\u00e9cnicas usando o exemplo da primeira tarefa. De fato, todo o conte\u00fado do tema se resume \u00e0s t\u00e9cnicas para superar dificuldades. Os loops s\u00e3o, na verdade, um efeito colateral.<\/p>\n<p>A primeira tarefa \u00e9 sempre um exemplo. A segunda difere ligeiramente e \u00e9 executada \u2018sozinha\u2019 logo ap\u00f3s a primeira sob a supervis\u00e3o do professor. Todas as tarefas subsequentes visam chamar a aten\u00e7\u00e3o para diferentes detalhes que podem causar confus\u00f5es.<\/p>\n<p>A explica\u00e7\u00e3o do exemplo \u00e9 um di\u00e1logo no qual o aluno precisa chamar a retropropaga\u00e7\u00e3o e a valida\u00e7\u00e3o cruzada para garantir a compreens\u00e3o do material.<\/p>\n<p>Serei banal e afirmarei que o primeiro exemplo sobre o tema \u00e9 extremamente importante. Tendo material para um extenso trabalho independente, as falhas do primeiro exemplo podem ser corrigidas. Se n\u00e3o houver mais nada al\u00e9m do exemplo, o aluno provavelmente n\u00e3o dominar\u00e1 o tema.<\/p>\n<h4>While ou for?<\/h4>\n<p>\nUma das quest\u00f5es pol\u00eamicas \u00e9 a escolha da constru\u00e7\u00e3o para o exemplo: while ou for. Uma vez, um amigo meu, um desenvolvedor praticante sem experi\u00eancia em ensino, passou uma hora me convencendo de que o loop for \u00e9 o mais f\u00e1cil de entender. Seus argumentos eram baseados em \"tudo \u00e9 claro e organizado\". No entanto, a verdadeira origem das dificuldades dos novatos est\u00e1 na pr\u00f3pria ideia do loop, e n\u00e3o em sua implementa\u00e7\u00e3o. Se a pessoa n\u00e3o entender essa ideia, ter\u00e1 dificuldades com a sintaxe. Assim que a ideia \u00e9 compreendida, os problemas de formata\u00e7\u00e3o do c\u00f3digo desaparecem.<\/p>\n<p>Nos meus materiais, o tema dos loops segue o tema das ramifica\u00e7\u00f5es. A semelhan\u00e7a externa entre if e while permite fazer uma analogia direta: \"quando a condi\u00e7\u00e3o no cabe\u00e7alho \u00e9 verdadeira, o corpo \u00e9 executado\". A particularidade do loop \u00e9 que o corpo \u00e9 executado v\u00e1rias vezes.<\/p>\n<p>Meu segundo argumento \u00e9 que while exige menos formalidades do que for. Menos formalidades significam menos erros bobos com v\u00edrgulas e par\u00eanteses esquecidos. Novatos ainda n\u00e3o t\u00eam a aten\u00e7\u00e3o e o detalhismo necess\u00e1rios para evitar automaticamente erros de sintaxe.<br \/>\nO terceiro argumento \u00e9 que em muitos bons livros, while \u00e9 explicado primeiro.<\/p>\n<p>Se o aluno consegue transformar express\u00f5es facilmente, pode-se mencionar for em passagem. O aluno escolher\u00e1 o que prefere. Se, no entanto, as transforma\u00e7\u00f5es causam dificuldades, \u00e9 melhor n\u00e3o dispersar a aten\u00e7\u00e3o. O aluno deve primeiro resolver tudo usando while. Quando o tema dos loops for dominado, pode-se reescrever as solu\u00e7\u00f5es para praticar a transforma\u00e7\u00e3o de while em for.<br \/>\nLoops com p\u00f3s-condi\u00e7\u00e3o s\u00e3o criaturas bastante raras. N\u00e3o perco tempo com isso. Se o aluno dominou as ideias de identifica\u00e7\u00e3o de padr\u00f5es e transforma\u00e7\u00e3o de express\u00f5es, conseguir\u00e1 entender sem a minha ajuda.<\/p>\n<p>Ao demonstrar o primeiro exemplo para alunos avan\u00e7ados, enfatizo que, no primeiro exemplo, \u00e9 importante registrar n\u00e3o apenas a solu\u00e7\u00e3o, mas toda a cadeia de a\u00e7\u00f5es que levaram ao resultado. Alunos pregui\u00e7osos podem negligenciar a escrita e levar apenas o algoritmo final. \u00c9 preciso convenc\u00ea-los de que, um dia, ir\u00e3o se deparar com uma tarefa desafiadora. Para resolv\u00ea-la, ser\u00e1 necess\u00e1rio seguir etapas como neste exemplo. \u00c9 exatamente por isso que \u00e9 importante registrar todas as fases. Nas pr\u00f3ximas tarefas, podemos deixar apenas a vers\u00e3o final da solu\u00e7\u00e3o.<\/p>\n<p>A ideia principal da automa\u00e7\u00e3o \u00e9 que confiamos ao computador a execu\u00e7\u00e3o do trabalho rotineiro em vez de uma pessoa. Um dos truques b\u00e1sicos \u00e9 a escrita de loops. Isso \u00e9 aplicado quando um programa executa v\u00e1rias a\u00e7\u00f5es repetitivas consecutivas.<\/p>\n<h4>Expl\u00edcito \u00e9 melhor do que impl\u00edcito.<\/h4>\n<p>\nPode parecer uma boa ideia, na primeira tarefa sobre loops, exibir na tela a mesma frase v\u00e1rias vezes. Por exemplo:<\/p>\n<blockquote><p>Hurra, funciona!<br \/>\nHurra, funciona!<br \/>\nHurra, funciona!<br \/>\nHurra, funciona!<br \/>\nHurra, funciona!<br \/>\nHurra, funciona!<br \/>\nHurra, funciona!<br \/>\nHurra, funciona!\n<\/p><\/blockquote>\n<p>\nEssa op\u00e7\u00e3o \u00e9 ruim porque na sa\u00edda n\u00e3o \u00e9 poss\u00edvel ver o valor do contador. Esse \u00e9 um problema para iniciantes. N\u00e3o devemos subestim\u00e1-lo. Inicialmente, esta tarefa era a primeira, e a tarefa sobre a exibi\u00e7\u00e3o de uma sequ\u00eancia de n\u00fameros em ordem crescente era a segunda. Foi necess\u00e1rio introduzir termos adicionais como \"loop N vezes\" e \"loop de A a B\", que, na ess\u00eancia, significam a mesma coisa. Para n\u00e3o proliferar entidades desnecess\u00e1rias, decidi mostrar apenas o exemplo de exibi\u00e7\u00e3o de uma sequ\u00eancia de n\u00fameros. Poucos conseguem, sem prepara\u00e7\u00e3o, aprender a manter um contador na cabe\u00e7a e modelar o comportamento do programa mentalmente. Alguns alunos se deparam pela primeira vez com a modelagem \"na mente\" exatamente no tema de loops.<br \/>\nAp\u00f3s um certo per\u00edodo de pr\u00e1tica, a tarefa de repetir um texto id\u00eantico eu deixo para resolu\u00e7\u00e3o independente. Se primeiro mostrarmos um contador vis\u00edvel e depois um invis\u00edvel, os alunos enfrentam menos problemas. \u00c0s vezes, uma dica como \"n\u00e3o escreva o contador na tela\" \u00e9 suficiente.<\/p>\n<h4>Como \u00e9 explicado por outros?<\/h4>\n<p>\nNa maioria dos materiais did\u00e1ticos dispon\u00edveis na internet, a sintaxe do loop \u00e9 apresentada em forma de \"palestra\". Por exemplo, no developer.mozilla.org (atualmente), junto com o loop while, s\u00e3o descritas v\u00e1rias outras constru\u00e7\u00f5es. No entanto, s\u00e3o fornecidas apenas as constru\u00e7\u00f5es em forma de templates. O resultado de sua execu\u00e7\u00e3o \u00e9 descrito em palavras, e a ilustra\u00e7\u00e3o est\u00e1 ausente. Na minha opini\u00e3o, essa abordagem reduz a utilidade desses materiais a zero. O aluno pode escrever o c\u00f3digo e execut\u00e1-lo, mas ainda assim precisa de um padr\u00e3o para compara\u00e7\u00e3o. Como saber se o exemplo foi reescrito corretamente se n\u00e3o h\u00e1 nada para comparar o resultado?<br \/>\nQuando apenas um template \u00e9 fornecido, sem exemplo, o aluno encontra ainda mais dificuldades. Como entender se os fragmentos de c\u00f3digo est\u00e3o organizados corretamente no template? \u00c9 poss\u00edvel tentar escrever <i>de alguma forma<\/i>, e depois executar. Mas se n\u00e3o h\u00e1 um padr\u00e3o para compara\u00e7\u00e3o do resultado, a execu\u00e7\u00e3o tamb\u00e9m n\u00e3o ajudar\u00e1.<\/p>\n<p>No curso de C++ no Intuit, a sintaxe do loop est\u00e1 enterrada na terceira p\u00e1gina da palestra 4 sobre \"operadores\". Ao explicar a sintaxe dos loops, h\u00e1 um foco especial no termo \"operador\". O termo \u00e9 apresentado como um conjunto de fatos, como \"s\u00edmbolo; isso \u00e9 um operador\", \"{} \u00e9 um operador composto\", \"o corpo do loop deve ser um operador\". Esse tipo de abordagem n\u00e3o me agrada, pois parece esconder conex\u00f5es importantes sob um \u00fanico termo. A an\u00e1lise do c\u00f3digo fonte do programa em termos desse n\u00edvel \u00e9 necess\u00e1ria para desenvolvedores de compiladores para implementar a especifica\u00e7\u00e3o da linguagem, mas de forma alguma para estudantes em uma primeira aproxima\u00e7\u00e3o. Iniciantes em programa\u00e7\u00e3o raramente t\u00eam a meticulosidade suficiente para lidar com os termos de maneira t\u00e3o cuidadosa. Raras pessoas memorizam e compreendem novas palavras na primeira vez. Praticamente ningu\u00e9m pode aplicar corretamente um termo que acabou de aprender. Por isso, os alunos acabam cometendo muitos erros, como \"escrevi while(a&lt;7);{, mas o programa n\u00e3o funciona.&quot;<br \/>\nNa minha opini\u00e3o, \u00e9 melhor apresentar a sintaxe da constru\u00e7\u00e3o imediatamente com os par\u00eanteses no in\u00edcio. O formato sem par\u00eanteses deve ser explicado apenas se o aluno tiver uma pergunta espec\u00edfica sobre \"por que aqui n\u00e3o h\u00e1 par\u00eanteses e funciona\".<\/p>\n<p>No livro de Okulov \"Fundamentos da Programa\u00e7\u00e3o\" de 2012, a introdu\u00e7\u00e3o aos loops come\u00e7a com o modelo for, seguido por recomenda\u00e7\u00f5es sobre seu uso, e logo depois h\u00e1 uma se\u00e7\u00e3o experimental da aula. Entendo que o livro foi escrito para aquela minoria de alunos muito capazes, que raramente aparecem nas minhas aulas.<\/p>\n<p>Em livros populares, o resultado dos fragmentos de c\u00f3digo sempre \u00e9 apresentado. Por exemplo, no livro de Schildt \"Java 8. Guia Completo\", de 2015. Primeiro, \u00e9 dado um modelo, depois um exemplo de programa e logo ap\u00f3s, o resultado da execu\u00e7\u00e3o.<\/p>\n<blockquote><p>Como exemplo, vamos considerar o loop while, que executa uma contagem regressiva,<br \/>\ncome\u00e7ando a partir de 10, e imprime exatamente 10 linhas de \"pulsos\": <\/p>\n<pre><code class=\"java\">\/\/\u041f\u0440\u043e\u0434\u0435\u043c\u043e\u043d\u0441\u0442\u0440\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u043f\u0440\u0438\u043c\u0435\u043d\u0435\u043d\u0438\u0435 \u043e\u043f\u0435\u0440\u0430\u0442\u043e\u0440\u0430 \u0446\u0438\u043a\u043b\u0430 while\nclass While {\n    public static void main(String args []) {\n        int n = 10;\n        while (n &gt; 0) {\n            System.out.println(&quot;\u0442\u0430\u043a\u0442 &quot; + n);\n            n--;\n        }\n    }\n}<\/code><\/pre>\n<p>\nAo ser executado, este programa imprime dez \"pulsos\" da seguinte forma:<br \/>\n<code>takt 10<br \/>\ntakt 9<br \/>\ntakt 8<br \/>\ntakt 7<br \/>\ntakt 6<br \/>\ntakt 5<br \/>\ntakt 4<br \/>\ntakt 3<br \/>\ntakt 2<br \/>\ntakt 1<\/code><\/p><\/blockquote>\n<p>\nA abordagem que descreve um modelo, um exemplo de programa e o resultado da execu\u00e7\u00e3o \u00e9 tamb\u00e9m utilizada no livro \"JavaScript para Crian\u00e7as\" e no curso de js no w3schools.com. O formato da p\u00e1gina web at\u00e9 permite tornar este exemplo interativo.<\/p>\n<p>No livro de Stroustrup \"Princ\u00edpios e Pr\u00e1tica com C++\" de 2016, o autor foi ainda mais longe. Primeiro, \u00e9 explicado qual deve ser o resultado, e s\u00f3 depois \u00e9 apresentado o texto do programa. Al\u00e9m disso, como exemplo, \u00e9 escolhida n\u00e3o apenas qualquer programa aleat\u00f3ria, mas \u00e9 feita uma incurs\u00e3o na hist\u00f3ria. Isso ajuda a fazer com que se preste aten\u00e7\u00e3o ao afirmar: \"Veja, isso n\u00e3o \u00e9 apenas um texto sem valor. Voc\u00ea v\u00ea algo significativo.\"<\/p>\n<blockquote><p>Como exemplo de itera\u00e7\u00e3o, vamos considerar o primeiro programa executado em uma m\u00e1quina com programa armazenado (EDSAC). Ele foi escrito por David Wheeler no laborat\u00f3rio de computa\u00e7\u00e3o da Universidade de Cambridge, na Inglaterra, em 6 de maio de 1949. Este programa calcula e imprime uma lista simples de quadrados.<br \/>\n<code>0 0<br \/>\n1 1<br \/>\n2 4<br \/>\n3 9<br \/>\n4 16<br \/>\n...<br \/>\n98 9604<br \/>\n99 9801<\/code><br \/>\nAqui, cada linha cont\u00e9m um n\u00famero, seguido por um caractere de tabula\u00e7\u00e3o (\u2018t\u2019) e o quadrado desse n\u00famero. A vers\u00e3o desse programa em C++ \u00e9 a seguinte:<\/p>\n<pre><code class=\"cpp\">\/\/\u0412\u044b\u0447\u0438\u0441\u043b\u044f\u0435\u043c \u0438 \u0440\u0430\u0441\u043f\u0435\u0447\u0430\u0442\u044b\u0432\u0430\u0435\u043c \u0442\u0430\u0431\u043b\u0438\u0446\u0443 \u043a\u0432\u0430\u0434\u0440\u0430\u0442\u043e\u0432 \u0447\u0438\u0441\u0435\u043b 0-99\nint main()\n{\n    int i = 0; \/\/ \u041d\u0430\u0447\u0438\u043d\u0430\u0435\u043c \u0441 \u043d\u0443\u043b\u044f\n    while(i &lt; 100){\n        cout &lt;&lt; i &lt;&lt; 't' &lt;&lt; square(i) &lt;&lt; 'n';\n        ++i;\n    }\n}<\/code><\/pre>\n<\/blockquote>\n<p>\nCuriosamente, o modelo de sintaxe neste livro n\u00e3o \u00e9 descrito. Stroustrup, no guia do instrutor (<noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/349342\/\">tradu\u00e7\u00e3o<\/a><\/noindex>) enfatiza que respeita a intelig\u00eancia de seus alunos. Talvez a habilidade de identificar um padr\u00e3o em v\u00e1rios exemplos seja considerada uma manifesta\u00e7\u00e3o dessa intelig\u00eancia.<\/p>\n<h4>Como eu mesmo explico<\/h4>\n<p>\nA abordagem de Stroustrup: descrever o resultado, em seguida resolver o problema e depois a an\u00e1lise independente do aluno \u2014 parece ser a mais bem pensada. Portanto, decidi usar exatamente isso como base, mas contando um exemplo menos hist\u00f3rico \u2014 a tarefa de gerar um 'sum\u00e1rio'. Isso cria um ponto de refer\u00eancia reconhec\u00edvel para depois poder dizer 'lembre-se da tarefa sobre o sum\u00e1rio' e os alunos se recordarem dela especificamente. No meu exemplo, procurei antecipar tamb\u00e9m dois dos equ\u00edvocos mais comuns. A seguir, escreverei sobre eles em mais detalhes.<\/p>\n<blockquote><p>Nesta tarefa, nos familiarizamos com t\u00e9cnicas para resolver problemas complexos. A solu\u00e7\u00e3o inicial deve ser feita de forma primitiva e simples. Depois disso, podemos pensar em como melhorar essa solu\u00e7\u00e3o.<br \/>\n<code>Introdu\u00e7\u00e3o<br \/>\nCap\u00edtulo 1<br \/>\nCap\u00edtulo 2<br \/>\nCap\u00edtulo 3<br \/>\nCap\u00edtulo 4<br \/>\nCap\u00edtulo 5<br \/>\nCap\u00edtulo 6<br \/>\nCap\u00edtulo 7<br \/>\nConclus\u00e3o<\/code><\/p><\/blockquote>\n<p>\nSegundo minhas observa\u00e7\u00f5es, a abordagem \"modelo-exemplo-resultado\" em diferentes combina\u00e7\u00f5es ainda leva os alunos a perceberem o loop como um hier\u00f3glifo. Isso se manifestava no fato de que eles n\u00e3o entendiam por que escrever uma condi\u00e7\u00e3o ali, como escolher entre i++ e i-- e outras coisas que pareciam \u00f3bvias. Para evitar esses mal-entendidos, a abordagem de falar sobre loops deve enfatizar o significado de repetir as mesmas a\u00e7\u00f5es e s\u00f3 depois a forma de organiz\u00e1-las com uma constru\u00e7\u00e3o. Portanto, antes de apresentar a sintaxe do loop, \u00e9 necess\u00e1rio resolver a tarefa \"de maneira direta\". A solu\u00e7\u00e3o primitiva do problema sobre o \u00edndice \u00e9 a seguinte:<\/p>\n<pre><code class=\"cs\">Console.WriteLine(\"Introdu\u00e7\u00e3o\");\nConsole.WriteLine(\"Cap\u00edtulo 1\");\nConsole.WriteLine(\"Cap\u00edtulo 2\");\nConsole.WriteLine(\"Cap\u00edtulo 3\");\nConsole.WriteLine(\"Cap\u00edtulo 4\");\nConsole.WriteLine(\"Cap\u00edtulo 5\");\nConsole.WriteLine(\"Cap\u00edtulo 6\");\nConsole.WriteLine(\"Cap\u00edtulo 7\");\nConsole.WriteLine(\"Conclus\u00e3o\");\n<\/code><\/pre>\n<p>\nComo podemos melhor\u00e1-lo?<br \/>\nSubstituir a\u00e7\u00f5es repetitivas por um ciclo.<br \/>\nQuais a\u00e7\u00f5es se repetem aqui sem mudan\u00e7as?<br \/>\nNeste fragmento, n\u00e3o h\u00e1 nenhuma. No entanto, os comandos para imprimir a palavra 'Cap\u00edtulo' com o n\u00famero s\u00e3o muito parecidos entre si.<br \/>\nPortanto, a pr\u00f3xima etapa \u00e9 buscar a diferen\u00e7a entre os fragmentos. Isso s\u00f3 \u00e9 \u00f3bvio nesta tarefa, depois as repeti\u00e7\u00f5es n\u00e3o ser\u00e3o de comandos \u00fanicos, mas de blocos de c\u00f3digo com 5 linhas ou mais. A busca ter\u00e1 que ser feita n\u00e3o apenas numa lista de comandos, mas em constru\u00e7\u00f5es de ramifica\u00e7\u00e3o ou de ciclo.<br \/>\nNo exemplo, a diferen\u00e7a entre os comandos est\u00e1 no n\u00famero ap\u00f3s a palavra 'Cap\u00edtulo'.<br \/>\nAssim que a diferen\u00e7a for encontrada, precisamos entender o padr\u00e3o de mudan\u00e7a. O fragmento distinto \u00e9 um n\u00famero? Ele aumenta constantemente ou decresce? Como o valor do n\u00famero muda entre dois comandos adjacentes?<br \/>\nNo exemplo, o n\u00famero ap\u00f3s a palavra \"Cap\u00edtulo\" aumenta em passos de 1. A diferen\u00e7a foi encontrada, o padr\u00e3o foi identificado. Agora \u00e9 poss\u00edvel substituir o fragmento que varia por uma vari\u00e1vel.<br \/>\n\u00c9 necess\u00e1rio declarar essa vari\u00e1vel antes do primeiro dos fragmentos repetidos. Essa vari\u00e1vel \u00e9 geralmente chamada de i ou j, ou algo mais descritivo. Seu valor inicial deve ser igual ao primeiro valor exibido na tela. No exemplo, o primeiro valor \u00e9 1. <br \/>\nQual valor inicial deve ser usado para exibir a sequ\u00eancia de n\u00fameros \"100, 101, 102, 103, 104, 105\"?<br \/>\nNeste conjunto, o primeiro n\u00famero \u00e9 100.<br \/>\nAp\u00f3s cada comando de exibi\u00e7\u00e3o, \u00e9 necess\u00e1rio aumentar o valor dessa vari\u00e1vel em 1. Essa unidade \u00e9 o passo da mudan\u00e7a.<br \/>\nQual ser\u00e1 o passo na sequ\u00eancia de n\u00fameros \"100, 102, 104, 106\"?<br \/>\nNeste conjunto, o passo \u00e9 2.<br \/>\nAp\u00f3s substituir o fragmento vari\u00e1vel, o c\u00f3digo ficar\u00e1 assim:<\/p>\n<pre><code class=\"cs\">Console.WriteLine(\"Introdu\u00e7\u00e3o\");\nint i;\ni = 0;\nConsole.WriteLine(\"Cap\u00edtulo \" + i);\ni = i + 1;\nConsole.WriteLine(\"Cap\u00edtulo \" + i);\ni = i + 1;\nConsole.WriteLine(\"Cap\u00edtulo \" + i);\ni = i + 1;\nConsole.WriteLine(\"Cap\u00edtulo \" + i);\ni = i + 1;\nConsole.WriteLine(\"Cap\u00edtulo \" + i);\ni = i + 1;\nConsole.WriteLine(\"Cap\u00edtulo \" + i);\ni = i + 1;\nConsole.WriteLine(\"Cap\u00edtulo \" + i);\ni = i + 1;\nConsole.WriteLine(\"Conclus\u00e3o\");\n<\/code><\/pre>\n<p>\nAp\u00f3s aplicar a t\u00e9cnica \"expressar o padr\u00e3o como vari\u00e1vel\" no c\u00f3digo, resultam v\u00e1rias grupos de a\u00e7\u00f5es id\u00eanticas que ocorrem em sequ\u00eancia. Agora, as a\u00e7\u00f5es repetitivas podem ser substitu\u00eddas por um loop.<\/p>\n<p>A sequ\u00eancia para resolver a tarefa, onde \u00e9 necess\u00e1rio usar loops, consiste nas etapas:<\/p>\n<ol>\n<li>Resolver \"de forma direta\" com um conjunto de comandos separados<\/li>\n<li>Encontrar o padr\u00e3o<\/li>\n<li>Expressar o padr\u00e3o como vari\u00e1vel<\/li>\n<li>Formatar como um loop<\/li>\n<\/ol>\n<p>A seguir, novos termos s\u00e3o apresentados, para que o estudante n\u00e3o fique na situa\u00e7\u00e3o de \"tudo entendo, mas n\u00e3o consigo explicar\":<br \/>\n \u2014 contador \u2014 sempre uma vari\u00e1vel necess\u00e1ria para acompanhar a quantidade de passos do loop. Normalmente um n\u00famero inteiro, que \u00e9 comparado com um limite.<br \/>\n \u2014 passo do contador \u2014 descri\u00e7\u00e3o do padr\u00e3o de mudan\u00e7a do contador.<br \/>\n \u2014 limite \u2014 n\u00famero ou vari\u00e1vel com a qual o contador \u00e9 comparado, de modo que o algoritmo seja finito. O valor do contador \u00e9 alterado para se aproximar do limite.<br \/>\n \u2014 corpo do loop \u2014 conjunto de comandos que ser\u00e3o repetidos. Quando se diz \"comando escrito dentro do loop\", refere-se especificamente ao corpo.<br \/>\n \u2014 itera\u00e7\u00e3o do loop \u2014 uma \u00fanica execu\u00e7\u00e3o do corpo do loop.<br \/>\n \u2014 condi\u00e7\u00e3o do loop \u2014 a express\u00e3o l\u00f3gica que determina se mais uma itera\u00e7\u00e3o ser\u00e1 executada. (Aqui pode haver confus\u00e3o com as estruturas de ramifica\u00e7\u00e3o)<br \/>\n\u00c9 preciso estar preparado para o fato de que, a princ\u00edpio, os alunos usar\u00e3o os termos de maneira inadequada. Isso se aplica tanto aos mais fortes quanto aos mais fracos. Estabelecer uma linguagem comum \u00e9 uma verdadeira arte. Vou resumir: \u00e9 necess\u00e1rio definir a tarefa \"destacar o trecho de c\u00f3digo com \" e tamb\u00e9m usar esses termos corretamente na conversa.<br \/>\nAp\u00f3s a transforma\u00e7\u00e3o com o loop, obtemos o trecho:<\/p>\n<pre><code class=\"cs\">Console.WriteLine(\"Introdu\u00e7\u00e3o\");\nint i = 0;\nwhile (i &lt; 7) {\n    Console.WriteLine(&quot;Cap\u00edtulo &quot; + i);\n    i = i + 1;\n}\nConsole.WriteLine(&quot;Conclus\u00e3o&quot;);<\/code><\/pre>\n<h4>O principal equ\u00edvoco<\/h4>\n<p>\nUm equ\u00edvoco popular entre os alunos \u00e9 que eles colocam dentro da estrutura do loop a\u00e7\u00f5es que precisam ser realizadas apenas uma vez. Por exemplo, assim:<\/p>\n<pre><code class=\"cs\">;\nint i = 0;\nwhile (i &lt; 7) {\n    Console.WriteLine(&quot;Introdu\u00e7\u00e3o&quot;)\n    Console.WriteLine(&quot;Cap\u00edtulo &quot; + i);\n    i = i + 1;\n    Console.WriteLine(&quot;Conclus\u00e3o&quot;);\n}\n<\/code><\/pre>\n<p>\nOs alunos frequentemente se deparam com esse problema, tanto no in\u00edcio quanto em tarefas mais complexas.<br \/>\nA dica coringa neste caso:<\/p>\n<blockquote><p>Quantas vezes deve-se repetir o comando: uma vez ou muitas?\n<\/p><\/blockquote>\n<p>\nOs comandos para exibir as palavras \"Introdu\u00e7\u00e3o\" e \"Conclus\u00e3o\", assim como a declara\u00e7\u00e3o e a inicializa\u00e7\u00e3o da vari\u00e1vel i, n\u00e3o se assemelham a outras a\u00e7\u00f5es repetitivas. Eles s\u00e3o executados apenas uma vez, portanto devem estar fora do corpo do loop.<\/p>\n<p>O c\u00f3digo deve manter todas as tr\u00eas etapas da solu\u00e7\u00e3o, para que possam ser referenciadas em caso de dificuldades. Os dois primeiros exemplos podem ser apenas comentados para n\u00e3o interferirem.<br \/>\nA aten\u00e7\u00e3o do aluno deve ser direcionada aos seguintes fatos:<br \/>\n \u2014 Na condi\u00e7\u00e3o do loop, geralmente se compara o contador e o limite. O contador pode mudar dentro do corpo do loop, enquanto o limite n\u00e3o. Para quebrar essa regra, \u00e9 preciso apresentar raz\u00f5es v\u00e1lidas.<br \/>\n \u2014 Os comandos para exibir as palavras \"Introdu\u00e7\u00e3o\" e \"Conclus\u00e3o\" est\u00e3o fora do corpo do loop. Precisamos execut\u00e1-los uma vez. \"Introdu\u00e7\u00e3o\" \u2014 antes da repeti\u00e7\u00e3o das a\u00e7\u00f5es, \"Conclus\u00e3o\" \u2014 ap\u00f3s.<br \/>\nDurante a consolida\u00e7\u00e3o desse t\u00f3pico, a aprendizagem dos seguintes e a an\u00e1lise de dificuldades, mesmo os alunos fortes, \u00e9 \u00fatil fazer a pergunta: \"E essa a\u00e7\u00e3o, quantas vezes precisa ser realizada? Uma ou muitas?\".<\/p>\n<h4>Desenvolvimento de habilidades adicionais<\/h4>\n<p>\nDurante o estudo dos ciclos, os alunos ainda praticam a habilidade de diagn\u00f3stico e resolu\u00e7\u00e3o de problemas. Para realizar o diagn\u00f3stico, o aluno precisa imaginar o resultado desejado e compar\u00e1-lo com o resultado real. As a\u00e7\u00f5es para corre\u00e7\u00e3o dependem da diferen\u00e7a entre eles.<br \/>\nComo os alunos nesta fase ainda t\u00eam uma no\u00e7\u00e3o fraca do que \u00e9 um 'resultado desejado', eles podem se basear em dados de teste. Normalmente, ningu\u00e9m nessa fase entende o que pode dar errado e como lidar com isso. Portanto, eu deixo anotado em um caderno a descri\u00e7\u00e3o de problemas t\u00edpicos e v\u00e1rias formas de resolv\u00ea-los. A escolha da solu\u00e7\u00e3o mais adequada \u00e9 tarefa do pr\u00f3prio aluno.<br \/>\nAs anota\u00e7\u00f5es s\u00e3o necess\u00e1rias para questionar 'o que era esperado foi realmente alcan\u00e7ado?', 'qual dessas situa\u00e7\u00f5es ocorreu agora?', 'a solu\u00e7\u00e3o aplicada ajudou?'.<\/p>\n<ol>\n<li>O n\u00famero de a\u00e7\u00f5es \u00e9 1 a menos ou a mais do que o esperado. Formas de resolver:<br \/>\n \u2014 aumentar o valor inicial do contador em 1.<br \/>\n \u2014 substituir o operador de compara\u00e7\u00e3o estrita (&lt; ou &gt;) por um n\u00e3o estrito (&lt;= ou &gt;=).<br \/>\n \u2014 alterar o valor do limite em 1.<\/li>\n<li>As a\u00e7\u00f5es no ciclo s\u00e3o executadas sem parar, infinitamente. Formas de resolver:<br \/>\n \u2014 adicionar um comando para alterar o contador, se este estiver faltando.<br \/>\n \u2014 corrigir o comando para alterar o contador de modo que seu valor se aproxime do limite.<br \/>\n \u2014 remover o comando que altera o limite, se ele estiver dentro do corpo do ciclo.<\/li>\n<li>O n\u00famero de a\u00e7\u00f5es no ciclo \u00e9 mais de 1 a menos ou a mais do que o esperado. A a\u00e7\u00e3o no ciclo n\u00e3o foi executada nenhuma vez. Primeiro, \u00e9 necess\u00e1rio verificar os valores reais das vari\u00e1veis imediatamente antes do in\u00edcio do ciclo. Formas de resolver:<br \/>\n \u2014 alterar o valor inicial do limite.<br \/>\n \u2014 alterar o valor inicial do contador.<\/li>\n<\/ol>\n<p>\nNormalmente, o problema 3 est\u00e1 relacionado ao uso de uma vari\u00e1vel incorreta ou \u00e0 n\u00e3o inicializa\u00e7\u00e3o do contador.<\/p>\n<p>Ap\u00f3s essa explica\u00e7\u00e3o, o aluno ainda pode ter v\u00e1rias concep\u00e7\u00f5es err\u00f4neas sobre o funcionamento dos ciclos.<br \/>\nPara dissipar as mais comuns, dou tarefas:<\/p>\n<ol>\n<li>Na qual o limite, o valor inicial do contador ou o passo do contador \u00e9 inserido pelo usu\u00e1rio.<\/li>\n<li>Na qual o valor do contador precisa ser usado em alguma express\u00e3o aritm\u00e9tica. Preferencialmente com o contador em uma express\u00e3o aninhada ou no denominador, para que a diferen\u00e7a seja n\u00e3o linear.<\/li>\n<li>Em que o valor do contador n\u00e3o \u00e9 exibido na tela durante a execu\u00e7\u00e3o do ciclo. Por exemplo, mostrar a quantidade necess\u00e1ria de fragmentos de texto iguais ou desenhar uma figura com gr\u00e1ficos de tartaruga.<\/li>\n<li>Em que \u00e9 necess\u00e1rio executar primeiro algumas a\u00e7\u00f5es repetitivas e depois outras.<\/li>\n<li>Em que \u00e9 necess\u00e1rio realizar outras a\u00e7\u00f5es antes e depois das repetitivas.<\/li>\n<\/ol>\n<p>\nPara cada tarefa, \u00e9 necess\u00e1rio fornecer dados de teste e o resultado esperado.<\/p>\n<p>Para entender qu\u00e3o r\u00e1pido se pode avan\u00e7ar, \u00e9 necess\u00e1rio deixar o aluno ler as condi\u00e7\u00f5es dessas tarefas e perguntar: \u201cComo elas diferem do exemplo?\u201d, \u201cO que precisa ser alterado no exemplo para resolv\u00ea-las?\u201d. Se o estudante responder de forma reflexiva, ent\u00e3o ele deve resolver pelo menos uma durante a aula, e as demais \u2014 em casa de forma independente. Se a solu\u00e7\u00e3o for bem-sucedida, pode-se come\u00e7ar a explica\u00e7\u00e3o sobre as condi\u00e7\u00f5es dentro dos ciclos.<br \/>\nSe houver dificuldades com a solu\u00e7\u00e3o independente, todas as quest\u00f5es devem ser trabalhadas durante a aula. Para que a resolu\u00e7\u00e3o do problema n\u00e3o se pare\u00e7a com o desenho de uma coruja, recomendo primeiro resolver o problema de forma n\u00e3o universal. Ou seja, de maneira que a solu\u00e7\u00e3o passe no primeiro teste e n\u00e3o utilize a estrutura do ciclo. Depois, pode-se aplicar transforma\u00e7\u00f5es para alcan\u00e7ar a universalidade da solu\u00e7\u00e3o.<\/p>\n<h4>Ciclos e ramifica\u00e7\u00f5es<\/h4>\n<p>\nNa minha opini\u00e3o, \u00e9 \u00fatil dar a tem\u00e1tica 'ciclos dentro das ramifica\u00e7\u00f5es' separadamente. Assim, ser\u00e1 poss\u00edvel ver a diferen\u00e7a entre a verifica\u00e7\u00e3o m\u00faltipla de uma condi\u00e7\u00e3o e a verifica\u00e7\u00e3o \u00fanica.<br \/>\nAs tarefas para fixa\u00e7\u00e3o ser\u00e3o sobre a exibi\u00e7\u00e3o de n\u00fameros de A a B, que s\u00e3o inseridos pelo usu\u00e1rio:<br \/>\n \u2014 sempre em ordem crescente.<br \/>\n \u2014 em ordem crescente ou decrescente dependendo dos valores de A e B.<\/p>\n<p>O tema \"ramifica\u00e7\u00f5es dentro de loops\" deve ser abordado somente depois que o aluno dominar as t\u00e9cnicas: \"substitui\u00e7\u00e3o de padr\u00f5es por vari\u00e1veis\" e \"substitui\u00e7\u00e3o de a\u00e7\u00f5es repetidas por loops\".<br \/>\nA principal raz\u00e3o para aplicar ramifica\u00e7\u00f5es dentro de ciclos \u00e9 a anomalia nos padr\u00f5es. No meio, ela \u00e9 interrompida dependendo dos dados de entrada.<br \/>\nPara os alunos que conseguem buscar solu\u00e7\u00f5es combinando t\u00e9cnicas simples, \u00e9 suficiente dizer que 'ramifica\u00e7\u00f5es podem ser escritas dentro dos ciclos' e dar a tarefa 'como exemplo' completamente para solu\u00e7\u00e3o independente.<br \/>\nTarefa de exemplo:<\/p>\n<blockquote><p>O usu\u00e1rio insere um n\u00famero X. Exiba em uma coluna os n\u00fameros de 0 a 9 e coloque o sinal '+' ao lado daquele que \u00e9 igual a X.<\/p><\/blockquote>\n<p>\n<b class=\"spoiler_title\">Se 0 foi inserido<\/b>0+<br \/>\n1<br \/>\n2<br \/>\n3<br \/>\n4<br \/>\n5<br \/>\n6<br \/>\n7<br \/>\n8<br \/>\n9<\/p>\n<p><b class=\"spoiler_title\">Se foi inserido 6<\/b>0<br \/>\n1<br \/>\n2<br \/>\n3<br \/>\n4<br \/>\n5<br \/>\n6+<br \/>\n7<br \/>\n8<br \/>\n9<\/p>\n<p><b class=\"spoiler_title\">Se foi inserido 9<\/b>0<br \/>\n1<br \/>\n2<br \/>\n3<br \/>\n4<br \/>\n5<br \/>\n6<br \/>\n7<br \/>\n8<br \/>\n9+<\/p>\n<p><b class=\"spoiler_title\">Se foi inserido 777<\/b>0<br \/>\n1<br \/>\n2<br \/>\n3<br \/>\n4<br \/>\n5<br \/>\n6<br \/>\n7<br \/>\n8<br \/>\n9<\/p>\n<p>Se a explica\u00e7\u00e3o breve n\u00e3o for suficiente para escrever um ciclo, ent\u00e3o \u00e9 necess\u00e1rio alcan\u00e7ar uma solu\u00e7\u00e3o universal para essa mesma tarefa sem um ciclo.<br \/>\nSair\u00e1 uma das duas op\u00e7\u00f5es:<br \/>\n<b class=\"spoiler_title\">Desejado<\/b><\/p>\n<pre><code class=\"cs\">string temp;\ntemp = Console.ReadLine();\nint x;\nx = int.Parse(temp);\nif (x==0) {\n    Console.WriteLine(0 + \"+\");\n} else {\n    Console.WriteLine(0);\n}\nif (x==1) {\n    Console.WriteLine(1 + \"+\");\n} else {\n    Console.WriteLine(1);\n}\nif (x==2) {\n    Console.WriteLine(2 + \"+\");\n} else {\n    Console.WriteLine(2);\n}\nif (x==3) {\n    Console.WriteLine(3 + \"+\");\n} else {\n    Console.WriteLine(3);\n}\nif (x==4) {\n    Console.WriteLine(4 + \"+\");\n} else {\n    Console.WriteLine(4);\n}\nif (x==5) {\n    Console.WriteLine(5 + \"+\");\n} else {\n    Console.WriteLine(5);\n}\nif (x==6) {\n    Console.WriteLine(6 + \"+\");\n} else {\n    Console.WriteLine(6);\n}\nif (x==7) {\n    Console.WriteLine(7 + \"+\");\n} else {\n    Console.WriteLine(7);\n}\nif (x==8) {\n    Console.WriteLine(8 + \"+\");\n} else {\n    Console.WriteLine(8);\n}\nif (x==9) {\n    Console.WriteLine(9 + \"+\");\n} else {\n    Console.WriteLine(9);\n}\n<\/code><\/pre>\n<p><b class=\"spoiler_title\">Poss\u00edvel<\/b><\/p>\n<pre><code class=\"cs\">string temp;\ntemp = Console.ReadLine();\nint x;\nx = int.Parse(temp);\nif (x==0) {\n    Console.WriteLine(\"0+n1n2n3n4n5n6n7n8n9\");\n}\nif (x==1) {\n    Console.WriteLine(\"0n1+n2n3n4n5n6n7n8n9\");\n}\nif (x==2) {\n    Console.WriteLine(\"0n1n2+n3n4n5n6n7n8n9\");\n}\nif (x==3) {\n    Console.WriteLine(\"0n1n2n3+n4n5n6n7n8n9\");\n}\nif (x==4) {\n    Console.WriteLine(\"0n1n2n3n4+n5n6n7n8n9\");\n}\nif (x==5) {\n    Console.WriteLine(\"0n1n2n3n4n5+n6n7n8n9\");\n}\nif (x==6) {\n    Console.WriteLine(\"0n1n2n3n4n5n6+n7n8n9\");\n}\nif (x==7) {\n    Console.WriteLine(\"0n1n2n3n4n5n6n7+n8n9\");\n}\nif (x==8) {\n    Console.WriteLine(\"0n1n2n3n4n5n6n7n8+n9\");\n}\nif (x==9) {\n    Console.WriteLine(\"0n1n2n3n4n5n6n7n8n9+\");\n}\n<\/code><\/pre>\n<p>Eu dou uma tarefa semelhante antecipadamente, durante o estudo do tema sobre ramifica\u00e7\u00f5es.<br \/>\nSe o aluno obteve a op\u00e7\u00e3o \"poss\u00edvel\", deve-se explicar que h\u00e1 v\u00e1rias solu\u00e7\u00f5es para o mesmo problema. No entanto, elas diferem em sua resist\u00eancia \u00e0s mudan\u00e7as nos requisitos. Pergunte: \"Quantos locais no c\u00f3digo precisar\u00e3o ser corrigidos se tivermos que adicionar mais um n\u00famero?\" Na op\u00e7\u00e3o \"poss\u00edvel\", ser\u00e1 necess\u00e1rio adicionar mais uma ramifica\u00e7\u00e3o e escrever o novo n\u00famero em 10 outros lugares. Na op\u00e7\u00e3o \"desejada\", basta adicionar apenas uma ramifica\u00e7\u00e3o.<br \/>\nDefina a tarefa de reproduzir a op\u00e7\u00e3o \"desejada\", depois encontre um padr\u00e3o no c\u00f3digo, realize a substitui\u00e7\u00e3o da vari\u00e1vel e escreva um ciclo.<br \/>\nSe voc\u00ea tiver uma ideia de como resolver essa tarefa sem um ciclo de outra forma, por favor, escreva nos coment\u00e1rios.<\/p>\n<h4>Ciclos dentro de ciclos<\/h4>\n<p>\nNeste tema, \u00e9 importante observar que:<br \/>\n \u2014 os contadores para o ciclo interno e externo devem ser vari\u00e1veis diferentes.<br \/>\n \u2014 o contador para o ciclo interno precisa ser reiniciado v\u00e1rias vezes (ou seja, no corpo do ciclo externo).<br \/>\n \u2014 nas tarefas de sa\u00edda de texto, n\u00e3o se pode escrever uma letra em v\u00e1rias linhas e, em seguida, a segunda. \u00c9 necess\u00e1rio primeiro imprimir todas as letras da primeira linha, depois todas da segunda e assim por diante.<\/p>\n<p>A explica\u00e7\u00e3o do tema sobre ciclos aninhados deve come\u00e7ar pela import\u00e2ncia de reiniciar o contador.<br \/>\nTarefa de exemplo:<\/p>\n<blockquote><p>O usu\u00e1rio insere dois n\u00fameros: R e T. Exiba duas linhas de s\u00edmbolos \"#\". Na primeira linha deve haver R s\u00edmbolos. Na segunda linha T s\u00edmbolos. Se algum n\u00famero for negativo, exiba uma mensagem de erro.<\/p><\/blockquote>\n<p>\n<b class=\"spoiler_title\">R=5, T=11<\/b>#####<br \/>\n###########<\/p>\n<p><b class=\"spoiler_title\">R=20, T=3<\/b>####################<br \/>\n###<\/p>\n<p><b class=\"spoiler_title\">R=-1, T=6<\/b>O valor de R deve ser n\u00e3o negativo<\/p>\n<p><b class=\"spoiler_title\">R=6, T=-2<\/b>O valor de T deve ser n\u00e3o negativo<\/p>\n<p>\u00c9 evidente que esta tarefa tamb\u00e9m tem pelo menos duas op\u00e7\u00f5es de solu\u00e7\u00e3o.<br \/>\n<b class=\"spoiler_title\">Desejado<\/b><\/p>\n<pre><code class=\"cs\">string temp;\nint R;\nint T;\ntemp = Console.ReadLine();\nR = int.Parse(temp);\ntemp = Console.ReadLine();\nT = int.Parse(temp);\nint i = 0;\nwhile (i &lt; R)\n{\n    Console.Write(&quot;#&quot;);\n    i = i + 1;\n}\nConsole.WriteLine();\ni = 0;\nwhile (i &lt; T)\n{\n    Console.Write(&quot;#&quot;);\n    i = i + 1;\n}\n<\/code><\/pre>\n<p><b class=\"spoiler_title\">Poss\u00edvel \u21161<\/b><\/p>\n<pre><code class=\"cs\">string temp;\nint R;\nint T;\ntemp = Console.ReadLine();\nR = int.Parse(temp);\ntemp = Console.ReadLine();\nT = int.Parse(temp);\nint i = 0;\nwhile (i &lt; R)\n{\n    Console.Write(&quot;#&quot;);\n    i = i + 1;\n}\nConsole.WriteLine();\nint j = 0;\nj = 0;\nwhile (j &lt; T)\n{\n    Console.Write(&quot;#&quot;);\n    j = j + 1;\n}\n<\/code><\/pre>\n<p>A diferen\u00e7a \u00e9 que na solu\u00e7\u00e3o \"poss\u00edvel\" para a impress\u00e3o da segunda linha, foi utilizada uma segunda vari\u00e1vel. \u00c9 necess\u00e1rio insistir no uso da mesma vari\u00e1vel para ambos os ciclos. Este limite pode ser argumentado pelo fato de que a solu\u00e7\u00e3o com um contador para dois ciclos ilustrar\u00e1 o termo \"reinicializa\u00e7\u00e3o do contador\". A compreens\u00e3o deste termo \u00e9 necess\u00e1ria para resolver as pr\u00f3ximas tarefas. Como compromisso, ambas as solu\u00e7\u00f5es da tarefa podem ser mantidas.<\/p>\n<p>Um problema t\u00edpico ao usar uma \u00fanica vari\u00e1vel contador para dois ciclos se manifesta assim:<br \/>\n<b class=\"spoiler_title\">R=5, T=11<\/b>#####<br \/>\n######<\/p>\n<p>A quantidade de caracteres na segunda linha n\u00e3o corresponde ao valor de T. Se precisar de ajuda com este problema, deve-se \"apontar\" para as anota\u00e7\u00f5es sobre problemas t\u00edpicos com ciclos. Este \u00e9 o sintoma \u21163. \u00c9 diagnosticado se adicionar a sa\u00edda do valor do contador diretamente antes do segundo ciclo. Corrige-se reinicializando. Mas \u00e9 melhor n\u00e3o contar isso imediatamente. O estudante deve tentar formular pelo menos uma hip\u00f3tese.<\/p>\n<p>Claro, h\u00e1 tamb\u00e9m essa op\u00e7\u00e3o de solu\u00e7\u00e3o. Mas eu nunca a vi nos estudantes. Na fase de estudo dos ciclos, falar sobre isso dispersar\u00e1 a aten\u00e7\u00e3o. Pode-se voltar a isso mais tarde, ao estudar fun\u00e7\u00f5es de manipula\u00e7\u00e3o de strings.<br \/>\n<b class=\"spoiler_title\">Poss\u00edvel \u21162<\/b><\/p>\n<pre><code class=\"cs\">string temp;\nint R;\nint T;\ntemp = Console.ReadLine();\nR = int.Parse(temp);\ntemp = Console.ReadLine();\nT = int.Parse(temp);\nConsole.WriteLine(new String('#', R));\nConsole.WriteLine(new String('#', T));\n<\/code><\/pre>\n<p>\nA pr\u00f3xima tarefa obrigat\u00f3ria:<\/p>\n<blockquote><p>Exiba na tela os n\u00fameros de 0 a 9. Cada n\u00famero deve estar em sua pr\u00f3pria linha. O n\u00famero de d\u00edgitos em cada linha (W) \u00e9 inserido pelo teclado.<\/p><\/blockquote>\n<p>\n<b class=\"spoiler_title\">W=1<\/b>0<br \/>\n1<br \/>\n2<br \/>\n3<br \/>\n4<br \/>\n5<br \/>\n6<br \/>\n7<br \/>\n8<br \/>\n9<\/p>\n<p><b class=\"spoiler_title\">W=10<\/b><code>0000000000<br \/>\n1111111111<br \/>\n2222222222<br \/>\n3333333333<br \/>\n4444444444<br \/>\n5555555555<br \/>\n6666666666<br \/>\n7777777777<br \/>\n8888888888<br \/>\n9999999999<\/code><\/p>\n<p>Se o estudante dominou o conceito de substitui\u00e7\u00e3o de vari\u00e1vel, ele conseguir\u00e1 fazer isso rapidamente. O problema poss\u00edvel pode ser novamente a redefini\u00e7\u00e3o da vari\u00e1vel. Se ele n\u00e3o conseguir fazer a convers\u00e3o, significa que voc\u00ea se apressou e deve resolver problemas mais simples.<\/p>\n<p>Obrigado pela aten\u00e7\u00e3o. Curta e se inscreva no canal.<\/p>\n<p>P.S. Se voc\u00ea encontrou erros de digita\u00e7\u00e3o ou erros no texto, por favor, me avise. Voc\u00ea pode fazer isso destacando uma parte do texto e pressionando no Mac \u00ab\u2318 + Enter\u00bb ou em teclados cl\u00e1ssicos \u00abCtrl \/ Enter\u00bb, ou atrav\u00e9s de mensagens diretas. Se essas op\u00e7\u00f5es n\u00e3o estiverem dispon\u00edveis, escreva sobre os erros nos coment\u00e1rios. Obrigado!<\/p>\n<p class=\"for_users_only_msg\">Apenas usu\u00e1rios registrados podem participar da pesquisa. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Entre<\/a><\/noindex>, por favor.<\/p>\n<h2 class=\"default-block__polling-title\">Pesquisa para leitores sem karma<\/h2>\n<ul class=\"poll-result\">\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">20,0%<\/strong>Dou aulas profissionalmente, +12<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">10,0%<\/strong>Dou aulas profissionalmente, -11<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent  poll-result__data-percent_winner\">70,0%<\/strong>N\u00e3o dou aulas, +17<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">0,0%<\/strong>N\u00e3o dou aulas, -10<\/p>\n<\/li>\n<li class=\"poll-result__item\">\n<p>                <strong class=\"poll-result__data-percent\">0,0%<\/strong>Outro0<\/p>\n<\/li>\n<\/ul>\n<p>    10 usu\u00e1rios votaram. 5 usu\u00e1rios se abstiveram.<br \/>\n<br \/>Fonte: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/456500\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e\u0431 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0442\u0435\u043c, \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0434\u043b\u044f \u043e\u043f\u044b\u0442\u043d\u044b\u0445 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432. \u0426\u0435\u043b\u044c \u2014 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u0431\u044b\u0432\u0430\u044e\u0442 \u0443 \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438. \u0414\u043b\u044f \u043f\u0440\u0430\u043a\u0442\u0438\u043a\u0443\u044e\u0449\u0438\u0445 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0447\u0438\u043a\u043e\u0432 \u044d\u0442\u0438 \u043f\u0440\u043e\u0431\u043b\u0435\u043c\u044b \u0443\u0436\u0435 \u0434\u0430\u0432\u043d\u043e \u0440\u0435\u0448\u0435\u043d\u044b, \u043f\u043e\u0437\u0430\u0431\u044b\u0442\u044b \u0438\u043b\u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043d\u0435 \u0437\u0430\u043c\u0435\u0447\u0435\u043d\u044b. \u0421\u0442\u0430\u0442\u044c\u044f \u043c\u043e\u0436\u0435\u0442 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f, \u0435\u0441\u043b\u0438 \u0432\u0434\u0440\u0443\u0433 \u0432\u0430\u043c \u043f\u0440\u0438\u0434\u0435\u0442\u0441\u044f \u043f\u043e\u043c\u043e\u0433\u0430\u0442\u044c \u0441 \u044d\u0442\u043e\u0439 \u0442\u0435\u043c\u043e\u0439 \u043a\u043e\u043c\u0443-\u043d\u0438\u0431\u0443\u0434\u044c. \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u0440\u043e\u0432\u043e\u0434\u044f\u0442\u0441\u044f [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-40208","post","type-post","status-publish","format-standard","hentry"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e\u0431 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0442\u0435\u043c, \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0434\u043b\u044f \u043e\u043f\u044b\u0442\u043d\u044b\u0445 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432. \u0426\u0435\u043b\u044c \u2014 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u0431\u044b\u0432\u0430\u044e\u0442 \u0443 \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/pt\/blog\/kak-nauchit-preodolevat-trudnosti-a-zaodno-i-pisat-czikly\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"pt_PT\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u041a\u0430\u043a \u043d\u0430\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u0435\u043e\u0434\u043e\u043b\u0435\u0432\u0430\u0442\u044c \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438, \u0430 \u0437\u0430\u043e\u0434\u043d\u043e \u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u0446\u0438\u043a\u043b\u044b | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e\u0431 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0442\u0435\u043c, \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0434\u043b\u044f \u043e\u043f\u044b\u0442\u043d\u044b\u0445 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432. \u0426\u0435\u043b\u044c \u2014 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u0431\u044b\u0432\u0430\u044e\u0442 \u0443 \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/pt\/blog\/kak-nauchit-preodolevat-trudnosti-a-zaodno-i-pisat-czikly\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-02-01T03:04:35+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-01T03:04:35+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Como ensinar a superar dificuldades e, ao mesmo tempo, escrever la\u00e7os | ProHoster","description":"Embora o tema a seguir seja uma das bases, este artigo foi escrito para profissionais experientes. O objetivo \u00e9 mostrar quais equ\u00edvocos os iniciantes t\u00eam na programa\u00e7\u00e3o.","canonical_url":"https:\/\/prohoster.info\/pt\/blog\/kak-nauchit-preodolevat-trudnosti-a-zaodno-i-pisat-czikly","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pt_PT","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u041a\u0430\u043a \u043d\u0430\u0443\u0447\u0438\u0442\u044c \u043f\u0440\u0435\u043e\u0434\u043e\u043b\u0435\u0432\u0430\u0442\u044c \u0442\u0440\u0443\u0434\u043d\u043e\u0441\u0442\u0438, \u0430 \u0437\u0430\u043e\u0434\u043d\u043e \u0438 \u043f\u0438\u0441\u0430\u0442\u044c \u0446\u0438\u043a\u043b\u044b | ProHoster","og:description":"\u041d\u0435\u0441\u043c\u043e\u0442\u0440\u044f \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e\u0431 \u043e\u0434\u043d\u043e\u0439 \u0438\u0437 \u0431\u0430\u0437\u043e\u0432\u044b\u0445 \u0442\u0435\u043c, \u0434\u0430\u043d\u043d\u0430\u044f \u0441\u0442\u0430\u0442\u044c\u044f \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u0430 \u0434\u043b\u044f \u043e\u043f\u044b\u0442\u043d\u044b\u0445 \u0441\u043f\u0435\u0446\u0438\u0430\u043b\u0438\u0441\u0442\u043e\u0432. \u0426\u0435\u043b\u044c \u2014 \u043f\u043e\u043a\u0430\u0437\u0430\u0442\u044c \u043a\u0430\u043a\u0438\u0435 \u0437\u0430\u0431\u043b\u0443\u0436\u0434\u0435\u043d\u0438\u044f \u0431\u044b\u0432\u0430\u044e\u0442 \u0443 \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432 \u0432 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0438.","og:url":"https:\/\/prohoster.info\/pt\/blog\/kak-nauchit-preodolevat-trudnosti-a-zaodno-i-pisat-czikly","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-02-01T03:04:35+00:00","article:modified_time":"2020-02-01T03:04:35+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"40208","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:43:24","updated":"2022-09-29 01:18:32","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/40208","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/comments?post=40208"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/posts\/40208\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/media?parent=40208"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/categories?post=40208"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pt\/wp-json\/wp\/v2\/tags?post=40208"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}