User Tools

Site Tools


Sidebar

Olá! Esta é a wiki onde vamos anotando e organizando as nossas ideias, projectos e planos.

O registo está fechado por causa do spam. Para criar conta escreve-nos para bomdia [AT] transparenciahackday.org

Wiki

2017-10

pad original

Easily join the IRC/Matrix channel from your browser:

  \url{https://tinyurl.com/opendata-pt} or \url{http://transparanciahackday.org/chat}

[este é um bloco de notas colaborativo, edita à vontade! O Ricardo está a tirar as notas mas és bem-vindo/a para ajudar à tarefa :-] português ou inglês :-D multilingue e depois editamos à vontade :-)

PIZZA

MENU: <\url{https://static1.squarespace.com/static/55cf4e47e4b0c22f9be26dd4/t/55e5ced4e4b0b727150cf233/1441124052559/MenuMrpizza2014.jpg}> Escolhas do povo (vamos encomendar 4!):

  • 15 - Siciliana
  • 05 - Capricciosa
  • 13 - 4 Queijos
  • 18 - Carnivora

Retomamos às 14:00! - We come back at 14:00!

Workshop: Programming for Non-Programmers Mathijs de Bruin <\url{http://mathijsfietst.nl}>

Code examples and source code for slides: \url{https://github.com/dokterbob/programming-workshop} Example (de)anonimyzer: \url{https://github.com/dokterbob/programming-workshop/blob/master/examples/date\_with\_data.py} Slides: \url{http://tinyurl.com/programming-part1} (são open-source, pode-se usar e abusar!)

Automatizar processos que governam a sociedade Não é bem sobre programação (há muitos bons livros sobre isso), mas sobre como os computadores funcionam, os usos da automatização e as conotações do seu potencial.

1. O que são computadores? 2. Como são programados? 3. Olá mundo! O nosso primeiro programa 4. Variáveis, condições, loops 5. Mãos na massa!

Software livre/GNU, Richard Stallman: Se não podes programar um computador, ele não é realmente teu (if you can't program it, you don't own it)

O que são os computadores? Muitos dos termos que usamos hoje para falar de computadores e funções/tarefas/actividades do nosso computador fazem referência ao funcionamento físico das primeiras máquinas e continuam a ser usados mesmo quando já não fazem sentido.

Alan Turing: um génio por trás da vitória aliada na segunda guerra mundial, que estabelece a noção de máquina universal Máquina universal: Qualquer computador deve poder emular qualquer outro computador, e pode fazer qualquer tipo de processamento de informação [isto não está muito correcto mas prontos]

Os computadores são um conjunto enorme de interruptores electrónicos interligados (e alguma memória), funcionando a partir de lógica booleana Bits e bytes (1 byte = 8 bits = 2 nibbles)

Os computaores são máquinas com uma série de interruptores. Turing-completeness: Característica de uma máquina/computador que estipula que pode fazer qualquer tipo de cálculo básico (a partir de 0 e 1)

Charles Babbage: Teorizou o primeiro computador mecânico [Vale a pena ler o livro The Difference Engine (ver slides) sobre uma versão alternativa de uma história onde o computador de Babbage foi construído]

Interruptores, vieram substituir os relés (relays), que são formas mecânicas de ativar e desativar electro-ímanes (ex. piscas dos automóveis) Os interruptores ligados em conjunto podem criar circuitos lógicos Circuitos integrados (chips) contêm milhões de interruptores e micro-ligações na sua superfície Mecânica quântica veio tornar possível reduzir o tamanho dos componentes dos computadores.

Componentes dos computadores: - RAM, memória de curto prazo - Memória persistente (disco duro, pen, cartão SD) – para ser executado, um programa tem de ser passado para a RAM - CPU (unidade central de processamento) - BIOS (sistema básico de entrada e saída), um programa que está integrado no próprio computador e que trata das suas funções elementares (ex. iniciar o sistema operativo no arranque)

User interface: antigamente eram cartões perfurados e impressoras (não existiam monitores!), uns tempos depois passámos a usar teclados para operar consolas (terminais de texto) e, mais tarde, ratos para operar GUIs (interfaces gráficos) As primeiras programadoras, antes de programação de tornar um trabalho, eram mulheres. Eram conhecidas como 'operadoras de computadores'.

BIOS: É a primeira coisa que o computador faz: o CPU vai à BIOS para correr o seu código e abrir o sistema operativo O Sistema operativo (SO) situa-se entre os programas que usamos e as operações elementares do hardware (ex. desenhar coisas no ecrã, gerir prioridade entre as tarefas a executar) Ex: Windows, UNIX

Arpanet, percursora da Internet. Era uma rede de computadores criada pelo departamento de defesa americano. Era preciso um SO que pudesse funcionar com a Internet, mas nem existia uma linguagem de programação que pudesse lidar com essa tarefa – assim nasceu a linguagem C

Linguagens de programação “low-level”: lidam com tarefas mais elementares como gestão de memória (ex. em que parte da memória uma parte do programa vai correr) “high-level”: trata de tarefas mais complexas, abstraindo a complexidade (ex. ler uma fotografia e reconhecer um rosto)

A linguagem mais “low-level” é Assembly language, que é essencialmente um conjunto de 0 e 1 que representam diferentes instruções que são executadas diretamente pelo CPU

As linguagens “high-level” podem ser compiladas (o código é lido e empacotado numa forma binária) ou interpretadas (executadas linha a linha à medida que o programa corre)

Linguagens de programação: Python, PHP, C, C++, Java, Brainfuck… Existem linguagens como o Brainfuck que são propositadamente esotéricas: <\url{https://en.wikipedia.org/wiki/Esoteric\_programming\_language}> <\url{https://esolangs.org}>

Python! - linguagem interpretada - corre em todo o lado (Android, data science, webapps…) - não temos de nos preocupar com memória, tipos de variáveis… é feita para ser lida por pessoas e fácil de escrever - é software livre, podemos usar, distribuir..

Estruturas

  1. Variáveis: uma forma de cristalizar partes (ex: valores, fórmulas, …) que vamos usar recorrentemente no nosso programa
  2. Condições: forma de levar o programa numa direção ou noutra de acordo com uma condição particular
  3. Loops: repetir conjuntos de operações
  4. Funções - ações referíveis por nomes, conjuntos de operações que podem variar de acordo com os parâmetros (variáveis) que lhes damos
  5. Bibliotecas - funções escritas por outros, para não termos de repetir o que outras pessoas já resolveram

Documentação: quando queremos fazer alguma coisa em python podemos consultar a documentação <3 Comentários: pedaços de texto ignorados pelo computador, feitos para podermos documentar o que o código faz para outras pessoas (e para nós também!) de forma também a organizar o código por partes Temos de indicar ao nosso programa partes que são texto, assinaladas com “texto aqui” (chamadas de strings) senão ele interpreta o texto como números. Python download <\url{http://python.org}> Editores de texto: Sublimetext <\url{http://www.sublimetext.com/}>, Atom <\url{https://atom.io/}>, Geany <\url{http://www.geany.org/}> Versão de Python: 3.6.3! Jupyter <\url{http://jupyter.org/}>

Correr python diretamente do notepad++ - Executar (F5) - (programa a executar) python.exe -i “$(FULL\_CURRENT\_PATH)”

Exprimentar o Jupyter: <\url{https://try.jupyter.org/}> Instalar o jupiter com o pip:

  python3 -m pip install jupyter
  Depois de instalar podemos utilizar em try jupiter - new - python

Ideias para programas em python:

  • Quantos dias tenho? Usar o programa que nos dá a idade mas, em vez de usar anos, usar dias

Perguntas - Questions:

What's your name? When is your birthday?

Exercícios:

  mylist=[1,2,3]
  mylist.append(5)
  my\_dictionary={'name':'Mathijs','age':32}
  my\_dictionary['name']
  ...
  
  
  
2017-10.txt · Last modified: 2017/10/29 06:18 by rlafuente