quinta-feira, 1 de outubro de 2009

Estruturas de controle e operações lógicas em C#

O C# possui sete estruturas de controle (if, switch, while, do-while, for, foreach e goto), que servem para controlar o fluxo de execução dos programas, através de operações lógicas, como: igual, diferente, maior, maior ou igual, menor e, menor ou igual. Essas estruturas podem ser divididas em três categorias: relacionais, repetição e “espaguete”.

Operadores relacionais

Os operadores relacionais são símbolos que servem para realizar operações lógicas (ou comparações). São eles: == (igual), != (diferente), > (maior), >= (maior ou igual), < (menor) e <= (menor ou igual). Há também os operadores booleanos, que servem para conectar duas comparações: && (e) e || (ou). Exemplo:

byte r = 82;

if (r == 82)
{
   Console.WriteLine("O valor de r é igual a 82.");
}
else if (r > 80 && r < 90)
{
   Console.WriteLine("O valor de r é um número entre 80 e 90.");
}
else if (r > 80 || r < 90)
{
   Console.WriteLine("O valor de r é um número maior que 80 ou menor que 90.");
}

Deve-se lembrar que o operador relacional igual é representado por dois sinais de igual (==), e não apenas um, como em uma atribuição.

O operador && (e) serve para indicar que a operação lógica só será verdadeira se ambas as comparações forem verdadeiras. Já o operador || (ou) serve para indicar que a operação lógica será verdadeira se pelo menos uma comparação for verdadeira.

Tente escolher outro valor (de 0 a 255) para a variável r, para ver o que acontece. O uso dos comandos if e else é explicado a baixo.

Estruturas relacionais: if e switch

Há duas estruturas relacionais (ou condicionais) em C#: if e switch. Elas mudam o fluxo do programa, a partir de operações lógicas.

Estrutura if

A estrutura if é a mais básica. Ela executa uma seção do código apenas se a condição for válida. Exemplo:

byte r = 82;

if (r == 82)
{
   Console.WriteLine("Olá, Mundo!");
}

Console.ReadLine();

O exemplo acima irá verificar se o valor da variável r é igual a 82. Se for, irá exibir a mensagem “Olá, Mundo!”.

Pode haver uma exceção, a else, que irá executar apenas se a condição anterior for falsa. Exemplo:

byte r = 83;

if (r == 82)
{
   Console.WriteLine("Olá, Mundo!");
}
else
{
   Console.WriteLine("Tchau, Mundo!");
}

Console.ReadLine();

O exemplo acima irá verificar se o valor da variável r é igual a 82. Se for, irá exibir a mensagem “Olá, Mundo!”, senão for, irá exibir a mensagem “Tchau, Mundo!”.

A exceção pode ser mais específica, combinando-a com uma outra condição. Exemplo:

byte r = 84;

if (r == 82)
{
   Console.WriteLine("Olá, Mundo!");
}
else if (r == 83)
{
   Console.WriteLine("Tchau, Mundo!");
}
else
{
   Console.WriteLine("Até logo, Mundo!");
}

Console.ReadLine();

O exemplo acima irá verificar se o valor da variável r é igual a 82. Se for, irá exibir a mensagem “Olá, Mundo!”, senão, se for igual a 83, irá exibir a mensagem “Tchau, Mundo!”, senão irá exibir a mensagem “Até logo, Mundo!”.

Pode haver quantas condições for necessário, pode haver também uma condição dentro de outra. Exemplo:

byte r = 84;

if (r == 82)
{
   Console.WriteLine("Olá, Mundo!");
}
else
{
   if (r == 83)
   {
      Console.WriteLine("Tchau, Mundo!");
   }
   else
   {
      Console.WriteLine("Até logo, Mundo!");
   }
}

Console.ReadLine();

Se houver apenas uma ação à tomar caso a condição seja verdadeira, então as chaves ({ e }) são opcionais. Exemplo:

byte r = 84;

if (r == 82)
   Console.WriteLine("Olá, Mundo!");
else
{
   if (r == 83)
      Console.WriteLine("Tchau, Mundo!");
   else
      Console.WriteLine("Até logo, Mundo!");
}

Console.ReadLine();

Estrutura switch

A estrutura switch é semelhante a if, com a diferença que a operação lógica só pode ser a de igual. Exemplo:

byte r = 84;

switch (r)
{
   case 82:
      Console.WriteLine("Olá, Mundo!");
      break;

   case 83:
      Console.WriteLine("Tchau, Mundo!");
      break;

   default:
      Console.WriteLine("Até logo, Mundo!");
      break;
}

Console.ReadLine();

O exemplo acima irá verificar se o valor da variável r é igual a 82. Se for, irá exibir a mensagem “Olá, Mundo!”, senão, se for igual a 83, irá exibir a mensagem “Tchau, Mundo!”, senão irá exibir a mensagem “Até logo, Mundo!”.

O comando default é opcional, e serve como uma ação padrão a ser executada, caso nenhuma condição seja verdadeira. O comando break serve para delimitar a condição anterior.

Estrutura “espaguete”: goto

Há uma estrutura “espaguete” em C#: goto. Ela muda o fluxo do programa, avançando ou retrocedendo (não desfaz nada) no código, sem a necessidade de uma operação lógica prévia. É chamada de estrutura espaguete porque faz “reviravoltas” no código, fazendo com que fique difícil de saber onde o programa termina, assim como um emaranhado de espaguete. Ela foi primeiro introduzida na linguagem BASIC, e sempre seu uso foi condenado por muitos críticos. Sua aplicação é bastante simples:

goto marca1;
Console.WriteLine("Olá, Mundo!");

marca1:
Console.WriteLine("Tchau, Mundo!");
Console.ReadLine();

O código acima irá exibir a mensagem “Tchau, Mundo!”, enquanto que o resto do código será pulado. Demarca-se uma área usado seu nome seguido de dois pontos (:).

próxima parte »

Postagens relacionadas

1 comentários:

Postar um comentário