Carregando...

Laços while

int k = 1; guarda 1 antes de qualquer laço. Depois while (k <= 3) continua enquanto esse teste for true. Dentro das chaves, Console.WriteLine(k) escreve o número atual, e k = k + 1 guarda um a mais sob k. A tela mostra três linhas: 1, depois 2, depois 3. Mantenha a classe pública com o nome Pine.

Início fora, teste no while, passo dentro

Abra o arquivo Pine. O nome da classe continua Pine. Esta página não renomeia o tipo. Apague qualquer laço for se essa linha ainda estiver lá, incluindo for (int n = 1; n <= 3; n = n + 1) e todo início-teste-passo empacotado num só cabeçalho. Apague int choice se essa linha ainda estiver lá. Apague qualquer linha ReadLine. O arquivo que você guarda não espera digitação, não tem cabeçalho for com três tarefas nos parênteses e não tem switch. A tela só é escrita pela linha de escrita dentro das chaves do while.

Dentro de Main, guarde o contador primeiro: int k = 1;. Essa linha não fica dentro do while. Ela só começa k em 1. Depois o laço:
while (k <= 3) {
Console.WriteLine(k);
k = k + 1;
}
A palavra while é minúscula. Dentro dos parênteses fica só o teste: k <= 3. Não há início nem passo dentro desses parênteses — diferente da linha for que você viu antes. As chaves guardam a linha de escrita e o passo. Console.WriteLine(k); escreve o número atual sem aspas em volta de k. Depois k = k + 1; guarda um a mais sob k para o próximo teste poder virar false. Salve o arquivo.

O arquivo que você guarda

Mantenha esta forma de ensino. Uma linha de armazenamento acima do laço, int k = 1;. Um while com parênteses só em volta do teste. Uma linha de escrita dentro das chaves. Um passo dentro das chaves, k = k + 1;. Não há cabeçalho for, nem contador n da página anterior, nem aspas em volta de k.

k from 1 to 3

csharp
using System;

public class Pine
{
    public static void Main()
    {
        int k = 1;
        while (k <= 3)
        {
            Console.WriteLine(k);
            k = k + 1;
        }
    }
}

Leia de cima. using System; prepara nomes curtos. public class Pine nomeia o tipo. public static void Main() é onde o runtime começa. int k = 1; guarda 1. while (k <= 3) pergunta o teste. Console.WriteLine(k); escreve o k atual. k = k + 1; move o contador. Três linhas na tela: 1, depois 2, depois 3. Não há linha for no arquivo que você guarda.

Execute com dotnet run. O programa escreve três linhas e para. Não espera você digitar. O contador e o while já estavam no arquivo. Se dotnet run esperar, ReadLine ainda está no arquivo. Apague essa linha e mantenha int k = 1; e o while acima. A tela mostra 1, depois 2, depois 3. Se a tela nunca parar e ficar escrevendo 1, o passo falta nas chaves. Coloque k = k + 1; de volta. Se a tela mostrar uma execução residual no estilo for, apague o cabeçalho for. Se a tela mostrar a letra k em cada linha, a linha de escrita tem aspas: Console.WriteLine("k");. Você não reinstala o SDK .NET por uma tela que mostra as linhas erradas.

Percorra uma execução completa em ordem. k começa em 1 antes do while. O teste k <= 3 é true, então o corpo roda: a linha de escrita escreve 1, depois o passo guarda 2. O teste ainda é true: escreve 2, guarda 3. O teste ainda é true: escreve 3, guarda 4. Agora k <= 3 é false, então o laço termina. O início rodou uma vez, acima do laço. O teste rodou antes de cada passagem. O passo rodou dentro das chaves depois de cada escrita. Essas três tarefas são as mesmas ideias do for, mas não ficam empacotadas numa só linha de cabeçalho. Se você omitir k = k + 1; e deixar k em 1 para sempre, o teste continua true e a mesma linha pode escrever sem parar — esse caso sem fim é o motivo de o passo pertencer ao corpo nesta página.

Amplie o teste

Mude só o teste para o laço ir um passo mais longe: while (k <= 4). Deixe o início e o passo como estão. Agora a tela deve mostrar quatro linhas: 1, 2, 3 e 4.

k from 1 to 4

csharp
using System;

public class Pine
{
    public static void Main()
    {
        int k = 1;
        while (k <= 4)
        {
            Console.WriteLine(k);
            k = k + 1;
        }
    }
}

Este é o segundo arquivo. Não é o arquivo que você guarda. Execute dotnet run. A tela mostra quatro linhas. Você não reescreveu a linha de escrita nem o passo — só o teste dentro de while (…) mudou. Depois de ver quatro linhas, coloque de volta o arquivo guardado: k <= 3 e o mesmo corpo. As duas versões são C# válido. Ensinam a mesma forma while com um ponto de parada diferente.

Leia a execução de quatro linhas mais uma vez. k começa em 1. Cada teste true escreve o k atual e depois soma 1. Quando k vira 5, o teste falha e o laço para. O dígito 5 nunca aparece na tela neste demo, porque o corpo só roda enquanto o teste ainda é true.

📊 k and the first demo screen

k before WriteLine Screen line
1 1
2 2
3 3

Use a tabela como checagem depois do primeiro demo, não no lugar de uma execução. Antes de cada linha de escrita naquele demo, k guarda o número que vai aparecer nessa linha. Depois da terceira escrita, o passo guarda 4 e o teste falha. Se a tela nunca parar numa versão sem passo, coloque k = k + 1; de volta dentro das chaves — não reinstale o SDK .NET.

Regras que mantêm o while claro

Parênteses em volta do teste são obrigatórios. Escrever while k <= 3 { … } sem parênteses faz o build escrever um erro. O corpo nesta página sempre fica entre chaves, porque cada passagem tem duas linhas: a de escrita e o passo. Se você deixar o passo depois da chave de fechamento, ele roda uma vez depois que o laço termina — e dentro do laço k nunca muda, então o laço pode rodar para sempre. Mantenha o passo dentro das chaves nos dois demos.

while não é for e não é switch. for empacota início, teste e passo numa só linha de cabeçalho. while deixa só o teste no cabeçalho e pede que você coloque o início e o passo. switch escolhe entre rótulos case uma vez. Não deixe um laço for ou um switch no mesmo Main e se pergunte por que a tela mostra um residual de cabeçalho no estilo for ou a palavra mid. O Main desta sessão deve guardar só o int e o while.

Uma confusão comum é escrever a própria sintaxe: Console.WriteLine("while");. Isso escreve os caracteres while. Não repete. Outra confusão é colocar aspas em volta de k: Console.WriteLine("k"); escreve a letra k em cada passagem. Mantenha Console.WriteLine(k) sem aspas quando quiser o contador na tela. Se o teste já for false quando o while é alcançado pela primeira vez — por exemplo k começa em 5 e o teste diz k <= 3 — o corpo nunca roda e a tela fica em branco. Isso ainda é um while válido; os demos desta lição mantêm um teste que é true pelo menos uma vez para você ver as linhas escritas.

Agora você pode começar um contador acima do while, colocar um teste em while (…), e manter a linha de escrita e o passo dentro das chaves. Mudar o teste muda quantas linhas você obtém. A página seguinte é break e continue, onde você sai cedo de um laço ou pula uma passagem sem terminar o laço inteiro.

A tela é o contador que muda

O arquivo que você guarda escreve 1, depois 2, depois 3. O nome k está na linha de escrita, e a letra k não está na tela. O início fica acima do while, e não aparece na tela. Aspas em volta de k ou em volta de while escrevem letras, não o caminho do contador.

🧠 Teste Seu Conhecimento

Pronto para Começar

Teste Seu Conhecimento

Desafie-se com este questionário interativo e veja o quão bem você entende o tópico

❓
6
Perguntas
🎯
70%
Para Passar
♾️
∞
Tempo
🔄
∞
Tentativas

📝 Instruções

  • Leia cada pergunta cuidadosamente
  • Selecione a melhor resposta para cada pergunta
  • Você pode refazer o quiz quantas vezes quiser
  • Seu progresso será mostrado no topo