03 · Racionais: produtos cruzados e redução
Racionais: produtos cruzados e redução¶
Trate uma fração como um par de inteiros e torne seu valor independente do numerador e denominador escolhidos.
Você já distingue representante, classe de equivalência e forma normal.
- explicar com suas palavras a definição matemática de “Racionais: produtos cruzados e redução”
- apontar como essa definição é representada em dados Python
- prever uma execução pequena a partir do código real
Com denominadores não nulos, `p/q` e `r/s` são iguais exatamente quando `p*s=q*r`; assim `1/2` e `2/4` têm o mesmo valor.
`Rational` guarda numerador e denominador inteiros, rejeita denominador zero e usa `reduction()` para escolher uma forma legível.
`p/q ~ r/s` → `p * s == q * r` → `Rational.__eq__`
Definição matemática
Definição matemática¶
Com denominadores não nulos, p/q e r/s são iguais exatamente quando p*s=q*r; assim 1/2 e 2/4 têm o mesmo valor.
Representação dos dados
Representação dos dados¶
Rational guarda numerador e denominador inteiros, rejeita denominador zero e usa reduction() para escolher uma forma legível.
Implementação em Python
Implementação em Python¶
__eq__ multiplica em cruz, __add__ constrói um denominador comum e a redução normaliza o sinal e divide pelo máximo divisor comum.
A correspondência exata usada no curso:
Fluxo de execução
Fluxo de execução¶
A comparação desce até a multiplicação e a igualdade de inteiros, mostrando a reutilização da torre numérica.
Preveja o booleano da igualdade e a forma reduzida de `2/4`.
Primeiro escreva sua previsão; depois execute.
Verificação com testes
Verificação com testes¶
Os testes comparam frações equivalentes, seus hashes e a rejeição do denominador zero.
Escopo e limites
Escopo e limites¶
Componentes grandes ampliam o custo dos naturais unários na base da implementação.