programação para juristas · 2019-09-25 · utilizando o python •tanto...
TRANSCRIPT
Programação para JuristasP R O F . M A T H E U S S I L V A
2 0 1 9 - 0 9 - 2 5
Utilizando o Python• Tanto no Mac quanto no Windows: recomendável a utilização do editor de
texto Atom. Sempre guardar com extensão .py.
•Mac: terminal, ir para a pasta em que está o ficheiro .py, python3nome_ficheiro.py
•Windows: linha de comando, ir para a pasta em que está o ficheiro .py, pynome_ficheiro.py
• PythonAnywhere.com: fazer login em sua conta, no dashboard carregar em“browse files”, em seguida digitar um novo nome com extensão .py e depois“new file”.
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Realizando debug em um programa
•Debug = depuração. Processo de encontrar a causa de um erro emum código.
•O processo de depuração pode envolver os seguintes passos:• Examinar o código por meio da leitura do mesmo, tentando descobrir
se ele está fazendo o que você deseja;• Fazer pequenas mudanças no código, incluindo a função print() em
partes distintas para que você veja o resultado do que o programa fazaté ali;
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Realizando debug em um programa
• Analisar o tipo de erro apresentado, buscando descobrir o que estasmensagens significam e vinculando as mensagens com algumaeventual causa;• Desfazer as mudanças recentes, dando um passo atrás para poder
depois dar dois passos à frente.
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Possíveis tipos de erros no Python
• Erros de sintaxe: erros de “gramática”;
• Erros de lógica: quando a ordem das frases está errada;
• Erros de semântica: quando não há erros de sintaxe nem de lógica,mas mesmo assim o programa não faz aquilo que dele se espera.
•Geralmente o Python irá indicar a linha em que o erro ocorre e qualé o erro, mas isto nem sempre irá ocorrer exatamente como seespera.
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Realizando debug em um programa
n = 5
while n > 0:
n = n - 1
print(n)
print(“Fim”)
n = 5
while n > 0:
print(n)
n = n - 1
print(“Fim”)
n = 5
while n > 0:
print(n)
n = n - 1
primt(“Fim”)
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Exercícios: primeiros programas “oficiais”
•Mostre a mensagem “Hello, World!” (sem aspas).
print(“Hello, World!”)
•Mostre os números de 5 a 1, um em cada linha, sem utilizar ocomando while.
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Valores e tipos de valores
•Valores: elemento básico de qualquer programa em Python.
•Os valores podem ser de tipos diferentes.
•Até aqui trabalhamos com dois tipos diferentes: int e str.
•Há ainda outros dois tipos de valores no Python: float e boolean.
• Para descobrir o tipo de valor usa-se a função type().
• Exercício: indique o tipo de 123, o tipo de “Hello, World” e o tipo de 123.0.
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Valores e tipos de valores
• type(“123”) == type(123)?
•Qualquer coisa que apareça entre aspas será str, mesmo números.
•print(type(123))
•print(type(“123”))
•Qual o resultado deste comando: print(1,000,000)?
•Acima: erro semântico – não há mensagem de erro, mas há erro!
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Variáveis
•Variável: um nome que se refere a algum valor.
•Uma declaração de atribuição cria novas variáveis e fornece valoresa elas, ou altera seu conteúdo após sua declaração:
•mensagem = “Todos estão começando a perceber de programação.”
•n = 74
•pi = 3.14159265359 ... Ou pi = 3,14159265359?
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Exercício – variáveis
•Declare duas variáveis, pi1 = 3.14159265359 e pi2 = 3,14159265359
•Mostre o conteúdo destas duas variáveis, bem como seus tipos.
pi1 = 3.14159265359pi2 = 3,14159265359print(pi1)print(pi2)print(type(pi1))print(type(pi2))
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Constantes
•Valores que nunca mudam ao longo de um programa.
•horas_do_dia = 24
•minutos_por_dia = horas_do_dia * minutos_por_hora
•minutos_por_hora = 60
•print(minutos_por_dia)
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Nomes de variáveis e/ou constantes
•Como dar nomes a variáveis ou a constantes?
• Não podem começar por números: 74alunos_prog_jur = 74;• Não podem ter caracteres especiais: 74alun@s_prog_jur = 74;• Não podem ser palavras reservadas: class = “74 alunos”.
•Recomendações:
• Não começar com sublinha/underscore: _• Não começar com maiúsculas.
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Nomes de variáveis e/ou constantes
•Nomes de variáveis/constantes têm o tamanho desejado peloprogramador.
• esta_turma_de_programacao_para_juristas_tem_um_total_de_setenta_e_quatro_alunos_se_nao_estou_em_erro = 74
•Há distinção entre maiúsculas e minúsculas: spam != Spam != SPAM
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Nomes de variáveis e/ou constantes
•Geralmente utilizam-se nomes de variáveis e/ou de constantes quetenham significado para o programador.
bfhf8j = 40
j6hbyk = 3.75
ejE6Y4 = bfhf8j * j6hbyk
gwL2KS = ejE6Y4 * 4
print(gwL2KS)
horas_por_semana = 40
valor_por_hora = 3.75
valor_por_semana = horas_por_semana * valor_por_hora
valor_por_mes = valor_por_semana * 4
print(valor_por_mes)
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Operadores
•Operadores são utilizados para realizar processos computacionais.
•Alguns já foram apresentados: +, -, * e /.
print(7**3)print(7%3)print(7//3)
•Há ainda os operadores **, % e //.
print(7**3) – potênciaprint(7%3) – restoprint(7//3) – quociente
Atenção!print(1//60)print(1/60)
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Operadores
•O operador + é também utilizado para concatenar strings.
a = “Olá,”
b = “mundo!”
print(a + b)
A) Olá,mundo!
B) Olá, mundo!
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Operadores
•O operador * é também utilizado para “multiplicar” strings.
a = “Teste”
b = 3
print(a * b)
A) Traceback
B) TesteTesteTeste
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Operadores
•Cuidado ao tentar concatenar str com int:
a = “Teste” b = 3
print(a + b)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: can only concatenate str (not "int") to str
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Ordem dos operadores
•Qual o valor final de x?
x = 5
x = 3.9 * x * (1 - x)
print(x)
•Resultado: -78.0
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Ordem dos operadores
•Ordem de precedência:
•Parênteses: 2 * (3 - 1) = 4; (1 + 1) ** (5 - 2) = 8.
•Potência: 2 ** 1 + 1 = 3, não 4; 3 * 1 ** 3 = 3, não 27.
•Multiplicação, Divisão e Resto: 2 * 3 - 1 = 5, não 4; 6 + 4 / 2 = 8, não5.
•Adição e Subtração.
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Ordem dos operadores
•Operadores com a mesma precedência são executados da esquerdapara a direita: 5 - 3 - 1 = 1, não 3.
•Recomendação: sempre colocar parênteses para deixar clara paravocê mesmo a ordem de precedência.
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Conversão entre tipos
•O Python converte automaticamente int em float se estes tipos devalores estiverem na mesma expressão.
x = 200.0
y = 5
z = x / y
print(type(z))
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Conversão entre tipos
• Porém, há determinados momentos em que o programador querconverter propositadamente os tipos.
•A divisão de int por outro int sempre resulta em float – mas oprogramador pode querer (ou precisar) o resultado em int.
type(10 / 5)
x = int(10 / 5)
print(type(x))
• Pode também ser necessário converteruma str em float – quando trabalha-se comnúmeros com casas decimais, por exemplo.
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Conversão entre tipos
• Pode ser necessário converter uma sequência de números emformato str para int (ou vice-versa).
x = “123”type(x)y = int(x)type(y)print(x == y)
a = 123type(a)b = str(a)type(b)print(a == b)
Porém:n = “Teste”p = int(n)Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: 'Teste'
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Entrada de dados
• Para que o programa receba dados utiliza-se a função input().
•A função input() sempre retorna valores do tipo str.
entrada = input()
print(entrada)
print(type(entrada))
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Entrada de dados
• É recomendável dizer ao utilizador o que se espera dele.
nome = input(“Insira seu nome: ”)
print(nome)
•Não se esqueça! A função input() sempre retorna valores do tipostr. Se forem solicitados números ao utilizador deve-se convertê-losde str para int (ou float) antes de utilizá-los.
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Comentários no programa
• É possível inserir comentários – pequenas notas – no meio docódigo para esclarecimentos a respeito do mesmo.
•Os comentários são ignorados pelo Python.
# pede o nome do utilizador
nome = input(“Digite seu nome: ”)
• Tudo que vier após o símbolo # será ignorado.
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Comentários no programa
# pede o nome do utilizador
nome = input(“Digite seu nome: ”)
nome = input(“Digite seu nome: ”) # pede o nome do utilizador
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Comentários no programa
• Podem ser feitos comentários em várias linhas, bastando inserir trêsaspas duplas no início e ao final do trecho.
nome = input(“Insira seu nome: ”)"""Isto é um comentárioem várias linhas."""print(nome)
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Exercício 1
• Escreva um programa que solicite o nome do utilizador e, emseguida, lhe dê boas vindas.
Digite seu nome: Fulano
Bom dia, Fulano!
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM
Exercício 2
• Escreva um programa para solicitar ao utilizador o número de horastrabalhadas por semana e o valor pago por hora para calcular osalário bruto por mês. Desconsidere os cêntimos, se for o caso.
Digite o número de horas por semana: 37
Digite o valor pago por hora: 2.7
Salário bruto por mês: 399 euros.
© 2019 PROF. MATHEUS PASSOS – HTTPS://PROFMATHEUS.COM