Estruturas condicionais e de repetição no C# \| TreinaWeb               Promoção no ar   Matricule-se agora e garanta **54% de desconto**  

  Termina em   Tempo restante da oferta: 18 Horas 

 53 Min 

 02 Seg 

   Tempo restante da oferta: 18 53 02 

  [Assinar →](https://www.treinaweb.com.br/checkout/pagamento/plano/anual?cupom=TW-SCLIENTE26) 

   [                ](https://www.treinaweb.com.br)  Explorar  

 [ Quanto custa? ](#assinatura) [ FAQ ](https://www.treinaweb.com.br#faq) [Matricule-se](#assinatura) [ Entrar ](https://www.treinaweb.com.br/login) 

     [ Início ](https://www.treinaweb.com.br) [ Artigos ](https://www.treinaweb.com.br/blog) Estruturas condicionais e de repetição no C#  [ C# ](https://www.treinaweb.com.br/blog/categoria/csharp) 

# Estruturas condicionais e de repetição no C#

 Veremos nesse artigo sobre quais são e como podemos utilizar as estruturas condicionais e as estruturas de repetição no C#

 [ Cleyson Lima ](https://www.treinaweb.com.br/blog/autor/cleyson-lima) 4 anos atrás

  ![](https://dkrn4sk0rn31v.cloudfront.net/uploads/2022/05/como-instalar-o-csharp-e-nosso-primeiro-exemplo.png)  

No artigo anterior vimos sobre [variáveis e constantes no C#](https://www.treinaweb.com.br/blog/conhecendo-variaveis-e-constantes-no-csharp), agora nós vamos aprender quais são e como utilizar as estruturas condicionais e de repetição disponíveis na linguagem C#.

As estruturas condicionais estão diretamente ligadas ao processo de tomada de decisão dentro de um algoritmo, são elas que nos permitem alterar o fluxo de execução do código dependendo dos valores com os quais estamos trabalhando.

Já as estruturas de repetição assim como o nome já diz nos permitem repetir certos trechos de códigos um número determinado ou indeterminado de vezes, dependendo sempre de qual a condição de parada para tal estrutura.

Tanto as estruturas de repetição quanto as estruturas de condição irão trabalhar na sua maioria das vezes com valores booleanos, ou seja, `true` (verdadeiro) e `false` (falso). Caso você ainda não esteja familiarizado com os conceitos de estruturas condicionais e de repetição na lógica de programação recomendo a leitura do artigo [Estruturas condicionais e de repetição](https://www.treinaweb.com.br/blog/estruturas-condicionais-e-de-repeticao/), que temos aqui no blog da [TreinaWeb](https://www.treinaweb.com.br/).

[  ![C# - Fundamentos](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/c-sharp.svg)   Curso C# - Fundamentos Conhecer o curso ](https://www.treinaweb.com.br/curso/csharp-fundamentos)

## Estruturas condicionais

As estruturas condicionais possibilitam ao programa tomar decisões e alterar o seu fluxo de execução. Isso possibilita ao desenvolvedor o poder de controlar quais são as tarefas e trechos de código executados de acordo com diferentes situações, como os valores de variáveis.

As estruturas condicionais geralmente analisam expressões booleanas e, caso estas expressões sejam verdadeiras, um trecho do código é executado. No caso contrário, outro trecho do código é executado.

### Estrutura if/else

O `if/else` é uma estrutura de condição em que uma expressão booleana é analisada. Quando a condição que estiver dentro do `if` for verdadeira, ela é executada. Já o `else` é utilizado para definir o que é executado quando a condição analisada pelo `if` for falsa. Caso o `if` seja verdadeiro e, consequentemente executado, o `else` não é executado.

O `if` pode ser utilizado em conjunto com o `else` ou até mesmo sozinho, caso necessário.

Abaixo, temos um exemplo onde o `if` é utilizado em conjunto com o `else`.

```csharp
int idade = 18;
if (idade >= 18)
{
    // Se a váriavel idade for maior ou igual à 18 esse trecho de código será executado
    Console.WriteLine("Você é maior de idade!");
}
else
{
    // Se a váriavel idade não for maior ou igual à 18 esse trecho de código será executado
    Console.WriteLine("Você é menor de idade!");
}

```

Também podemos utilizar somente o `if`, não definindo um fluxo alternativo.

```csharp
int idade = 18;
if (idade >= 18)
{
    // Se a váriavel idade for maior ou igual à 18 esse trecho de código será executado
    Console.WriteLine("Você é maior de idade!");
}
// Se a váriavel idade não for maior ou igual à 18, nenhuma frase será exibida

```

Ainda é possível encadear múltiplas estruturas `if/else` caso necessário.

```csharp
int idade = 18;
if (idade >= 18)
{
    // Se a váriavel idade for maior ou igual à 18 esse trecho de código será executado
    Console.WriteLine("Você é maior de idade!");
}
else if (idade >= 16)
{
    // Se a váriavel idade não for maior ou igual à 18 mas for maior ou igual a 16 esse trecho de código será executado
    Console.WriteLine("Você não é maior de idade, mas já pode votar!");
}
else
{
    // Se a váriavel idade não for maior ou igual à 18 esse trecho de código será executado
    Console.WriteLine("Você é menor de idade!");
}

```

[  ![C# - Orientação a Objetos](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/c-sharp.svg)   Curso C# - Orientação a Objetos Conhecer o curso ](https://www.treinaweb.com.br/curso/csharp-orientacao-a-objetos)

### Estrutura switch/case

A estrutura condicional `switch/case` vem como alternativa em momentos em que temos que utilizar múltiplos `if's` no código. Múltiplos `if/else` encadeados tendem a tornar o código muito extenso, pouco legível e com baixo índice de manutenção.

O `switch/case` testa o valor contido em uma variável, realizando uma comparação com cada uma das opções. Cada uma dessas possíveis opções é delimitada pela instrução `case`.

Podemos ter quantos casos de análise forem necessários e, quando um dos valores corresponder ao da variável, o código do `case` correspondente será executado. Caso a variável não corresponda a nenhum dos casos testados, o último bloco será executado, chamado de `default` (padrão).

A análise de cada caso também precisa ter seu final delimitado. Essa delimitação é feita através da palavra reservada `break`.

```csharp
int mes = 2;
switch (mes)
{
    case 1:
        Console.WriteLine("O mês é Janeiro!");
        break;
    case 2:
        Console.WriteLine("O mês é Fevereiro");
        break;
    case 3:
        Console.WriteLine("O mês é Março");
        break;
    case 4:
        Console.WriteLine("O mês é Abril");
        break;
    case 5:
        Console.WriteLine("O mês é Maio");
        break;
    case 6:
        Console.WriteLine("O mês é Junho");
        break;
    case 7:
        Console.WriteLine("O mês é Julho");
        break;
    case 8:
        Console.WriteLine("O mês é Agosto");
        break;
    case 9:
        Console.WriteLine("O mês é Setembro");
        break;
    case 10:
        Console.WriteLine("O mês é Outubro");
        break;
    case 11:
        Console.WriteLine("O mês é Novembro");
        break;
    case 12:
        Console.WriteLine("O mês é Dezembro");
        break;
    default:
        Console.WriteLine("Mês inválido");
        break;
}

```

Na maioria das linguagem que possui a estrutura `switch/case` não é necessário colocar o `break` na cláusula `default`, porém no C# é obrigatório, caso não faça isso será exibido um erro de compilação no momento em que realizar a execução do código.

No C# também existem outras maneiras de se utilizar a estrutura `switch/case`, como por exemplo as *switch expressions*, nesse artigo eu não irei abordar sobre esse recurso e irei me ater apenas ao switch clássico, mas aqui no blog nós temos o artigo [Switch Expressions no C# 8.0](https://www.treinaweb.com.br/blog/switch-expressions-no-c-8-0/) que aborda sobre esse recurso em mais detalhes e que recomendo a leitura caso tenha curiosidade de aprender sobre essa maneira diferente de se utilizar a estrutura `switch/case`.

## Estruturas de repetição

Estruturas de repetição, também conhecidas como loops (laços), são utilizadas para executar repetidamente uma instrução ou bloco de instrução enquanto determinada condição estiver sendo satisfeita.

As principais estruturas de repetição na maioria das linguagens são o `for` e o `while`, no C# além dessas duas também temos o `do/while` e o `foreach`.

### Estrutura while

O `while` é uma estrutura de repetição que irá repetir o bloco de código enquanto uma determinada condição for verdadeira, geralmente o `while` é utilizando quando não sabemos quantas vezes o trecho de código em questão deve ser repetido.

A estrutura de repetição `while` possui a seguinte estrutura:

```csharp
while ()
{
    // Trecho de código a ser repetido
}

```

Perceba que a condição para interrupção da repetição do trecho dentro do while se dá através de uma condição booleana.

Abaixo, temos um exemplo do while. Neste exemplo, é pedido ao usuário que tente adivinhar o número. Enquanto o usuário não acerta o número, é pedido para que o usuário digite o valor que ele acha que é o correto. Perceba que nós temos um trecho de código que é sempre repetido, que é o pedido do número para o usuário. Mas, não sabemos exatamente quando o usuário vai acertar este número, ou seja, não sabemos exatamente quantas vezes o trecho de código será repetido. Nessa situação, o while é a estrutura de repetição mais adequada.

```csharp
int numero = -1;
while (numero != 10)
{
    Console.Write("Digite um número: ");
    numero = Convert.ToInt32(Console.ReadLine());
    if (numero < 10)
    {
        Console.WriteLine("Você errou, tente um número maior.");
    }
    else if (numero > 10)
    {
        Console.WriteLine("Você errou, tente um número menor.");
    }
    else
    {
        Console.WriteLine("Parabéns, você acertou!");
    }
}

```

[  ![C# - Algoritmos](https://d2knvm16wkt3ia.cloudfront.net/assets/svg-icon/c-sharp.svg)   Curso C# - Algoritmos Conhecer o curso ](https://www.treinaweb.com.br/curso/c-sharp-algoritmos)

### Estrutura do/while

A estrutura `do/while` é bem semelhante a estrutura `while`, a diferença é que na estrutura `do/while` a condição é testada apenas ao final do loop, ou seja, o código será executado ao menos uma vez, mesmo que a condição seja falsa desde o início.

Veja um simples exemplo de uso do `do/while`

```csharp
int contador = 15;
do
{
    Console.WriteLine("O contador vale: " + contador);
    contador++;
} while (contador
