Beruflich Dokumente
Kultur Dokumente
com Python
Prefcio
Sobre a apostila
Voltado para alunos iniciantes e intermedirios no curso de
desenvolvimento de algoritmos e na linguagem Python o livro
visa o aprendizado do pensamento algoritmo e sua aplicao em
uma linguagem de fcil aprendizado. Durante o decorrer do livro
sero apresentados diversos conceitos teis no somente para
alunos de cincia da computao, mas tambm para alunos de
engenharia, ou qualquer outro aluno que queira iniciar o
aprendizado em programao .
Como o leitor j deve ter percebido, ao contrrio dos demais
livros, que so extremamente longos este livro tentar ser o mais
breve possvel, para que dessa forma possa auxiliar estudantes
em sala de aula ou em casa.
Capitulo I
Computadores e algoritmos
A construo de programas a questo central para o uso eficaz
dos computadores na soluo de problemas a partir do
desenvolvimento de conjuntos de funes organizadas de
maneira lgica.
As regras para um raciocnio correto j eram conhecidas dos
antigos gregos no sculo IV A.C. com os ensinamentos de
Scrates, Plato e Aristteles a quem coube criar o grupo
conhecido como Lgica Formal, Lgica menor ou Epistemologia
que contm a sistematizao das leis.
A interpretao matemtica dessas regras lgica somente
ocorreu em 1854, com George Boole em seu trabalho Uma
investigao das leis do pensamento. Este conjunto de
conhecimentos hoje chamado de lgebra Booleana compondose de Lgica Simblica e Lgica Matemtica. Quase um sculo
mais tarde, em 1937, Claude Elwood Shannon publicou o
trabalho Uma anlise simblica de circuitos de comutao e
rels mostrando que a Lgica Simblica de Boole descrevia os
circuitos lgicos como a base para o projeto dos computadores.
IV
QUATRO
CONCEITO
TERMO
quatro
REPRESENTAO
Figura 1 Representaes
Realidade
Informao
Inicial
Modelo
Abstrao
Informao
estruturada
Grupo de arquivos
Alanisador Lexico
(Scanner)
Estruturas de
objetos/tipos
Modulos do
usurio
Analisador Sintatico
(Parser)
Modulos do
Nucleo
Compilador
Bibliotecas
Alocador de
memoria
Avaliador de
Codigo
Estado atual
10
11
a) Selecione
b) A tela do Shell do Python para processamento interativo
mostrada a seguir:
12
13
14
Capitulo II
Algoritmos
Algoritmo um conjunto finito de passos, que seguem regras
bem definidas, e tem como finalidade a soluo de um problema
em um espao de tempo finito.
Ainda que o termo tenha sido popularizado com a informtica,
algoritmos podem se referir a passos de qualquer tipo de tarefa,
dessa forma est correto falar algoritmo de preparao de um
bolo, referindo-se a uma receita.
2.2.3 Pseudocdigo
Este ser o modelo que este livro tomar para a resoluo de
algoritmos. Essa forma de representar a resoluo de problemas
simula a soluo do problema por uma linguagem computacional.
16
Fim
Ler A,B
c=(A+B)/2
Se c>=7 ento
Escrever aprovado
Se no
Escrever reprovado
fim se
2.4 Comandos
2.4.1 =
O smbolo = (igual) em geral na computao um sentido de
atribua, totalmente diferente da matemtica. Uma operao
a=b+c, para ns significaria pegue contedo de b e aplique a
17
18
C1
C2
C1 e C2
C1 ou C2
No C1
V
F
F
V
V
V
F
F
V
F
F
F
V
V
V
F
F
V
V
F
19
20
2.9 Resumo
A seguir apresentada tabela com os principais tipos de
raciocnio.
21
Bloco Lgico
Fluxograma
Tipo de
bloco
Sequencia
Exemplo de pseudocdigo
Ler c1
Ler c2
c3=c1+c2
Imprimir c3
C1
C2
C3
Deciso simples
Sequencia simples
Tipo de
raciocnio
Ler c1
Ler c2
Se c1> 0 e c2>0 ento
c1=c2-2
Fim se
F
compara
V
Deciso composta
Deciso
Comando 1
C1
compara
Ler a
Se a>0 entao
x=x+1
Se no
x=x-1
Fim se
C2
22
Para faa
Enquanto faa
Repetio ou interao
Condio
Comando
condio
V
F
Inicio
Ler a
Ler b
Imprimir a*b
Fim
3) Escrever um algoritmo que escreva a tabuada de 1 a 10 de um
nmero inserido
Algoritmo
Inicio
Ler a
Para i=1 a 10 faa
a=a*i
imprimir a
fim para
Fim
4) Escrever um algoritmo que calcule o fatorial de um nmero.
Algoritmo
Inicio
Ler n
Para i=1 at n faa
n=n*i
fim para
Fim
5) O termo swap indica a troca de valor entre duas variveis.
Escreva um algoritmo para a tcnica swap entre duas variveis.
Algoritmo
Inicio
Ler a
Ler b
c=a
a=b
b=c
24
Fim
6) Escreva um algoritmo que gere dias a seguinte sada.
1: Domingo 2: segunda-feira 3: tera-feira 4: quarta-feira
5:quinta-feira 6:sexta-feira 7: sbado
Inicio
Escreva i + : domingo
Escreva i + : segunda-feira
Escreva i + :tera-feira
Escreva i + :quarta-feira
Escreva i+ quinta-feira
Escreva i + sexta feita
Escreva i + sbado
Escreva i + domingo
Fim
7)Faa um algoritmo para ler um nmero e imprimir se ele
igual a 5, 200 ou 400. Se no verificar se o mesmo est no
intervalo entre 500 e 1000 inclusive , ou se est fora do escopo
especificado.
Inicio
Ler a
Se (a=5) ou (a=200) ou (a=400) ento
Imprimir igual a , a
Se no
Se (a>500) e (a<1000)
Imprimir dentro do intervalo verificado
Se no
Imprimir Fora do escopo
Fim se
25
Fim se
Fim
8) Escreva um algoritmo que faa a combinao sem repetio de
dois nmeros dados por input.
Inicio
Ler a
Ler b
Fat1=1
Para i=1 at a faa
Fat1=Fat1*a
Fim Para
Fat2=1
Para i=1 at (a-b) faa
fat2=fat2*i
fim para
fat3=1
Para i=1 at b faa
fat3=fat3*i
Fim para
Se a>b ento
imprima fat1/(fat2*fat3)
se no
se a=b
26
imprima 1
se no
imprima fat3/(fat2*fat1)
fim se
fim se
Fim
9) Escreva um algoritmo que leia trs valores para A, B e C
respectivamente. O programa devera imprimir qual das trs
letras tem o maior valor. Ou os valores se forem iguais.
Algoritmo
Inicio
Ler a
Ler b
Ler c
Se a>=b ento
Se a>c ento
Imprimir a
Fim se
Se a=b ento
Imprimir a e b
Fim se
Se a=c ento
Imprimir a e c
Se no
Imprimir c
Fim se
Se no
Se b>c ento
Imprimir b
27
Fim se
Se b=c ento
Imprimir b e c
Se no
Imprimir c
Fim se
Fim se
Fim
10) O sistema de avaliao de uma determinada matria dada
da seguinte maneira:
prova1+prova2>=7 aluno aprovado
prova1+prova2<3 aluno reprovado
prova1+prova2>=3 e prova1+prova2<7 recuperao
Escreva um algoritmo que leia 5 valores de prova1 e prova2 e
imprima o status do aluno
Inicio
Para k=1 a 5 faa
Leia p1
Leia p2
Se (p1+p2)/2.0 <3 ento
Imprima aluno reprovado
Fim se
Se (p1+p2)/2.0>=7 ento
Imprima aluno reprovado
Se no
Imprima prova final
Fim se
Fim para
Fim
11) Qual seria o ttulo do problema que teria como resultado o
seguinte algoritmo:
Algoritmo
28
Inicio
a=0
Enquanto a<100 faa
Se (a<48) ou a>=73 ento
a=a+3
Imprimir a
Se no
a=a+5
Imprimir a
Fim se
Fim enquanto
Fim
Elabore um algoritmo que imprima todos os nmeros de 1 a 100
mltiplos de 3 se eles forem menores que 50, de 5 em 5 para
valores maiores ou iguais a 50 e menores que 75, e novamente de
3 em 3 para valores maiores ou iguais a 75.
12) Supondo que a populao mundial seja estimada em 90
bilhes com uma taxa de crescimento anual de 1%, escreva um
programa que calcule a quantidade estimada de habitantes no
decorrer de 10 anos.
Inicio
a=9.0
Para i=1 at 10 faa
a+=a/100
Imprima Estima-se,a,bilhes de habitantes
Fim
29
Capitulo III
Primeiros passos
Os objetos so a abstrao do Python para todas as estruturas de
dados. Todo programa em Python composto por objetos ou por
relao entre objetos.
Todo objeto tem:
Uma identidade atribuda em sua criao;
Um tipo que estabelece o conjunto de operaes associados;
Um conjunto de valores que podem ser:
o Imutveis: Apontam diretamente para o valor da
memria, o que significa que quando um objeto
criado, seu valor no pode ser alterado. Em vez disso,
um novo objeto criado e designado varivel;
o Mutveis: Apontam para um identificador ou para um
valor direto na memria. Esses tipos sero mais bem
explicados mais adiante.
3.1 Identificadores
Identificadores so nomes atribudos a objetos ou a rotinas a fim
de facilitar o entendimento e sua chamada durante a escrita do
cdigo, podendo ou no ser predefinidos pela linguagem padro.
Durante o decorrer do livro trataremos identificadores pelo
nome de variveis.
Ao criar uma varivel deve-se ficar atento s seguintes regras:
30
exec
for
raise
import
is
finally
print
if
in
lambda
not
pass
from
try
with
or
continue
return
del
yield
varivel = expresso.
O smbolo = significa atribua e tem sentido diferente do = (igual)
da matemtica.
Observe o exemplo:
3.3 Linhas
Um programa em Python dividido em linhas lgicas que podem
ser compostas de uma ou mais linhas fsicas. Uma linha lgica no
pode ultrapassar uma linha fsica com exceo de dois casos
especiais Colocando-se \ no final da linha.
Por exemplo:
32
Exemplo
3.6 Comentrios
Os comentrios em Python so precedidos do caractere hash #
Por exemplo
34
Capitulo IV
35
Inteiros
Os nmeros inteiros so representados em preciso simples ou
em preciso dupla. Os Inteiros simples utilizam 32 bits para
representar os valores e englobam a faixa de -2147483648 at
2147483647, mas podem ser maiores, dependendo do
processador e do sistema operacional. Os Inteiros longos so
outra classe de inteiros de abrangncia ilimitada, ou limitada
apenas pela memria da mquina.
A converso de um valor para seu representante inteiro feita
atravs do comando: int(x), onde x uma varivel ou um valor.
36
Por exemplo:
38
+ Soma
- Subtrao
* Multiplicao
/ Diviso
40
** Exponenciao
// Diviso inteira
41
42
43
44
45
c)
d)
e)
f)
g)
h)
i)
j)
k)
l)
m)
47
n)
o)
Se o=p ento
Imprimir 1.
Se no
Imprimir 0.
Fim
5) A chamada disjuno exclusiva (XOR) possui a seguinte tabela
verdade:
p
F
F
V
V
q
F
V
F
V
p XOR q
F
V
V
F
x=x*x
Total=total + x/fat
Fim para
Fim se
Fim
7) Escrever um programa Python que calcule e escreva o nmero
de feijes que se pode colocar em um tabuleiro 8X8, colocando 1
no primeiro nos seguintes um a mais do que o anterior.
Algoritmo
Inicio
Total=0
Contadorlinha=1
Para i=1 a 8 faa
a=i
Enquanto contadorlinha<=8 faa
Total=Total+i
contadorlinha=contadorlinha+1
fim enquanto
fim para
Fim
8) O comando lgico Nor tem a seguinte tabela verdade:
A
V
V
F
F
B
V
F
V
F
AB
F
F
F
V
Inicio
Q=0
R=0
Falsoa=0
Falsob=0
Ler a
Ler b
Se a<0 ento:
a=-a
Falsoa=1
Fim se
Se b<0 ento:
b=-b
Falsob=1
Fim se
R=a
Enquanto (b<=R) e (b0) faa:
R=R-b
Q=Q+1
Fim enquanto
Se Falsoa=1 ento:
Q=-Q
a=-a
fim se
Se Falsob=1 ento:
Q=-Q
b=-b
fim se
Fim
12) Elabore um programa Python que calcule o fator gama para
uma velocidade v digitada pelo usurio.
52
Lembrando: =1/
e c=2,997 X
m/s
53
Capitulo V
Entrada e sada.
5.1 Declaraes de Entrada
A verso 2.7.3 do Python aceita os comandos:
raw_input- usada para entrada de dados do tipo texto (ou
string)
Varivel= raw_input(mensagem)
Este tipo de declarao mais estvel por evitar erros e
possibilitar que o programador verifique se o dado de entrada
vlido antes de utiliz-lo. Contudo para a realizao dos testes
ser exigido um esforo maior por parte do programador.
54
56
Imprimir (a/b)
Fim
3) Escrever um programa Python que receba horas minutos e
segundos e exiba o resultado convertido para segundos.
Inicio
Ler hora
Ler minutos
Ler segundos
segundos= segundos + hora*3600 + minutos*60
Imprimir segundos
Fim
4) Faa um programa Python que leia o valor de trs mercadorias
e calcule a diferena do preo de cada uma delas.
Inicio
Ler valor1
Ler valor2
Ler valor3
A_B=valor1-valor2
A_C=valor1-valor3
B_C=valor2-valor3
Se A_B<0 ento
A_B=-A_B
Se B_C<0 ento
B_C=-B_C
Se A_C<0 ento
A_C=-A_C
Fim
5) Elabore um programa que leia um valor em centmetros e o
imprima em polegadas (1 pol = 2,54 cm)
59
falsob=1
Fim se
Enquanto contador<b faa:
Contador=contador+1
resp=resp+a
fim enquanto
se falsoa=1 ento:
a=-a
resp=-resp
fim se
se falsob=1:
b=-b
resp=-resp
fim se
Fim
10) Escreva um programa Python que calcule x elevado a y. Com
y pertencente aos inteiros.
Inicio
Contador=0
Falsoy=0
Ler x
Ler y
Se x=0 e y=0 ento:
Escreve impossvel calcular
Se no
Se y=0 ento
Escreve 1
Se no:
Se y<0:
y=-y
falsoy=1
61
fim se
fim se
enquanto contador<(y-1) faa
contador=contador+1
x=x*x
fim enquanto
se falsoy=0 ento
escreve x
fim se
se falsoy=1 ento
escreve (1.0/x)
fim se
fim se
fim
11) Escreva um programa que calcula a hipotenusa de um
triangulo retngulo.
62
Captulo VI
Classe String
Strings so objetos de tipo imutvel do Python e que possuem
noo de ordenao. So constitudos de caracteres e declarados
entre apstrofos ou aspas.
Os dados literais denotam um conjunto de caracteres da tabela
ASCII (ou UNICODE), ou seja:
As letras maisculas e minsculas;
Os dgitos de 0 a 9;
Os caracteres especiais, como os de pontuao, de operao
etc.;
Os caracteres de controle e que no so imprimveis.
Por exemplo
63
0
-6
Y
1
-5
T
2
-4
H
3
-3
O
4
-2
N
5
-1
64
* representa repetio
Exemplo
65
67
6.5.5 upper
Esse mtodo utilizado a fim de retornar uma cpia de uma
string em caixa alta.
a.upper() a String
6.5.6 isalnum
Esse mtodo utilizado para verificao dos tipos de caracteres
de uma string. Caso a string analisada possua somente caracteres
alfanumricos retorna True, caso contrrio retorna False.
a.isalnum() a String
68
6.5.7 isalpha
Esse mtodo utilizado para verificao dos tipos de caracteres
de uma string. Caso a string analisada possua somente caracteres
alfabticos retorna True, caso contrrio retorna False.
a.isalpha() a String
6.5.8 isdigit
Esse mtodo utilizado para verificao dos tipos de caracteres
de uma string. Caso a string analisada possua somente caracteres
nmricos retorna True, caso contrrio retorna False.
a.isdigit() a String
6.5.9 islower
Esse mtodo utilizado para verificao dos tipos de caracteres
de uma string. Caso a string analisada possua somente caracteres
que no sejam caixa alta retorna True, caso contrrio retorna
False.
a.islower() a String
6.5.10 isupper
Esse mtodo utilizado para verificao dos tipos de caracteres
de uma string. Caso a string analisada possua somente caracteres
que no sejam em caixa baixa True se a string, caso contrrio
retorna False.
69
a.isupper()a String
70
71
b)
c)
d)
e)
74
78
Capitulo VII
Estruturas de deciso
Esses comandos analisam e executam uma nica vez um bloco de
instrues de acordo com o valor verdade de uma condio.
7.3 Exerccios
1)Faa um programa que leia dois nmeros inteiros A e B da
entrada padro (teclado) e retorne o quociente da diviso entre A
e B. O programa deve verificar previamente diviso, se o valor
de B diferente de zero.
80
81
82
83
84
86
Capitulo VIII
Laos de repetio
So usados para repetir um conjunto de instrues.
89
90
8.6 Exerccios
1)Faa um programa que leia um nome e o imprima tantas vezes
quantas for a quantidade de letras do seu nome.
91
S=x+x/2+x/3+x/4+...x/n
S= x+x/2!+x/3!+x/4!+...+x/n!
S= x-x/2!+x/3!-x/4!+... x/n!
S= 1+x/2!+x/4!+x/6!+...+x/n!
92
93
94
96
97
Capitulo IX
Mdulos
9.1 Importao de mdulos
Para incorporar as funes e mtodos presentes em algum
mdulo ao programa deve-se importar o mdulo desejado
atravs dos comandos from e import.
Importao se d das seguintes formas:
9.1.1 import nome_do_modulo
Nesse caso o trabalho recai sobre o programador. Toda vez que
desejar usar uma algo do mdulo o programador dever chamla atravs do seguinte comando:
nome_do_mdulo.nome_do_objeto( argumentos_recebidos)
Exemplo:
98
99
Seno
Funo: Calcula o seno do argumento
sin(x) x um arco medido em radianos
Cosseno
Funo: Calcula o cosseno do argumento
cos(x) x um arco medido em radianos
Tangente
Funo: Calcula a tangente do argumento
tan(x) x um arco medido em radianos
Raiz quadrada
Funo: Retorna a raiz quadrada de x
sqrt(x) x um nmero
Inteiro absoluto
Funo: Retorna o valor inteiro absoluto de x
abs(x) Onde x um nmero inteiro
Float absoluto
Funo: Retorna o float absoluto de x
fabs(x) onde x um nmero float
Inteiro maior
Funo: Retorna o menor nmero inteiro maior que X
ceil(x) x um float
101
9.4 O mdulo os
102
104
Capitulo X
Tratamento de erro
10.1 Tipos de erro
10.1.1Erros de sintaxe:
Tambm conhecidos como erros de parse
10.1.2 Excees
So os erros que so sintaticamente corretos, mas impossveis de
serem executados por algum motivo.
A mscara de excees
O Comando except pode executar um conjunto de comandos
padro para qualquer tipo de erro que ocorra, para isso basta no
apresentar argumentos.
106
107
10.5 Exerccios
1) Escreva um programa para ler um nmero atravs de
raw_input e o converta para float.
109
Capitulo XI
A Classe list
Lista um conjunto ordenado de valores identificado por um
ndice.
Uma lista ou list em Ingls possui as seguintes caractersticas:
110
111
a.reverse() a- Lista
11.2 Exerccios
1) Elabore um programa que leia o vetor A com 5 valores
inteiros. Determine um vetor com a seguinte lei de formao: Os
termos de ordem impar de A so multiplicados por 3 Os termos
de ordem par de A so multiplicados por 2
113
114
115
116
117
118
119
121
http://www.youtube.com/watch?v=CmPA7zE8mx0&noredirect=
1
122
Capitulo XII
12.2 Dicionrios
Dicionrios so objetos que podem ser modificados, com
caractersticas sequenciais no ordenadas e que so utilizados a
fim de implementar mapeamentos.
Cada objeto do dicionrio relacionado com uma chave.
Essa classe declarada entre chames {} e utiliza-se dois pontos
":" para separar objetos de suas respectivas chaves.
O construtor dessa classe chamado atravs do comando dict(x)
123
124
9.4 Exerccios
1) Escreva um programa que transforme uma lista em uma tupla.
125
b)
126
c)
d)
e)
f)
g)
h)
127
i)
128
Capitulo XIII
13.1.2 copy
Esse mtodo retorna uma cpia do set
129
a.copy() a set
13.1.3 difference
Esse mtodo retorna a diferena entre os conjuntos.
a.difference(b) a set, b set
13.1.4 discard
Esse mtodo descarta um objeto do set
a.discard(b) a set , b objeto
13.1.5 intersection
Esse mtodo retorna um set correspondente a interseo dos
dois sets apresentados.
a.intersection(b) a set , b set
130
13.1.6 symmetric_difference
Esse mtodo retorna a diferena simtrica entre os dois sets
a.symmetric_difference(b) a set, b set
13.1.7 union
Esse mtodo retorna a unio entre os dois sets
a.union(b)
131
132
10.8 Exerccios
1) Escreva um programa que gere uma lista de 200 nmeros
aleatrios entre 1 e 50 e imprima: Uma lista ordenada e sem
repeties dos nmeros, a quantidade de nmeros que foram
retirados da lista inicial e a lista inicial, nessa ordem. Importante:
Voc no dever utilizar mais de duas variveis.
133
134
135
136
Capitulo XIV
Funes
Funo ou sub-rotina a poro do cdigo que pode receber
argumentos de entrada e sada, realizando procedimentos e
retornando ou no um valor. Observe abaixo o esquema
resumido do funcionamento de um programa atravs de funes:
139
140
142
143
14.11 Exerccios
1) Escreva qual ser a sada de cada um dos seguintes comandos:
a)
b)
144
c)
Observe:
2, 3, 4, 6, 8, 9, 12, 16, 18, 24, 27, 32, 36, 48, 54, 64, 72, 81, 96,
108,...
Escreva um programa que contenha as funes de clculo e
impresso da sequencia.
Importante voc no deve imprimir o objeto do tipo lista!
146
147
148
149
150
Capitulo XII
Arquivos
At o momento, quando terminamos de executar o programa os
dados so perdidos. Ou seja, os dados no so armazenados em
nenhum lugar. Atravs do uso dos arquivos podemos armazenar
os dados de um programa de maneira que eles possam ser
usados (consultados) novamente, em uma nova execuo do
programa.
151
153
154
156
Capitulo XVI
Mdulos
Modulos so arquivos contendo o cdigo python que podem ser
incorporados a novos programas, a fim de evitar ter de
reescrever o material a ser rodado pelo interpretador e facilitar a
manuteno do programa.
157
158
159