Controlando o programa

programas simples são sequencias lineares de operaçoes

existem opções para adotar um fluxo menos linear

opções para tomar decisões e poder executar uma ou outra instrução

Controles de fluxo

muitas vezes queremos executar uma instrução se uma condição prévia for satisfeita

para isso usamos a instrução if, veja o exemplo abaixo:


In [2]:
x=int(input("entre com um numero inteiro não maior que 10 :"))

if x > 10:
    print "oops, vamos arrumar isso..."
    x = 10
    
print "seu número é ",x


entre com um numero inteiro não maior que 10 :3
seu número é  3

Note a estrutura da instrução if

if expressão: instruções

note em particular a identação


In [3]:
x=int(input("entre com um numero inteiro não maior que 10 :"))

if x > 10:
    print "oops, vamos arrumar isso..."
        x = 10                              # aqui está um erro de identação
    
print "seu número é ",x


  File "<ipython-input-3-817c3ec4fae5>", line 5
    x = 10
    ^
IndentationError: unexpected indent

o tamanho da identação pode ser qualquer, mas deve ser consistente dentro de um bloco

de modo geral existe um "padrão" de 4 espaços para identação

programas como Spyder já fazem a identação automaticamente

Veja abaixo alguns testes de condições básicos:

if x == 1 # checar se x igual a 1
if x > 1 # checar se x maior que 1
if x < 1 # checar se x menor que 1
if x >= 1 # checar se x maior ou igual a 1
if x <= 1 # checar se x menor ou igual a 1
if x != 1 # checar se x é diferente de 1

é possível combinar duas condições em uma instrução


In [8]:
x = 12
if x>10 or x<1:
    print "ok"
    
x=8
if x <= 10 and x >= 1:
    print "ok"


ok
ok

If, elif e else

Além do if existem outras duas formas de trabalhar com condições.

else: significa "se não satisfeita a condição anterior, faça isso"
elif: significa "se não satisfeita a condição anterior, faça isso se esta outra condição for satisfeita"


In [12]:
x = 9

if x > 10:
    print "seu numero é maior que 10"
elif x >= 9:
    print "seu numero é proximo de 10"
else:
    print "seu numero está ok."


seu numero é proximo de 10

a instrução while

uma importante variação da instrução if é a instrução while.

ele se comporta de maneira similar, através de condições que são checadas

no entanto, while executa o bloco de código até a condição ser satisfeita


In [13]:
x=int(input("entre com um numero inteiro não maior que 10 :"))

while x > 10:
    print "esse numero é maior que 10, tente de novo."
    x=int(input("entre com um numero inteiro não maior que 10 :"))
print "seu numero é :",x


entre com um numero inteiro não maior que 10 :23
esse numero é maior que 10, tente de novo.
entre com um numero inteiro não maior que 10 :8
seu numero é : 8

Break e Continue

As vezes pode ser útil quebrar uma sequencia de código.

Para blocos de while existe a opção break


In [16]:
x = 12
while x > 10:
    print "O numero é maior que 10, tente de novo."
    x = int(input("Entre com um numero inteiro menor que 10: "))
    if x == 111:
        break


O numero é maior que 10, tente de novo.
Entre com um numero inteiro menor que 10: 111

note que caso exista um else após o while esta instrução não será executada!

note também a instrução if dentro do loop de while

A instrução continue é uma variante que permite que se pule as instruções até o final do loop mas sem sair deste

Exercício:

Faça um programa para calcular a sequencia de Fibonacci até 1000.

Veja detalhes sobre a sequência aqui: https://en.wikipedia.org/wiki/Fibonacci_number


In [ ]: