Sie sind auf Seite 1von 65

IEC081

- Introduo Cincia dos Computadores


IEC037 - Introduo Programao de
Computadores

Aula 05 Vetores e Strings

2016/1
Atualizado em 27/07/2016

Contedo Vetores
2

Introduo a vetores
Inicializao de vetores
Operaes com vetores
Grcos

Contedo Strings
Introduo a strings
Operaes com strings
Funes is para strings
Converso de strings para nmeros
Alguns problemas

Contedo Vetores
4

Introduo a vetores
Inicializao de vetores
Operaes com vetores
Grcos

Vetores
5

Em muitos programas,
precisamos manipular
um grande nmero de
valores:
Folha de pagamento
Medies ao longo do

tempo

Um vetor um
conjunto de dados
organizados em
ordem sequencial.

Vetores
6

Vetores so posies da memria:


iden]cadas por um nico nome
individualizadas por ndices
com contedo de um mesmo ]po

Notas: 6.1 2.3 9.4 5.1 8.9 9.8 10 7.0 6.3 4.4
Posio:

Vetores em Python
7

Para a manipulao de vetores, u]lizamos o


mdulo (biblioteca) numpy.
from numpy import *

NumPy o pacote essencial para computao


cieneca com Python.
www.numpy.org

Funes de criao e manipulao de vetores:


docs.scipy.org/doc/numpy/reference/

Contedo Vetores
8

Introduo a vetores
Inicializao de vetores
Operaes com vetores
Grcos

Vetores em Python
:: Criao de vetor atribuio de valores
Todo vetor deve ser inicializado.
Forma geral:

<nome_vetor> = array([<valor1>, <valor2>, <valor3>,...])

Exemplos:
array1 = array([1, 2 , 3 , 4])
notas = array([10, 9.5, 5, 7.75, 10])
vazio = array([])

10

Vetores em Python
:: Inicializao de valores

Duas (entre vrias) maneiras de atribuir valores


iniciais aos elementos de um vetor:
Corpo do script

Teclado

from numpy import *


v = array(eval(input("v: ")))
print(v)

from numpy import *


v = array([11, 22, 33])
print(v)
Na entrada, separe os
elementos com vrgula

[11 22 33]

v: [11,22,33]
[11 22 33]

11

Vetores em Python
:: Inicializao de valores
Iniciando vetor com 0s

Iniciando vetor com 1s

from numpy import *


v1 = array(zeros(5, dtype =
int))
print(v1)

from numpy import *


v2 = array(ones(4, dtype =
int))
print(v2)

Quan]dade de elementos
no vetor

[0 0 0 0 0]

[1 1 1 1]

12

Vetores em Python
:: Inicializao de valores

Podemos iniciar um vetor com valores


pertencentes a um intervalo:

vetor = array(linspace(11, 20, 10, dtype = int))


ndices:

...

vetor

11

12

13

14

15

...

20

ndice do primeiro elemento: 0


ndice do l]mo elemento: 9
Quan]dade de elementos: 10

13

Vetores em Python
:: Inicializao de valores

Exemplos:
Colocar os nmeros de 10 a 15 em um vetor:

vetor = array(linspace(10, 15, 6, dtype = int))


Colocar os nmeros de 5 a 1 em um vetor:

vetor = array(linspace(5, 1, 5, dtype = int))


Cinco valores linearmente espaados entre 3 e 15:

vetor = array(linspace(3, 15, 5, dtype = int))

14

Vetores em Python
:: ndices
ndices fora dos limites causam erro.
ndices podem ser nega]vos, permi]ndo o acesso na
ordem inversa.
0
1
2
3
4
5

3 6 9 12 15 18

-6

-5

-4

-3

-2

-1

vetor
vetor = array([3, 6, 9, 12, 15, 18])
vetor[0]
# O primeiro elemento da lista: 3
vetor[-1]
# O ultimo elemento da lista: 18
vetor[6]
# ERRO

Contedo Vetores
15

Introduo a vetores
Inicializao de vetores
Operaes com vetores
Grcos

16

Operaes com Vetores


:: Mnimo, Mximo, Tamanho, Soma

Encontrar o menor elemento de um vetor:


min(vetor)

Encontrar o maior elemento de um vetor:


max(vetor)

Encontrar o tamanho de um vetor:


size(vetor)

Encontrar a soma dos elementos de um vetor:


sum(vetor)

17

Operaes com Vetores


:: Selecionando parte de um vetor
Cdigo
vec[i]

Obje>vo
Seleciona o elemento de ndice i do
vetor vec

vec[i:j]

Seleciona os elementos do vetor vec


cujos ndices esto compreendidos
entre i e j-1

vec[i:]

Seleciona os elementos do vetor vec


do ndice i at o nal do vetor.

18

Operaes com Vetores


:: Busca

Problema de busca
Dado um vetor v, e um valor x, encontrar um ndice k

tal que v[k] == x.


0
456
x

n-1

222 555 111 333 111


v
achou = -1
i = 0
while (i < size(v)):
if (v[i] == x):
achou = i
i = i + 1

...

777

19

Operaes com Vetores


:: Busca

from numpy import *


#
v
#
x

Leitura do vetor
= array(eval(input("Informe o vetor: ")))
Leitura do valor buscado
= int(input("Informe o valor a ser encontrado: "))

i = 0
achou = -1

# indica que elemento no foi encontrado

while (i < size(v)):


if (v[i] == x):
achou = i
i = i + 1
if (achou == -1):
print("O valor no foi encontrado no vetor")
else:
print("O valor foi encontrado na posicao", achou)

20

Operaes com Vetores


:: Mdia

Calcular a mdia dos elementos de um vetor.


(0) (1) (2) (3)

(0) (1) (2) (3)

soma = 0
i = 0

soma = 8
i = 1
(0) (1) (2) (3)
8

soma = 12
i = 2

...

(0) (1) (2) (3)


8

media = soma/i

soma = 20
i = 4

21

Operaes com Vetores


:: Mdia
from numpy import *
# Leitura do vetor
v = array(eval(input("Informe o vetor: ")))
i = 0
soma = 0

# variavel contadora
# variavel acumuladora

while (i < size(v)):


soma = soma + v[i]
i = i + 1
print("A media :", round(soma/size(v)),2)

Exemplos
:: Mdia ponderada

O coeciente de
rendimento (CR) dado
pela mdia ponderada
entre as notas de cada
disciplina e seus
respec]vos nmeros de
crditos.
Escreva um script que leia
as notas de um aluno e os
crditos das disciplinas
cursadas, armazenando
em vetores dis]ntos
Ao nal, exiba o CR do
aluno na tela.

Exemplo
Denir entradas e sadas

Entradas
Sadas

Grandeza

Unidade de medida

Faixa de valores

Notas

---

[0, 10]

Crditos

---

[0, 10]

Coeciente

---

[0, 10]

Exemplo
Projetar algoritmo
Leitura dos vetores Notas e Creditos
Qual a condio para repe]o?

Enquanto o contador no a]ngir o nmero de notas

Posio:

Notas 6.1 2.3 9.4 5.1 8.9 9.8


Creditos

Coeciente:

3
7.09

6
10
6

7.0 6.3 4.4


2

Problema 3
Codicar em Python
from numpy import *
# Leitura do vetor notas
n = array(eval(input("Informe as notas: ")))
# Leitura do vetor creditos
c = array(eval(input("Informe os crditos: ")))
i = 0
# Variavel contadora
soma_acum = 0 # Variavel acumuladora soma das notas
soma_cred = 0
# Variavel acumuladora dos creditos
while (i < size(n)):
soma_acum = soma_acum + n[i] * c[i]
soma_cred = soma_cred + c[i]
i = i + 1
coeficiente = soma_acum/soma_cred
print(round(coeficiente, 3))

Contedo Vetores
26

Introduo a vetores
Inicializao de vetores
Operaes com vetores
Grcos

Grcos em Python
27

Para gerar grcos, u]lize o mdulo (biblioteca)


matplotlib.pyplot
from matplotlib.pyplot import *

O matplotlib.pyplot uma coleo de


funes que fazem o matplotlib funcionar
como o MATLAB.
Mais informaes:

matplotlib.org/api/pyplot_api.html
matplotlib.org/users/pyplot_tutorial.html

Grcos em Python
28

O CodeBench (ainda) no trabalha com grcos.

Exemplo de Grco
29

Desenhar o grco da funo y = x2 10x + 15 para


valores de x entre 0 e 10.
1. Denir um polinmio a par]r do vetor de
coecientes.
2. Criar um vetor de valores de x entre 0 e 10.
3. Calcular o valor do polinmio em cada ponto x.
4. Desenhar o grco.

Exemplo de Grco
30

from numpy import *


from matplotlib.pyplot import *
# Cria polinomio a partir do vetor de coeficientes
poli = poly1d([1,-10,15])
# Cria um vetor de 10 valores para x
x = array(linspace(0, 10, 10))
# Calcula o valor do polinmio para o vetor x
y = polyval(poli, x)
# Abre uma figura
figure()

Exemplo de Grco (con]nuao)


31

# Plota o polinomio V(x) em funcao de x


plot(x, y)
# Especifica os limites do eixo Y exibidos na tela
ylim(-10,15)
# Poe um nome no eixo X
xlabel("x", fontsize='large')
# Poe um nome no eixo Y
ylabel("y", fontsize='large')
# Exibe linhas de grade
grid(True)

Grcos em Python
32

Grcos em Python
33

Funo
poly1d(vet)

Obje>vo
Dene um polinmio a par]r de um
vetor vet contendo seus coecientes

roots(p)

Determina as razes de um polinmio p.


A sada desta funo tambm um
vetor.

polyval(p, x)

Calcula o valor de um polinmio p no


ponto x.

polyder(p)

Determina a 1 derivada de um
polinmio p.

Grcos em Python
34

Grcos podem ser salvos como gura


Podem ser adicionados:

Linhas de grade
Ttulo do grco
Rtulos para os eixos
etc.

title("Plot de x^2 - 10*x + 15")


xlabel("eixo x")
ylabel("eixo y")
grid(True)
savefig("polinomio.png")

Contedo Strings
Introduo a strings
Operaes com strings
Funes is para strings
Converso de strings para nmeros
Alguns problemas

Strings de caracteres
Uma string (= corda) uma cadeia de caracteres.
Uma cadeia de caracteres uma sequncia de
smbolos, tais como letras, nmeros, sinais de
pontuao, etc., que formam textos em geral.

m o
A

n

o
h

t
y

P

Strings de caracteres

O incio e o m de uma string so indicados por


aspas duplas (") ou aspas simples ('), de modo a
separar o contedo da string do restante do texto
do programa.
texto = "Amo o Python"
texto = 'Amo o Python'

Voc pode usar espaos em uma string de


caracteres.

Strings de caracteres

Se voc quiser incluir o smbolo de aspas em uma


string, use a expresso \".
texto2 = "Amo o \"Python\"."
print(texto2)

Amo o "Python".

Strings de caracteres
Os caracteres de uma string so codicados no
padro ASCII.
Cada caractere do teclado representado por um
cdigo numrico.

ord()

Mostra cdigo ASCII do


caractere informado

chr()

Mostra caractere ASCII


correspondente ao cdigo
informado

Tabela ASCII
0

nul

soh

stx

etx

eot

enq

ack

bel

bs

ht

nl

vt

ff

cr

so

si

dle

dc1

dc2

dc3

dc4

nak

syn

etb

cam

em

sub

esc

fs

gs

rs

us

sp

"

&

<

>

10

11

12

del

Acesso a caracteres
Strings so indexadas.
O primeiro caractere da string indexado por 0.

str1

str1 = 'Python'
print(str1[0])
print(str1[5])
print(str1[6])

No use str como iden]cador,


pois palavra reservada

# primeiro caractere: 'P'


# ultimo caractere: 'n'
# ERRO

Acesso a caracteres

ndices tambm podem ser nmeros nega]vos


0

-6

-5

-4

-3

-2

-1

str1

print(str1[-1])
print(str1[-2])
print(str1[-6])
print(str1[-7])

#
#
#
#

ultimo caractere: 'n'


penultimo caractere: 'o'
primeiro caractere : 'P'
ERRO

Acesso a partes da string


0

-6

-5

-4

-3

-2

-1

str1
# caractere da posicao 0 a 1: 'Py'
print(str1[0:2])
# caractere da posicao inicial ateh 1:'Py'
print(str1[:2])
# caractere da posicao 2 a 5: 'thon'
print(str1[2:6])
# caractere da posicao 2 ateh o final: 'thon'
print(str1[2:])

Contedo Strings
Introduo a strings
Operaes com strings
Funes is para strings
Converso de strings para nmeros
Alguns problemas

Operaes com strings


:: Tamanho, Primeiro, l]mo

Quan]dade de caracteres da string


len(string)

Primeiro caractere da string


string[0]

l]mo caractere da string


string[-1]

Operaes com strings


:: Converso maisculas/minsculas

As funes upper e lower convertem todos os


caracteres alfab]cos de uma string em letras
maisculas ou minsculas, respec]vamente.

str1 = 'Isto eh um teste!'


print(str1.upper())
print(str1.lower())

# ISSO EH UM TESTE!
# isso eh um teste!

Operaes com strings


:: Concatenao de strings

Para a concatenao de duas ou mais strings, u]lize


o operador +.

primeira = 'Auto'
ultima = 'escola'
print(primeira + ultima)
print(primeira + ' ' + ultima)

# 'Autoescola'
# 'Auto escola'

Operaes com strings


:: Cpias repe]das de strings

Caso queira concatenar cpias repe]das de strings,


u]lize o operador *.

str1 = 'UFAM'
print(str1 * 3)
# 'UFAMUFAMUFAM
print((str1 + ' ') * 3) # 'UFAM UFAM UFAM '
print(3 * str1)
# 'UFAMUFAMUFAM'
print(3 * (str1 + ' ')) # 'UFAM UFAM UFAM '

Operaes com strings


:: Separao de strings

A funo split retorna os caracteres antes da


primeira ocorrncia de um caractere separador em
uma string de entrada.
O caractere separador padro o espao em
branco.

str1 = 'Fulano de Tal


print(str1.split())
# ['Fulano', 'de', 'Tal']
print(str1.split(' ')) # ['Fulano', 'de', 'Tal']
print(str1.split(',')) # ['Fulano de Tal']
print('1,2,3'.split(',')) # ['1', '2', '3']

Operaes com strings


:: Busca de strings

A funo find retorna o menor ndice da ocorrncia


da string2 na string1.
str1 = 'Fulano de Tal'
str2 = 'de
print(str1.find(str2))

# 7

Para checar se a string2 est na string1, u]lize o


operador in.
print('de' in 'Fulano de Tal)

# True

Operaes com strings


:: Busca de strings

A funo find suporta duas opes adicionais: incio


(start) e m (start).
str1 = 'um tigre, dois tigres, tres tigres'
print(str1.find ('tigres', 7)) # 15
incio = 7

print(str1.find ('tigres', 0, 10)) # -1


incio = 7 m=10

#string no encontrada

Operaes com strings


:: Subs]tuio de strings

A funo replace realiza uma operao padro


de localizar e subs]tuir.
Retorna uma cpia da string1 com todas as
ocorrncias da string2 subs]tudas pela string3.

str1 = 'Na minha famlia h vrios mdicos. Meu


av, meu pai, minha me e eu somos mdicos.'
str2 = 'mdicos
str3 = 'engenheiros'
print(str1.replace(str2,str3))
Na minha famlia h vrios engenheiros. Meu
av, meu pai, minha me e eu somos engenheiros.

Contedo Strings
Introduo a strings
Operaes com strings
Funes is para strings
Converso de strings para nmeros
Alguns problemas

Testes Lgicos sobre Strings


O Python oferece diversas funes cujo nome
comea com is.
Elas retornam um dos seguintes valores lgicos:

True Verdadeiro
False Falso

Testes Lgicos sobre Strings


:: Exemplos de funes
Funo isalpha()
Verica se todos os caracteres na string so letras
do alfabeto.
Funo isnumeric()
Verica se todos os caracteres na string so
numricos.
Funo isalnum()
Verica se todos os caracteres na string so
alfanumricos.

Testes Lgicos sobre Strings


:: Exemplos de funes
str1 = 'Fulano'
str2 = '123'
str3 = str1 + str2
print(str1.isalpha())
print(str3.isalpha())

# True
# False

print(str2.isnumeric()) # True
print(str3.isnumeric()) # False
print(str1.isalnum())
print(str2.isalnum())
print(str3.isalnum())

# True
# True
# True

Testes Lgicos sobre Strings


:: Exemplos de funes

Funo islower()
Verica se todos os caracteres na string so minsculos.

Funo isupper()
Verica se todos os caracteres na string so maisculos.

str1 = 'fulano'
str2 = 'FULANO'
str3 = 'Fulano'
print(str1.islower())
print(str3.islower())
print(str2.isupper())
print(str3.isupper())

#
#
#
#

True
False
True
False

Contedo Strings
Introduo a strings
Operaes com strings
Funes "Is" para strings
Converso de strings para nmeros
Alguns problemas

Converso de strings para nmeros

str()

Converte nmeros em strings

int()

Converte strings em nmeros


inteiros

float()

Converte strings em nmeros


reais

Converso de strings para nmeros


str1 = '123'
num1 = 123
print(str(num1))
print(int(str1))
print(float(str1))

# 123
# 123
# 123.0

print(int(str1) + num1)
print(float(str1) + num1)
print(str(num1) + str1 )

# 246
# 246.0
# 123123

print(str1 + num1 )

# ERRO

Contedo Strings
Introduo a strings
Operaes com strings
Funes "Is" para strings
Converso de strings para nmeros
Alguns problemas

Problema 1
:: Separao de string

Elabore um script que leia o nome completo de


uma pessoa e imprima o prenome e o sobrenome.

Separao de string
:: Script em Python
# Leitura do nome
nome = input("Informe o nome: ").split(' ')
# Imprime prenome
print('Prenome:', nome[0])
# Imprime primeiro sobrenome
print('Sobrenome:', nome[1])
# Imprime lista de sobrenomes
print('Sobrenome:', nome[1:])
# Imprime ultimo sobrenome
print('Sobrenome:', nome[-1])

Referncias bibliogrcas
64

Menezes, Nilo Ney Cou]nho (2010). Introduo


Programao com Python. Editora Novatec.
Hetland, Magnus Lie (2008). Beginning Python:
From Novice to Professional. Springer eBooks, 2
edio. Disponvel em: h~p://dx.doi.org/
10.1007/978-1-4302-0634-7.
Horstmann, Cay & Necaise, Rance D. (2013).
Python for Everyone. John Wiley & Sons.

65

Dvidas?

Das könnte Ihnen auch gefallen