Introdução à programação e aos algoritmos

João Araujo Ribeiro · Capítulo 34 de 103

Páginas do PDF

Introdução à programação e aos algoritmos

2.9 Constantes

Pessoalmente, prefiro linguagens com tipos estáticos. Considero que isso torna mais seguro o

código, pois vários testes podem ser feitos antes de sua execução. Programar em Python com tipos dinâmicos exige uma maior atenção e geralmente prefiro criar outra variável com um novo tipo de variável, do que reutilizar identificadores, como visto no Programa 2.11.

2.8.1 TIPOS DEFINIDOS PELO USUÁRIO Se os tipos apresentados anteriormente não forem suficientes, o usuário pode definir seus próprios tipos de dados, usando o que chamamos de abstrações de dados, de acordo com suas necessidades. Algumas linguagens de programação vão fornecer facilidades para que o usuário defina seus próprios tipos. Por exemplo, um programador poderia definir um tipo novo que só poderia assumir os valores de cores.

Como vimos anteriormente, tudo deve ser mapeado em números binários, e o que a linguagem faz

é simplesmente permitir que o usuário defina esses tipos e as operações possíveis. Quando a linguagem não permite esse mecanismo diretamente, o próprio programador deve gerenciar a correspondência entre os tipos definidos na linguagem e o que ele criou para seu algoritmo.

Assim, o usuário pode definir o tipo cor e especificar que esse tipo pode assumir os valores

vermelho, azul ou verde. Se a linguagem não permitir que o usuário crie novos tipos, o programador poderá, por exemplo, especificar que cor é um dado inteiro e associar no seu programa que cada uma das cores possui um valor próprio numérico, convencionando que vermelho é igual a 0, azul é igual a 1 e verde é igual a 2. De toda forma, esta decisão não deve ser feita no momento da especificação do algoritmo, mas somente no momento em que o algoritmo será codificado para uma linguagem de programação. No nível de algoritmo todas as abstrações e todos os tipos definidos pelo usuário são possíveis. Algumas possibilidades de tipos definidos pelo usuário seriam: 1. Cor: vermelho azul verde

2. Dia da Semana: segunda-feira terça-feira sábado 3. Mês: Janeiro Fevereiro Dezembro

Observe que os valores não são definidos entre aspas. Caracteres entre aspas são strings e têm

outro tratamento. Assim, vermelho é diferente da string “vermelho”. No primeiro caso é um valor do tipo Cor, enquanto no segundo caso é uma string.

 

2.9 CONSTANTES

Constantes são entidades que não mudam de valor durante a execução de um algoritmo. Por exemplo, podemos definir a constante de nome PI com o valor 3,14. No algoritmo, em vez de usarmos o valor de π, usamos a constante PI. Isso torna nosso algoritmo mais legível. A vantagem de usar um nome para uma constante é que se precisarmos atualizar seu valor, por exemplo, se quisermos aumentar a precisão e usar 3,1415 como valor padrão de π, podemos simplesmente mudar seu valor no algoritmo e teremos tudo atualizado sem grande esforço.

As regras para escolhas de nomes de constantes são as mesmas que usamos para escolher o

nome de variáveis.

Dica 2.14 – Use letras maiúsculas para constantes.

Sempre que você de nir uma constante, escreva-a com todas as letras maiúsculas. Isso vai permitir que as constantes sejam

identi cadas facilmente no seu programa, embora não seja obrigatório. Você pode usar qualquer convenção para escrever o nome

de uma constante, mas, entre programadores, é comum escrever qualquer constante com letras maiúsculas.

Python não tem o recurso de de nição de constantes. Isso quer dizer que mesmo que você de na PI com o valor 3.14, nada

vai impedir que este valor seja modi cado em outra parte do programa. Isso reforça ainda mais a utilidade de nomear suas

constantes com letras maiúsculas. Se você trabalhar em uma equipe, quando receber um código feito por outra pessoa e vir

identi cadores seguindo essa convenção, vai saber de imediato que não pode modi car seu conteúdo.

Não se pode usar uma constante sem antes definir seu valor. Chamar um identificador de PI não diz

ao compilador qual é o seu valor. A não ser que seja fornecido por outro programa, você é obrigado a definir o conteúdo de cada constante.

Vamos usar algumas constantes para testar uma famosa identidade matemática, a identidade de

Euler:

 

Esta identidade relaciona 5 entidades matemáticas: a constante de Arquimedes π, que é a razão

entre o perímetro e o diâmetro de uma circunferência; e, a base do logaritmo natural; i, a unidade imaginária ( 2 i = -1); além dos números 0 e 1. A identidade é tão importante que Richard Feynman, o famoso físico, disse que era a mais bela equação da Matemática. Já apareceu diversas vezes em episódios da série dos Simpsons. No mais famoso, Homer é tragado para um mundo com 3 dimensões e em um canto deste mundo aparece a identidade. Como podemos ajudar Homer a verificar esta igualdade? Em Python isso é simples:

PI = 3.1415

E = 2.71828

I = 1j

print (“0 =”,E**(PI*I) + 1)

■ Programa 2.12: Identidade de Euler (euler.py).

Executando o programa, obtemos:

0 = (4.490366412035485e-09+9.476672816471575e-05j)

Não era exatamente o que esperávamos. Contudo, se olharmos bem, os números são bastante

pequenos, tendendo a zero. Podemos formatar a saída. Com menos casas decimais, o resultado fica mais parecido com zero. No caso, o comando format determina que o número em ponto flutuante seja impresso com duas casas decimais ({:.2f}).

PI = 3.1415

E = 2.71828

I = 1j

print (“0 = {:.2f}”.format(E**(PI*I) + 1))

■ Programa 2.13: Identidade de Euler (euler_formatado.py).

E o resultado fica:

0 = 0.00+0.00j

Se aumentarmos a precisão dos valores para PI e E, o resultado vai ficar cada vez mais perto de

zero. Normalmente, você não precisa se preocupar com esses valores. Por serem tão comuns na programação com números, existe um módulo de Python que fornece essas constantes com uma precisão bem mais significativa.