Olá e bem-vindo. Nesta aula, gostaria de falar sobre os loops while e fazer while.
Já falamos sobre o loop for, que essencialmente permite repetir o código.
Existem outras construções em c chamadas while e do while que fazem a mesma coisa
apenas com uma sintaxe diferente.
Portanto, o loop while é um mecanismo para repetir um conjunto
de instruções e permite que a execução continue enquanto uma expressão lógica especificada for avaliada como verdadeira.
Então, mais do mesmo aqui. Assim como as instruções if executam determinado
código, enquanto as instruções executam certo código com base em uma avaliação booleana várias vezes.
Tudo que você pode fazer no loop for, você pode fazer no
loop while, é apenas uma sintaxe diferente.
Então, a aparência dos loops while é algo assim.
Em um nível muito alto, se estivermos olhando para um pseudocódigo,
enquanto essa condição for verdadeira, continue fazendo isso.
Então, para relacionar isso a um exemplo mais mundial.
Basicamente, enquanto você está com fome, coma sanduíches, algo assim.
Então, você vai repetir o código. Você vai continuar comendo muitos sanduíches enquanto estiver com fome.
A sintaxe geral para o loop while é a seguinte.
E isso está mostrando a sintaxe para uma
instrução no corpo, então você não precisa fornecer colchetes ou chaves.
Costumo usar os termos chaves e
colchetes na mesma terminologia.
Então, aqui está a aparência da sintaxe quando você tem uma instrução em vez de várias instruções.
Várias declarações, você tem que ter esses colchetes, uma única
declaração, você não tem, eles são opcionais. Você não pode tê-los ou não precisa tê-los.
A expressão fica entre parênteses, assim como o loop for
e a instrução if. A expressão aqui é diferente
do loop for porque é uma única condição de saída.
É apenas a expressão. Você não inicializa a variável de controle do loop.
Você não modifica a variável de controle do loop entre os parênteses.
É apenas a expressão, apenas a condição de saída.
A condição para a continuação do loop while é testada no início.
Portanto, este é o topo do ciclo.
Então, isso significa que é um loop de pré-teste. E o que isso significa
é que pode ser executado 0 vezes ou várias vezes no corpo.
E, novamente, isso será relevante porque o loop do while está fazendo algo um pouco diferente.
Se a expressão começar com falsa, nenhuma das instruções
de loop no corpo será executada.
É por isso que está no teste de topo.
Então, se você responder à primeira pergunta não, não estou
com fome, você nunca vai comer sanduíches. Você vai seguir direto para o café ou
para a próxima linha de código. Você não vai entrar no corpo do loop.
Se a condição do loop começa como
verdadeira, o corpo do loop deve conter um mecanismo para
alterar isso se o loop terminar. Caso contrário, você terá um loop infinito.
Portanto, com o loop for onde você modifica a variável de controle do loop em uma única instrução, é a
mesma coisa no loop while, exceto que você precisa fazer isso no corpo.
O loop while vai inicializar a
variável de controle do loop em algum lugar e, em
seguida, será modificado dentro do corpo do código.
Como mencionei, o loop while pode fazer tudo que um loop for faz, é apenas uma sintaxe diferente.
E, novamente, o loop for é mais curto. Você pode fazer tudo em uma
linha, enquanto o loop while tem que fazer essas 3 coisas em linhas separadas.
Portanto, neste exemplo,
temos int count igual a 0. Esta é a variável de controle do loop. Isso está fora da instrução de loop while.
Se você estiver usando uma instrução for, ela entrará no loop for como antes do primeiro ponto-e-vírgula.
É aí que inicializa a variável de controle do loop.
Então você tem a palavra-chave while e você tem entre parênteses a expressão booleana.
Isso seria equivalente ao loop for, a segunda instrução
logo antes do segundo ponto-e-vírgula.
Portanto, é isso que você verifica como verdadeiro ou falso. E se for verdadeiro ou falso, você entra no corpo do loop.
Se a contagem for menor que 5, você imprimirá a contagem.
A próxima linha de código depois disso é muito importante,
o mais mais conta porque isso está modificando a variável de controle do loop.
Você tem que fazer isso mais mais contagem ou nunca sairá do loop porque a condição
no topo indica se a contagem é menor que 5. Se a contagem for sempre igual a 1, você
tem um loop infinito.
Portanto, esse plus plus conta muito, muito importante.
Além disso, lembre-se de contagem é um operador de incremento.
Ele está apenas dizendo que contagem é igual a contagem mais 1.
Este loop será executado 5 vezes.
Vai correr com contagem igual a 1, contagem
igual a 2, contagem igual a 3, contagem igual a 4 e contagem igual a 5.
Quando a contagem for igual a 6, ela sairá do loop e
não sairá de mais nenhuma instrução no corpo.
Novamente, você deve pensar em termos do loop for.
É apenas a variável de controle do loop e a modificação da variável
de controle do loop não está na declaração do loop real.
Não está tudo em uma linha como se estivesse no loop for.
Aqui está outro exemplo em que a lógica é controlada para encerrar o loop.
Então, naquele primeiro exemplo que mostrei, este é um loop de controle de contador.
Ele sempre será executado o mesmo número de vezes, que é 5.
No próximo exemplo, este é um exemplo em que o loop pode ser
executado 100 ou 0 vezes.
A condição que estamos avaliando aqui em nossa chave while, onde num não é igual
a 1 negativo, depende do que o usuário insere porque num
é o que o usuário insere.
Portanto, este loop pode ser executado 0 vezes, pode ser executado 100 vezes.
Tudo depende da entrada do teclado.
E isso é chamado de loop de controle sentinela. Não é controlado por contador.
É baseado em lógica e variáveis que podem mudar.
Portanto, enquanto num não é igual a 1 negativo, num fica
armazenado o valor que inserimos no teclado.
Se o usuário nunca inserir um 1 negativo no teclado, esse loop nunca vai terminar.
Portanto, o mesmo tipo de sintaxe aqui com nosso while.
Nossa variável de controle de loop aqui é num. Inicializamos o 0 na parte superior
e, em seguida, lemos em modificá-lo para ver se vamos entrar no loop com base
no que o usuário inseriu no teclado.
Então, dentro dos parênteses para a palavra-chave while, nós a
verificamos para ver se é um 1 negativo.
E então, no corpo do loop while com os colchetes, os
colchetes não precisam estar lá porque há uma única instrução, mas eu gosto de colocá-los lá.
Em seguida, também lemos a próxima entrada e armazenamos em num.
Se o usuário inserir 1 negativo para a próxima entrada, ele sairá do loop.
Se não o fizerem, ele continuará em execução e solicitará que eles insiram informações.
Um loop do while é um pouco diferente do
loop for do loop while porque é considerado um loop de pós-teste.
Portanto, no loop while, o corpo é executado enquanto a condição for verdadeira.
No loop do while onde o corpo é executado pela primeira vez incondicionalmente, o loop
do while porque o teste está na parte inferior
significa que você sempre executará o loop pelo menos uma vez.
Você sempre vai executar o corpo pelo
menos uma vez, pode ser mais, mas sempre é um, nunca é 0.
Porque a condição para testar a saída está na parte inferior.
Isso é chamado de loop de pós-teste. Também é chamado de loop de saída controlada.
Portanto, você usaria o loop do a while se quiser que o loop entre
pelo menos uma vez.
Normalmente, você não precisa usar um loop do while
porque ainda pode fazer a mesma coisa em um loop for se quiser,
basta colocar o código fora do loop.
Portanto, o loop do while não é realmente necessário, mas há casos em que talvez você queira usá-lo.
Após a execução inicial, o corpo
só é executado enquanto a condição for verdadeira. Portanto, após a primeira iteração do loop,
ele funcionará como loops normais. Ele saltará se a condição for falsa.
Então, aqui está o que parece. O do está na parte superior e,
em seguida, o teste para a condição está na parte inferior com a palavra-chave while.
Então, faça é
uma nova palavra-chave e você terá colchetes ou não, dependendo
de ter ou não várias instruções no corpo.
Se você tiver apenas uma declaração no corpo, não terá colchetes. Você só terá que fazer no topo
e então terá o tempo na parte inferior do loop.
E dentro do intervalo, os parênteses, você terá a avaliação booleana que será a
condição que você verificará. Mas, novamente, como essa
condição está na parte inferior, você sempre terá a garantia de executar a instrução pelo menos uma vez.
E assim, o exemplo à esquerda é uma instrução, o exemplo
à direita são várias instruções. Então você tem os colchetes, as chaves.
E novamente, neste segundo exemplo, você está dizendo que pode ter algo como prompt de senha, ler a entrada do
usuário e embora a entrada não seja igual a senha.
Mas você sempre solicitará essa senha pelo menos uma vez.
Então, outro faça um exemplo de loop while.
O primeiro exemplo principal aqui é um exemplo de
como o loop pode
ser executado uma ou várias vezes, mas nunca 0.
Tudo depende do que o usuário insere. Ele sempre será executado pelo menos uma vez, mas
é a leitura da entrada do teclado. Vemos a função scanf.
E, desde que o usuário não insira 20, ele
estará executando este loop.
Um loop while também pode ser um loop de controle de contador, o que significa que ele será executado um certo número de vezes.
Neste caso, ele será executado 4 vezes neste exemplo.
Temos um número int igual a 4. E então temos fazer no topo,
e então
temos os colchetes porque temos várias instruções dentro do corpo.
E estamos incrementando essa variável de controle de loop dentro do corpo, número mais mais.
E então a condição para verificação ainda está no fundo. Então, você vai executar isso 4 vezes.
E você notará que a palavra-chave while não precisa estar na mesma linha que a chave direita.
Normalmente, é, mas não tem que ser.
E a palavra-chave while na parte inferior também termina em ponto e vírgula, você também deve notar isso.
Então, aprendemos tudo sobre esses loops; o loop for, o while e do while.
Que loops você deve usar?
Bem, a primeira coisa que você tem que decidir sobre qual loop você deseja usar é primeiro você
quer que seja um pré-teste ou pós-teste? Você deseja que ele seja executado pelo menos uma vez
ou não deseja executar pelo menos uma vez? Se você quiser que ele seja
executado pelo menos uma vez, usará do while. Se essa não for uma
condição, você pode usar o for, o while ou o do while.
Portanto, na maior parte do tempo, quando você decide qual loop usar,
sempre será um loop de pré-teste. Você deve ficar longe do loop do while.
É apenas uma opção melhor na maioria dos casos. É muito mais fácil de ler.
É muito melhor olhar antes de realmente fazer um loop.
Só não comece o loop, é melhor verificar essa condição na parte superior.
Para fins de legibilidade, se o loop estiver no teste, é muito mais intuitivo.
Portanto, faça com que esse loop verifique no início, use um por um tempo.
E, em muitos casos, é importante que o loop seja totalmente ignorado se o teste não for realizado inicialmente.
Novamente, porque esse é o caso, o teste deve estar no topo. Você nem sempre deve executar pelo menos uma vez.
Na maioria das vezes, você sempre pode não querer executar.
Portanto, você deve usar um por um tempo.
Agora a questão se resume a qual devo usar, por um tempo.
É realmente uma questão de preferência pessoal. Não importa porque como eu disse
no início dessa palestra, tudo que você pode fazer em um tempo, você pode fazer em um por.
Então, se você apenas gosta mais do loop for, o for é um pouco mais
rápido às vezes porque todas as modificações de controle do loop e a inicialização e a
condição de saída podem estar em uma linha.
Mas é realmente com você.
Normalmente, o que eu faço é usar o loop for para loops controlados por contador.
Mas, novamente, você pode usar o mesmo. Se você realmente deseja usar um loop
for e torná-lo parecido com um tempo, você simplesmente não
tem a primeira e a terceira expressões,
você apenas tem uma única. Portanto, o ponto-e-vírgula para os testes de ponto-e-vírgula é o mesmo que o teste de tempo.
Isso só mostra que o for in the while pode fazer a mesma coisa, basta mudar
um pouco a sintaxe.
Se você deseja realmente usar um loop while, mas deseja que ele atue como
um loop for, você deve prefixá-lo com a inicialização e incluir instruções de atualização no corpo.
Então o que você faria é algo assim e geralmente sempre faz isso por um loop while.
Mas isso é o equivalente a um loop for. A inicialização está fora do loop da
variável de controle, a variável de controle do loop.
A condição de teste está entre parênteses, e então
você está atualizando essa variável de controle de loop no corpo do loop while.
E isso é o mesmo que a atualização do teste de inicialização do loop for e,
em seguida, o corpo. Não há diferença.
Novamente, como mencionei, eu uso o loop for talvez para loops de controle de contador um pouco mais.
Mas vou usar o para e o enquanto alternadamente, dependendo de como estou me sentindo naquele dia.
Portanto, um loop for pode ser um pouco mais apropriado se você
deseja inicializar e atualizar uma variável em uma linha.
Um loop while é melhor quando as condições são diferentes.
Novamente, loops de controle de contador para loops de controle sentinela talvez o loop while.
E aqui está um exemplo de um loop while com um loop de controle sentinela
e um loop for que está fazendo a mesma coisa novamente ou um loop for para um contador controlado.
Embora o loop possa ser executado muitas vezes com
base no que o usuário insere, o loop for é controlado por contador.
Portanto, este é o tempo do while Esperançosamente, isso está claro.
Familiarize-se com esses loops porque geralmente você deseja repetir o código.
Na conversa um pouco sobre loops aninhados e também alguns mecanismos
diferentes para sair de um loop usando um break
ou continue. Obrigada.