02 · Inteiros: representantes e equivalência
Inteiros: representantes e equivalência¶
Represente `a-b` pelo par natural `(a,b)` e entenda por que pares diferentes podem ser o mesmo inteiro.
Você já consegue seguir a igualdade e a adição recursivas dos naturais.
- explicar com suas palavras a definição matemática de “Inteiros: representantes e equivalência”
- apontar como essa definição é representada em dados Python
- prever uma execução pequena a partir do código real
`(a,b)` e `(c,d)` representam o mesmo inteiro exatamente quando `a+d=b+c`; um inteiro é uma classe de pares sob essa equivalência.
`Integer` guarda dois naturais. `(3,1)` e `(4,2)` são objetos distintos que representam o valor 2.
`(a,b) ~ (c,d)` → `a + d == b + c` → `Integer.__eq__`
Definição matemática
Definição matemática¶
(a,b) e (c,d) representam o mesmo inteiro exatamente quando a+d=b+c; um inteiro é uma classe de pares sob essa equivalência.
Representação dos dados
Representação dos dados¶
Integer guarda dois naturais. (3,1) e (4,2) são objetos distintos que representam o valor 2.
Implementação em Python
Implementação em Python¶
Integer.__eq__ compara as somas cruzadas e normalize() elimina a parte comum para escolher, por exemplo, (2,0).
A correspondência exata usada no curso:
Fluxo de execução
Fluxo de execução¶
Comparar inteiros ativa adição e igualdade de naturais, de modo que o log mostra a reutilização do capítulo anterior.
Decida primeiro se os pares são iguais e qual será o representante normalizado.
Primeiro escreva sua previsão; depois execute.
Verificação com testes
Verificação com testes¶
Os testes cobrem representantes diferentes, fechamento das operações e normalização para garantir que o resultado seja bem definido.
Escopo e limites
Escopo e limites¶
Os pares são menos eficientes que int, mas tornam visível a construção por quociente.