Monthly Archives: March 2017

Lição 2: Mais exercícios com o Turtle

Mais comandos do Turtle

turtle.penup() # Levantar a 'caneta' do turtle. Assim vc pode mudar o turtle sem desenhar nada

turtle.pendown() # Abaixar a 'caneta' do turtle, para começar desenhar

turtle.begin_fill() # Usa esse comando antes de começar desenhar uma forma, para encher a forma com cor

turtle.end_fill() # Usa esse comando depois de desenhar uma forma, para encher a forma com cor

turtle.goto(x, y) # Ir direito para uma posição. Os parâmetros x e y representam os coordenadas da posição onde vc quer que o turtle vá.

turtle.circle(radius) # Desenhar um círculo

 Um exemplo

Aqui tem um exemplo que usa uma função e usa os comandos que a gente aprendeu

import turtle
turtle.shape("turtle")

# draw a square
def desenha_triangulo(cor):
    turtle.color(cor)
    turtle.begin_fill()
    turtle.left(45)
    turtle.forward(100)
    turtle.left(90)
    turtle.forward(100)
    turtle.left(136)
    turtle.forward(140)
    turtle.end_fill()

turtle.left(100)

desenha_triangulo("blue")
turtle.left(15)
desenha_triangulo("green")
turtle.left(15)
desenha_triangulo("red")
turtle.left(15)
desenha_triangulo("yellow")
turtle.left(15)
desenha_triangulo("pink")
turtle.left(15)

turtle.color('black')
turtle.left(180)
turtle.forward(180)

turtle.mainloop()

Lição 1: Introdução à programação

O que é programação:

  • Idioma para falar com o computador
  • Linguagem imperativa: voçê está mandando ordens para o computador
  • A gramática é muito estrita: se voçê cometer um erro, o computador não vai entender

Python

  • Python é a linguagem que a gente vai usar nesse curso
  • É uma linguagem bem popular no mundo, usado no Facebook, Google, NASA, e jogos como Civilization IV

Turtle

  • Turtle é um pacote do Python que é usado para desenhar coisas na tela
  • O turtle tem varios comandos, incluindo: turtle.left()turtle.right()  turtle.forward()
  • Pode combinar esses comandos para desenhar formas, por exemplo:import turtle turtle.forward(100) turtle.right(90) turtle.forward(100) turtle.right(90) turtle.forward(100) turtle.right(90) turtle.forward(100) turtle.mainloop()Erros comuns:
    • Falta parêntese: turtle.forward(10
    • Error ortográfico: turtle.farward(100)

Variáveis

  • A gente usa variáveis para guardar informações na memoria
  • Com isso, nossos programas ficam mais flexiveis. Eu posso mudar o valor do variavel num lugar, e ele muda no programa inteiro, por exemplo
import turtle

tamanho = 200
angulo = 90

turtle.forward(tamanho)
turtle.right(angulo)
turtle.forward(tamanho)
turtle.right(angulo)
turtle.forward(tamanho)
turtle.right(angulo)
turtle.forward(tamanho)

turtle.mainloop()
  • É importante usar nomes relevantes com as variaveis, tipo ‘tamanho’ em vez de ‘x’
  • A gente pode deixa o computador calcular o valor de uma variavel:
import turtle

tamanho = 200
lados = 4
angulo = 360 / lados

turtle.forward(tamanho)
turtle.right(angulo)
turtle.forward(tamanho)
turtle.right(angulo)
turtle.forward(tamanho)
turtle.right(angulo)
turtle.forward(tamanho)

turtle.mainloop()

 for loop

  • Um princípio muito importante na programação é D.R.Y (Don’t Repeat Yourself) – Não Se Repita
  • Nesse programa encima, a gente tá repetindo a linha turtle.forward(tamanho) e turtle.right(angulo)
  • Para não ficar repetindo, a gente pode usar o for loop. O for loop diz para o computador: “Repita o seguinte X vezes”. Por exemplo
for i in range(4):
    turtle.forward(100)
    turtle.right(90)
  • Esse significa: Repita 4 vezes os duas linhas em baixo
  • Agora o programa encima vira:
import turtle

tamanho = 100
lados = 4
angulo = 360 / lados

for i in range(lados):
    turtle.forward(tamanho)
    turtle.right(angulo)

turtle.mainloop()
  • Agora a gente pode simplesmente modificar o ‘tamanho’ e o ‘lados’ para criar várias formas diferentes

Functions

  • Se a gente quisesse desenhar várias formas na mesma tela, a gente teria que copiar colar esse for loop e cada vez mudar o valor dos variaveis (tamanho, lados).
  • Como a gente nunca quer se repetir assim, a gente vai usar uma function (função)
  • A function está escrito assim (Preste atenção à sintaxe):
def desenhar_forma (lados, tamanho):
    angulo = 360 / lados
    for i in range(lados):
        turtle.forward(tamanho)
        turtle.right(angulo)
  • Esses codigos aqui é só a declaração da function. Ainda a gente não usou o function mesmo. Para usar, a gente tem que passar os parâmetros no mesmo ordem que eles são declarados:
import turtle

def draw_shape (lados, tamanho):
    angulo = 360 / lados
    for i in range(lados):
        turtle.forward(tamanho)
        turtle.right(angulo)

draw_shape(6, 100)

turtle.mainloop()
  • O uso da function tem que acontecer depois do que a declaração da function
  • No Python os espaços são importantes. Todas as linhas que estão dentro do function tem começar com um ‘tab’
  • Um function pode aceitar qualquer numero de parâmetros. Há outro comando no turtle para mudar o cor. Então a gente vai adicionar mais um parâmetro ao function, se chama ‘cor’. Assim a gente pode criar varias formas com cores diferentes.
import turtle

def draw_shape (lados, tamanho, cor):
    turtle.color(cor)
    angulo = 360 / lados
    for i in range(lados):
        turtle.forward(tamanho)
        turtle.right(angulo)

draw_shape(6, 100, "green")
draw_shape(3, 200, "red")

turtle.mainloop()
  • Lembra que os nomes dos variaveis não são importantes para o computador (eu poderia escolher nomes tipo “x”, “y”, “z” em vez de “lados”, “tamanho”, “angulo”, mais, mesmo assim, é importante escolher nomes relevantes para que outras pessoas possam entender a seu programa.

Mais comandos do turtle

  • Existem muitos mais comandos para o turtle. Para ver uma lista completa desses comandos, visita essa pagina aqui

Qualquer duvida, escreva um comentário aqui em baixo e eu vou responder 🙂 Obrigado!

Letter to Speaker Ryan

I sent the below letter to Speaker Paul Ryan on January 29th, 2017, in response to Trump’s executive order on immigration.

Speaker Ryan,

I am writing to you today as a U.S. citizen to express my strong opposition to Executive Order 13769, issued by Donald Trump on Friday, which would impose a 90 day ban on nationals from seven predominantly Muslim countries (Libya, Iran, Iraq, Somalia, Sudan, Syria, and Yemen) from entering the United States, as well as indefinitely suspending the Syrian Refugee program.

President Trump claims the enactment of this order is driven by a concern for national security. Given that you, Speaker Ryan, have on more than one occasion described yourself as a ‘policy wonk’, I thought you might be interested in some of the numbers pertinent to this issue. According to the Cato Institute, a libertarian think tank, between 1975 and 2015, the United States admitted over 3.25 million refugees, of whom only three ended up committing attacks that killed Americans. During the same period, our country granted protection to over 700,000 asylum seekers, of whom again only three would go on to perpetrate deadly terrorist attacks. Perhaps most importantly, of those combined six people, exactly zero hailed from countries targeted by President Trump’s ban. As justification for the draconian measure, Trump made reference in the text to the attacks on September 11, 2001, but again, none of the perpetrators of that horrific attack were from the countries mentioned above. It therefore beggars belief that this order arose out of a concern for the safety and security of Americans.

The chances of being killed by a foreign born terrorist is approximately 1 in 3.6 million. To put that figure in perspective, the odds of being killed by lightning are four times as high.

I work as a software engineer and I know of at least one tech conference (jsconf.eu) which has had to revise its schedule (and may even have to cancel its program entirely) as a result of this executive order. I suspect more will follow. What this means is less collaboration, less sharing of knowledge, and ultimately a diminished ability to solve the key engineering problems facing our country today. As a strong advocate for entrepreneurship and small business, you must appreciate the adverse effects this poses for economic growth.

Of course, mere economic disruption, though important, pales in comparison the very real distress and panic now visited upon the many many families who have loved ones now abroad and must wonder if and when they will be able to see them again. Allowing such a discriminatory and draconian order to go into effect is therefore not just imprudent but morally repugnant.

I urge you to do everything in your power, both in your capacity as Speaker of the House and as personal confidant of the President, to reverse this order, and replace it with a more sensible and moral immigration policy. Failing that, I ask that you provide a clear justification for your support of this order, since based on my arguments above, national security simply cannot logically be the driving factor.

Thank you for taking the time to read this.

Sincerely,

Rory MacQueen