Desenvolvimento - C#

Estruturas Condicionais no C#

O propósito deste artigo é auxiliar os principiantes na linguagem C# a entender a sintaxe correta das diferentes formas de declarações condicionais.

por Carlos de Mattos



Introdução

Estruturas condicionais são comuns e necessárias em todos os programas. A declaração if...else está entre as mais utilizadas pelos desenvolvedores. Este pequeno artigo aborda a sintaxe da declaração if...else e também explora outras construções condicionais presentes no C#. Algumas delas pouco conhecidas dos novos programadores e mais familiares para quem já utilizava a linguagem C.

Esclarecendo o básico

Os programadores iniciantes, sempre apresentam dúvidas sobre a sintaxe da declaração if...else. Usar ou não delimitadores de bloco ({})? Posso escrever a declaração if...else em uma única linha? Quando usar switch...case ao invés de if...else? A maioria dos programadores que estão iniciando na linguagem C# depara-se com essas dúvidas.

IF...ELSE com expressões simples

A declaração condicional if...else pode ser escrita de diferentes formas, especialmente quando estamos construindo uma expressão simples, onde uma única ação é executada caso a expressão seja verdadeira. Todos os exemplos apresentados no quadro abaixo são válidos.

// considere as variáveis X e Y

int x = 0;

int y = 5;

// declaração IF em uma única linha

if (x > y) return;

           

// declaração IF...ELSE em duas linhas

if (x > y) MessageBox.Show("X > Y");

else MessageBox.Show("X < Y");

// declaração IF...ELSE com quebra de linha

if (x > y)

MessageBox.Show("X > Y");

else

MessageBox.Show("X < Y");

// declaração IF...ELSE em uma única linha

if (x > y) MessageBox.Show("X > Y"); else MessageBox.Show("X < Y");

// utilização dos delimitadores de bloco neste caso

// apesar de válido é desnecessário.

if (x > y)

{

    MessageBox.Show("X > Y");

}

else

{

    MessageBox.Show("X < Y");

}

Quadro 1: Exemplos de construções condicionais válidas

Os delimitadores de bloco { }

Quando precisamos executar mais de uma ação após avaliar a expressão condicional, então faz-se necessário a utilização dos delimitadores de bloco, que tem a função de agrupar um conjunto de instruções ou linhas de comando. Veja o exemplo no quadro abaixo.

// utilização dos delimitadores de bloco neste caso

// é necessária para que várias ações sejam executadas

// caso a expressão seja satisfeita.

if (x > y)

{

MessageBox.Show("X > Y");

this.Text = "Expressão é verdadeira.";

this.AtivarControles();              

}

else

{

MessageBox.Show("X < Y");

this.Text = "Expressão é falsa.";

this.DesativarControles();

}

Quadro 2: Utilizando delimitadores de bloco

Outras declarações condicionais

O C# oferece outra opção para construção de declarações condicionais. Os operadores ?: representam uma boa alternativa para quem já estava habituado com a linguagem C. Podemos até fazer uma comparação grosseira da sintaxe utilizadas com esses operadores com a função IIF no VB ou VBA. A sintaxe utilizada é <expressão> ? <verdadeira> : <falsa>. Veja os exemplos no quadro abaixo:

int x = 1;

int y = 2;

int z = 3;

// definindo a mesagem de acordo com a expressão

MessageBox.Show(x > y ? "X > Y" : "X < Y");

// atribui valor para z de acordo com a expressão

z = x > y ? x * z : y * z;

MessageBox.Show(z.ToString());

// expressões condicionais aninhadas

// z = <expr1> ? <true> : <expr2> ? <true> : <false>

z = x > y && x == 1 ? x * z : y > 1 ? y * z : y * z + x;

MessageBox.Show(z.ToString());

Quadro 3: Expressões condicionais com operadores ?:

Numa primeira impressão, esse tipo de construção pode parecer confuso, contudo se o desenvolvedor analisar esta sintaxe, verá que os operadores ?: podem ser muito úteis e práticos em diversos cenários de codificação. Expressões simples ou aninhadas podem ser facilmente construídas com os operadores ?:. Para auxiliar a interpretação da expressão apresentada no Quadro 3, a figura abaixo explica sua anatomia.

 

Figura 1: Anatomia da expressão condicional com operadores ?:

Conclusão

Com certeza você já implementou diversas expressões condicionais e todas funcionam muito bem. O propósito deste artigo é auxiliar os principiantes na linguagem C# a entender a sintaxe correta das diferentes formas de declarações condicionais. Muitos programadores, mesmo experientes, não conhecem ou não tem o hábito de utilizar os operadores ?: que podem facilitar a codificação de expressões condicionais simples ou aninhadas. Explore as dicas acima e aprimore suas expressões condicionais. 

Carlos de Mattos

Carlos de Mattos - É profissional certificado pela Microsoft desde 1998. Atua como desenvolvedor de soluções customizadas para o mercado corporativo há mais de 10 anos. Foi premiado pela Microsoft como MVP em 2003 e 2004. Tem diversos artigos publicados nas revistas FórumAccess e MSDN Magazine, nos Websites MSDN Online Brasil, Portal DevMedia/MSDN e Linha de Código. Carlos também atuou durante 5 anos junto à Comunidade Acadêmica na região de Sorocaba/SP ministrando palestras e treinamentos junto às Universidades e Colégios Técnicos. Atualmente está em Sorocaba/SP, na WD5 Solutions dedicando-se à implementação de soluções baseadas em tecnologia Microsoft.NET.