YouTube

Got a YouTube account?

New: enable viewer-created translations and captions on your YouTube channel!

Portuguese subtitles

← 06xps-02 I Could Wile Away The Hours Solution

06xps-02 While - Solução

Get Embed Code
3 Languages

Subtitles translated from English Showing Revision 2 created 02/20/2013 by Lucilia Figueiredo.

  1. Nos foi dada a tarefa de adicionar while a nosso interpretador JavaScript,
  2. de modo que funcione como em Python.
  3. Para compreender isso, aqui está um código JavaScript que escreve 0, 2 e 4.
  4. Como você pode adivinhar, testamos a expressão e,
  5. se a expressão -- conhecida como condição -- é True, então avaliamos o corpo do loop;
  6. depois de avaliar o copo do loop, testamos a expressão condicional novamente,
  7. e se ela ainda é verdadeira, então avaliamos o corpo do loop, e continuamos esse processo,
  8. até que a expressão condicional seja False, ponto no qual continuamos depois do while.
  9. Então, um while loop é um tipo de comando que tem a palavra chave while, um expressào,
  10. um comando composto -- uma sequência de comandos.
  11. Em nossa árvore de parsing, isso é representado como uma tupla, onde o primeiro elemento
  12. é o string "while" -- para indicar que é um while loop --
  13. o segundo elemento é a expressão -- a condição que determina
  14. se o corpo é ou não executado --
  15. e o último elemento da tupla é a sequência de comandos que constitui o corpo do loop.
  16. Então, eu vou mostrar 2 maneiras de resolver isso: a primeira é reusar o while de Python,
  17. e a segunda e implementar o while loop recursivamente.
  18. Lembre-se que, em uma linguagem de programação, você pode ter um while loop
  19. ou chamadas recursivas e ter igual poder de expressão.
  20. Então vamos usar esse fato para implementar nosso while com recursão. Aqui está uma solução.
  21. As duas primeiras linhas extraem a expressão condicional e o corpo do loop da árvore de parsing,
  22. e então simplesmente plugamos a expressão condicional e o corpo do loop
  23. em um while de Python. Portanto, se a expressão condicional é True,
  24. vamos executar o corpo do loop -- bastante direto.
  25. E aqui está minha solução recursiva. As duas primeiras linhas são copiadas diretamente da implementação com
  26. while de Pyton, onde extraímos a expressão condicional e o corpo do loop, do mesmo modo.
  27. Nós avaliamos a verdade da nossa expressão condicional;
  28. se nossa expressào condicional for True, executamos os comandos do corpo do while loop,
  29. e então chamamos recursivamente eval_while.
  30. Pense sobre isso por um instante: vamos continuar avaliando eval_while
  31. até que a expressão condicional seja falsa neste ambiente.
  32. Quando for falsa, ou se algum momento for falsa, simplesmente não fazemos nada,
  33. o que é exatamente a mesma funcionalidade que tínhamos com a implementação com while loop.