programação para juristas - prof. matheus passos§ computadores são feitos para realizar tarefas...
TRANSCRIPT
z
Programação para Juristas
Prof. Matheus Silva
zFormação acadêmica
§ Licenciatura em Ciência da Computação
§ Licenciatura em Ciência Política
§ Mestrado em Ciência Política
§ Pós-graduação em Direito Eleitoral
§ Doutoramento em Direito (Clássica – falta apresentação da tese)
§ Doutoramento em Direito (Nova – iniciando fase da tese)
§ Pós-graduação avançada em Direito da Proteção de Dados
§ Contatos: [email protected], https://www.linkedin.com/in/profmatheus
zAtuação profissional
§ Professor em cursos de Direito desde 2004
§ Cadeiras ministradas: Ciência Política, Teoria do Estado, Direito Constitucional, Direito Eleitoral, Metodologia de Pesquisa, Orientação de Trabalho de Conclusão de Curso
§ Coordenador de investigação na área jurídica, com ênfase nas áreas de Direito Eleitoral, Direito Constitucional e uso da tecnologia no Direito
§ Atualmente: Data Protection Officer na L’Oréal Portugal
§ Programação e tecnologia em geral: hobby!
zO que é a “programação para juristas”?
§ Questionário: http://bit.ly/prog-jur
§ Não há certo ou errado, bom ou ruim.
§ Responder de maneira individual e sincera!
§ Para a pergunta n.º 1: 1 significa o mínimo e 5 significa o máximo.
zO que é a “programação para juristas”?
§ Conhecimento sobre tecnologia em geral
§ Saber o básico sobre como um software funciona
§ Desmistificar a tecnologia – “algoritmos” ou IA
§ Criação de ferramentas para automatizar tarefas simples
§ Mercado de “advogados-programadores” em alta
§ Apresentação de novas tendências na área da tecnologia
zQuais são os pré-requisitos?
§ Portátil
§ Raciocínio lógico (ou ao menos interesse no mesmo)
§ Conhecimentos mínimos de alguns comandos
§ Acompanhamento pelo material a ser disponibilizado
§ Perguntar quando houver dúvidas
§ Programas instalados no computador (explicação posterior)
zPor que programar?
§ Estímulo à criatividade
§ Abundância de computadores – por quê não utilizá-los a seu favor?
§ Computadores são feitos para realizar tarefas repetitivas
§ Solução de problemas do dia a dia – utilizador vs. programador
§ Receber algum dinheiro em troca – em 2018 programadores da Apple Store receberam o equivalente a 31 mil milhões de euros
§ 3 milhões de programadores em todo o mundo – média de 860 euros por mês
zHá relação entre Direito e
programação?§ Lei n.º 58/2019, de 8 de agosto
§ Lei de Proteção de Dados – https://dre.pt/application/file/a/123813850
§ Art. 37.º, n.º 1 – “contraordenações muito graves”
§ c) O incumprimento das regras relativas à prestação do consentimento previstas no artigo 7.º do RGPD
§ Art. 37.º, n.º 2 – punições às contraordenações muito graves
§ a) De 5.000 € a 20.000.000 € ou 4 % do volume de negócios anual, a nível mundial, conforme o que for mais elevado, tratando-se de grande empresa;
§ b) De 2.000 € a 2,000.000 € ou 4 % do volume de negócios anual, a nível mundial, conforme o que for mais elevado, tratando-se de PME;
§ c) Coimas de 1.000 € a 500.000 €, no caso de pessoas singulares.
zHá relação entre Direito e
programação?§ Crime, artigo 46.º: utilização de dados de forma incompatível com
a finalidade da recolha
§ 1 – Quem utilizar dados pessoais de forma incompatível com a finalidade determinante da recolha é punido com pena de prisão até um ano ou com pena de multa até 120 dias.
§ 2 – A pena é agravada para o dobro nos seus limites quando se tratar dos dados pessoais a que se referem os artigos 9.º e 10.º do RGPD.
zHá relação entre Direito e
programação?§ “Traduzindo” o art. 37.º para uma linguagem de programação
(imprópria):
SE <agente de tratamento> não cumprir regras de consentimento:
SE <agente de tratamento> == “pessoa singular”:
Aplicar(coima de 1.000 € a 500.000 €)
SENÃO, SE <agente de tratamento> == “PME”:
Aplicar(coima de 2.000 € a 2,000.000 €)
SENÃO, SE <agente de tratamento> == “grande empresa”:
Aplicar(coima de 5.000 € a 20.000.000 €)
zHá relação entre Direito e
programação?§ O mesmo com o art. 46.º:
pena_art_46 = [(pena prisão até 1 ano) ou (pena multa até 120 dias)]
SE utilização de dados != finalidade da recolha :
Aplicar(pena_art_46)
SE <dados pessoais> == art_9_ou_art_10:
Aplicar(pena_art_46 * 2)
§ O “código” acima tem um erro – qual?
zHá relação entre Direito e
programação?§ Código correto:
pena_art_46 = [(pena prisão até 1 ano) ou (pena multa até 120 dias)]
SE utilização de dados != finalidade da recolha :
SE <dados pessoais> == art_9_ou_art_10:
Aplicar(pena_art_46 * 2)
Aplicar(pena_art_46)
§ Este é um exemplo do raciocínio lógico ao qual anteriormente se referiu.
zO básico da arquitetura de um
computador§ Dispositivos de entrada (teclado, rato, ecrã, USB, portas de rede)
§ Central Processing Unit (CPU)
§ Memória principal (Random Access Memory)
§ Memória secundária (hard drive, pendrive)
§ Dispositivos de saída (monitor, ecrã, impressora, USB, portas de rede)
zO básico da arquitetura de um
computador
zA linguagem de programação Python
§ Disponível gratuitamente: https://www.python.org/downloads
§ Para quem não está com um portátil (ou prefere não instalar o Python por enquanto): https://www.pythonanywhere.com
§ Será necessário criar uma conta – escolher opção gratuita
§ Após as devidas confirmações, entrar em “My Dashboard”
§ No dashboard escolher “New Console” (lado esquerdo)
zA linguagem de programação Python
§ Após a instalação, abrir prompt de comando ou terminal
§ Digitar “python3” (sem aspas) – no Windows digitar “py”
MacBook-Air-de-Matheus:~ matheuspassossilva$ python3
Python 3.7.4 (v3.7.4:e09359112e, Jul 8 2019, 14:54:52)
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>>
zA linguagem de programação Python
MacBook-Air-de-Matheus:~ matheuspassossilva$ python3Python 3.7.4 (v3.7.4:e09359112e, Jul 8 2019, 14:54:52)[Clang 6.0 (clang-600.0.57)] on darwinType "help", "copyright", "credits" or "license" for more information.>>> x = 1>>> print(x)1>>> x = x + 1>>> print(x)2>>> quit() Digite o que está em amarelo e confirme
que o Python está devidamente instalado.
zA sua primeira frustração com o Python
MacBook-Air-de-Matheus:~ matheuspassossilva$ python3
Python 3.7.4 (v3.7.4:e09359112e, Jul 8 2019, 14:54:52)
[Clang 6.0 (clang-600.0.57)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> x == 1
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'x' is not defined
>>> Deparou-se com um syntax error
zElementos básicos do Python
§ Palavras (inclusive reservadas) para variáveis e funções;
§ Estrutura de “história”: construção de um algoritmo que realmente faz alguma coisa.
§ Estruturas de sentenças: sintaxe padrão válida
zElementos básicos do Python
name = input(“Digite o nome do ficheiro:”)handle = open(name)counts = dict()for line in handle:
words = line.split()for word in words:
counts[word] = counts.get(word,0) + 1bigcount = Nonebigword = Nonefor word,count in counts.items():
if bigcount is None or count > bigcount:bigword = wordbigcount = count
print(bigword, bigcount)Uma pequena “história” sobre como
contar palavras em um ficheiro em Python
zAlgumas palavras reservadas
False class return is finally
None if lambda for continue
True def from while nonlocal
and del global not with
as elif try or yield
assert else import pass break
except in raise dict FUNÇÕES
zA melhor maneira de rodar um algoritmo
§ É possível realizar algumas tarefas no terminal
§ Como a maioria dos programas é muito mais longa, é melhor digitar os comandos em um arquivo e dizer ao Python para executar os comandos no arquivo.
§ Contudo, isto só é interessante para poucas frases (3-4)
§ Os ficheiros devem ter extensão “.py” – indicação de que contêm comandos Python.
§ Sugestão de editor de texto para o Python: Atom (https://atom.io)
zOs passos de um algoritmo
§ Um algoritmo nada mais é do que uma sequência de passos a serem executados em ordem
§ Há passos que são condicionais – podem ser pulados
§ Há passos que são repetitivos – são realizados até que determinada condição se concretize
§ Há passos que são guardados em uma espécie de recipienteespecífico para serem utilizados outras vezes ao longo do programa – funções
zPassos sequenciais
x = 2
print(x)
x = x + 2
print(x)
zPassos condicionais
x = 5
if x < 10:
print(“Menor que 10”)
if x > 20:
print(“Maior que 10”)
print(“Fim”)
zPassos repetitivos
n = 5
while n > 0:
print(n)
n = n – 1
print(“Fim”)