programação para juristas - prof. matheus passos§ computadores são feitos para realizar tarefas...

26
z Programação para Juristas Prof. Matheus Silva

Upload: others

Post on 25-Jul-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programação para Juristas - Prof. Matheus Passos§ Computadores são feitos para realizar tarefas repetitivas § Solução de problemas do dia a dia –utilizadorvs. programador

z

Programação para Juristas

Prof. Matheus Silva

Page 2: Programação para Juristas - Prof. Matheus Passos§ Computadores são feitos para realizar tarefas repetitivas § Solução de problemas do dia a dia –utilizadorvs. programador

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

Page 3: Programação para Juristas - Prof. Matheus Passos§ Computadores são feitos para realizar tarefas repetitivas § Solução de problemas do dia a dia –utilizadorvs. programador

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!

Page 4: Programação para Juristas - Prof. Matheus Passos§ Computadores são feitos para realizar tarefas repetitivas § Solução de problemas do dia a dia –utilizadorvs. programador

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.

Page 5: Programação para Juristas - Prof. Matheus Passos§ Computadores são feitos para realizar tarefas repetitivas § Solução de problemas do dia a dia –utilizadorvs. programador

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

Page 6: Programação para Juristas - Prof. Matheus Passos§ Computadores são feitos para realizar tarefas repetitivas § Solução de problemas do dia a dia –utilizadorvs. programador

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)

Page 7: Programação para Juristas - Prof. Matheus Passos§ Computadores são feitos para realizar tarefas repetitivas § Solução de problemas do dia a dia –utilizadorvs. programador

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

Page 8: Programação para Juristas - Prof. Matheus Passos§ Computadores são feitos para realizar tarefas repetitivas § Solução de problemas do dia a dia –utilizadorvs. programador

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.

Page 9: Programação para Juristas - Prof. Matheus Passos§ Computadores são feitos para realizar tarefas repetitivas § Solução de problemas do dia a dia –utilizadorvs. programador

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.

Page 10: Programação para Juristas - Prof. Matheus Passos§ Computadores são feitos para realizar tarefas repetitivas § Solução de problemas do dia a dia –utilizadorvs. programador

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 €)

Page 11: Programação para Juristas - Prof. Matheus Passos§ Computadores são feitos para realizar tarefas repetitivas § Solução de problemas do dia a dia –utilizadorvs. programador

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?

Page 12: Programação para Juristas - Prof. Matheus Passos§ Computadores são feitos para realizar tarefas repetitivas § Solução de problemas do dia a dia –utilizadorvs. programador

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.

Page 13: Programação para Juristas - Prof. Matheus Passos§ Computadores são feitos para realizar tarefas repetitivas § Solução de problemas do dia a dia –utilizadorvs. programador

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)

Page 14: Programação para Juristas - Prof. Matheus Passos§ Computadores são feitos para realizar tarefas repetitivas § Solução de problemas do dia a dia –utilizadorvs. programador

zO básico da arquitetura de um

computador

Page 15: Programação para Juristas - Prof. Matheus Passos§ Computadores são feitos para realizar tarefas repetitivas § Solução de problemas do dia a dia –utilizadorvs. programador

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)

Page 16: Programação para Juristas - Prof. Matheus Passos§ Computadores são feitos para realizar tarefas repetitivas § Solução de problemas do dia a dia –utilizadorvs. programador

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.

>>>

Page 17: Programação para Juristas - Prof. Matheus Passos§ Computadores são feitos para realizar tarefas repetitivas § Solução de problemas do dia a dia –utilizadorvs. programador

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.

Page 18: Programação para Juristas - Prof. Matheus Passos§ Computadores são feitos para realizar tarefas repetitivas § Solução de problemas do dia a dia –utilizadorvs. programador

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

Page 19: Programação para Juristas - Prof. Matheus Passos§ Computadores são feitos para realizar tarefas repetitivas § Solução de problemas do dia a dia –utilizadorvs. programador

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

Page 20: Programação para Juristas - Prof. Matheus Passos§ Computadores são feitos para realizar tarefas repetitivas § Solução de problemas do dia a dia –utilizadorvs. programador

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

Page 21: Programação para Juristas - Prof. Matheus Passos§ Computadores são feitos para realizar tarefas repetitivas § Solução de problemas do dia a dia –utilizadorvs. programador

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

Page 22: Programação para Juristas - Prof. Matheus Passos§ Computadores são feitos para realizar tarefas repetitivas § Solução de problemas do dia a dia –utilizadorvs. programador

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)

Page 23: Programação para Juristas - Prof. Matheus Passos§ Computadores são feitos para realizar tarefas repetitivas § Solução de problemas do dia a dia –utilizadorvs. programador

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

Page 24: Programação para Juristas - Prof. Matheus Passos§ Computadores são feitos para realizar tarefas repetitivas § Solução de problemas do dia a dia –utilizadorvs. programador

zPassos sequenciais

x = 2

print(x)

x = x + 2

print(x)

Page 25: Programação para Juristas - Prof. Matheus Passos§ Computadores são feitos para realizar tarefas repetitivas § Solução de problemas do dia a dia –utilizadorvs. programador

zPassos condicionais

x = 5

if x < 10:

print(“Menor que 10”)

if x > 20:

print(“Maior que 10”)

print(“Fim”)

Page 26: Programação para Juristas - Prof. Matheus Passos§ Computadores são feitos para realizar tarefas repetitivas § Solução de problemas do dia a dia –utilizadorvs. programador

zPassos repetitivos

n = 5

while n > 0:

print(n)

n = n – 1

print(“Fim”)