34
Programação de Computadores Renato Dourado Maia Instituto de Ciências Agrárias Universidade Federal de Minas Gerais INTRODUÇÃO AOS ALGORITMOS E À PROGRAMAÇÃO DE COMPUTADORES – PARTE 2

Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

Programação de Computadores

Renato Dourado MaiaInstituto de Ciências Agrárias

Universidade Federal de Minas Gerais

INTRODUÇÃO AOS ALGORITMOS E À PROGRAMAÇÃO DE COMPUTADORES – PARTE 2

Page 2: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 2/34

Exemplo Inicial – Uma Fórmula Matemática

• A fórmula que vamos considerar diz respeito ao movimen-to vertical de um bola lançada para o ar.

• Utilizando-se a segunda lei do movimento de Newton, po-de-se estabelecer um modelo matemático para o movi-mento da bola e achar que a sua posição vertical, y, varia com o tempo t de acordo com a fórmula

y (t )=v 0 t−12g t 2→{velocidade inicial (em t=0)

aceleração da gravidade.

Page 3: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 3/34

Depois de quanto tempo a bola, após

lançada, retorna para y = 0?

Exemplo Inicial – Uma Fórmula Matemática

Page 4: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 4/34

v 0t−12g t 2=t(v 0−12 g t)=0⇒ t=0 ou t=2v0/g→t ∈ [0,2v0/g ]

v 0=5m /s

g=9,81m /s 2

t=0,6 s }↓

→y=5⋅0,6−12⋅9,81⋅0,62

t ∈ [0,2v 0/g≈1]

Exemplo Inicial – Uma Fórmula Matemática

Page 5: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 5/34

O Interpretador como Calculadora

v 0=5m /s

g=9,81m /s2

t=0,6 s }→y=5⋅0,6−12⋅9,81⋅0,62print(5*0.6 – 0.5*9.81*0.6**2)

Programa em Python

y (t )=v 0 t−12g t 2→{velocidade inicial (em t=0)

aceleração da gravidade

Page 6: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 6/34

O Interpretador como Calculadora

• Vamos executar o programa do slide anterior de diferen-tes maneiras:– Utilizando o interpretador de forma interativa.– Escrevendo o programa num arquivo (.py) e invocando o inter-

pretador para executá-lo.

Page 7: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 7/34

O Interpretador como Calculadora

Page 8: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 8/34

O Interpretador como Calculadora

Page 9: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 9/34

Lembrando...

• Vocês consideram as duas linhas a seguir “iguais”?– print(5*0.6 – 0.5*9.81*0.6**2)

– write(5*0.6 – 0.5*9.81*0.6^2)

• Os humanos consideram! Os computadores não!• A segunda linha não faz sentido em um programa Python!• A palavra write não faz sentido nesse contexto e o cin-

cunflexo não implica 0,62.

“People only become computer programmers if they’re obsessive about details, crave power over machines, and can bear to be told day after day exactly how stupid they are.” –G. J. E. Rawlins

Page 10: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 10/34

O que é um pro-grama?

Lembrando...

Page 11: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 11/34

Lembrando...

Um programa é uma sequência de instruções para o computador, escrita em uma linguagem de progra-

mação, que é normalmente similar à língua inglesa, porém muito mais simples e muito mais rigorosa.

”Programming demands significantly higher standard of accuracy.Things don’t simply have to make sense to another human being, they must make sense to a computer.” – Donald Knuth

Page 12: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 12/34

Variáveis

• Para avaliar y(t) para outros valores de t, o valor corres-pondente deve ser modificado em dois lugares no pro-grama.

• Modificar o valor de g é mais simples. Entretanto, na práti-ca, pode ocorrer de ser modificado o número errado.

• Essas modificações seriam mais simples se expressarmos a nossa fórmula em termos de variáveis, ou seja, símbolos, em lugar de valores numéricos.

• As variáveis podem receber valores (numéricos) por meio de atribuições e serem utilizadas na fórmula.

Page 13: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 13/34

Variáveis

• Variáveis são, na verdade, nomes dados a áreas de memória e servem para:– Guardar valores intermediários.– Construir estruturas de dados.

• Uma variável é modificada por meio de um comando de atribuição:– Var = expressão.

• É possível atribuir a várias variáveis simul-taneamente:– Var1, Var2, …, VarN = expre1, expr2, …, exprN.

>>> spam = 15

Page 14: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 14/34

Variáveis

v 0=5m /s

g=9,81m /s2

t=0,6 s }→y=5⋅0,6−12⋅9,81⋅0,62v0 = 5g = 9.81t = 0.6y = v0*t – 0.5*g*t**2print(y)

Programa em Python

Page 15: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 15/34

Variáveis

• Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com um algarismo.

• Python é case sensitive, ou seja, X é diferente de x. • É interessante que os nomes das variáveis sejam informa-

tivos, contribuindo para a legibilidade do programa.• A versão 3 da linguagem Python permite a utilização de ca-

racteres especiais em nomes de variáveis, pois, por pa-drão, os programas são interpretados utilizando-se o con-junto de caracteres UTF-8 em lugar do ASCII.

Page 16: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 16/34

Variáveis

• As palavras que constituem a linguagem Python são reser-vadas e não podem ser utilizadas como nomes de variá-veis.

Page 17: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 17/34

Variáveis

• A seguir está apresentada uma versão alternativa do pro-grama com o qual estamos trabalhando:

velocidade_inicial = 5aceleracao_da_gravidade = 9.81TEMPO = 0.6PosicaoVerticalDaBola = velocidade_inicial*TEMPO – \ 0.5*aceleracao_da_gravidade*TEMPO**2print(PosicaoVerticalDaBola)

Ficou legível?

Page 18: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 18/34

Comentários

• Junto com as declarações do programa muitas vezes é in-formativo inserir alguns comentários para explicar as idei-as por trás das declarações: o significado das variáveis, o raciocínio utilizado, etc. – Comentários em Python começam com o caractere # e tudo após

esse caractere em uma linha é ignorado quando o programa é executado (quase sempre).

✔ # -*- coding: utf-8 -*-

Page 19: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 19/34

Comentários

• A seguir está apresentada uma outra versão alternativa do programa com o qual estamos trabalhando:

# Programa para calcular a altura de uma bola num # lançamento verticalv0 = 5 # Velocidade inicialg = 9.81 # Aceleração da gravidadet = 0.6 # Tempoy = v0*t – 0.5*g*t**2 # Posição vertical da bolaprint(y)

Ficou legível?

Page 20: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 20/34

Tipos de Dados

• Tipos de dados são categorias de valores que são proces-sados de forma semelhante.– Números inteiros, por exemplo, são processados de forma dife-

rente dos números de ponto flutuante e números complexos.

• Os tipos primitivos são aqueles já embutidos no núcleo da linguagem.– Em Python:

✔ Simples: números (int, long, float, complex) e cadeias de caracte-res (strings).

✔ Compostos: listas, dicionários, tuplas e conjuntos.

Page 21: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 21/34

Tipos de Dados

• Os tipos definidos pelo usuário correspondem a classes, um conceito da programação orientada a objetos (que tal-vez veremos na disciplina Programação de Computadores).

• Variáveis são criadas dinamicamente e destruídas quando não são mais necessárias (quando o seu escopo se encerra, por exemplo, como veremos posteriormente).

• O tipo de uma variável muda de acordo com o valor a ela atribuído.– Python é uma linguagem de tipagem dinâmica.

✔ Não confundir com linguagens sem tipo!

Page 22: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 22/34

Variáveis Numéricas

• Diz-se que uma variável é numérica quando armazena nú-meros inteiros, de ponto flutuante ou complexos.– Os números inteiros são números sem parte decimal, tais como

1, 0, -5, 550, -47, 30000 (os tipos correspondentes são int, cuja precisão é fixa, e long, cuja precisão é arbitrária).

– Números de ponto flutuante são números com parte decimal, de precisão variável, tais como 1.0, 5.478, 10.478, 30000.4 (o tipo correspondente é float).

– Números complexos utilizam um float para a parte real e outro para a parte imaginária (o tipo correspondente é complex).

Page 23: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 23/34

Variáveis Numéricas

• Em Python, assim como na maioria das linguagens de pro-gramação, o ponto, e não a vírgula, é o separador entre as partes inteira e fracionária de um número, sendo que não se utiliza nenhum separador de milhar.

• Não discutiremos isto agora, mas é importante destacar que há algumas particularidades da representação em ponto flutuante...– O número 0.1 não tem nada de especial na base 10, mas é uma

dízima periódica no sistema binário.– Vamos digitar 3 * 0.1 no interpretador e analisar o resultado.– Detalhes: http://docs.python.org/py3k/tutorial/floatingpoint.html.

Page 24: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 24/34

Variáveis Numéricas

Page 25: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 25/34

Variáveis do Tipo Lógico

• Variáveis do tipo lógico ou booleano podem assumir ape-nas dois valores:– Verdadeiro (True em Python).– Falso (False em Python).

• Para a realização de comparações lógicas, são utilizados o-peradores relacionais.

• O resultado de uma comparação é do tipo lógico (bool em Python).

• No próximo slide estão apresentados os operadores rela-cionais suportados em Python.

Page 26: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 26/34

Operadores Relacionais

Operador Python Operação Símbolo Matemático

== Igualdade =

> Maior que >

< Menor que <

!= Diferente ≠

>= Maior ou igual ≥

<= Menor ou igual ≤

Atribuição e igualdade são coisas diferentes! Vamos fazer alguns testes utilizando o interpretador...

Page 27: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 27/34

Operadores Relacionais

Page 28: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 28/34

Operadores Lógicos

• Para trabalhar com lógica booleana, são utilizados opera-dores lógicos.

• Python suporta três operadores lógicos básicos, que estão apresentados na tabela a seguir.

Operador Python Operação

not não (negação)

and e (conjunção)

or ou (disjunção)

Page 29: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 29/34

Operadores Lógicos – not

V1

not V1

True False

False True

Page 30: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 30/34

Operadores Lógicos – andV1 V2

V1 and V2

True True True

True False False

False True False

False False False

Page 31: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 31/34

Operadores Lógicos – orV1 V2

V1 or V2

True True True

True False True

False True True

False False False

Page 32: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 32/34

Variáveis do Tipo Lógico

• As constantes True e False são apenas símbolos con-venientes:– Qualquer valor não nulo é visto como verdadeiro, enquanto 0 é

visto como falso.– O operador or retorna o primeiro operando se for visto como

verdadeiro e, caso contrário, retorna o segundo.– O operador and retorna o primeiro operando se for vista como

falso e, caso contrário, retorna o segundo.– Operadores relacionais são avaliados antes de not, que é avali-

ado antes de and, que é avaliado antes de or.

Page 33: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 33/34

Variáveis do Tipo Lógico

Page 34: Programação de Computadores - renatomaia.net · • Em Python, nomes de variáveis podem conter algarismos (0-9), letras e o símbolo sublinhado (_), mas não podem começar com

18/02/14 Programação de Computadores – Renato Dourado Maia 34/34

Por Hoje é Só!