Compre o e-book deste material aqui!
Números são tipos de dados usualmente manipulados em programas de computador. Números inteiros e não inteiros são tratados de forma diferente. Mas, antes de discorrermos sobre essas diferenças, vamos estudar operadores numéricos básicos.
As seguintes operações numéricas estão disponíveis na linguagem Python:
+ adição
3
- subtração
-1
* multiplicação
6
/ divisão
2.5
** potenciação
8
// divisão inteira
2
% resto da divisão
1
A ordem de precedência das operações deve ser observada em Python. Uma expressão é executada da esquerda para a direita, mas os operadores tem a seguinte precedência1010endnote: 10Consulte na web a lista completa de operadores e suas precedências em The Python Standard Library: Expressions: Operator precedence.:
**
-x (oposto de x)
*, /, //, %
+, -
Utilizamos parênteses para impor uma precedência diferente, i.e. expressões entre parênteses () são executadas antes das demais.
Estudamos a seguinte computação:
7.0
Uma pessoa desavisada poderia pensar que o resultado está errado, pois
(2.13) | |||
(2.14) | |||
(2.15) | |||
(2.16) | |||
(2.17) |
Ou seja, o resultado não deveria ser ? Não, em Python, a operação de potenciação ** tem a maior precedência, depois vem as de multiplicação * e divisão / (com a mesma precedência, sendo que a mais a esquerda é executada primeiro) e, por fim, vem as de adição + e subtração - (também com a mesma precedência entre si). Ou seja, a instrução acima é computada na seguinte ordem:
(2.18) | |||
(2.19) | |||
(2.20) | |||
(2.21) | |||
(2.22) |
Para impormos uma ordem diferente de precedência, usamos parêntese. No caso acima, escrevemos
224.0
(Espaços entre Operandos.) O uso de espaços entre os operandos, em geral, é arbitrário, mas conforme utilizados podem dificultar a legibilidade do código. Por exemplo,
-4
Essa expressão é computada na seguinte ordem
(2.23) | |||
(2.24) | |||
(2.25) |
Observamos que ela seria melhor escrita da seguinte forma
-4
Em Python, números inteiros são alocados por registros com um número arbitrário de bits. Com isso, os maior e menor números inteiros que podem ser alocados dependem da capacidade de memória da máquina. Quanto maior ou menor o número inteiro, mais bits são necessários para alocá-lo.
O método Python sys.getsizeof retorna o tamanho de um objeto medido em bytes ().
0: 24 B 1: 28 B 100: 28 B 10**9: 28 B 10**10: 32 B 10**100: 72 B
O número googol é um número grande1111endnote: 11Por exemplo, o número total de partículas elementares em todo o universo observável é estimado em . Fonte: Wikipedia: Eddington number., mas bytes não necessariamente. Um computador com Gbytes1212endnote: 12, , . livres de memória, poderia armazenar um número inteiro que requer um registro de até .
No Python, números decimais são alocados pelo padrão IEEE 774 de aritmética em ponto flutuante. Em geral, são usados para alocar um número decimal. Um ponto flutuante tem a forma
(2.26) |
onde é chamada de mantissa e é um número inteiro chamado de característica do ponto flutuante. A mantissa usa , a característica e é usado para o sinal do número.
sys.float_info(max=1.7976931348623157e+308, max_exp=1024, max_10_exp=308, min=2.2250738585072014e-308, min_exp=-1021, min_10_exp=-307, dig=15, mant_dig=53, epsilon=2.220446049250313e-16, radix=2, rounds=1)
Vamos denotar fl(x) o número em ponto flutuante mais próximo do número decimal x dado. Quando digitamos
O valor alocado na memória da máquina não é 0.1, mas, sim, o valor de fl(x). Normalmente, o épsilon de máquina é uma boa aproximação para o erro1313endnote: 13Erro relativo. (de arredondamento) entre x e fl(x).
A notação científica é a representação de um dado número na forma
(2.27) |
onde , , são algarismos da base 10. A parte à esquerda do sinal é chamada de mantissa do número e é chamado de expoente (ou ordem de grandeza).
O número pode ser representado em notação científica das seguintes formas
(2.28) | ||||
(2.29) | ||||
(2.30) |
entre outras tantas possibilidades.
Em Python, usa-se a letra e para separar a mantissa do expoente na notação científica. Por exemplo
31.515
31.515
31.515
No exemplo anterior (Exemplo 2.4.3), podemos observar que a representação em notação científica de um dado número não é única. Para contornar isto, introduzimos a notação científica normalizada, a qual tem a forma
(2.31) |
com 1414endnote: 14No caso do número zero, temos ..
Python tem números complexos como uma classe básica da linguagem. O número imaginário é representado por 1j. Temos
(-1+0j)
Ou seja, . Aritmética de números completos está diretamente disponível na linguagem.
Complete as lacunas.
** é o operador de potenciação.
A computação 2+2*3 resulta 8.
A computação 10-6/2 resulta 7.
A computação 3**2*3 resulta 27.
A computação 1-34/2*3 resulta 50.
a) **. b) 8. c) 7. d) 27. e) 50.
Desenvolva um código Python para computar a interseção com o eixo das abscissas da reta de equação
(2.32) |
Em seu código, aloque e e então compute o ponto de interseção . Em seguida, teste seu código com outros valores possíveis de e .
Assuma que o seguinte código Python
tenha sido desenvolvido para computar o ponto de interseção com o eixo das abscissas da reta de equação
(2.33) |
com e . O código acima contém um erro, qual é? Identifique-o, corrija-o e justifique sua resposta.
Erro na linha 3. As operações não estão ocorrendo na precedência correta para fazer a computação desejada. Correção: x = b/(2*a).
Desenvolva um código Python para computar a média aritmética entre dois números e dados. Teste seu código para diferentes valores de e .
Uma disciplina tem o seguinte critério de avaliação:
Trabalho: nota com peso 3.
Prova: nota com peso 7.
Desenvolva um código Python que compute a nota final, dadas as notas do trabalho e da prova (em escala de ) de um estudante. Teste seu código para diferentes valores de notas.
Desenvolva um código Python para computar as raízes reais de uma equação quadrática
(2.34) |
Assuma dados os parâmetros , e . Em seguida, teste seu código para diferentes valores dos parâmetros , e .
Encontre a quantidade de memória disponível em seu computador. Quantos números decimais em ponto flutuante de -bits seu programa poderia alocar, caso conseguisse usar toda a memória disponível no momento?
Cada GBytes livre permite alocar aproximadamente números decimais.
Escreva os seguintes números em notação científica normalizada e entre com eles em um terminal Python:
a) , 7e2; b) , 7e-2; c) , 2.8e6; d) , 1.9e-5
Escreva os seguintes números em notação decimal:
a) ; b) ; c)
Faça os seguintes cálculos e, então, verifique os resultados computando-os em Python:
a) ;
b)
c)
d)
Faça os seguintes cálculos e verifique seus resultados computando-os em Python:
Desenvolva um código Python que computa a área de um quadrado de lado dado. Teste-o com e assegure que seu código forneça o resultado usando notação científica.
Desenvolva um código Python que computa o comprimento da diagonal de um quadrado de lado dado. Teste-o com e assegure que seu código forneça o resultado em notação científica normalizada.
Assumindo que , desenvolva um código Python que compute o ponto que corresponde a interseção das retas de equações
(2.35) | |||
(2.36) |
para , , e parâmetros dados. Teste-o para o caso em que , , e . Garanta que seu código forneça a solução usando notação científica normalizada.
As informações preenchidas são enviadas por e-mail para o desenvolvedor do site e tratadas de forma privada. Consulte a Política de Uso de Dados para mais informações. Aproveito para agradecer a todas/os que de forma assídua ou esporádica contribuem enviando correções, sugestões e críticas!