Introdução à programação e aos algoritmos
2.7 Dados
Fato 2.1 – Palavras reservadas.
Algumas palavras são reservadas por Python. Essas palavras já são usadas pela linguagem de programação, de modo que se você utilizasse alguma, iria causar confusão para o interpretador Python. São poucas, e sendo em inglês ca ainda mais improvável que
você as utilize, mas é bom estar atento. Trata-se de:
False class finally is return None continue for lambda try True def from nonlocal while and del global not with as elif if or yield assert else import pass break except in raise
2.7 DADOS
Um programa manipula dados, que fornecem informações relevantes sobre os problemas tratados por esse programa. Um dado é uma abstração lembre-se, dentro de um computador só existem zeros e uns. A linguagem define como os dados serão interpretados pelo seu programa.
Além de um identificador, um dado possui também um tipo. Quais tipos de dados um programa
pode manipular? Nesta seção apresento alguns conceitos úteis sobre os tipos de dados manipulados por um algoritmo ou programa. Vamos começar a ver também como podemos usar esses conceitos em programas reais escritos em Python.
2.7.1 DADOS NUMÉRICOS
O tipo de dados mais óbvio que é manipulado por um programa é o dado numérico. Porém, mesmo entre os dados numéricos temos diferentes famílias. Números podem ser inteiros ou reais. Entre os números reais, a forma de representá-los também varia entre a notação de ponto flutuante e a
notação científica. A Tabela 2.3 resume os tipos de dados numéricos que podemos manipular em um programa.
Tabela 2.3 Tipos numéricos
Tipo Exemplo
Inteiros 6 7 –5
Real Ponto Flutuante 5.3 6.00 3.4 –41.2
Real Notação Cientí ca 12 0.24 × 10
Python define os tipos numéricos inteiro, ponto flutuante e complexo. Tipos booleanos, ou seja,
aqueles que só podem ter valores true (verdadeiro) ou false (falso) são considerados subtipos de inteiros.
Voltando ao programa que calcula a área de um triângulo, temos várias maneiras possíveis de
executar esta tarefa. Podemos aplicar a fórmula da Seção 2.4 diretamente e imprimi-la. Vamos dar a este programa o nome de area_triangulo_v1.py. Note que você deve especificar que este arquivo tem uma extensão “.py”, indicando que é um programa escrito em Python. Também o nome escolhido indica o que o programa faz, isso não é obrigatório, mas ajuda para saber qual a finalidade do programa, mesmo sem ver o seu conteúdo. Finalmente, usei “v1” para lembrar que é minha primeira versão do programa.
print ((5*6)/2)
■ Programa 2.3: area_triangulo_v1.py.
Os parênteses indicam que a multiplicação é realizada antes da divisão, ou seja, indicam uma prioridade de execução. No caso em questão, os parênteses não são necessários, pois não importa a ordem na qual as operações são realizadas, mas, em outras situações, os parênteses servem para determinar a ordem em que as operações de uma expressão serão executadas. O resultado da execução é o que esperamos:
$ python3 area_triangulo_v1.py
15.0
■ Programa 2.3a: Execução de area_triangulo_v1.py.
Convenhamos: esta versão é péssima. Calcula a área de um triângulo cujas base e altura são 5 e 6 e só. Podemos melhorar este programa criando uma variável para a área. Em nossa segunda versão vamos também escrever uma mensagem antes de imprimir o valor do cálculo:
area_triang = (5*6)/2
print (‘A área do triângulo é ‘, area_triang)
■ Programa 2.4: area_triangulo_v2.py
Em Python podemos especificar textos entre aspas simples ou duplas. O mesmo efeito seria obtido com “A área do triângulo é “. O resultado obtido:
$ python3 area_triangulo_v2.py
A área do triângulo é 15.0
■ Programa 2.4a: Execução de area_triangulo_v2.py.
Melhorou, mas pode ficar ainda melhor. Vamos criar identificadores para tudo que possa variar, pois, se quisermos mudar os valores da base ou da altura do triângulo, vai ser muito mais simples.
base = 5
altura = 6
area_triang = (base*altura)/2
print (‘A área do triângulo com base’, base,
‘e altura’,altura, ‘é’, area_triang)
■ Programa 2.5: Execução de area_triangulo_v3.py.
E resultado:
$ python3 area_triangulo_v3.py
A área do triângulo com base 5 e altura 6 é 15.0
■ Programa 2.5a: Execução de area_triangulo_v3.py.
Repare como a linha impressa foi quebrada em duas linhas no programa fonte. Repare também que o resultado foi impresso como um número real e não inteiro. A operação de divisão resultou em um valor de ponto flutuante. Python identifica corretamente que, apesar de os operandos serem inteiros, o resultado deve ser dado com ponto flutuante. Se quisermos uma resposta somente com inteiros, teríamos de usar a operação // que indica uma divisão inteira.
As operações com números em Python estão apresentadas na Tabela 2.4. As 4 operações básicas
não precisam de explicação. A divisão inteira dá apenas resultados inteiros. A operação de resto, indicada por %, fornece o resto da divisão inteira e a exponenciação, na forma x**y, fornece o resultado de xy.
Tabela 2.4 Operações numéricas básicas
Operação Símbolo Exemplo Resultado
adição + 3 + 2 5
subtração – 3 – 2 1
multiplicação * 3 * 2 6
divisão / 3 / 2 1,5
divisão inteira // 3 // 2 1
exponenciação ** 3 ** 2 9
resto % 3 % 2 1
Dica 2.10 – Cuidado com a divisão inteira de números negativos.
Qual o valor de x depois de executada a expressão
x = -3 // 2 ?
Você sabe que 3 // 2 tem resultado 1, ou seja, é o resultado inteiro da divisão, ignorando as casas decimais. Se você
responder rapidamente, pode pensar que o resultado da expressão com número negativo seria -1. Esta resposta estaria certa em
muitas linguagens de programação, notadamente C, mas não é isso o que acontece em Python. Enquanto a maioria das