Partilhar via


Instruções e ciclos do if C# - tutorial de lógica condicional

Este tutorial ensina como escrever código C# que examina variáveis e altera o caminho de execução com base nessas variáveis. Você escreve código C# e vê os resultados de compilá-lo e executá-lo. O tutorial contém uma série de lições que exploram construções de ramificação e looping em C#. Estas lições ensinam os fundamentos da linguagem C#.

Dica

Quando um bloco de trecho de código inclui o botão "Executar", esse botão abre a janela interativa ou substitui o código existente na janela interativa. Quando o trecho não inclui um botão "Executar", você pode copiar o código e adicioná-lo à janela interativa atual.

Execute o seguinte código na janela interativa. Selecione Executar:

int a = 5;
int b = 6;
if (a + b > 10)
    Console.WriteLine("The answer is greater than 10.");

Modificar a declaração de b para que a soma seja inferior a 10:

int b = 3;

Selecione o botão Executar novamente. Como a resposta é inferior a 10, nada é impresso. A condição que você está a testar é falsa. Você não tem nenhum código para executar porque escreveu apenas uma das ramificações possíveis para uma instrução if: a ramificação verdadeira.

Dica

Ao explorar C# (ou qualquer linguagem de programação), você comete erros ao escrever código. O compilador encontra esses erros e os relata para você. Quando a saída contiver mensagens de erro, observe atentamente o código de exemplo e o código na janela interativa para ver o que corrigir. Esse exercício ajuda você a aprender a estrutura do código C#.

Este primeiro exemplo mostra o poder dos tipos if e booleano. Um booleano é uma variável que pode ter um de dois valores: true ou false. C# define um tipo especial, bool para variáveis booleanas. A instrução if verifica o valor de um bool. Quando o valor é true, a instrução seguinte ao if é executada. Caso contrário, é ignorado.

Este processo de verificação de condições e execução de declarações com base nessas condições é poderoso. Vamos explorar mais.

Faça com que if e else funcionem juntos

Para executar código diferente nas ramificações true e false, crie uma ramificação else que é executada quando a condição é false. Tente o seguinte código:

int a = 5;
int b = 3;
if (a + b > 10)
    Console.WriteLine("The answer is greater than 10");
else
    Console.WriteLine("The answer is not greater than 10");

A instrução que segue a palavra-chave else é executada somente quando a condição que está sendo testada é false. Combinar if e else com condições booleanas fornece toda a potência que você precisa.

Importante

O recuo sob as if e else declarações é para leitores humanos. A linguagem C# não trata o recuo ou o espaço em branco como sendo significativos. A instrução que segue a palavra-chave if ou else é executada com base na condição. Todos os exemplos neste tutorial seguem uma prática comum para indentar linhas com base no fluxo de controle de declarações.

Como a indentação não é significativa, precisas usar { e } para indicar quando desejas que mais de uma instrução faça parte do bloco que se executa condicionalmente. Os programadores de C# usam normalmente colchetes em todas as cláusulas if e else. O exemplo a seguir é o mesmo que você criou. Experimente.

int a = 5;
int b = 3;
if (a + b > 10)
{
    Console.WriteLine("The answer is greater than 10");
}
else
{
    Console.WriteLine("The answer is not greater than 10");
}

Dica

No restante deste tutorial, todos os exemplos de código incluem as chaves, seguindo as práticas aceitas.

Você pode testar condições mais complicadas:

int a = 5;
int b = 3;
int c = 4;
if ((a + b + c > 10) && (a == b))
{
    Console.WriteLine("The answer is greater than 10");
    Console.WriteLine("And the first number is equal to the second");
}
else
{
    Console.WriteLine("The answer is not greater than 10");
    Console.WriteLine("Or the first number is not equal to the second");
}

O símbolo == testa a igualdade de . Ao usares ==, distingues o teste de igualdade da atribuição, que já tinhas visto em a = 5.

O && representa "e". Isso significa que ambas as condições devem ser verdadeiras para executar a instrução no ramo verdadeiro. Esses exemplos também mostram que pode ter várias declarações em cada ramificação condicional, desde que as inclua em { e }.

Você também pode usar || para representar "ou":

if ((a + b + c > 10) || (a == b))

Modifique os valores de a, be c e alterne entre && e || para explorar. Você ganha mais compreensão de como os operadores de && e || funcionam.

Usar ciclos para repetir operações

Outro conceito importante para criar programas maiores é o uso de ciclos (loops). Você usa loops para repetir instruções que deseja executar mais de uma vez. Experimente este código na janela interativa:

int counter = 0;
while (counter < 10)
{
    Console.WriteLine($"Hello World! The counter is {counter}");
    counter++;
}

A instrução while verifica uma condição e executa a instrução seguindo o while. Repete a verificação da condição e a execução dessas instruções até que a condição seja falsa.

Há um outro novo operador neste exemplo. O ++ após a variável counter é o operador de incremento . Ele adiciona 1 ao valor do contador e armazena esse valor na variável do contador.

Importante

Certifique-se de que a condição de loop while alterne para false à medida que você executa o código. Caso contrário, você cria um loop infinito onde seu programa nunca termina. Não vamos demonstrar isso, porque o mecanismo que executa seu código expira e você não vê nenhuma saída do seu programa.

O loop while testa a condição antes de executar o código após o while. O loop do ... while executa o código primeiro e, em seguida, verifica a condição. Tem a seguinte aparência:

int counter = 0;
do
{
    Console.WriteLine($"Hello World! The counter is {counter}");
    counter++;
} while (counter < 10);

Este loop do e o loop while anterior funcionam da mesma forma.

Vamos passar para uma última instrução de loop.

Trabalhar com o ciclo for

Outra instrução de loop comum que você vê no código C# é o loop for. Experimente este código na janela interativa:

for (int counter = 0; counter < 10; counter++)
{
    Console.WriteLine($"Hello World! The counter is {counter}");
}

O loop for anterior faz o mesmo trabalho que o loop while e o loop do que você já usou. A instrução for tem três partes que controlam como ela funciona:

  • A primeira parte é o para inicializador: int counter = 0; declara que counter é a variável de loop e define seu valor inicial como 0.
  • A parte do meio é a para a condição: counter < 10 declara que esse loop de for continua a ser executado desde que o valor do contador seja menor que 10.
  • A parte final é o para iterador: counter++ especifica como modificar a variável de loop depois de executar o bloco após a instrução for. Aqui, ele especifica que counter incrementa em 1 cada vez que o bloco é executado.

Experimente essas condições você mesmo. Tente cada uma das seguintes alterações:

  • Altere o inicializador para começar com um valor diferente.
  • Altere a condição para parar em um valor diferente.

Quando terminar, vamos passar a escrever algum código para usar o que você aprendeu.

Há uma outra instrução de looping que não é abordada neste tutorial: a instrução foreach. A instrução foreach repete sua instrução para cada item em uma sequência de itens. É mais frequentemente usado com coleções. É abordado no próximo tutorial.

Loops aninhados criados

Um loop de while, doou for pode ser aninhado dentro de outro loop para criar uma matriz usando a combinação de cada item no loop externo com cada item no loop interno. Vamos fazer isso para construir um conjunto de pares alfanuméricos para representar linhas e colunas.

Um loop for pode gerar as linhas:

for (int row = 1; row < 11; row++)
{
    Console.WriteLine($"The row is {row}");
}

Outro loop pode gerar as colunas:

for (char column = 'a'; column < 'k'; column++)
{
    Console.WriteLine($"The column is {column}");
}

Você pode aninhar um loop dentro do outro para formar pares:

for (int row = 1; row < 11; row++)
{
    for (char column = 'a'; column < 'k'; column++)
    {
        Console.WriteLine($"The cell is ({row}, {column})");
    }
}

Você pode ver que o loop externo aumenta uma vez para cada execução completa do loop interno. Inverta o aninhamento de linhas e colunas e veja as alterações você mesmo.

Combinar ramificações e ciclos

Agora que você viu a instrução if e as construções de looping na linguagem C#, veja se você pode escrever código C# para encontrar a soma de todos os inteiros de 1 a 20 que são divisíveis por 3. Aqui estão algumas dicas:

  • O operador % fornece o restante de uma operação de divisão.
  • A declaração if dá-lhe a condição para ver se um número deve fazer parte da soma.
  • O loop for pode ajudá-lo a repetir uma série de passos para todos os números de 1 a 20.

Experimente você mesmo. Em seguida, verifique como você fez. Como sugestão, a resposta deverá ser 63.

Inventou algo assim?

:::code language="csharp" interactive="try-dotnet-method" source="./snippets/BranchesAndLoops/Program.cs" id="Challenge":::

Você concluiu o tutorial interativo sobre "ramos e loops". Você pode selecionar o link coleção de listas para iniciar o próximo tutorial interativo, ou pode visitar o site do .NET para baixar o SDK do .NET, criar um projeto no seu computador e continuar a programar. A secção "Próximos passos" traz-o de volta a estes tutoriais.

Você pode aprender mais sobre esses conceitos nestes artigos: