Notas de Aula: Python [Introdução à Informática para Automação] (2020, em construção)
Table of Contents
1 Aula 1
1.1 Apresentação
Disciplina, Programação e Ambiente de Trabalho
1.2 Comandos Linux
ls, cd, cd .., mkdir, rm
1.3 Python
Python é uma linguagem de alto nível, legível e interpretada, que pode ser usada para muitas tarefas comuns de computação. É encontrado na maioria dos sistemas operacionais modernos.
- Documentação & Instalação http://www.python.org
- IDE (Integrated Development Environment) simples idle
- Pacote turtle (
from turtle import *
) - Operações aritméticas
+, -, *, /, %
(python como calculadora)
2 Aula 2 (introdução ao Turtle, variáveis, rotinas, repetição simples)
2.1 Sumário
Revisão, Variáveis, Rotinas (Modularização), Parâmetros, Desvio de fluxo na chamada de funções, Repetição simples (loops), Funções
2.2 Código de quadrado
Código que desenha quadrado usando variáveis, rotinas, funções e repetições
from turtle import * from random import * def gera_numero(): return randint(-200,200) def quadrado(x,y,lado,cor): up() goto(x,y) down()hh fillcolor(cor) begin_fill() for _ in range(4): forward(lado) right(90) end_fill() cor = "green" lado = 50 quadrado(10, 100, lado, cor) cor = "red" x = gera_numero() lado = 200 quadrado(x, gera_numero(), lado, cor) def telhado(): pass def base(): pass def janela(): pass def casa(x,y):
3 Aula 3 (funções, repetição, condicional)
3.1 Sumário
Revisão, Listas, + Loops, + Funções, Condicional, Simulação simples de robô e rede neural aleatória
3.2 Código de simulação de um neurônio
# entradas x1 = 0.9 x2 = 0 x3 = 0 x4 = 0 x5 = 0 # pesos do neuronio w1 = 0.3 w2 = 0.5 w3 = 0.1 w4 = 0.9 w5 = 0.11 y = x1*w1 + x2*w2 + x3*w3 + x4*w4 + x5*w5 print("Entradas (Sensores do robô) : ", x1, x2, x3, x4, x5) print("Pesos: ", w1, w2, w3, w4, w5) print("Saida (Presença de obstáculo): ", y)
3.3 Exercícios
3.3.1 Lista 1
- Crie uma função
calcula_saida_neuronio(x1,x2,x3,x4,x5,w1,w2,w3,w4,w5)
- Agrupe as entradas
x_i
em uma estrutura de dados chamada lista. Faça o mesmo para os pesosw_i
. - Modifique a função acima para usar a lista ao invés de variáveis (
calcula_saida_neuronio(entradas, pesos)
). - Adicione ao neurônio uma função de ativação sinal, com limiar 0.5 (uso de condicional
if
) - Defina uma função
define_pesos_neuronio(n)
que retorne uma lista de pesos aleatórios de tamanhon
.
3.3.2 Lista 2
- simule em um loop (repetição) o robô caminhando por 5 iterações em um ambiente com presença de obstáculos (utilize uma lista de listas chamada
simulacao
para simular os sensores em diferentes instantes de tempo) - troque a função de ativação para sigmoide:
1/(1+exp(-x))
(use:import math; math.exp()
) - crie um círculo na tela com a tartaruga para representar o neurônio; pinte o neurônio de modo que a intensidade de cinza seja proporcional à ativação do neurônio
- execute a simulação (loop) pintando o neurônio na tela (defina 1 segundo o tempo entre iterações subsequentes, usando a função
time.sleep(1)
- pacote:import time
)
3.3.3 Lista 3
- crie uma camada de neurônios, como uma lista de pesos de neurônios
- desenhe a camada de neurônios na tela com os mesmos dispostos verticalmente, e realize uma simulação como feito no ex.4 da Lista 2
- crie uma rede neural, através de uma lista composta por uma camada de neurônios e um neurônio de saída (as entradas do neur. de saída são as saídas dos neurônios da camada)
- desenha a rede neural (camada + neur.saida) durante a simulação do robô
- o neurônio de saida fica mais escuro ou mais claro? Isso acontece sempre?
3.4 Comandos
- Lista de números
lista = [0.3, 4, 0.01]
-
Criar uma lista vazia
lista = []
-
Adicionar um elemento (número 5) a uma lista
lista.append(5)
-
Tamanho da lista:
len(lista)
- Condicional if:
x = 5 if x > 4: print("maior que 4") else: print("menor ou igual a 4")
- Loop sobre uma lista:
for t in range(len(simulacao)): print(simulacao[t])
- Lista de listas
b = [3,4] lista = [[1,2], b] print(lista) print("Lista 1: ", lista[0]) print("Lista 2: ", lista[1]) print("Segundo elemento da Lista 1: ", lista[0][1])