Saiba mais sobre lógica condicional com instruções branch e loop
Esse tutorial ensina a escrever código que examina variáveis e muda o caminho de execução com base nessas variáveis. Você usará seu navegador para escrever em C# interativamente e ver os resultados da compilação e da execução de seu código. Este tutorial contém uma série de lições que exploram construções de branches e loops em C#. Estas lições ensinam os princípios básicos da linguagem C#.
Dica
Para colar um snippet de código dentro do modo de foco você deve usar o atalho de teclado (Ctrl + v ou cmd + v).
Tomar decisões usando a instrução if
Execute o seguinte código na janela interativa. Selecione o botão Entrar em modo de foco. Em seguida, digite o seguinte bloco de código na janela interativa e selecione Executar:
int a = 5;
int b = 6;
if (a + b > 10)
Console.WriteLine("The answer is greater than 10.");
Se você estiver executando isso em seu ambiente, deverá seguir as instruções para a versão local.
Modifique 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á testando é falsa. 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.
Dica
À medida que explora C# (ou qualquer linguagem de programação), você cometerá erros ao escrever o código. O compilador encontrará esses erros e os reportará a você. Quando a saída contiver mensagens de erro, analise atentamente o código de exemplo e o código na janela interativa para ver o que deve ser corrigido. Esse exercício ajudará você a conhecer a estrutura do código C#.
Este primeiro exemplo mostra o poder do if
e dos tipos boolianos. Um booliano é uma variável que pode ter um dos dois valores: true
ou false
. C# define um tipo especial, bool
para variáveis boolianas. A instrução if
verifica o valor de um bool
. Quando o valor é true
, a instrução após if
é executada. Caso contrário, ela é ignorada.
Esse processo de verificação de condições e execução de instruções com base nessas condições é eficiente. Vamos explorar mais.
Faça if e else funcionam juntas
Para executar um código diferente nos branches true e false, crie um branch else
que será executado quando a condição for false. Tente o seguinte:
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
. A combinação de if
e else
com condições boolianas fornece todos os recursos que você precisa.
Importante
O recuo sob as instruções if
e else
é para leitores humanos.
A linguagem C# não considera recuos ou espaços em branco como significativos.
A instrução após a palavra-chave if
ou else
será executada com base na condição. Todos os exemplos neste tutorial seguem uma prática comum para recuar linhas com base no fluxo de controle de instruções.
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. Os programadores em C# normalmente usam essas chaves em todas as cláusulas if
e else
. O exemplo a seguir é igual ao que você acabou de criar. 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. Usar ==
distingue o teste de igualdade de atribuição, que você viu em a = 5
.
O &&
representa "e". Isso significa que as duas condições devem ser verdadeiras para executar a instrução no branch verdadeiro. Estes exemplos também mostram que você pode ter várias instruções em cada branch condicional, desde que você coloque-as entre {
e }
.
Você também pode usar ||
para representar "ou":
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("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. Você obterá mais compreensão de como os operadores &&
e ||
funcionam.
Use loops para repetir operações
Outro conceito importante para criar programas maiores são os loops. Você usará loops para repetir as 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 após while
. Ela repetirá a verificação da condição e executará essas instruções até que a condição seja false.
Há outro operador novo neste exemplo. O ++
após a variável counter
é o operador increment. Ele adiciona 1 ao valor do contador e armazena esse valor na variável do contador.
Importante
Verifique se a condição de loop while
muda para false quando ao executar o código. Caso contrário, crie um loop infinito, para que seu programa nunca termine. Não vamos demonstrar isso porque o mecanismo que executa o código ultrapassará o tempo limite, e você não verá uma saída de seu programa.
O loop while
testa a condição antes de executar o código seguindo while
. O loop do
... while
executa o código primeiro e, em seguida, verifica a condição. Ela tem esta aparência:
int counter = 0;
do
{
Console.WriteLine($"Hello World! The counter is {counter}");
counter++;
} while (counter < 10);
Esse loop do
e o loop while
anterior funcionam da mesma maneira.
Vamos passar para a última instrução de loop.
Trabalhar com o loop for
Outra instrução de loop comum que você verá 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}");
}
Ele 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 o modo como ela funciona.
A primeira parte é o inicializador for: int counter = 0;
declara que counter
é a variável do loop, e define seu valor inicial como 0
.
A parte central é a condição for: counter < 10
declara que este loop for
continuará sendo executado desde que o valor do contador seja inferior a 10.
A parte final é o iterador for: counter++
especifica como modificar a variável de loop depois de executar o bloco após a instrução for
. Aqui, ela especifica que counter
deve ser incrementado com 1 sempre que o bloco for executado.
Experimente você mesmo. Tente o seguinte:
- Altere o inicializador para iniciar em um valor diferente.
- Altere a condição para parar em um valor diferente.
Quando terminar, vamos escrever um código para usar o que você aprendeu.
Há uma outra instrução de loop 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. Ela é usada com mais frequência com coleções, portanto, será abordada no próximo tutorial.
Loops aninhados criados
Um loop while
, do
ou 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 criar 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 incrementa uma vez para cada execução completa do loop interno. Inverta o aninhamento de linha e da coluna e confira as alterações.
Combinar branches e 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. Veja algumas dicas:
- O operador
%
retorna o restante de uma operação de divisão. - A instrução
if
retorna a condição para ver se um número deve ser parte da soma. - O loop
for
pode ajudar você a repetir uma série de etapas para todos os números de 1 a 20.
Tente você mesmo. Depois verifique como você fez. Como dica, você deve obter 63 como resposta.
Desafio concluído
Você conseguiu algo semelhante a isto?
int sum = 0;
for (int number = 1; number < 21; number++)
{
if (number % 3 == 0)
{
sum = sum + number;
}
}
Console.WriteLine($"The sum is {sum}");
Parabéns!
Você concluiu o tutorial interativo "branches e loops". Selecione o link coleções de listas abaixo para iniciar o próximo tutorial interativo ou visite o site do .NET para baixar o SDK do .NET, criar um projeto no computador e continuar programando. A seção "Próximas etapas" leva você de volta a estes tutoriais.
Saiba mais sobre esses conceitos nesses artigos:
Tem algum problema com essa seção? Se tiver, envie seus comentários para que possamos melhorar esta seção.