Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Instruções e loops em C#
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 da compilação e execução dele. O tutorial contém uma série de lições que exploram as construções de ramificação e looping em C#. Essas lições ensinam os conceitos básicos da linguagem C#.
Dica
Quando um bloco de snippet 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 snippet não inclui um botão "Executar", você pode copiar o código e adicioná-lo à janela interativa atual.
Execute o código a seguir na janela interativa. Selecione Executar:
int a = 5;
int b = 6;
if (a + b > 10)
Console.WriteLine("The answer is greater than 10.");
Modifique a declaração de b
para que a soma seja menor que 10:
int b = 3;
Selecione o botão Executar novamente. Como a resposta é menor que 10, nada é impresso. A condição que você está testando é falsa. Você não tem nenhum código para executar, pois escreveu apenas uma das ramificações possíveis de 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 localiza esses erros e os reporta a você. Quando a saída contiver mensagens de erro, examine 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 boolianos. Um booliano é uma variável que pode ter um dos dois valores: true
ou false
. O 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 o 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.
Fazer com que "if" e "else" trabalhem juntos
Para executar código diferente nas ramificações verdadeiras e falsas, crie uma ramificação else
que seja executada quando a condição for falsa. Experimente 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 após a palavra-chave else
é executada somente quando a condição que está sendo testada é false
. Combinar if
e else
com condições boolianas fornece toda a energia necessária.
Importante
A indentação sob as declarações if
e else
é para leitores humanos. A linguagem C# não trata a indentação ou o espaço em branco como significativo. A instrução após a palavra-chave if
ou else
é executada com base na condição. Todos os exemplos neste tutorial seguem uma prática comum de indentar linhas com base no fluxo de controle das instruções.
Já que a indentação não é significativa, é necessário usar {
e }
para indicar quando você deseja que mais de uma instrução faça parte do bloco que é executado condicionalmente. Os programadores em C# normalmente usam essas chaves 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. 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":
if ((a + b + c > 10) || (a == b))
Modifique os valores de a
, b
e c
e alterne entre &&
e ||
para explorar. Você obtém 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ê 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 após a while
. Ela repete a verificação da condição e a execução dessas instruções até que a condição seja false.
Há um 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 de contador.
Importante
Verifique se a condição de loop while
muda para false à medida que você executa o código. Caso contrário, você criará um loop infinito em que seu programa nunca terminará. Não vamos demonstrar isso, pois o mecanismo que executa seu código atinge o tempo limite e você não vê nenhuma saída do 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 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 de while
anterior funcionam da mesma forma.
Vamos passar para a última instrução de loop.
Trabalhar com o loop 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 de 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 é a do inicializador:
int counter = 0;
declara quecounter
é a variável de loop e define seu valor inicial como0
. - A parte intermediária é a de condição:
counter < 10
declara que esse loopfor
continua a ser executado desde que o valor do contador seja menor que 10. - A parte final é a do iterador:
counter++
especifica como modificar a variável de loop depois de executar o bloco após a instruçãofor
. Aqui, ela especifica quecounter
é incrementado com 1 sempre que o bloco for executado.
Experimente essas condições por conta própria. Experimente cada uma das seguintes alterações:
- Altere o inicializador para iniciar com um valor diferente.
- Altere a condição para parar em um valor diferente.
Quando terminar, vamos continuar a escrever algum código por conta própria para usar o que você aprendeu.
Há uma outra instrução de loop que não está abordada neste tutorial: a instrução foreach
. A instrução foreach
repete sua instrução para cada item em uma sequência de itens. Com mais frequência, ele é usado com coleções. Ele é abordado 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 perceber que o loop externo é incrementado uma vez após 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 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ível por 3. Aqui estão algumas dicas:
- O operador
%
retorna o restante de uma operação de divisão. - A instrução
if
especifica a condição para determinar se um número deve fazer parte da soma. - O loop
for
pode ajudá-lo a repetir uma série de etapas para todos os números de 1 a 20.
Experimente você mesmo. Em seguida, verifique como você fez. Como dica, você deve obter 63 como resposta.
Você pensou em algo assim?
int sum = 0;
for (int number = 1; number < 21; number++)
{
if (number % 3 == 0)
{
sum = sum + number;
}
}
Console.WriteLine($"The sum is {sum}");
Você concluiu o tutorial interativo "branches e loops". Você pode selecionar o link coleções de listas para iniciar o próximo tutorial interativo ou visitar o site do .NET para baixar o SDK do .NET, criar um projeto no computador e continuar programando. A seção "Próximas etapas" traz você de volta a esses tutoriais.
Você pode saber mais sobre esses conceitos nestes artigos: