Buscar

Revisao Geral Comp1 ufrj leonardo

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 59 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 59 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 59 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Computação 1
Revisão Geral
professor: Leonardo Carvalho
O que vimos no 
curso?
2
Escrever uma 
palavra 
exatamente 
1687 vezes
3
>>>1687*'rapadura '
4
Desenhos muito loucos
5
Desenhos muito loucos
Códigos mind-blowing
def multiplica_matrizes(A, B):
'''Multiplica duas matrizes.'''
n = len(A)
m = len(A[0])
p = len(B[0])
C = []
for i in range(n):
linha = []
for j in range(p):
s = 0
for k in range(m):
s += A[i][k]*B[k][j]
linha.append(s)
C.append(linha)
return C 6
Tipos de dados
7
Tipos de dados
Numéricos: int, float, long, complex
Lógico: bool
Texto: str, unicode
Coleções: tuple, list, set, dict
8
Variáveis
Atribuição:
variáveis = valores
>>> a = 12.0284795
>>> b = 9
>>> c, d = 3*a, a-b
>>> a += 10
>>> b -= c/d**2
9
Operações
Em tipos numéricos (int, long, float, complex): 
Somar: +
Subtrair: -
Multiplicar: *
Dividir: / //
Potência: **
Resto: %
Comparações: == != < <= > >=
10
Operações
No tipo bool:
and
or
not
comparação: ==, !=
11
Operações
Em sequências (tuple, list, str): 
indexação, fatiamento, concatenação, multiplicação por int, len, index, count, 
operador in, comparações (==, !=, <, >, <=, >=)
Em strings:
find, upper, lower, replace, split, partition
Em listas: 
append, extend, insert, remove, del, pop
12
Operações
Em conjuntos:
add
remove, discard, pop
union, |
intersection, &
difference, -
issubset, <, <=
issuperset, >, >=
in, not in, clear, 
13
Conjuntos
14
>>> A = {3, 8, 9, 3, 1, 2, 8}
>>> B = {9, 5, 2, 6, 3}
>>> A&B
set([9, 2, 3])
>>> A|B
set([1, 2, 3, 5, 6, 8, 9])
>>> A-B
set([8, 1])
>>> {8, 9} <= A
True
>>> {1, 2, 3, 4, 5, 6, 7, 8, 9} > B
True
Operações
Em dicionários:
acesso a um item: D[chave]
lista de chaves: D.keys()
lista de valores: D.values()
lista de itens: D.items()
pertinência: chave in D
apagar dados: del D[chave], D.clear()
15
Dicionários
16
>>> A = {'bolota': 12, 3: 10, 5: 'chimichanga'}
>>> A
{'bolota': 12, 3: 10, 5: 'chimichanga'}
>>> A['bolota']
12
>>> A[100] = 0
>>> A
{'bolota': 12, 3: 10, 100: 0, 5: 'chimichanga'}
Estruturas de 
repetição
17
for x in iterável:
 ...#Faz algo com x
18
Tipos iteráveis
Tuplas:
for x in (4, 1, 5, 'batata', 5.8):
print x
19
4
1
5
batata
5.8
Tipos iteráveis
Listas:
for x in ['tututu', 93, 20, 10, 'uia']:
print x
20
tututu
93
20
10
uia
Tipos iteráveis
Strings:
for x in 'Bob Esponja':
print x
21
B
o
b
 
E
s
p
o
n
j
a
Tipos iteráveis
Conjuntos:
for x in {10, 30, 20, 'casa', 'casa', 'boca'}:
print x
22
20
10
casa
boca
30
Tipos iteráveis
Dicionários:
for x in {10:'a', 4:12, 5:20, 'agua':'fogo'}:
print x
23
10
4
5
agua
Tipos iteráveis
Dicionários:
L = {10:'a', 4:12, 5:20, 'agua':'fogo'}
for x in L:
print x, L[x]
24
10 a
4 12
5 20
agua fogo
Tipos iteráveis
Geradores (não vimos como criar, apenas como usá-los com for):
for x in xrange(10):
print x
25
0
1
2
3
4
5
6
7
8
9
Tipos iteráveis
Geradores (não vimos como criar, apenas como usá-los com for):
V = 4, 7, 8, 2
for x in enumerate(V):
print x
26
(0, 4)
(1, 7)
(2, 8)
(3, 2)
Tipos iteráveis
Geradores (não vimos como criar, apenas como usá-los com for):
V = 4, 7, 8, 2
for i, x in enumerate(V):
print i, x
27
0 4
1 7
2 8
3 2
while condicao:
 comandos
28
while
L = 'Eram duas caveiras que se amavam'
i = 0
while i < len(L):
print L[i]
i += 3
29
E
m
u
 
v
r
 
e
e
m
a
while
import random
i = random.randint(1, 100)
while i != 50:
print i
i = random.randint(1, 100)
30
93
67
5
80
23
9
21
100
30
70
51
4
97
28
10
65
48
9
1
93
31
break
32
continue
33
break e continue
L = ['agua', 'terra', 'vento', 'fogo', 'coracao', 'abelhinha', 
'hahaha', 'hehehe']
for i in L:
 if i=='abelhinha':
 break
 if i=='vento':
 continue
 print i
agua
terra
fogo
coracao
Estrutura 
condicional
34
if condição:
 comandos
35
Estrutura condicional
# -*- coding: utf-8 -*-
frase = u'Seu sorriso é tão resplandescente que deixou meu coração 
alegre'
for x in frase.split():
if len(x) > 3:
print x
36
sorriso
resplandescente
deixou
coração
alegre
37
Matrizes
Matrizes
A = [ [5, 8, 1, 3], 
 [4, 6, 0, 1], 
 [1, 1, 2, 0] ]
B = [[8, 6, 3, 9, 7, 6, 7, 7, 0, 9, 4, 5, 2, 0, 9, 9, 8, 6], 
 [1, 0, 7, 9, 1, 8, 9, 9, 5, 5, 3, 3, 2, 1, 2, 5, 1, 1], 
 [8, 3, 6, 8, 4, 8, 7, 4, 4, 3, 6, 1, 8, 6, 2, 6, 9, 4], 
 [7, 1, 3, 8, 0, 7, 4, 1, 3, 9, 2, 3, 0, 4, 2, 9, 6, 9], 
 [1, 4, 1, 7, 9, 0, 9, 1, 6, 4, 7, 4, 4, 6, 8, 2, 8, 1], 
 [4, 3, 4, 6, 0, 1, 2, 1, 3, 7, 8, 8, 9, 8, 5, 5, 6, 5], 
 [1, 2, 4, 5, 2, 5, 0, 3, 5, 0, 4, 3, 0, 5, 9, 3, 9, 5], 
 [2, 9, 1, 3, 1, 5, 4, 2, 0, 7, 3, 0, 1, 7, 5, 7, 4, 6], 
 [2, 7, 5, 8, 8, 1, 2, 5, 2, 5, 8, 5, 4, 5, 8, 9, 8, 1], 
 [3, 4, 2, 8, 4, 8, 0, 8, 4, 9, 3, 4, 1, 9, 4, 2, 1, 8]]
38
Criação de matrizes
def matriz_alguma_coisa(m, n):
'''Retorna uma matriz m por n
 preenchida por alguma coisa.'''
A = []
for i in range(m):
linha = []
for j in range(n):
x = ... # Cálculo do termo A[i][j]
linha.append(x)
A.append(linha)
return A
39
Processamento de matrizes
def processa_matriz(A):
'''Faz alguma coisa com cada elemento de A.'''
m = len(A)
n = len(A[0])
for i in range(m):
for j in range(n):
... A[i][j] ...
40
Entrada e saída 
simples
41
Entrada e saída simples
print mensagem
input(mensagem)
raw_input(mensagem)
42
Funções
43
Funções pré-definidas
44
Funções de conversão de dados:
dados numéricos: int, float, complex
coleções: tuple, list, set, dict
string: str
Outras funções:
len, abs, min, max, sum, sorted, range, xrange, enumerate, zip, round
input, raw_input
Módulos
45
Módulo math:
funções: sin, cos, tan, exp, log, sqrt, degrees, radians, acos, asin
variáveis: pi, e
Módulo random:
randint, random, choice, uniform, sample, shuffle
Módulo turtle:
forward, backward, left, right, dot, goto, color, speed, etc
Definição de funções
def funcao_super_util(a, b, c=23, d=None):
 '''A melhor função de todos os tempos.'''
 for i in range(a, b):
 if d != None:
 c += d%i
 else:
 c += i
 return c
46
Que problemas 
conseguimos 
resolver?
47
Lados
Dados, para cada triângulo, dois lados e o ângulo entre eles, calcule o outro lado:
Primeira solução
import math
def lado_triangulo(b, c, angulo):
'''Retorna um lado de um triângulo,
dados dois lados b, c e o angulo entre eles em graus.'''
alpha = math.radians(angulo)
return math.sqrt(b**2 + c**2 - 2*b*c*math.cos(alpha))
Modo interativo:
>>> lado_triangulo(6.73, 5.41, 35.75)
3.932342665242
>>> lado_triangulo(5.37, 9.41, 105.25)
11.998659460091869
>>> lado_triangulo(4.12, 8.87, 113.34)
11.162799978678958
>>> lado_triangulo(14.44, 6.73, 28.18)
9.081970932978138 49
Solução melhorada
import math
def lado_triangulo(b, c, angulo):
'''Retorna um lado de um triângulo,
dados dois lados b, c e o angulo entre eles em graus.'''
alpha = math.radians(angulo)
return math.sqrt(b**2 + c**2 - 2*b*c*math.cos(alpha))
triangulos = [ (6.73, 5.41, 35.75), (5.37, 9.41, 105.25),
(4.12, 8.87, 113.34), (14.44, 6.73, 28.18)]
for b, c, ang in triangulos:
print b, c, ang, '->', lado_triangulo(b, c, ang)
50
6.73 5.41 35.75 -> 3.932342665245.37 9.41 105.25 -> 11.9986594601
4.12 8.87 113.34 -> 11.1627999787
14.44 6.73 28.18 -> 9.08197093298
Áreas
Calcule a área do polígono, dadas as coordenadas dos vértices:
Solução
def area_poligono(P):
'''Calcula a área de um polígono P'''
s = 0
n = len(P)
for i in range(n):
x0, y0 = P[i-1]
x1, y1 = P[i]
s += .5*(y0+y1)*(x1-x0)
return s
P = [(3.71, 3.51), (7.58, 8.21), (13.83, 4.95), (12.77, 1.61), 
(8.01, 3.94)]
print area_poligono(P)
52
31.0999
Provas
● 3 provas
● É necessário fazer pelo menos 2 provas!
● Nota final
○ NF = 30%P1 + 50%max(P2, P3) + 20%T
○ NF = 40%P2 + 40%P3 + 20%T (se não fizer a P1)
● Aprovação: NF >= 5.0
Exercício
Crie uma função que calcula a nota final de um aluno, dadas as notas das provas e 
do trabalho. Usando None quando o aluno não tiver feito alguma prova.
>>> nota_final(6, 7, None, 8)
6.9
>>> nota_final(None, 5, 4, 7)
5.0
>>> nota_final(None, 3, 5, 6)
4.4
Solução
# -*- coding: utf8 -*-
import math
def nota_final(P1, P2, P3, T):
'''Calcula a nota final de um aluno de computação.'''
 if T == None:
T = 0
L = P1, P2, P3
if L.count(None) > 1:
NF = 0
elif P1 != None:
NF = .3*P1 + .5*max(P2, P3) + .2*T
else:
NF = .4*P2 + .4*P3 + .2*T
return round(NF, 1)
55
Exemplo
Escreva um programa completo (incluindo função main) que peça ao usuário digitar 
as notas das provas (deixando em branco se não tiver feito) e do trabalho e calcule 
e mostre a média final e se o aluno foi aprovado no curso.
Nota da prova 1: 7
Nota da prova 2: 6
Nota da prova 3: 4
Nota do trabalho: 8
Nota final: 6.7
Aprovado!
56
Exemplo
...
def ler_nota(msg):
'''Pede um valor ao usuário, retorna None
 se o usuário não informar nada'''
n = raw_input(msg)
if n == '':
return None
else:
return float(n)
...
57
Exemplo
...
def main():
p1 = ler_nota('Nota da prova 1: ')
p2 = ler_nota('Nota da prova 2: ')
p3 = ler_nota('Nota da prova 3: ')
T = ler_nota('Nota do trabalho: ')
nota = nota_final(p1, p2, p3, T)
print 'Nota final: ', nota
if nota >= 5:
print 'Aprovado!'
else:
print 'Reprovado!'
if __name__ == '__main__':
main()
58
59

Outros materiais