Commits

Francisco Souza committed 6a5eef1

Conclusão da Revisão do Capítulo 13.

Comments (0)

Files changed (1)

edicao_1.1/capitulo_13.rst

     segundos = minutos * 60 + t.segundos 
     return segundos
 
-
-Agora, tudo que precisamos é uma maneira de converter de um inteiro para um objeto ``Horario``::
+Agora, tudo que precisamos é uma maneira de converter de um inteiro para um objeto ``Horario``. Que tal a função ``criarHorario``?::
 
  def criarHorario(segundos): 
      horario = Time() 
      horario.segundos = segundos 
      return horario 
 
-
-Você deve ter que pensar um pouco para se convencer que esta técnica de converter de uma base para outra é correta. Assumindo que você está convencido, você pode usar essas funções para reescrever somaHorario::
-
+Você vai precisar pensar um pouco para se convencer que esta técnica de converter de uma base para outra é correta. Assumindo que você está convencido, você pode usar essas funções para reescrever ``somaHorario``::
 
  def somaHorario(t1, t2): 
      segundos = converterParaSegundos(t1) + converterParaSegundos(t2) 
      return criarHorario(segundos)
 
-
 Esta versão é muito mais curta que a original, e é muito mais fácil para demonstrar que está correta (assumindo,  como sempre, que as funções que são chamadas estão corretas). 
 
-Como um exercício, reescreva ``incrementar`` da mesma forma. 
-Clique aqui para feedback
+  Como exercício, reescreva ``incrementar`` da mesma forma. 
  
-
 --------------------
 13.6 Generalização
 --------------------
 
-Algumas vezes, converter de base 60 para base 10 e voltar é mais difícil do que simplesmente lidar com horários. Conversão de base é mais abstrata; nossa intuição para lidar com horários é melhor. 
+Algumas vezes, converter de base 60 para base 10 e voltar é mais difícil do que simplesmente lidar com horários. Conversão de base é mais abstrata, nossa intuição para lidar com horários é melhor. 
 
-Mas se XXXX But if we have the insight to treat times as base 60 numbers and make the investment of writing the conversion functions (converterParaSeguntos e criarHorario), nós conseguimos um programa que é menor, fácil de ler e depurar, e mais confiável. 
+Mas se tivermos a percepção de tratar ``Horario`` como números de base 60 e escrevermos funções de conversão (``converterParaSeguntos`` e ``criarHorario``), nós conseguimos um programa que é menor, mais fácil de ler e depurar, e mais confiável. 
 
-É também fácil para adicionar funcionalidades depois. Por exemplo, imagine subtrair dois Horarios para encontrar a duração entre eles. Uma aproximação ingênua seria implementar subtração com empréstimo (?? borrowing - Isso mesmo??). Usando as funções de conversão será mais fácil e provavelmente estará correto. 
+Também fica mais fácil adicionar outras funcionalidades depois. Por exemplo, imagine subtrair dois ``Horarios`` para encontrar o intervalo de tempo entre eles. Uma abordagem ingênua seria implementar subtração usando a ideia do "pegar emprestado" que aprendemos nos primeiros anos do ensino fundamental. Usando as funções de conversão seria mais fácil e menos sucetível a falhas. 
 
-Ironicamente, algumas vezes fazer um problema mais difícil (ou mais genérico) o torna mais simples (porque existem alguns poucos casos especiais e poucas oportunidades para errar). Clique aqui para feedback
+Ironicamente, algumas vezes fazer um problema mais difícil (ou mais genérico) o torna mais simples (por que existem alguns poucos casos especiais e poucas oportunidades para errar).
 
 -----------------
 13.7 Algoritmos
 -----------------
 
-Quando você escreve uma solução genérica para uma classe de problemas, ao contrário de uma solução específica para um único problema, você escreveu um algorítmo. Nós mencionamos isso antes mas não definimos cuidadosamente. Isso não é fácil para definir, então nós vamos tentar //a couple of approaches//. 
+Quando você escreve uma solução genérica para uma classe de problemas, ao contrário de uma solução específica para um único problema, você escreveu um algoritmo. Nós mencionamos isso antes, mas não definimos cuidadosamente. Isso não é fácil para definir, então nós vamos tentar uma definição aproximada. 
 
-Primeiramente, considere alguma coisa que não seja um algorítmo. Quando você aprendeu a multiplicar números de um dígito, você provavelmente memorizou a tabela de multiplicação. Como resultado, você memorizou 100 soluções específicas. Esse tipo de conhecimento não é algorítmo. 
+Primeiramente, considere alguma coisa que não seja um algoritmo. Quando você aprendeu a multiplicar números de um dígito, você provavelmente memorizou a tabela de multiplicação. Como resultado, você memorizou 100 soluções específicas. Esse tipo de conhecimento não é algoritmo. 
 
 Mas se você é "preguiçoso", você provavelmente trapaceou por ter aprendido alguns truques. Por exemplo, para encontrar o produto de n e 9, você pode escrever n-1 como o primeiro dígito e 10-n como o segundo dígito. Este truque é um solução genérica para multiplicar qualquer número de um dígito por 9. Isso é um algoritmo! 
 
-De modo parecido, as técnicas que você aprendeu para adicionar //com transporte//, //subtraction with borrowing//, e divisão longa são todas algorítmos. Uma das características dos algorítmos é que eles não requerem nenhuma inteligência para  serem executados ( carry out ). Eles são processos mecânicos  no qual cada passo segue o último de acordo com um conjunto simples de regras. 
+De modo parecido, as técnicas que você aprendeu para adicionar a ideia do "vai um", subtrair com a abordagem do "pegar emprestado", e divisão longa são todas algoritmos. Uma das características dos algoritmos é que eles não requerem nenhuma inteligência para serem executados. Eles são processos mecânicos, no qual cada passo segue o último de acordo com um conjunto simples de regras. 
 
 Na nossa opinião, é preocupante que humanos gastem tanto tempo na escola aprendendo a executar algoritmos que, literalmente, não requerem inteligência.
 
 Por outro lado, o processo de projetar algoritmos é interessante, intelectualmente desafiante, e uma parte central daquilo que chamamos programação. 
 
-Algumas das coisas que as pessoas fazem naturalmente, sem dificuldade ou consciência, são as mais difíceis de se expressar através de algoritmos. Entender a linguagem natural é um bom exemplo. Todos nós fazemos isso, mas até hoje ninguém conseguiu explicar como fazemos isso, pelo menos não na forma de algoritmo. Clique aqui para feedback.
+Algumas das coisas que as pessoas fazem naturalmente, sem dificuldade ou consciência, são as mais difíceis de se expressar através de algoritmos. Entender a linguagem natural é um bom exemplo. Todos nós fazemos isso, mas até hoje ninguém conseguiu explicar como fazemos isso, pelo menos não na forma de algoritmo.
 
 ---------------
 13.8 Glossário
 ---------------
  
-função pura (*pure function*)
- Uma função que não modifica nenhum dos objetos que ela recebe como   
- parâmetro. A maioria das funções puras é frutífera. 
+algoritmo (*algorithm*)
+ Um conjunto de instruções para resolver uma classe de problemas usando  um processo mecânico, não inteligente.
 
-modificador (*modifier*)
- Uma função que muda um ou mais dos objetos que ela recebe como 
- parâmetros. A maioria dos modificadores é nula. 
-
-estilo de programação funcional (*functional programming style*)
- Um estilo de programação onde a maioria das funções são puras. 
+desenvolvimento planejado (*planned development*)
+ Uma maneira de desenvolver programas que envolvem uma percepção de alto nível do problema e mais planejamento do que desenvolvimento incremental ou desenvolvimento prototipado. 
 
 desenvolvimento prototipado (*prototype development*)
  Uma maneira de desenvolver programas começando com um protótipo e gradualmente melhorando-o. 
 
-desenvolvimento planejado (*planned development*)
- Uma maneira de desenvolver programas que envolvem uma percepção de alto nível do problema e mais planejamento do que desenvolvimento incremental ou desenvolvimento prototipado. 
+estilo de programação funcional (*functional programming style*)
+ Um estilo de programação onde a maioria das funções são puras.
 
-algoritmo (*algorithm*)
- Um conjunto de instruções para resolver uma classe de problemas usando  um processo mecânico, não inteligente.
+função pura (*pure function*)
+ Uma função que não modifica nenhum dos objetos que ela recebe como parâmetro. A maioria das funções puras é frutífera. 
+
+modificador (*modifier*)
+ Uma função que muda um ou mais dos objetos que ela recebe como parâmetro. A maioria dos modificadores é nula.