curso de programação em Python lição 9-Estrturas de controle e repetição ou ciclos

167 9

Bem vindos á nona aula de programação em PythonEste artigo faz parte do curso de programação em Python do Techmoz. Para acessar outras aulas do curso, por favor visite o índice do curso de programação em Python .

OBJECTIVOS DA AULA

  • Estrturas de controle e repetição ou ciclos(for, while)
  • Um jogo “jogável”

Vamos nesta aula continuar com o estudo das estruturas de controle em Python, introduzindo desta vez as estruturas de repetição.Em programação, estruturas de repetição servem, como o próprio nome diz, para repetir instruções sem ter que escreve-las varias vezes.Para entender melhor estas estruturas, vamos a um exemplo lógico da sua utilização: Imagina que pretende-se criar um programa que calcula a área de 10 triangulos, sem o uso de um ciclo, teriamos de escrever 10 vezes a seguinte instrução:

base=float(raw_input(”Introduza o valor da base do triangulo 1:”))altura=float(raw_input(”Introduza o valor da altura do triangulo 1:”))area=base*altura/2print “A area do triangulo 1 é %f” %(area)

Nota que não estou usando o Python3000, mas sim o 2.6 no IDLE. Acho bom variar de ambiente, porque assim você se familiariza com todos eles. Uma das vantagens da versão 2.6 deve-se ao facto de esta versão ser compatível tanto com as versões 2.x e com a versão 3000.Mas com o uso de ciclos, não é necessário repetir as instruções, pois nós podemos fazer o interpretador executar as mesmas instruções quantas vezes necessitarmos, como veremos a seguir.

O ciclo for

O ciclo for é, talvez, o ciclo mais usado em programação, por ser o mais eficiente. A sua sintaxe em Python é:

for x in <intervalo>:    <instruções>;    ...    …Continua o programa…

No lugar de x, indicamos a variável que irá controlar o ciclo. A variável vai tomar todos os valores do intervalo especificado, e a cada tomada, vai executar-se as instruções indicadas dentro do ciclo, ou seja, as que estão identadas( esqueceu do conceito de identação???, não é possivel!!! Mas ok! faça uma revisão da aula 6 que ai você lembra…).No lugar de intervalo, indicamos os valores que a variável irá tomar. Aqui podemos especificar um intervalo de números, uma lista, etc…Introduziremos também aqui uma nova palavra reservada, que é: range, e serve para especificar o intervalo. Veja o exemplo abaixo:

for idade in range(0,90):    print(“ Este ano tenho”,i,” anos”)

A instrução acima quer dizer, para idade partir de 0 até 90, imprime a mensagem abaixo. Nota também que a primeira linha sempre termina com ‘:’, e que ao terminar com ‘:’, a linha a seguir é automaticamente identada, lembra-se do if né? Se o seu editor não tiver capacidade de auto-identação, faça isso manualmente.Outro facto importante, é que o ciclo for, por padrão, atualiza a variável em uma unidade em cada iteração. Mas e se quisermos atualizar em 2 ou 3, ou 1.5 ou ainda 0.1? Ai acrescentamos mais um parámetro ao range(). Já deves ter notado que os dois valores do range indicam o valor inicial e o valor final da iteração do ciclo. Então o terceiro valor que iremos acrescentar, indicará o valor da iteração. veja o exemplo a seguir:

#Imprime numeros pares de 0 á 50for numero in range(0,50,2):    print(numero,” um numero par”)

Como já havia dito acima, em vez de um range, podemos também especificar uma lista, como se segue:

#Imprime a lista de nomes indicada no forlista_nomes=['Jose','Carlos','Antonio']for nome in lista_nomes:    print(nome)

Isto é importante quando em vez de números, queremos interagir com strings e outros tipode de dados não numéricosAh! então podemos também usar strings em vez de range ou listas?!?! Isso fica para você investigar…

O ciclo While

Outro ciclo usado em Python é o while. A diferença entre for e while, é que enquanto no for especificamos um intervalo, no while nós indicamos uma condição e o ciclo repete-se enquanto aquela condição for verdadeira. A sua sintaxe em Python é:

while <condição>:    instrucões…    …Continua o programa

A condição é uma expressão booleana, isto é, sempre terá um dos valores: True ou False.Ex:

#Imprime todos os numeros naturais menores que dez.Num=1while num<10:    print(num)    num=num+1print(“O ciclo terminou”)

Nota que o ciclo while não atualiza automaticamente o valor da variável de iteração como no caso do for, dai a instrução num=num+1.O ciclo while é interessante quando pretendemos criar um loop infinito. Para isso é só indicarmos uma instrução que será sempre verdadeira, veja alguns exemplos: while True:, while 1:, while 1+1=2:, etc…

Corte de ciclos(break) e ciclos vazios(pass)

É possivel forçar a paragem dum ciclo numa dada iteração, usando a instrução break. Veja no exemplo que se segue:

#Le numeros introduzidos pelo teclado ate que o utilizador introduza 0while True:    num=int(input(“Introduza um numero ou zero para parar”))    if num==0:        break    else:        print(num)

Veja que foi possivel parar o ciclo mesmo a condição sendo ainda verdadeira. Tente fazer o mesmo com o ciclo for e verá que também é possivel. No caso de ciclos que estão dentro de outros ciclos( encadeados), a instrução break para apenas o ciclo mais próximo. Experimente e verás… Uma das dores de cabeça em Python por causa da identação, costuma ser a seguinte: e se eu quero fazer um ciclo que não faz nada? isto é importante para que o programa não faça nada( aparentemente) durante certo tempo. Já deve ter notado que ao se criar um ciclo ou uma instrução if, o Python exige que a linha a seguir seja identada e as instruções que nela forem escritas passarão a fazer parte do bloco. O problema é que nós queremos um bloco vazio, que não faça nada. Para isso existe a instrução pass, que não faz nada he he he. Note também que depois do break e pass, o Python fecha automaticamente o bloco. Veja o exemplo:

for nada in range(0,10000):    pass

Depois desta aula, já podemos criar o nosso primeiro jogo ‘jogável’, trata-se do famoso adivinha o número. Aqui vai o código( Vou omitir a parte de tratamento de erros para não ficar muito complicado, mas você pode implementar isso…):

#Jogo de adivinha o numero#Versao Techmoz 10-01-2009#Por Elisio Leonardotentativas=6numero=23while tentativas>0:    num=int(input("Adivinha que numero eu escondo: "))    if num==numero:        print("Adivinhou parabens! O jogo terminou")        break    else:        print("Infelizmente errou!!! Tente novamente(",tentativas," restantes")        tentativas=tentativas-1input("Pressione qualquer tecla para sair")

Como vê aos poucos vamos fazendo coisas mais interessantes.Chegamos ao fim da nossa aula! Comentários são bem vindosPara a próxima aula trataremos de um tema um pouco mais complexo em programação: Funções. Mas isso é assunto da próxima aula mesmo!Nos vemos na aula 10!!!

(Visited 25 times, 1 visits today)