Saiba mais sobre lógica condicional com instruções branch e loopLearn conditional logic with branch and loop statements

Este tutorial ensina a escrever código que examina variáveis e muda o caminho de execução com base nessas variáveis.This tutorial teaches you how to write code that examines variables and changes the execution path based on those variables. Escreva o código em C# e veja os resultados da compilação e da execução.You write C# code and see the results of compiling and running it. O tutorial contém uma série de lições que exploram construções de branches e loops em C#.The tutorial contains a series of lessons that explore branching and looping constructs in C#. Estas lições ensinam os princípios básicos da linguagem C#.These lessons teach you the fundamentals of the C# language.

Este tutorial espera que você tenha um computador que possa usar para desenvolvimento.This tutorial expects you to have a machine you can use for development. O tutorial do .NET Olá, mundo em 10 minutos tem instruções para configurar seu ambiente de desenvolvimento local no Windows, Linux ou MacOS.The .NET tutorial Hello World in 10 minutes has instructions for setting up your local development environment on Windows, Linux, or macOS. Uma visão geral dos comandos que você usará está em Familiarize-se com as ferramentas de desenvolvimento, com links para obter mais detalhes.A quick overview of the commands you'll use is in the Become familiar with the development tools with links to more details.

Tome decisões usando a instrução ifMake decisions using the if statement

Crie um diretório chamado branches-tutorial.Create a directory named branches-tutorial. Torne-o o diretório atual e execute dotnet new console -n BranchesAndLoops -o ..Make that the current directory and run dotnet new console -n BranchesAndLoops -o .. Esse comando cria um novo aplicativo de console .NET Core no diretório atual.This command creates a new .NET Core console application in the current directory.

Abra Program.cs em seu editor favorito e substitua a linha Console.WriteLine("Hello World!"); pelo seguinte código:Open Program.cs in your favorite editor, and replace the line Console.WriteLine("Hello World!"); with the following code:

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

Experimente este código digitando dotnet run na sua janela do console.Try this code by typing dotnet run in your console window. Você deve ver a mensagem "A resposta é maior do que 10."You should see the message "The answer is greater than 10." impressa no console.printed to your console.

Modifique a declaração de b para que a soma seja inferior a 10:Modify the declaration of b so that the sum is less than 10:

int b = 3;

Digite dotnet run novamente.Type dotnet run again. Como a resposta é inferior a 10, nada é impresso.Because the answer is less than 10, nothing is printed. A condição que você está testando é falsa.The condition you're testing is false. Não há qualquer código para execução, porque você escreveu apenas uma das ramificações possíveis para uma instrução if: a ramificação verdadeira.You don't have any code to execute because you've only written one of the possible branches for an if statement: the true branch.

Dica

À medida que explora C# (ou qualquer linguagem de programação), você cometerá erros ao escrever o código.As you explore C# (or any programming language), you'll make mistakes when you write code. O compilador encontrará e reportará esses erros.The compiler will find and report the errors. Verifique atentamente a saída do erro e o código que gerou o erro.Look closely at the error output and the code that generated the error. O erro do compilador geralmente pode ajudá-lo a localizar o problema.The compiler error can usually help you find the problem.

Este primeiro exemplo mostra o poder dos tipos if e Booliano.This first sample shows the power of if and Boolean types. Um Booliano é uma variável que pode ter um dos dois valores: true ou false.A Boolean is a variable that can have one of two values: true or false. C# define um tipo especial, bool para variáveis Boolianas.C# defines a special type, bool for Boolean variables. A instrução if verifica o valor de um bool.The if statement checks the value of a bool. Quando o valor é true, a instrução após if é executada.When the value is true, the statement following the if executes. Caso contrário, é ignorada.Otherwise, it is skipped.

Esse processo de verificação de condições e execução de instruções com base nessas condições é muito eficiente.This process of checking conditions and executing statements based on those conditions is very powerful.

Faça if e else funcionam juntasMake if and else work together

Para executar um código diferente nos branches true e false, crie um branch else que será executado quando a condição for false.To execute different code in both the true and false branches, you create an else branch that executes when the condition is false. Experimente isto.Try this. Adicione as duas últimas linhas do código abaixo ao seu método Main (você já deve ter os quatro primeiros):Add the last two lines in the code below to your Main method (you should already have the first four):

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 após a palavra-chave else é executada somente quando a condição que estiver sendo testada for false.The statement following the else keyword executes only when the condition being tested is false. A combinação de if e else com condições Boolianas fornece todos os recursos que você precisa para lidar com uma condição true e false.Combining if and else with Boolean conditions provides all the power you need to handle both a true and a false condition.

Importante

O recuo sob as instruções if e else é para leitores humanos.The indentation under the if and else statements is for human readers. A linguagem C# não considera recuos ou espaços em branco como significativos.The C# language doesn't treat indentation or white space as significant. A instrução após a palavra-chave if ou else será executada com base na condição.The statement following the if or else keyword will be executed based on the condition. Todos os exemplos neste tutorial seguem uma prática comum para recuar linhas com base no fluxo de controle de instruções.All the samples in this tutorial follow a common practice to indent lines based on the control flow of statements.

Como o recuo não é significativo, você precisa usar { e } para indicar quando você quer que mais de uma instrução faça parte do bloco executado condicionalmente.Because indentation is not significant, you need to use { and } to indicate when you want more than one statement to be part of the block that executes conditionally. Os programadores em C# normalmente usam essas chaves em todas as cláusulas if e else.C# programmers typically use those braces on all if and else clauses. O exemplo a seguir é igual ao que você acabou de criar.The following example is the same as the one you just created. Modifique o código acima para coincidir com o código a seguir:Modify your code above to match the following code:

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.Through the rest of this tutorial, the code samples all include the braces, following accepted practices.

Você pode testar condições mais complicadas.You can test more complicated conditions. Adicione o seguinte código ao seu método Main após o código que você escreveu até agora:Add the following code in your Main method after the code you've written so far:

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.The == symbol tests for equality. Usar == distingue o teste de igualdade de atribuição, que você viu em a = 5.Using == distinguishes the test for equality from assignment, which you saw in a = 5.

O && representa "e".The && represents "and". Isso significa que as duas condições devem ser verdadeiras para executar a instrução no branch verdadeiro.It means both conditions must be true to execute the statement in the true branch. Estes exemplos também mostram que você pode ter várias instruções em cada branch condicional, desde que você coloque-as entre { e }.These examples also show that you can have multiple statements in each conditional branch, provided you enclose them in { and }.

Você também pode usar || para representar "ou".You can also use || to represent "or". Adicione o código a seguir após o que você escreveu até o momento:Add the following code after what you've written so far:

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

Modifique os valores de a, b e c e alterne entre && e || para explorar.Modify the values of a, b, and c and switch between && and || to explore. Você obterá mais compreensão de como os operadores && e || funcionam.You'll gain more understanding of how the && and || operators work.

Você terminou a primeira etapa.You've finished the first step. Antes de iniciar a próxima seção, vamos passar o código atual para um método separado.Before you start the next section, let's move the current code into a separate method. Isso facilita o começo do trabalho com um exemplo novo.That makes it easier to start working with a new example. Renomeie seu método Main como ExploreIf e escreva um novo método Main que chama ExploreIf.Rename your Main method to ExploreIf and write a new Main method that calls ExploreIf. Quando você terminar, seu código deverá parecer com isto:When you have finished, your code should look like this:

using System;

namespace BranchesAndLoops
{
    class Program
    {
        static void ExploreIf()
        {
            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");
            }

            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 greater than the second");
            }
            else
            {
                Console.WriteLine("The answer is not greater than 10");
                Console.WriteLine("Or the first number is not greater than the second");
            }

            if ((a + b + c > 10) || (a > b))
            {
                Console.WriteLine("The answer is greater than 10");
                Console.WriteLine("Or the first number is greater than the second");
            }
            else
            {
                Console.WriteLine("The answer is not greater than 10");
                Console.WriteLine("And the first number is not greater than the second");
            }
        }

        static void Main(string[] args)
        {
            ExploreIf();
        }
    }
}

Comente a chamada para ExploreIf().Comment out the call to ExploreIf(). Isso tornará a saída menos congestionada enquanto você trabalha nesta seção:It will make the output less cluttered as you work in this section:

//ExploreIf();

O // inicia um comentário em C#.The // starts a comment in C#. Os comentários são qualquer texto que você queira manter em seu código-fonte, mas não queria executar como código.Comments are any text you want to keep in your source code but not execute as code. O compilador não gera qualquer código executável a partir dos comentários.The compiler does not generate any executable code from comments.

Use loops para repetir operaçõesUse loops to repeat operations

Nesta seção, você usa loops repetir as instruções.In this section you use loops to repeat statements. Tente este código em seu método Main:Try this code in your Main method:

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, ou bloco de instruções, após o while.The while statement checks a condition and executes the statement or statement block following the while. Ela verifica repetidamente a condição e executa essas instruções até que a condição seja falsa.It repeatedly checks the condition and executing those statements until the condition is false.

Há outro operador novo neste exemplo.There's one other new operator in this example. O ++ após a variável counter é o operador increment.The ++ after the counter variable is the increment operator. Ele adiciona 1 ao valor de counter e armazena esse valor na variável counter.It adds 1 to the value of counter and stores that value in the counter variable.

Importante

Verifique se a condição de loop while muda para false ao executar o código.Make sure that the while loop condition changes to false as you execute the code. Caso contrário, crie um loop infinito, para que seu programa nunca termine.Otherwise, you create an infinite loop where your program never ends. Isso não é demonstrado neste exemplo, porque você tem que forçar o programa a encerrar usando CTRL-C ou outros meios.That is not demonstrated in this sample, because you have to force your program to quit using CTRL-C or other means.

O loop while testa a condição antes de executar o código seguindo while.The while loop tests the condition before executing the code following the while. O loop do ... while executa o código primeiro e, em seguida, verifica a condição.The do ... while loop executes the code first, and then checks the condition. O loop do while é mostrado no código a seguir:The do while loop is shown in the following code:

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

Esse loop do e o loop while anterior produzem a mesma saída.This do loop and the earlier while loop produce the same output.

Trabalhar com o loop forWork with the for loop

O loop for é usado normalmente em C#.The for loop is commonly used in C#. Tente este código em seu método Main():Try this code in your Main() method:

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

Ele faz o mesmo trabalho que o loop while e o loop do que você já usou.This does the same work as the while loop and the do loop you've already used. A instrução for tem três partes que controlam o modo como ela funciona.The for statement has three parts that control how it works.

A primeira parte é o inicializador for: int index = 0; declara que index é a variável do loop, e define seu valor inicial como 0.The first part is the for initializer: int index = 0; declares that index is the loop variable, and sets its initial value to 0.

A parte central é a condição for: index < 10 declara que este loop for continuará sendo executado desde que o valor do contador seja inferior a 10.The middle part is the for condition: index < 10 declares that this for loop continues to execute as long as the value of counter is less than 10.

A parte final é o iterador for: index++ especifica como modificar a variável de loop depois de executar o bloco após a instrução for.The final part is the for iterator: index++ specifies how to modify the loop variable after executing the block following the for statement. Aqui, ela especifica que index deve ser incrementado com 1 sempre que o bloco for executado.Here, it specifies that index should be incremented by 1 each time the block executes.

Experimente você mesmo.Experiment with these yourself. Tente o seguinte:Try each of the following:

  • Altere o inicializador para iniciar em um valor diferente.Change the initializer to start at a different value.
  • Altere a condição para parar em um valor diferente.Change the condition to stop at a different value.

Quando terminar, vamos escrever um código para usar o que você aprendeu.When you're done, let's move on to write some code yourself to use what you've learned.

Combinar branches e loopsCombine branches and loops

Agora que você viu a instrução if e as construções de loop na linguagem C#, verifique se você pode escrever o código C# para encontrar a soma de todos os inteiros de 1 a 20 divisíveis por 3.Now that you've seen the if statement and the looping constructs in the C# language, see if you can write C# code to find the sum of all integers 1 through 20 that are divisible by 3. Veja algumas dicas:Here are a few hints:

  • O operador % retorna o restante de uma operação de divisão.The % operator gives you the remainder of a division operation.
  • A instrução if retorna a condição para ver se um número deve ser parte da soma.The if statement gives you the condition to see if a number should be part of the sum.
  • O loop for pode ajudar você a repetir uma série de etapas para todos os números de 1 a 20.The for loop can help you repeat a series of steps for all the numbers 1 through 20.

Tente você mesmo.Try it yourself. Depois verifique como você fez.Then check how you did. Você deve obter 63 como resposta.You should get 63 for an answer. Veja uma resposta possível exibindo o código completo no GitHub.You can see one possible answer by viewing the completed code on GitHub.

Você concluiu o tutorial "branches e loops".You've completed the "branches and loops" tutorial.

Continue com o tutorial Matrizes e coleções em seu próprio ambiente de desenvolvimento.You can continue with the Arrays and collections tutorial in your own development environment.

Saiba mais sobre esses conceitos nestes tópicos:You can learn more about these concepts in these topics: