terça-feira, 21 de fevereiro de 2017

Introdução a Programação parte 4: Estruturas de Repetição

Uma das grandes vantagens de criar um programa é que ele pode ser executado várias vezes sem muito esforço.
Mas digamos que estamos fazendo um programa para fazer um determinado cálculo que precisamos repetir milhares de vezes, executá-lo manualmente milhares de vezes seria exaustivo.
Porém podemos fazer um programa que consegue repetir esse cálculo várias vezes sozinho, utilizando estruturas de repetição.

Para começar a entender as vantagens de usar as estruturas de repetição, vamos fazer um exemplo simples da tabuada do 2.

print '0 x 2 = ', 0 * 2
print '1 x 2 = ', 1 * 2
print '2 x 2 = ', 2 * 2
print '3 x 2 = ', 3 * 2
print '4 x 2 = ', 4 * 2
print '5 x 2 = ', 5 * 2
print '6 x 2 = ', 6 * 2
print '7 x 2 = ', 7 * 2
print '8 x 2 = ', 8 * 2
print '9 x 2 = ', 9 * 2
print '10 x 2 = ', 10 * 2

O código acima escreve toda a tabuada do 2, porém, foi escrito de uma forma não muito prática.
Imagine agora se fôssemos fazer um programa para escrever todas as tabuadas, teríamos 10 vezes essa quantidade de código.

Vamos então utilizar as estruturas de repetição para diminuir a quantidade de código. No Python existem basicamente o while  ( em português enquanto) e o for (em português para).

O while executa o bloco indentado abaixo dele enquanto a sua condição for verdadeira, veja como fica o exemplo da tabuada do 2 agora.

numero = 0
while numero <= 10:
    print numero,' x 2 = ', numero * 2
    numero = numero + 1

Com esse pequeno código temos o mesmo resultado que o do exemplo anterior, só que precisamos escrever menos código.

Também podemos colocar uma estrutura de repetição dentro da outra, como no próximo exemplo onde o programa fará todas as tabuadas.

tabuada = 0
while tabuada <= 10:
    print 'Tabudada do ',tabuada
    numero = 0
    while numero <= 10:
        print numero,' x ',tabuada,' = ', numero * tabuada
        numero = numero + 1
    tabuada = tabuada + 1


O for pode ser entendido como "para cada item X em uma lista Y". E para nos ajudar com o for, o Python tem uma função que gera listas, chamada range. Veja como fica o exemplo da tabuada do 2 utilizando o for e o range.

for numero in range(11):
    print numero,' x 2 = ', numero * 2
    numero = numero + 1

O range recebe o tamanho da lista como parâmetro, no caso o parâmetro é o número 11, assim temos os números de 0 a 10.

for tabuada in range(11):
    print 'Tabudada do ',tabuada
    for numero in range(11):
        print numero,' x ',tabuada,' = ', numero * tabuada

Espero que com a utilização das estruturas de repetição, vocês possam fazer programas que fazem muito com pouco código!

Obrigado!

quinta-feira, 16 de fevereiro de 2017

Introdução a Programação parte 3: Controle de Fluxo

Dando continuidade ao post "Introdução a Programação parte 2", vamos agora aprender a como controlar o fluxo de nossos programas.

Antes de começar mesmo, vamos fazer uma pequena revisão sobre lógica booleana.
Lógica booleana trata de operações com verdadeiros e falsos, ou para o computador uns e zeros.

Muitas vezes usamos as operações básicas da lógica booleana em nosso cotidiano e nem nos damos conta.
Essas operações são, "não", "e" e "ou", em inglês "not", "and" e "or".

Por exemplo, se eu tiver tempo e dinheiro vou começar a fazer um curso de Inglês.

Nessa sentença o sujeito apenas fará o curso de Inglês se as duas condições forem verdadeiras, ou seja, ter tempo e dinheiro. Caso qualquer uma das condições for falsa ele não fará o curso, ou seja, se ele não tiver tempo ou não tiver dinheiro ele não fará o curso.

Para explicar essa frase já acabei dando exemplos do "ou" e do "não".

Agora vamos transformar a frase acima em código:
tenho_tempo = True
tenho_dinheiro = True

if tenho_tempo and tenho_dinheiro:
    print 'vou fazer o curso de Ingles'


A linguagem que estou usando para exemplificar, o Python, necessita da indentação para funcionar corretamente. A linha com o "print" é a ação que deve ser tomada caso a condição do if (em português "se") seja verdadeira, esta parte deve estar toda indentada.
tenho_tempo = True
tenho_dinheiro = True

print 'tomando decisao'
if tenho_tempo and tenho_dinheiro:
    print 'vou fazer o curso de Ingles'
else:
    print 'nao vou fazer o curso'
print 'decisao tomada'

No exemplo acima foi adicionada um else ( em português "senão"), o bloco indentado abaixo do else só é executado caso a condição do if tenha sido falsa.
O último print sempre é executado, pois ele está fora do bloco indentado do else.

Mais um exemplo, agora vamos usar o elif (abreviação de else if).

tenho_tempo = True
tenho_dinheiro = True

print 'tomando decisao'
if tenho_tempo and not tenho_dinheiro:
    print 'tenho tempo mas nao tenho dinheiro'
    print 'nao vou fazer o curso'
elif tenho_dinheiro and not tenho_tempo:
    print 'tenho dinheiro mas nao tenho tempo'
    print 'nao vou fazer o curso'
elif tenho_tempo and tenho_dinheiro:
    print 'vou fazer o curso de Ingles'
else:
    print 'nao vou fazer o curso'
print 'decisao tomada'

Fiquem a vontade para alterar os valores das variáveis (tenho_tempo, tenho_dinheiro) e ver os diferentes resultados. Lembrem-se de usar a primeira letra maiúscula ( True,False ), ou podem usar 1 ou 0.

tenho_tempo = 1
tenho_dinheiro = 1

print 'tomando decisao'
if tenho_tempo and not tenho_dinheiro:
    print 'tenho tempo mas nao tenho dinheiro'
    print 'nao vou fazer o curso'
elif tenho_dinheiro and not tenho_tempo:
    print 'tenho dinheiro mas nao tenho tempo'
    print 'nao vou fazer o curso'
elif tenho_tempo and tenho_dinheiro:
    print 'vou fazer o curso de Ingles'
else:
    print 'nao tenho tempo nem dinheiro'
    print 'nao vou fazer o curso'
print 'decisao tomada'


Agora vamos fazer algumas pequenas modificações para deixar esse "programa" mais próximo de um caso real, afinal no mundo real geralmente não trabalhamos diretamente com verdadeiros e falsos.
No exemplo a seguir foram adicionados alguns comentários, linhas que não são executadas pelo computador, são apenas para descrever o código, estas são inciadas pelo caractere #.

tempo_livre = 4
dinheiro = 400

tempo_curso = 1
custo_curso = 200

# se tempo livre maior ou igual ao tempo do curso,
# tenho_tempo eh verdadeiro
tenho_tempo = tempo_livre >= tempo_curso

# se dinheiro maior ou igual ao custo do curso,
# tenho dinheiro eh verdadeiro
tenho_dinheiro = dinheiro >= custo_curso

if tenho_tempo and not tenho_dinheiro:
    print 'tenho tempo mas nao tenho dinheiro'
    print 'nao vou fazer o curso'
elif tenho_dinheiro and not tenho_tempo:
    print 'tenho dinheiro mas nao tenho tempo'
    print 'nao vou fazer o curso'
elif tenho_tempo and tenho_dinheiro:
    print 'vou fazer o curso de Ingles'
else:
    print 'nao tenho tempo nem dinheiro'
    print 'nao vou fazer o curso'
print 'decisao tomada'

Obrigado!

terça-feira, 14 de fevereiro de 2017

Novo Blog de Tecnologia

Um novo blog de tecnologia está sendo criado por um amigo, Guilherme Cruz.
O blog no começo, mas pelo que conheço o autor, promete muito!!!

O Guilherme é Mestre em Ciência da Computação, desenvolvedor Ruby on Rails e pelo que me parece por seu blog está se aventurando com GO.

Blog do Guilherme
http://gcruz.com.br/

Alguns Posts:
Primeiras dicas em Go
Conexões SQL em Go

Obrigado!