Ir para o conteúdo
ou

Software livre Brasil

Magnun

Nenhum artigo selecionado ainda.
 Voltar a Blog
Tela cheia

[Curso de Python] Mais Sobre as Estruturas While

21 de Janeiro de 2010, 0:00 , por Software Livre Brasil - 0sem comentários ainda | Ninguém está seguindo este artigo ainda.
Visualizado 256 vezes

Antes de prosseguir leia os artigos anteriores aqui



Bom dia a todos! Finalmente, estamos quase completando os estudos com a estrutura while. Já vimos praticamente todas as instruções que se aliam a ela: continue, break e o else.

Vou mostrar hoje alguns exemplos da estrutura while de forma mais complexa e depois vou deixar alguns exercícios. Postem os resultados, ok?!

Mais Sobre as Estruturas While



Agora que já conhecemos diversas instruções que alteram o comportamento da estrutura while vale a pena comparar sua utilidade. Vamos começar com um exemplo simples:
1. Buscar a primeira ocorrência de uma letra dentro de uma string passada pelo usuário. Deve ser informada a posição dessa ocorrência ou, caso não exista uma ocorrência, deve ser impresso um texto informando que a letra buscada não foi encontrada.
Vou resolver esse exercício de duas formas, uma será usando apenas o while, a outra será usando as instruções continue, break e else. No final iremos comparar os dois códigos.

Resolução 1
Código:
# Recebe a string
texto = raw_input('Favor informar uma string: ')
# Recebe a letra que será buscada na string
letra = raw_input('Favor informar uma letra para buscarmos: ')

# Vamos verificar se por acaso o usuário não passou mais de uma
# letra. Para isso verificamos o comprimento com a função len.
if len(letra) > 1:
    print 'Foi informado a palavra',letra,'.'
    # Pega somente a primeira letra da palavra
    letra = letra[0]
    print 'Sera considerado apenas a primeira letra:', letra


n = 0
encontrada = False
while n < len(texto):
    # Pega a letra na posição n
    letra_texto = texto[n]
    # incrementa n para a próxima iteração do loop
    n = n + 1
    if letra_texto == letra:
        print 'encontrada a letra',letra,'na posicao',(n-1)
        # Prepara para parar o loop
        encontrada = True
    if encontrada:
        # Como o while testa se n é menor que o comprimento do texto,
        # para parar o while basta alterar n para o comprimento do text
        # dessa fora, essa será a última iteração do loop.
        n = len(texto)


if encontrada == False:
     # Se 'encontrada' é falso, quer dizer que não foi encontrada
     print 'Nao foi possivel encontrar a letra',letra
print '\n'
Nesse exemplo, logo no início, eu fiz uma verificação para confirmar que o usuário tinha passado uma letra. Caso o tamanho de 'letra' fosse maior que zero teríamos o problema de comparar uma palavra com uma letra.

A execução mostra o seguinte comportamento:
Código:
$ ./busca_letra
Favor informar uma string: este e um teste
Favor informar uma letra para buscarmos: u
encontrada a letra u na posicao 7

$ ./busca_letra
Favor informar uma string: este e um teste
Favor informar uma letra para buscarmos: uma
Foi informado a palavra uma .
Sera considerado apenas a primeira letra: u
encontrada a letra u na posicao 7

$ ./busca_letra
Favor informar uma string: este e um teste
Favor informar uma letra para buscarmos: z
Nao foi possivel encontrar a letra z
Resolução 2
Agora vamos ver como re-escrever o código acima utilizando as instruções que aprendemos:
Código:
# Recebe a string
texto = raw_input('Favor informar uma string: ')
# Recebe a letra que será buscada na string
letra = raw_input('Favor informar uma letra para buscarmos: ')

# Vamos verificar se por acaso o usuário não passou mais de uma
# letra. Para isso verificamos o comprimento com a função len.
if len(letra) > 1:
    print 'Foi informado a palavra',letra,'.'
    # Pega somente a primeira letra da palavra
    letra = letra[0]
    print 'Sera considerado apenas a primeira letra:', letra

n = 0
while n < len(texto):
    # Pega a letra na posição n
    letra_texto = texto[n]
    # incrementa n para a próxima iteração do loop
    n = n + 1
    if letra_texto == letra:
        print 'encontrada a letra',letra,'na posicao',(n-1)
        # Vamos quebrar o while.
        break
else:
     # Só atingiremos caso o while tenha chegado ao fim
     print 'Nao foi possivel encontrar a letra',letra
Podemos verificar, rapidamente, que o codigo reduziu de tamanho. Outra coisa é que utilizamos uma variável a menos, a variável 'encontrada'. Isso implica em menos memória e menos processamento para alocar e desalocar essa variável.

Agora, analisando o código, pode surgir uma dúvida quanto ao break e o else. O else só é executado se o loop terminar todas as iterações. Como o break 'quebra' o loop quando a letra é encontrada, o else não é executado. Com isso fica fácil estruturar o programa para indicar que a letra não foi encontrada.

Exercícios



Agora uns exercícios para vocês. Tentem usar as instruções continue, break e else em todos os exemplos.
1: Fazer um programa que busca em um texto, passado pelo usuário, todas as ocorrências de uma letra. Caso não seja encontrado, informar que não foi encontrado a letra buscada.
2: Fazer um programa que recebe palavras do usuário e informe o comprimento da palavra. O programa só deve para quando o usuário digitar a palavra 'pare'.
Desafio: Criar um código que organize a seguinte lista: [3, 4, 2, 1, 5]

Fonte: http://under-linux.org/blogs/magnun/curso-de-python-mais-sobre-estruturas-while-1787/

0sem comentários ainda

Enviar um comentário

Os campos são obrigatórios.

Se você é um usuário registrado, pode se identificar e ser reconhecido automaticamente.