MC-102 — Aula 02
Estrutura Básica de um Programa, Variáveis, Dados, Atribuição e
Expressões Aritméticas
2024
Abra um terminal de comando e execute "python".
Se Python estiver instalado em seu computador será inicializado a shell de Python.
$ python
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 23 2015, 02:52:03)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
$ python
Python 3.4.3 (v3.4.3:9b73f1c3e601, Feb 23 2015, 02:52:03)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> print("Ola turma de 102")
Ola turma de 102
>>> 5+5
10
>>>
A shell é muito útil durante a criação de um programa pois você pode já testar partes do seu código para saber se está funcionando como o esperado.
Mas na maioria das vezes criaremos um código completo que deve ser salvo em um arquivo com a extensão .py.
Depois este código poderá ser executado em um terminal da seguinte forma
$python nomeArquivo.py
Um programa em Python é uma sequencia de definições e comandos que serão executados pelo interpretador.
A estrutura básica é a seguinte:
Comando1
...
...
...
ComandoN
O programa deve ter um comando por linha.
Os comandos serão executados nesta ordem, de cima para baixo, um por vez.
Exemplo:
print("Ola turma de 102")
print("Vamos programar em Python")
Exemplo errado:
print("Ola turma de 102") print("Vamos programar em Python")
Este programa gera um erro pois temos dois comandos em uma mesma linha.
Você pode no entanto usar um ponto e vírgula ao final de cada comando para usar vários comandos em uma mesma linha:
print("Ola turma de 102"); print("Vamos programar em Python");
Este programa executa sem problemas.
Mas neste curso sempre usaremos o padrão de um comando por linha.
Um programa executa comandos para manipular informações/dados.
Qualquer dado em Python é um “objeto” ou valor , que é de um certo tipo específico.
O tipo de um objeto/valor especifica quais operações podem ser realizadas sobre o objeto.
Por exemplo, o número 5 é do tipo int em Python.
Definição: Variáveis são uma forma de se associar um nome dado pelo programador com um valor.
altura = 10
largura = 3
a = 29
Uma outra forma de pensar em variaveis é que elas são regiões da memoria do computator e voce pode armazenar valores nessa memória.
Deve começar com uma letra (maíuscula ou minúscula) ou subcrito(_). Nunca pode começar com um número.
Pode conter letras maiúsculas, minúsculas, números e subscrito.
Não pode-se utilizar como parte do nome de uma variável:
{ ( + - * / \ ; . , ?
Letras maiúsculas e minúsculas são diferentes:
casa = 4
CasA = 3
No exemplo acima temos duas variáveis.
O comando = do Python é o comando de atribuição. Ele associa a variável do lado esquerdo do comando com o valor (ou mais corretamente expressão) do lado direito do comando.
a = 10
b = 11
c = 10
b = 20
O comando de atribuição pode conter expressões do lado direito:
variável = expressão
Atribuir um valor de uma expressão para uma variável significa calcular o valor daquela expressão e somente depois associar o valor calculado com a variável.
a = 3
b=3+10
c = (6.57 * 90) + 40
print(a)
print(b)
print(c)
a = 3
b = a+10
c = b*4 - a
a = a+1
isso é muito comum em programação. VOce esta pegando o valor de a, somando um nesse valor e armazenando o resultado de volta em a
Python 3.10.10 (main, Mar 21 2023, 13:41:39) [Clang 14.0.6 ] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a = b-7
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'b' is not defined
note o erro: name ‘b’ is not defined
Python possui os seguintes tipos básicos que veremos nesta aula:
int: Corresponde aos números inteiros. Exe: 10, -24.
float: Corresponde aos números racionais. Exe: 2.4142, 3.14159265.
str ou string: Corresponde a textos. Exe: "Ola turma de 102", "Agora vai!".
bool: Corresponde a apenas 2 valores:
True
e False
. Sao chamados de
booleanos
Os outros tipos básicos como listas, tuplas, conjuntos e dicionários serão vistos ao em outras aulas do curso.
Python 3.5.2 (v3.5.2:4def2a2901a5, Jun 26 2016, 10:47:25)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> a = 98
>>> type(a)
<class 'int'>
>>> b = 'ola turma de 102'
>>> type(b)
<class 'str'>
>>>
Valores do tipo int armazenam valores inteiros Exemplos: 3, 1034, e -512.
O tipo int possui precisão arbitrária (limitado à memória do seu computador).
Neste curso usamos como padrão Python3, por isso inteiros possuem precisão arbitrária, ao contrário de Python2.
Objetos do tipo float armazenam valores “reais”.
Literais do tipo float são escritos com um ponto para separar a parte inteira da parte decimal. Exemplos: 3.1415 e 9.8.
Possuem problemas de precisão pois há uma quantidade limitada de memória para armazenar um número real no computador.
Notem no exemplo abaixo o erro de precisão:
>>> 1/10.0
0.1
>>> 0.1+0.2
0.30000000000000004
Note o tipo das variáveis, problemas de precisão e problemas de overflow.
>>> a = 10.0/3.0
>>> a
3.3333333333333335
>>> type(a)
<type 'float'>
>>> a = 10000000000000000.2
>>> a
1e+16
>>> a = a*a*a*a*a
>>> a
1e+80
>>> a = a*a*a*a*a
>>> a
inf
>>>
Um número inteiro ou decimal seguido da letra e mais um expoente. Um número escrito dessa forma deve ser interpretado como:
numero \cdot 10^{expoente}
Ex: 2e2
(2e2 = 2 \cdot
10^2 = 200.0)
o numero perdeu a parte .2
na atribuição. Floats tem
limite de precisão (casas decimais quando convertidos para uma notação
cientifica 1.00000000000000002e16
um float tem um valor maximo. e 1e80^5 ultrpassa esse valor maximo.
Objetos do tipo string armazenam textos.
Um literal do tipo string deve estar entre aspas simples ou aspas
duplas. Exemplos de strings:
‘No meio do caminho tinha uma pedra’ ou "No meio do caminho tinha uma
pedra".
>>> a = 'No meio do caminho tinha umá pêdra'
>>> type(a)
<type 'str'>
>>> a
'No meio do caminho tinha umá pêdra'
>>>
Veremos posteriormente neste curso diversas operações que podem ser realizadas sobre objetos do tipo string.
String podem conter letras com acentos, letras de outras linguas, etc.
Os nomes de variáveis também podem conter acentos, letras de outras linguas, mas recomendamos fortemente que vc nao faça isso!
a = 3
print(a)
a = 90.45
print(a)
a = "No meio do caminho tinha uma pedra"
print(a)
a = True
print(a)
Para imprimir um texto, utilizamos o comando print.
O texto pode ser um literal do tipo string.
print('No meio do caminho tinha uma pedra!!!')
Saída:
No meio do caminho tinha uma pedra!!!
No meio da string pode-se incluir caracteres de formatação especiais.
O símbolo especial \backslashn
é responsável por
pular uma linha na saída.
print('No meio do caminho tinha uma pedra \n tinha uma pedra no meio do caminho')
Saída:
No meio do caminho tinha uma pedra
tinha uma pedra no meio do caminho
Podemos imprimir, além de texto puro, o conteúdo de uma variável utilizando o comando print.
Separamos múltiplos argumentos a serem impressos com uma vírgula.
a = 10
print('A variavel contem o valor', a)
A variavel contem o valor 10
a=10
b = 3.14
print('a contem o valor',a,'. Já b contem o valor',b)
a contem o valor 10 . Já b contam o valor 3.14
A função print sempre pula uma linha ao final da impressão. Descubra na internet como usar o print de forma que ele nao mude de linha no final
a função print sempre coloca um branco entre os valores que são impressos. Descubra como mudar isso.
Realiza a leitura de dados a partir do teclado.
Aguarda que o usuário digite um valor e atribui o valor digitado à uma variável.
o dado lido é do tipo string.
print("Digite um numero:")
a = input()
print("O numero digitado: ", a)
print(type(a))
print("Digite um numero:")
a = input()
b = int(a)
b = b*10
print("O numero digitado vezes 10 e: ", b)
print("Digite um numero:")
a = float(input())
a = a*10
print("O numero digitado vezes 10 e ", a)
Note float(input())
. O resultado da leitura do dado (um
string) é convertido direto para float, sem salva-lo numa variável.
Nos dois exemplos anteriores é esperado que o usuário digite um número.
Se o usuário digitar um texto não numérico o programa encerrará com um erro de execução.
int("abc")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'abc'
Note o nome do erro: ValueError:
e a razão do erro
invalid literal for int()
e o valor ’abc’
Constantes e variáveis são expressões.
Uma expressão também pode ser um conjunto de operações aritméticas, lógicas ou relacionais utilizadas para fazer “cálculos” sobre os valores das variáveis. Exemplo de expressão:
a + b
Calcula a soma de a e b.
a / 9
Calcula divisão de a e b por 9.
Os operadores aritméticos são: +, -, *, /, //, % , **
Soma: expressão + expressão
>>> 56+9
65
Subtração: expressão - expressão
>>> 56-9
47
Produto expressão * expressão
>>> 56*9
504
expressão / expressão : Calcula a divisão de duas expressões. O resultado é sempre um número ponto flutuante.
>>> 27/9
3.0
expressão // expressão : Calcula a divisão inteira de duas expressões.
>>> 5//2
2
>>> 5.1//2
2
expressão ** expressão : Calcula o valor da expressão à esquerda elevado ao valor da expressão à direita.
>>> 2**4
16
>>> 2.2**4
23.425600000000006
expressão % expressão : Calcula o resto da divisão (inteira) de duas expressões. O resto de uma divisão é uma operação surpreendentemente útil em computação.
>>> 5 % 2
1
>>> 9 % 7
2
>>> 2 % 5
2
No exemplo abaixo, quais valores serão impressos?
print(29 % 3)
print(19 % 5)
print(3 % 15)
As expressões aritméticas (e todas as expressões) operam sobre outras expressões.
É possível compor expressões complexas como por exemplo:
a = b *( (2 / c)+(9 + d * 8) )
Qual o valor da expressão 5 + 10 % 3
? Não sabemos
ainda. O que sera executado primeiro? o +
ou o
%
?
E da expressão 5 * 10 % 3
? Não sabemos
ainda
Precedência é a ordem na qual os operadores serão avaliados quando o programa for executado. Em Python, os operadores são avaliados na seguinte ordem:
**
*, /, //, na ordem em que aparecerem na expressão.
%
+ e -, na ordem em que aparecerem na expressão.
Exemplo: 8+10*6 é igual a 8+60 que é igual a 68
e 5 + 10 % 3
?
e 5 * 10 % 3
?
(expressão ) também é uma expressão, que calcula o resultado da expressão dentro dos parênteses, para só então calcular o resultado das outras expressões.
5 + 10 % 3 é igual a 6
(5 + 10) % 3 é igual a 0
Você pode usar quantos parênteses desejar dentro de uma expressão.
Use sempre parênteses em expressões para deixar claro em qual ordem a expressão é avaliada!
Uma expressão do tipo
a = a + 2
ou
x = x - y/3
pode ser abreviada como
a += 2
x -= y/3
além de operações aritméticas, matemática envolve funções como logaritmo, seno, etc. Essas funções matemáticas estão dentro de uma biblioteca do Python. A biblioteca math
Além do nucleo do Python, que estaremos usando neste curso, o Python tem um conjunto grande de bibliotecas que encapsulam/implementam coisas especificas em diferentes subareas, como funções matemáticas, geradores de números aleatórios, processamento de datas, cálculos estatísticos, acesso a internet, criptografia, etc etc
quando voce instala o python, essas bibliotecas são instaladas também. São chamadas de standard library. O link https://docs.python.org/3/library/ contém a lista das bibliotecas padrão que ja vem instaladas.
alem das bibliotecas padrão existem milhares de outras bibliotecas com coisas como técnicas de aprendizado de maquina, geração de gráficos, processamento de paginas em HTML, etc etc.
para instalar essas bibliotecas extra, voce tem que usar o comando pip (que é instalado quando vc instala o Python na sua maquina)
Uma das bibliotecas padrão (que ja vem instaladas) é chamada de math e ela contem as outras funções matemáticas. O link https://docs.python.org/3/library/math.html lista as funções disponíveis no math
No seu programa voce precisa primeiro carregar a biblioteca math que é feito usando o comando import math
No programa para usar a função sqrt que calcula a raiz quadrada, use math.sqrt isto é, o nome da biblioteca-ponto-nome da função
ha outras formas de fazer a importação de uma biblioteca - veremos isso em aulas futuras.
Já vimos o uso das funções int(), float() que servem para converter dados do tipo str no outro especificado pela função.
mas eles server para converter qualquer tipo em int(), float() desde que isso faça sentido.
A conversão só ocorre se o dado estiver bem formado. Por exemplo int("abc") resulta em um erro.
Ao convertermos um número float para int ocorre um truncamento, ou seja, toda parte fracionária é desconsiderada.
>>> a = "ola"
>>> int(a)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'ola'
>>> int(2.99)
2
>>> int(-2.99)
-2
>>> float("3.1415")
3.1415
>>>
str(9.5)
str(77)
str('qwerty')
Crie um programa que lê dois números reais e que computa e imprime a soma, a diferença, a multiplicação e divisão dos dois números.
Crie um programa que le o número de centavos (um inteiro) e diz como pagar esse número de centavos usando o menor numero de notas e moedas, usando as notas de 100, 50, 20, 10 e 2 reais, moedas de 1 real, e moedas de 50, 25, 10, 5 e 1 centavos. Resto da divisao e divisao inteira são fundamentais para esse exercicio.
Crie um programa que le o número de segundos (um inteiro) e diz quantos dias, horas, minutos e segundos essa quantidade de segundos representa. Resto da divisao e divisao inteira são fundamentais para esse exercicio.
Booleanos, comparações, expressões lógicas e if-then-else