Estruturas de Repetição – while (while/else)

Resumo dos tópicos

• Do que se trata o conteúdo?
Trata‑se da explicação do comando while (while/else) em Python, comparando‑o com o for e apresentando exemplos práticos de uso.

• Principais assuntos (exemplos):

  • Estrutura do while – funciona como o if, porém repete o bloco enquanto a condição for verdadeira.
  • Exemplo 1 – Fatorial máximo – função n_fat(l) que devolve o maior n tal que n!l.
  • Exemplo 2 – Validação de entrada – pede ao usuário um número positivo e repete a solicitação enquanto o valor for < 0.
  • Exemplo 3 – Lista de nomes – coleta nomes até que o usuário digite uma string vazia.
  • Loop infinitowhile True: usado em servidores ou processos que devem rodar indefinidamente.

• Ponto de maior atenção: a condição de parada do while deve ser bem definida; caso contrário, o loop pode tornar‑se infinito.

• Conclusão: o while é ideal quando não se conhece antecipadamente o número de iterações; a lógica de parada controla a execução.

Resumo dos tópicos

  • 1 Estrutura do while

    O while verifica uma condição antes de cada iteração. Se a condição for verdadeira, o bloco indentado é executado; ao final, a condição é reavaliada. Quando a condição se torna falsa, o fluxo segue para o bloco não indentado.

    • 1.1 Diferença for × while

      O for repete um número fixo de vezes (geralmente iterando sobre sequências). O while repete enquanto a condição for verdadeira, sem necessidade de saber o número de repetições.

    • 1.2 Loop infinito

      Usa‑se while True: para executar indefinidamente. A interrupção depende de eventos externos (ex.: Ctrl +C).

  • 2 Exemplos práticos
    • 2.1 Função n_fat(l)

      Calcula o maior n tal que n!l. O loop aumenta n e acumula o fatorial até que fatorial ultrapasse l. Retorna n‑1.

    • 2.2 Validação de número positivo

      Pede ao usuário um número. Enquanto o número for < 0, o while solicita novamente.

    • 2.3 Coleta de nomes em lista

      Cria uma lista vazia. Enquanto o usuário digitar uma string não vazia, o nome é adicionado à lista. Quando o usuário pressiona Enter sem texto, o loop termina e a lista é exibida.

Mapa mental

mindmap root((while / while‑else)) sub1(Estrutura) sub1a(Condição antes da iteração) sub1b(Bloco indentado executado enquanto verdadeiro) sub2(Diferença for × while) sub2a(for → número fixo de repetições) sub2b(while → repete até condição falsa) sub3(Exemplos) sub3a(Fatorial máximo) sub3a1(while fatorial ≤ l) sub3a2(retorna n‑1) sub3b(Validação de entrada) sub3b1(while número < 0) sub3c(Coleta de nomes) sub3c1(while nome != '') sub3c2(adiciona à lista) sub4(Loop infinito) sub4a(while True) sub4b(uso em servidores) sub5(Ponto de atenção) sub5a(Condição de parada bem definida)

Questões sobre o assunto

1. Qual é a principal diferença entre o comando for e o while?
1.50 pontos Média

Resposta correta: A) for tem número fixo de repetições; while repete enquanto a condição for verdadeira.

O for itera sobre um intervalo ou sequência conhecido; o while depende apenas da condição booleana.

2. No exemplo da função n_fat(l), qual valor a função retorna quando l = 20?
2.50 pontos Difícil

Resposta correta: A) 3

Para l = 20, o laço incrementa n até que n! > 20. Quando n = 4, 4! = 24 > 20, então a função devolve n‑1 = 3.

3. Qual alternativa descreve corretamente o comportamento de um loop infinito usando while?
2.50 pontos Difícil

Resposta correta: A) while True: executa indefinidamente até interrupção externa.

O valor booleano True nunca se torna falso, portanto o laço só termina se houver Ctrl +C ou outra exceção.

4. Considere o trecho de código abaixo. Se o usuário digitar as sequências “Ana”, “Bob”, “”, qual será a saída exibida?
3.50 pontos Extrema
names = []
name = input('Nome: ')
while name != '':
    names.append(name)
    name = input('Nome: ')
print(len(names))
>

Resposta correta: C) 2

Os nomes “Ana” e “Bob” são adicionados à lista; ao digitar a string vazia o laço termina. len(names) devolve 2.

Pontuação Total
0.00

Texto original

O texto original pode conter falhas de gramática ou de concordância, isso ocorre porque ele foi obtido por um processo de extração de texto automático.
Texto extraído do video Algoritmos e Programação de Computadores I - Estruturas de repetição - while

O LAPISAL vamos dar continuidade a nossa, nossa, as vídeo-alas sobre a aguritiva e o programa de computadores 1.
Nessa vídeo-alas a gente vai continuar o assunto de estupoede de repetição.
Agora na aula passada a gente viu a estrutura o comando for e nessa vídeo-alas a gente vai ver o comando o aio.
Então vamos ver como ele funciona.
Bom, o comando o aio tem uma estrutura parecida com o teste condicional de uma via.
Lembrem lá do teste seletivo onde eu tenho um if, uma condição, se essa condição for verdadeira, o executo aquele bloco de instruções indentado.
Caso contrário eu simplesmente denoro esse bloco e já venho direto para aquele bloco não indentado.
Então reparem que a única diferença é que ao invés de usar a palavra chave if, a gente vai usar a palavra chave o aio, indicando que ele vai executar várias vezes aquele bloco de instruções indentado enquanto aquela condição que está aqui em cima for verdadeira.
Então enquanto aquela condição for verdadeira, ele executa esse bloco, aí terminou esse bloco, ele volta de novo para verificar se aquela condição continua verdadeira, se continua verdadeira ele executa novamente aquele bloco e vai fazendo isso enquanto a condição for verdadeira.
Quando a condição for falsa, ele pula direto aqui para o bloco não indentado, que é o caso lá da do if onde quando a condição aqui em cima for falsa, ele pula para o bloco não indentado também.
Então ele é que eu tenho o nosso fluxo-sograma de funcionamento do aio, então imagina que eu tenho aqui a minha fluxo de execução que está vindo aqui de cima, chegou no comando o aio, ele vai verificar se a condição é verdadeira ou não.
Quando a condição sendo verdadeira, ele vem para esse lado que é execução do bloco indentado.
Quando o terminou de executar aquele bloco indentado, reparem que a fachinha sobe de novo aqui para cima para verificar novamente se a condição continua sendo verdadeira.
Se a condição for verdadeira, ele executa novamente aquele bloco indentado.
Então ele vai entrando aqui nesse loop, ele vai executando esses blocos, esse bloco indentado enquanto a condição for verdadeira.
Chegar o momento em que a condição seja falsa, ele não vai mais para a esquerda, mas que ele vem para baixo aqui que é a execução do bloco não indentado, que é o que está aqui, que é essa parte que de baixo, que é a continuação da execução do programa.
O comando o aio é útil quando a gente não sabe quantas vezes um bloco deve ser repetido.
Diferente, por exemplo, do fork, a gente de unaula passada, que a gente especifica um número de repetições da estrutura, quantas vezes o bloco deve ser executado.
Aqui no comando o aio, a gente não sabe quantas vezes a gente vai executar aquele bloco indentado, e isso depende da condição do próprio aio.
Então quando a gente não sabe quantas vezes a gente usa o aio e coloca a condição de parada ou a condição de continuidade da repetição.
Olha um exemplo.
Então eu quero encontrar o maior valor de n, tal que n factorial seja menor do que um valor que eu passo com um parâmetro, que é o el.
Então por exemplo, se eu determino que o meu el é igual a 20, eu quero determinar o valor de n, tal que n factorial seja menor do que 20.
Então no caso aqui o valor de n seria 3, porque 3 factorial é 6, mas o 4 factorial já é 24.
Então eu já, o 4 já extrapola o valor de 20, então eu tenho que retornar o valor 3.
Então reparem aqui, para esse exercício, a gente não sabe quantas vezes a gente vai executar aquele bloco indentado.
Então é importante, é interessante a gente usar o aio nesse caso, para que ele execute quantas vezes necessárias necessárias e de acordo com a condição.
Então aqui está a implementação aqui desse exemplo.
Eu estou definindo uma função chamada de n fat, onde eu passo o valor de l.
E estou inicializando aqui a variável n como zero, e o fático é o resultado do fatorial comum.
Então enquanto o fático, formenor ou igual a l, eu vou executar esse bloco aqui, indentado.
Esse bloco indentado faz o que? Ele incrementa o n inicialmente, e depois eu agrego lá no variável fático, que é o fatorial de n até aquele momento.
Quando chegar no momento em que fático é menor ou igual a l, ele sai do aio, então ele já vai pro bloco não indentado, que é o retâneo aqui de baixo, que ele retorna n menos 1.
Então, um exercício para vocês, pegar esse programa e rodar ele no interpretador de vocês, verificar a execução.
Vou fazer aqui com vocês um outro exemplo, que também é bastante útil, que é quando você quer se artificar que um valor ditado pelo usuário, obedeça a um critério.
Então supondo que seu critério seja que o número que o usuário vai editar tem que ser um inteiro positivo, um valor positivo maior do que zero.
Então, a gente vai pedir para o usuário digitar esse valor.
Se esse valor for negativo, a gente vai pedir para o usuário de estar novamente esse valor.
Então, enquanto o usuário não digitar um valor que obedeça ao critério que a gente estabeleceu, o programa não continua execução, ele fica ali naquele loop, forçando com que para que o usuário digite o valor correto.
Vamos lá fazer ele.
Então, eu vou inicialmente pedir para o usuário de estar um valor aqui, já vou usar o eval, então digite um número positivo.
E aí, o que eu vou fazer? Se vou verificar esse número for menor do que zero, eu vou pedir para ele digitar novamente.
Então, olha só, inicialmente eu peço para o usuário de digitar esse número.
Se esse número for maior do que zero, ele não vai entrar nesse oio, já vai vir aqui direto para o bloco não indentado, que é o que está aqui embaixo, que seria a continuação do programa.
Se esse número for menor do que zero, ele entra nesse oio e vai ficar aqui pedindo para o usuário digitar novamente esse número.
Se o usuário digitar o número ainda menor do que zero, ele volta nesse oio, verifica que ainda esse número novo é menor do que zero e pede novamente para ele digitar.
Se o oio só vai sair quando número for maior ou igual a zero, está aqui, e a gente está garantindo com que essa variável não seja um número positivo.
Vou executar aqui menos 3, por exemplo, reparem que ele pede novamente para digitar esse número, menos 5, menos 7.
Se eu digitar, por exemplo, 1, ele aceita, e nesse caso ele está finalizando o programa, porque a gente não tem mais nenhuma instrução aqui para baixo.
Mas aí, desse ia continuar esse programa para fazer o uso desse número, que seria o número positivo, que você tem um seu programa para fazer o uso desse valor.
Mais um outro exemplo que a gente pode fazer aqui, que é armazenar nomes de pessoas em uma lista, enquanto o usuário digitar stringes, que sejam diferentes de vazio.
Então, você vai ter uma lista aí com N nomes, é o usuário que vai decidir qual a quantidade de nomes.
Então, enquanto ele estiver editando nomes, aí, valores que serão diferentes de vazio, a gente vai estar acumulando ou gravando esses nomes numa lista.
Então, vamos ver.
Então, olha só, eu vou criar uma lista dele, inicialmente, setada aí como um vazio.
Pode fazer assim, inicialização da lista com coxetes vazios, ou usar o construtura aqui da lista.
Então, tanto faz, eu posso fazer dessa forma que está aqui.
Então, eu vou pedir para o usuário deitar esse nome, de jit num nome, e eu vou usar um ILE, enquanto o nome for diferente de vazio, o que a gente vai fazer.
A gente vai adicionar na lista, e esse nome.
Então, ele vai fazendo isso, enquanto nome for diferente de vazio.
Aqui faltou, eu pedi para ele jitar novamente o próximo nome.
E, no final, eu vou mandar emprego todo mundo.
Então, eu vou usar um for aqui de ILE, Printe, I.
Só prente imprimido depois todos esses nomes.
Então, vamos lá.
Vamos colocar aqui, por exemplo, Marcelo, João, Rafael, Pedro.
E aí, agora, quando eu digitar, ou quer dizer, o Dail Enter quer dizer, ou mais string vazia, ele sai desse ILE, e ele entra no for para imprimir todos esses nomes aqui da lista.
Bom, e aí, a gente tem também aqui a ideia do loop infinito, que eu falei na video alopassada, que é quando você, tensionalmente, você quer que o loop executa entre aspas para sempre.
Eu caso, por exemplo, de aplicações, por exemplo, de servidores, onde esse serviço tem que executar indefinidamente, enquanto não tiver nenhum problema, ele vai continuar execução.
É o caso, por exemplo, de servidores Web, que tem que estar executando ali, aguardando requisições de clientes.
Ele fica executando, enquanto não tiver nenhuma queda de energia, nenhum problema, ele continua sua execução ali, servindo aos clientes.
Então, a gente usa o ILE e a gente coloca aqui o True.
O True está a que dizem, enquanto verdadeiro, quer dizer, enquanto sempre vai ser verdadeiro, ele vai executar aquele bloco de instruções indentado para sempre.
Quanto não tiver nenhum problema, e para você sair desse loop, você tem que usar uma outra estratégia, que é digitar no teclado, o Ctrl C, se você digita Ctrl C durante a execução desse loop infinito, o programa termina, ele vai terminar, e aí você tem acesso ao seu interpretador novamente.
Então, é útil quando você quer para esses tipos de aplicações, está o loop infinito.
Então, essa foi a nossa videoaula sobre o ILE.
Então, a gente viu na aula passada o comando for, nessa videoaula a gente viu o ILE, vimos as diferenças entre eles, principalmente em questão de número de repetições.
E na próxima videoaula a gente vai dar continuidade com mais alguns comandos relacionados com estruturas de repetição.
Então, obrigado pela atenção de vocês, e a gente se vê na próxima videoaula.