martes, 1 de octubre de 2013

Sentencias en C#

Tabla de Contenido

0. Introducción
1. Sentencias
2. Sentencias de Declaración
3. Sentencias en Forma de Expresión
4. Sentencias de Selección
5. Sentencias de Iteración
6. Sentencias de Salto
7. Conclusiones
8. Glosario
9. Referencias

0. Introducción

Es el momento de hablar de las sentencias en el lenguaje de programación C#. Las sentencias son otros de los elementos de construcción individuales que describen pasa-a-paso el cómo debe llevar a cabo un proceso que estemos programando, es decir, la descripción imperativa de lo que se debe hacer.

1. Sentencias

En su definición básica, y con apoyo en [1], una sentencia es una órden que debe completarse para dar forma a una función. Por lo tanto, una función es un conjunto de sentencias que se ejecutan de forma secuencial y que se ejecutan en un orden específico. Estas órdenes aparecen en un bloque de sentencias que no son más que una serie de sentencias que están encerradas entre los elementos sintáticos { (llave de apertura) y } (llave de cierre).

2. Sentencias de Declaración

Este tipo de sentencias se utiliza para la declaración de variables o constantes. También es posible, aunque opcional, asignar un valor por medio de una expresión a la variable en tiempo de declaración; en el caso de las constantes, es mandatorio asignar su valor una vez se declaran.

Estos son algunos ejemplos de declaración de variables en lenguaje C#:

string nombre = "Valentina";
bool continuar = false, esValido = true;
int aleatorio = objAleatorio.Next();
Computadora objetoComputadora = new Computadora( "Asus N73SV", "SN12345678", "2007", "AN852741963");

Hay que notar que en C# es posible declarar múltiples variables en una sóla línea como una lista separada por el token , (signo sintáctico coma).

Por otro lado, cuando se trata de una constante, cuando ocurra su declaración e inicialización, su valor no podrá cambiar a lo largo de la ejecución del programa, así:

const int E = 2.71828182845904;
const double PI = 3.1415926535897;
PI = 3.141592; // Error en tiempo de compilación

La última línea de ejemplo cuando se inicie el proceso de compilación generará un error en tiempo de compilación:

error CS0131: The left-hand side of an assignment must be a variable, a property or an indexer

Variables Locales

Las variables o constantes locales tienen un ambito o alcance, esto quiere decir, que su uso o existencia está delimitado por el bloque en el que fueron declaradas. Vale agregar, que no es posible tener dos variables con el mismo identificador o nombre en un mismo bloque, y tampoco, en bloques anidados. Vean este ejemplo:


static void Main()
{
int x;
{
int y;
int x; // Error: x ya fue definida
}
{
int y; // y está en otro bloque diferente
}

Console.WriteLine (y); // y está fuera de alcance
}

Console.WriteLine (y); // Error: y está fuera de alcance


En el primer caso de error, es decir, en la nueva declaración anidada de la variable x, se debe al conflicto con la declaración previa. Mensaje técnico de error del compilador de C#:

error CS0136: A local variable named `x' cannot be declared in this scope because it would give a different meaning to `x', which is already used in a `parent or current' scope to denote something else


Ahora para el caso de error del intento de impresión del valor de la variable y. Compilador muestra:


error CS0103: The name `y' does not exist in the current context

3. Sentencias en Forma de Expresión

La característica fundamental de las expresiones en forma de expresión es la de cambiar el estado a través de una expresión que genera un valor o la llamada a un método no-vacío (técnicamente, diferente de void). En resumen, se puede decir que las sentencias en forma de expresión son de tipo [1]:
  • Expresiones de asignación.
  • Expresiones que denotan la llamada a métodos.
  • Expresiones de instanciación de una clase de objeto.
Ejemplos de este tipo de sentencias en forma de expresión:

// Declaración de variables con sentencias de declaración
string nombre;
int x, y;
System.Text.StringBuilder objSB;

// Sentencias en forma de expresiön
x = 1 + 2; // Expresión de asignación
x++; // Expresión de incremento
y = Math.Max (x, 5); // Expresión de asignación
Console.WriteLine (y); // Expresión de llamada a método
objSB = new StringBuilder(); // Expresión de asignación
new StringBuilder(); // Expresión de instanciación de objeto

Vale anotar que en la última expresión, el resultado de la instanciación no es asignado a ninguna referencia; esto nos quiere decir que el programador de C# no está obligado a manipular o usar el resultado. Si la llamada al método constructor o cualquier otro método de instancia o utilitario no cambia el estado del programa, la invocación es totalmente inútil, como en:

new Computadora( "Asus N73SV", "SN12345678", "2007", "AN852741963"); // Válido, pero inútil
new string("Valentina"); // Válido, pero inútil
x.Equals (y); // Válido, pero inútil

7. Conclusiones

Ha quedado claro el concepto de sentencia: unidad de construcción básica para especificar declaración de variables y de constantes, expresiones de asignación, ciclos repetitivos, sentencias de selección, como además, otras que nos permite alterar el flujo de ejecución (las sentencias de salto).

8. Glosario

  • goto
  • Instrucción
  • Sentencia
  • Token

9. Referencias

[1]: C# 5.0 in a Nutshell by Joseph Albahari and Ben Albahari. Copyright 2012 Joseph Albahari and Ben Albahari, 978-1-449-32010-2.
[2]: Microsoft Visual Studio - Wikipedia, the free encyclopedia - http://en.wikipedia.org/wiki/Microsoft_Visual_Studio
[5]: Fibonacci number - Wikipedia, the free encyclopedia - http://en.wikipedia.org/wiki/Fibonacci_number
[7]: foreach, in (C# Reference) - http://msdn.microsoft.com/en-us/library/ttw7t8t6.aspx
[8]: IEnumerable Interface (System.Collections) - http://msdn.microsoft.com/en-us/library/system.collections.ienumerable.aspx
[9]: IEnumerable(T) Interface (System.Collections.Generic) - http://msdn.microsoft.com/en-us/library/9eekhta0.aspx

O

No hay comentarios:

Publicar un comentario

Envíe sus comentarios, dudas, sugerencias, críticas. Gracias.