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 MattosIntroduçã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.