ficha 2 - Departamento de Física da Universidade de Coimbra

Propaganda
Computadores e Programação
Engª Biomédica
Departamento de Física
Faculdade de Ciências e Tecnologia da Universidade de Coimbra
Ano Lectivo 2005/2006
FICHA 2
CONCEITOS BÁSICOS DE PROGRAMAÇÃO PYTHON
2.1. Objectivos
Objectivos que o aluno deve atingir com esta ficha:
- Compreender o conceito de variável;
- Compreender os vários tipos de dados;
- Operar e manipular diferentes tipos de dados.
2.2. Variáveis
O conceito de variável existe em Python, como em todas as linguagens de
programação. Por definição, uma variável representa uma relação unívoca entre
um valor numérico e um nome, valor esse que poderá ser acedido e alterado a
qualquer instante, dependendo da execução do programa. Em Python o nome de
uma variável pode ser composto por letras maiúsculas, minúsculas, dígitos e pelo
caracter “_”.
2.3 Tipos de dados
A linguagem de programação Python suporta vários tipos de dados primitivos
(iremos mais tarde estudar outros tipos de dados criados pelo próprio utilizador):
- Números inteiros (em bases decimal, octal ou hexadecimal);
- Números de vírgula flutuante (reais);
- Números complexos;
- Cadeias de caracteres (em inglês designadas por strings).
Computadores e Programação – Engª Biomédica 2005/06 – Ficha 2
Página 1 de 9
Também suporta de raiz tipos de dados compostos (não primitivos), como é o caso
de:
- Listas;
- Tuplas;
- Dicionários.
Um número decimal é representado por uma sequência de algarismos entre ‘0’
(zero) e ‘9’ (nove). Um número decimal não deverá começar nunca por ‘0’:
>>> x = 40
>>> x
40
No caso de se pretender lidar com números octais (base 8), estes deverão ser
representados por uma sequência de algarismos de ‘0’ (zero) a ‘7’ (sete) e ser
sempre precedidos por ‘0’ (zero) para identificação da base, como se demonstra
no exemplo seguinte, onde o número ‘010’ representado em base octal equivale a
‘8’ em base decimal:
>>> y = 010
>>> y
8
Finalmente, e para o caso dos números hexadecimais (de base 16), temos
sequências de ‘0’ (zero) até ‘9’, ‘A’, ‘B’, ‘C’, ’D’, ’E’ e ’F’. Devem ser precedidas pelo
prefixo ‘0x’ ou ‘0X’ para que o intérprete as identifique na base correcta.
>>> 0xf
15
>>> 0x10
16
Computadores e Programação – Engª Biomédica 2005/06 – Ficha 2
Página 2 de 9
2.3.1 Números inteiros
Um número inteiro pode ser representado em qualquer uma das bases referidas
anteriormente e, dependendo da arquitectura do computador e do sistema
operativo, poderá tomar valores entre -231 e +231-1.
2.3.2 Números de vírgula flutuante
Números de vírgula flutuante representam números reais e possuem, portanto,
parte inteira e parte fraccionária. Podem ser representados na notação decimal
normal ou em notação científica:
>>> 0.002
0.002
>>> 2e-3
0.002
2.3.3 Números complexos
Os números complexos são representados da forma x + yj, ou seja:
>>> 3+7j
(3+7j)
>>> complex(3,7)
(3+7j)
Há em Python formas directas de extrair a parte real ou imaginária de um
número complexo. Do mesmo modo, é possível obter directamente o seu valor
absoluto através da função abs():
>>> z=4+3j
>>> z.real
4.0
>>> z.imag
3.0
>>> abs(z)
5.0
Sempre que se pretender verificar o tipo de variável, pode-se usar o comando
type() da forma que se descreve:
Computadores e Programação – Engª Biomédica 2005/06 – Ficha 2
Página 3 de 9
>>> type(z)
<type 'complex'>
Obtém-se, portanto, a indicação de que se trata de um número complexo.
2.3.4 Cadeias de caracteres
Cadeias de caracteres ou strings são sequências de zero ou mais caracteres. Em
Python essas sequências são delimitadas por dois tipos possíveis de caracteres
especiais: plicas (‘ ’) ou aspas (“ ”):
>>> "ola"
'ola'
>>> 'ola'
'ola'
No caso de se pretender usar plicas (‘ ’) ou aspas (“ ”) dentro da própria string,
deverá proceder-se da seguinte forma: se o caracter que pertence à string é
diferente do caracter de delimitação, não é necessário fazer nada. Em caso
contrário, esse caracter deverá ser precedido por uma barra (\). Veja-se o
exemplo:
>>> "bons dias"
'bons dias'
>>> "bons d"ias"
SyntaxError: invalid syntax
>>> "bons d\"ias"
'bons d"ias'
O caracter \n é interpretado como sendo um único caracter, e é usado para
representar uma mudança de linha:
>>> print "OlaJoao"
OlaJoao
>>> print "Ola\nJoao"
Ola
Joao
Computadores e Programação – Engª Biomédica 2005/06 – Ficha 2
Página 4 de 9
É possível realizar diversas operações de manipulação de strings em Python. Uma
dessas operações é a concatenação (que consiste em encadear strings, juntando
sucessivamente umas no final de outras) que se realiza através da operação +
>>> sequencia = "frase de teste"
>>> print "Apresento uma "+sequencia+" concatenada!"
Apresento uma frase de teste concatenada!
>>>
Outro tipo de operação realizável em strings consiste na sua repetição através do
operador *
>>> print "bla "*17
bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
>>>
2.3.5 Listas
As listas definem uma estrutura de dados que agrupa um conjunto de
elementos de qualquer tipo, podendo esses elementos, por sua vez, ser também
listas:
>>> List=[12.0, 3, 'Pascal', -7, 440, [23, 'bio', 'a']]
>>> List
[12.0, 3, 'Pascal', -7, 440, [23, 'bio', 'a']]
A função len() permite obter o número total de elementos que formam uma lista:
>>> len(List)
6
>>>
É possível aplicar a listas, operações (concatenação, repetição, etc.) que também
se aplicam a strings:
>>> 2*List
[12.0, 3, 'Pascal', -7, 440, [23, 'bio', 'a'], 12.0, 3, 'Pascal', -7,
440, [23, 'bio', 'a']]
>>>
Computadores e Programação – Engª Biomédica 2005/06 – Ficha 2
Página 5 de 9
Adicionalmente, a linguagem Python permite alterar elementos ou sub-blocos de
uma determinada lista. Essa alteração faz-se acedendo ao item que corresponde
ao elemento que se deseja alterar:
>>> List[4:5]=['Lavoisier']
>>> List
[12.0, 3, 'Pascal', -7, 'Lavoisier', [23, 'bio', 'a']]
É possível remover um determinado elemento de uma lista (no caso de baixo
elimina-se o primeiro elemento1) acedendo-se ao item correspondente através do
comando del:
>>> del List[0]
>>> print List
[3, 'Pascal', -7, 'Lavoisier', [23, 'bio', 'a']]
Ou então remover um sub-bloco da lista (no exemplo seguinte elimina-se o
segundo e terceiro elementos), através do mesmo comando del. Note-se que o
limite superior do intervalo é não inclusivo:
>>> del List[2:4]
>>> print List
[3, 'Pascal', [23, 'bio', 'a']]
Para eliminar completamente a lista da memória usa-se:
>>> del List
>>> print List
Traceback (most recent call last):
File "<pyshell#227>", line 1, in -toplevelprint List
NameError: name 'List' is not defined
>>>
1
O primeiro elemento de uma lista é sempre representado pelo item ‘0’ (zero)
Computadores e Programação – Engª Biomédica 2005/06 – Ficha 2
Página 6 de 9
2.3.6 Dicionários
Da mesma forma que as listas, também os dicionários agrupam elementos de
tipos diferentes. A grande diferença reside no facto de, nos dicionários, cada
elemento vir associado a uma chave. Tal como num dicionário convencional, onde
primeiro se procura uma palavra para depois encontrar o seu significado, em
Python utiliza-se a chave para aceder ao elemento que lhe corresponde. A
declaração de um dicionário assemelha-se à de uma lista. Difere apenas no uso
de chavetas em vez de parêntesis rectos e na declaração de cada um dos seus
elementos separados por vírgulas, no formato ‘chave:valor’. Quer a chave, quer o
valor, podem ser de qualquer um dos tipos de dados estudados:
>>> Dic={'vasco':22, 'ana':19, 'joana':18, 'francisco':20}
>>> print Dic
{'francisco': 20, 'joana': 18, 'vasco': 22, 'ana': 19}
Para aceder a um valor de um dicionário usam-se parêntesis rectos:
>>> Dic['vasco']
22
Para adicionar novos valores à lista, usa-se notação idêntica:
>>> Dic['rita']=21
>>> print Dic
{'francisco': 20, 'joana': 18, 'vasco': 22, 'rita': 21, 'ana': 19}
2.3.7 Tuplas
Vimos que strings e listas são dois tipos de dados sequenciais. Uma tupla (no
inglês tuple) é apenas outro tipo de dados sequencial standard que consiste num
conjunto de valores separados por vírgulas:
>>> tup=1,2,3,'ola'
>>> tup[0]
1
>>> tup[3]
'ola'
Computadores e Programação – Engª Biomédica 2005/06 – Ficha 2
Página 7 de 9
Do mesmo modo que acontece com as strings, também as tuplas são imutáveis,
isto é, não é possível atribuir um valor a um item individual de uma tupla.
A declaração anterior é um exemplo de empacotamento de uma tupla. Os valores
1, 2, 3 e ‘ola’ foram empacotados juntamente numa tupla. A operação inversa
também é possível e designa-se por desempacotamento sequencial:
>>> x, y, w, z = tup
>>> print x, y, w, z
1 2 3 ola
Esta última operação requer que a lista de variáveis do lado esquerdo tenha o
mesmo número de elementos que a sequência do lado direito.
2.4 Exercícios sugeridos
1. Implemente um programa que, a partir de uma lista de 5 elementos
chamada
ListaDeOrigem
(inicializada
com
valores
aleatórios
pelo
programador), crie uma nova lista designada por ListaAoCubo, do mesmo
tamanho, cujos elementos representem os da primeira elevados ao cubo.
Grave o programa no seu directório sob o nome de prob_3_1.py
2. Elabore um programa que peça ao utilizador o seu nome, dia, mês e ano de
nascimento. De seguida, armazene cada um desses dados numa lista.
Finalmente, imprima os dados da lista no ecran. Grave o programa no seu
directório sob o nome de prob_3_2.py
3. Crie um programa que peça ao utilizador dois valores numéricos e calcule
a sua soma, diferença, produto, divisão e expoente. Deverá guardar os
resultados num dicionário chamado DicioCalculo, na forma: {‘soma’: 6,
‘subtraccao’: 2, .......}. Por fim, imprima os elementos do dicionário.
Computadores e Programação – Engª Biomédica 2005/06 – Ficha 2
Página 8 de 9
4. Implemente um programa que, pedindo a um aluno o nome das disciplinas
do 1º ano da licenciatura de Engª Biomédica e as respectivas notas
obtidas,
vá
armazenando
esses
dados
num
dicionário
chamado
DicioNotas. No caso de o aluno ainda não ter obtido aproveitamento a
uma determinada cadeira, deverá constar a nota ‘--’.
5. Escreva um programa que, em função de uma lista de números inteiros,
desenhe o diagrama de barras horizontais correspondente. Siga o exemplo
para a lista [3, 10, 7]:
***
**********
*******
Computadores e Programação – Engª Biomédica 2005/06 – Ficha 2
Página 9 de 9
Download