sábado, 30 de agosto de 2014

Composición de Secuencias en C#

Índice

0. Introducción
1. ¿Qué es una Secuencia?
2. Implementación de una Secuencia en C#
3. Conclusiones
4. Glosario
5. Literatura & Enlaces

0. Introducción

Desarrollaremos este artículo C# para comprender cómo componer secuencias de elementos en C#. Veremos que esta operación guarda una relación importante con el quehacer del programador a diario, en particular, en tareas relacionadas con la enumeración de elementos de una estructura de datos o un generador de valores. Además, resaltaremos la flexibilidad con que esta tarea de composición de secuencias se puede llevar a cabo, y que a partir de este concepto práctico el programador se verá considerablemente beneficiado a la hora de crear sus propios algoritmos para sus estructuras de datos iterables o con propiedad de recorrido o de enumeración.

1. ¿Qué es una Secuencia?

Para contextualizar y adaptar la definición encontrada en [2] con C#, podemos definir a una secuencia como un conjunto de elementos (tipo de dato de la biblioteca base de clases o cualquiera tipo definido por el propio programador) reproducibles en serie. Esta definición guarda una estrecha relación con un iterador (cfr. Sintaxis y Semántica de un Iterador), debido a que es este último se encarga de invocar las funciones (métodos, indizadores, propiedades, &c.) que generan cada uno de los elementos de la secuencia en una determinada estructura de datos o generador de elementos de una serie (e.g., sucesión o secuencia Fibonacci).

2. Implementación de una Secuencia en C#

Para comprender mejor el concepto de secuencia explicado en la sección anterior, procedamos a escribir un ejemplo en código fuente C#. En este ejemplo resaltaremos el uso de la interfaz genérica IEnumerable<T> [4] para la generación de números de la serie Fibonacci [5], y además por cada número de esta serie que se genere realizar la comprobación de número par. La idea es generar en la sólo aquellos números de la serie Fibonacci que sean números pares: 2, 8, etc.


En las líneas 18-33 declaramos el método GeneradorFibonacci que se encarga de generar la serie hasta la cantidad especificada por su parámetro cantidadSerie. Por cada iteración del ciclo for (líneas 23-32) se genera un valor de la serie. Cada uno de estos valores retornados se pasan al método GeneradorNumeroPares (líneas 37-47). Este último método se encargará de enumerar cada elemento, siempre y cuando pase la prueba en la sentencia if de la línea 41, a la sección del método Main (líneas 8-14) para su posterior presentación en la salida estándar.

Podemos realizar una paráfrasis gráfica de la sucesión de eventos descritos en el párrafo anterior sobre el diagrama de eventos representado en la Figura 1.
Flujo de ejecución de la generación de una secuencia
Figura 1. Flujo de ejecución de la generación de una secuencia.

El Consumidor actúa sobre el método Main, dado que es el que invoca al método GeneradorNumeroPares, y este último del mismo modo invoca al método GeneradorFibonacci.

Compilación:


  1. csc /target:exe FibonacciPares.cs


Ejecución assembly:

  1. .\FibonacciPares.exe


> Prueba de ejecución (local):
Ejecución assembly FibonacciPares.exe
Figura 2. Ejecución assembly FibonacciPares.exe.

3. Conclusiones

La generación o composición de secuencias nos puede resultar de enorme utilidad cuando queremos generar una enumeración de elementos de una estructura de datos: lista simple, lista doblemente enlazada, vector, por ejemplo. En el ejemplo de la sección 2 aprendimos que el uso de la interfaz genérica IEnumerable<T> comprende un elemento de programa de importante utilidad, además de proveer flexibilidad, para la composición de secuencias y su respectiva enumeración de elementos. En el siguiente artículo C# estudiáremos los tipos nulos y sus propiedades.

4. Glosario

  • Algoritmo
  • Estructura de dato
  • Interfaz
  • Lista
  • Secuencia
  • Vector

5. Literatura & Enlaces

[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]: secuencia - significado de secuencia diccionario - http://es.thefreedictionary.com/secuencia
[3]: Sintaxis y Semántica de un Iterador en C# | OrtizOL - Experiencias Construcción Software (xCSw) - http://ortizol.blogspot.com/2014/08/sintaxis-y-semantica-de-un-iteradore-en-csharp.html
[4]: IEnumerable(T) Interface (System.Collections.Generic) - http://msdn.microsoft.com/en-us/library/9eekhta0%28v=vs.110%29.aspx
[5]: Sucesión de Fibonacci - Wikipedia, la enciclopedia libre - http://es.wikipedia.org/wiki/Sucesi%C3%B3n_de_Fibonacci


J

No hay comentarios:

Publicar un comentario

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