CSE 110: Introdução à Programação

S02 - Atividade de Aprendizagem (2 de 2): Expressões Matemáticas

Visão Geral

Na aula anterior, você aprendeu como trabalhar com tipos de dados numéricos. Nesta aula, você aprenderá como resolver problemas mais interessantes sobre esse assunto.

Depois de dominar esses conceitos, você conseguirá escrever programas para resolver até os cálculos matemáticos ou científicos mais complicados. Basta adicionar mais variáveis ​​e usar expressões mais complexas, pois os princípios envolvidos são os mesmos.

Material de Preparação

Link Direto: Bibliotecas

Link Direto: F-Strings

Arredondamento

Quando o computador armazena números de ponto flutuante (decimais), ele os armazena internamente na forma de notação científica binária, com um grande número de casas decimais.

Às vezes, você pode querer exibir números para o usuário sem exibir todas as casas decimais. Para fazer isso você precisa arredondá-los. Existem várias abordagens para arredondar números, dependendo do que você deseja que o programa armazene internamente e do que você deseja que ele exiba ao usuário. Uma das abordagens mais simples e comuns é permitir que o programa continue a armazenar o número de maneira precisa, mas formate-o de maneira adequada para o usuário quando for exibido.

Usando F-Strings (Strings Formatadas)

Para arredondar seus números apenas na exibição (mas continuar fazendo com que o computador armazene o valor completo internamente), você usará strings formatadas (f-strings). Você já as usa, mas agora aprenderá mais opções sobre elas.

Para usar uma string formatada, você deixa espaços reservados para suas variáveis ​​usando chaves {}, então o valor da variável é inserido nessa posição da string. Isso pode ser feito de duas maneiras diferentes:

A maneira mais simples foi adicionada recentemente ao Python, e é colocar um f logo antes da sua string, da seguinte forma:


print(f"Há {contagem_de_carros} carros na estrada.")

Outra abordagem é não usar f antes da string, mas usar .format() depois da string, conforme mostrado abaixo:


print("Há {} carros na estrada.".format(contagem_de_carros))

O efeito dessas abordagens é o mesmo, mas a primeira que usa o "f" é um tipo de notação abreviada, para tornar as coisas mais simples e claras. Mas é importante conhecer a segunda abordagem, pois você a verá sendo utilizada em muitos exemplos de código na internet. Além disso, a segunda maneira é uma abordagem mais padrão que você verá em outras linguagens (por exemplo, Java, C#, etc.).

Para este curso, você pode usar qualquer uma das abordagens, mas a maior parte do material presumirá que você está usando a notação de string formatada mais simples.

Opções de Strings Formatadas

Existem muitas opções diferentes para formatar números usando strings formatadas. (Se tiver interesse, você pode ler a documentação oficial no site de operações comuns de string do Python. Mas avisamos desde já que o material é extenso.)

Resumindo, existem opções para alinhamento esquerdo/direito/centro, para expressão de números em diferentes bases (base 10 versus base 16), formatação de datas de muitas maneiras diferentes e muitas outras coisas. As formatações mais comuns que você provavelmente usará serão para definir o número de decimais, definir o separador para milhares (o ponto) ou usar notações científicas. Isso pode ser feito da seguinte maneira:

Definição do Número de Decimais a Serem Exibidos

Em uma string formatada, você define a precisão ou o número de decimais a serem exibidos colocando :.2f após o nome da variável (alterando 2 para o valor desejado).

Isso exibirá o seguinte:


carros = 3
pessoas = 8

pessoas_por_carro = pessoas / carros

# Arredonde para 1 casa decimal
print(f"Há {pessoas_por_carro:.1f} pessoas em cada carro.")
# Saída: Há 2.7 pessoas em cada carro.

# Arredondar para 2 casas decimais
print(f"Há {pessoas_por_carro:.2f} pessoas em cada carro.")
# Saída: Há 2.67 pessoas em cada carro.

# Arredondar para 3 casas decimais
print(f"Há {pessoas_por_carro:.3f} pessoas em cada carro.")
# Saída: Há 2.667 pessoas em cada carro.
Notação Científica

Você pode dizer ao computador para exibir o número em notação científica ou notação "expoente" usando :.3e após sua variável. O 3 define a precisão e o e indica que você está usando a notação científica.

Isso exibirá o seguinte:


distancia = 9 * 1205 * 18

# Notação científica com 3 dígitos de precisão
print(f"A distância é: {distancia:.3e} metros.")
# Saída: A distância é: 1.952e+05 metros.

# Notação científica com 6 dígitos de precisão
print(f"A distância é: {distancia:.6e} metros.")
# Saída: A distância é: 1.952100e+05 metros.
Agrupamento de Milhares

Ao escrever números em um código, você não usa separadores de dígitos. Em outras palavras, você não escreve: 10.000.000, mas apenas 1000000. Recentemente, o Python adicionou uma notação que permite digitar usando sublinhados como 10_000_000 ou vírgulas como 10,000,000.

De qualquer forma, quando você deseja exibir números grandes para o usuário, você pode exibi-los com vírgulas ou sublinhados. Isso é feito usando :, ou :_ após o nome da variável.

Isso exibirá o seguinte:


numero_grande = 123456789

# Exibição sem formatação:
print(f"O número é: {numero_grande}")
# Saída: O número é: 123456789

# Exibição com formatação ",":
print(f"O número é: {numero_grande:,}")
# Saída: O número é: 123,456,789

# Exibição com formatação "_":
print(f"O número é: {numero_grande:_}")
# Saída: O número é: 123_456_789

Usando a Biblioteca Math

Uma das coisas que torna possível escrever programas grandes e complexos é utilizar códigos preexistentes escritos por outras pessoas. Quando alguém agrupa partes de seu código para disponibilizá-lo a outras pessoas, esse código pode ser chamado de biblioteca. Em cursos futuros, você aprenderá sobre isso com muito mais detalhes, inclusive como criar suas próprias bibliotecas.

O Python vem com muitas bibliotecas integradas. Uma delas é chamada de biblioteca de matemática ("math"), que contém funções e operações matemáticas comuns. Para usar o código desta biblioteca em seu programa, você precisará inclui-la fazendo uma importação. Você faz isso colocando o código import math no começo do seu programa. Por exemplo, se você quiser usar o valor de Pi incluído na biblioteca matemática, faça o seguinte:


import math

raio = 5
area = math.pi * (raio ** 2)
print(f"A área é: {area}")
# Saída: A área é: 78.53981633974483

Como você pode esperar, há muitas coisas disponíveis na biblioteca math. Você pode ver a lista de Funções Matemáticas na documentação oficial. Se você é um cientista ou engenheiro, vai querer se familiarizar com muitas dessas funções. Algumas funções que podem ser do seu interesse:

Um exemplo:


import math

peso = 1.65

para_baixo = math.floor(peso)
print(para_baixo)
# Saída: 1

para_cima = math.ceil(peso)
print(para_cima)
# Saída: 2

Bom Estilo

Por fim, temos uma observação sobre a adoção de um bom estilo. Sempre que você escreve um programa, precisa estar ciente de que possivelmente seu programa precisará ser compreendido, reutilizado ou modificado por outras pessoas no futuro. Ele pode ser utilizado por outros membros do seu grupo, equipe, futuros funcionários da empresa, ou por você mesmo caso precise retornar ao seu programa depois de alguns meses, tentando lembrar do que fez.

Além disso, escrever código claro e bem formatado ajudará você a evitar bugs e problemas em seus programas enquanto os escreve.

Por esses motivos, é importante seguir as boas práticas de nomeação de variáveis ​​e formatação de seu código. A maioria das empresas tem um guia de estilo rigoroso para os códigos escritos. Mas, de qualquer forma, é importante escrever um código claro e consistente.

Você continuará aprendendo mais sobre estilo neste e em cursos futuros. Mas, quanto a essa questão, temos algumas orientações a serem lembradas:

Localização e Sistema Numérico Internacional

Existem muitos sistemas numéricos diferentes ao redor do mundo que utilizam pontos e vírgulas de forma ligeiramente diferente. Independentemente do país onde você vive, você foi introduzido ao sistema numérico em inglês no curso Pathway PC 101. Você notará que o Python usa esse mesmo sistema de numeração por padrão. Como essa notação é amplamente utilizada na maioria das linguagens de programação, é importante se familiarizar com ela, mesmo que não seja o sistema utilizado em sua língua nativa.

Independentemente da sua origem, pode haver momentos em que você precisará apresentar os resultados do seu programa em um formato cultural diferente daquele que ele produz naturalmente. Nesses casos, é importante saber como ajustar a saída para que os usuários possam interpretá-la facilmente em sua própria língua.

Este é um exemplo de como converter moeda para uma cultura específica:


# 1. Importe a biblioteca locale
import locale

# 2. Aqui você tem o valor que deseja formatar (você pode colocar qualquer valor)
moeda_valor = 1245.60

# 3. Esta parte é específica da cultura que você quer ter como saída
# Neste caso as variáveis estão configuradas para a cultura do Brasil
moeda_simbolo = "R$"
moeda_cultura = "pt_BR.UTF-8"

# 4. Configure os parâmetros de localização e converta o valor 
locale.setlocale(locale.LC_ALL, moeda_cultura)
moeda_formatada = locale.currency(moeda_valor, grouping=True, symbol=moeda_simbolo)

# 5. Opcionalmente, imprima para verificar os resultados
print(moeda_formatada)

# Você pode configurar para obter os resultados em qualquer cultura que deseje 
# Como para a Espanha que usa Euros
moeda_simbolo = "€"
moeda_cultura = "es_ES.UTF-8"

# Ou Ghana que usa Ghanaian Cedi e muitas outras
moeda_simbolo = "GHS"
moeda_cultura = "en_GH.UTF-8"
  

Você pode seguir um procedimento semelhante ao trabalhar com valores de data e hora. Aqui está um exemplo.


# 1. Importe a biblioteca datetime
from datetime import datetime

# 2. Aqui você tem os valores que deseja formatar (você pode colocar qualquer um)
data_hora = datetime.now()

# 3. Esta parte é específica da cultura que você quer ter como saída
# Você pode fazer uma pesquisa sobre padrões de datas e horas e convenções
# Esse formato é o usado na Europa:
formato_data_hora = "%d/%m/%Y %H:%M"

# 4. Converta e obtenha o valor
data_hora_formatada = data_hora.strftime(formato_data_hora)

# 5. Opcionalmente imprima para verificar o resultado
print(data_hora_formatada)

Você pode explorar diferentes culturas para ver os resultados e pesquisar online para descobrir algumas das outras opções que o Python oferece.

Instruções da Atividade

Pratique a resolução de problemas com variáveis ​​e expressões e a exibição dos resultados.

O problema: Conversão de diferentes tipos de unidades

A temperatura, como muitos outros valores, pode ser medida em diferentes tipos de unidades. Nesse caso, você pode medir o valor dos graus em Fahrenheit, Celsius ou Kelvin. A conversão de uma escala para outra usa o mesmo cálculo repetidamente para diferentes valores de entrada.

Situações como essa são o caso perfeito para um programa que pode ser criado para realizar as etapas do cálculo.

Tarefa

Escreva um programa para converter valores de Fahrenheit para Celsius. Exiba o resultado com uma casa decimal de precisão.

Para converter graus Fahrenheit em Celsius, você precisa subtrair 32 do valor Fahrenheit e multiplicá-lo pela fração 5/9.

Veja abaixo um exemplo do programa executado:


Qual é a temperatura em Fahrenheit? 81
A temperatura em Celsius é de 27.2 graus.

Outro exemplo:


Qual é a temperatura em Fahrenheit? 12
A temperatura em Celsius é -11.1 graus.

Exemplo de Solução

Quando terminar seu programa, por favor, consulte o exemplo de solução para comparar sua abordagem com a apresentada.

Primeiro, trabalhe para concluir o programa sem consultar o exemplo de solução. Caso tenha trabalhado por um longo tempo e ainda enfrente dificuldades, sinta-se à vontade para usar o exemplo para ajudá-lo a finalizar seu programa.

Procedimento de Teste

Verifique se seu programa funciona corretamente seguindo cada etapa deste procedimento de teste:

  1. Teste os valores nos exemplos desta página e faça com que seu programa gere os mesmos resultados.

  2. Verifique se você está exibindo o resultado com precisão de 1 ponto decimal, conforme mostrado.

  3. Tente converter 32 graus Fahrenheit (ponto de congelamento, que deve ser 0 graus Celsius) e 212 graus (ponto de ebulição, que deve ser 100 graus Celsius).

  4. Tente converter 0 e um número negativo e certifique-se de que eles saiam conforme o esperado.

  5. Verifique se você usou um bom estilo, verificando os nomes das variáveis ​​utilizadas, bem como o uso de linhas e espaços em branco para os operadores.

Envio de Tarefa

Agora você concluiu todas as atividades de aprendizagem da semana!

Lembre-se de:

Próxima Atividade

Outros Links: