logo logo
Home arrow Robotics Studio... arrow Documentación en Español (Spanish Documentation) arrow Introducción a los Iteradores (Iterators) en C# 2.0
Thursday, 09 February 2012
 
 
Main Menu
Home
Conscious Machines...
AI Techniques...
Neuroscience...
Researchers...
Publications...
Reviews...
MC Bibliography
Robotics Studio...
Forums...
Blog...
Frontpage
Upcoming Events
22.Feb. 2012

CogSys 2012
Vienna, Austria
04.Apr. 2012

TSC 2012
Tucson, Arizona
17.May. 2012

EAIS 2012
Madrid, Spain
05.Jun. 2012

Cognition & Consciousness
Menorca. Spain
02.Jul. 2012

ASSC 16
Brighton, UK
02.Jul. 2012

Revisiting Turing and his Test
Birmingham, UK
31.Oct. 2012

BICA 2012
Palermo. Italy
Tag Cloud
Architectures Associations Books Conferences Conscious Conscious Machines Consciousness Developer Documentación Documentation Español Machine Machine Consciousness Machines Neuroscience Publications Research Researchers Reviews Robotics Robots Spanish Studio VPL
Spotlight
More
Reader's Preferred
MCexperts List
FAQs
Glossary
Site Map
Introducción a los Iteradores (Iterators) en C# 2.0 Print E-mail
Written by Ana Santos y Raúl Arrabales   
Tuesday, 29 January 2008

Robotics Studio Introducción a los Iteradores (Iterators) en C# 2.0

Una característica novedosa del lenguaje C# 2.0 usada por CCR son los Iteradores (Iterators), que permiten que en lugar de usar delegados para conseguir el comportamiento asíncrono, el programador pueda reescribir el código de una manera secuencial, dejando que los Arbiters se centren en otras tareas.  Todo esto se puede programar en un único método “iterador”, mejorando la legibilidad del código y manteniendo el comportamiento asíncrono.

Vamos a poner un ejemplo para poder explicar la funcionalidad de los iteradores:


IEnumerator
<ITask> IteratorExample()
{
  int totalSum = 0;
  Port<int> portInt = new PortSet<int>();
  for (int i = 0; i < 10; i++)
  {
      portInt.Post(i);
      yield return Arbiter.Receive<int>(false, portInt,
            delegate(int j){totalSum += j;});
  }
  Console.WriteLine("Total:" + totalSum);
}

Para que las clases admitan la iteración es necesario que implementen el "modelo de enumerador", como podemos ver en el ejemplo (interfaz IEnumerator). Cabe destacar el uso de la palabra clave “yield return”, que permite al programa devolver inmediatamente el control a la instrucción que llamó al iterador, en este caso, un “for”. De forma que la suma (es decir el cuerpo del delegado) se ejecuta en paralelo. Esto se puede ver como una manera de conseguir programación asíncrona.

En el ejemplo anterior, cuando se ejecuta la línea que contiene yield return, devuelve una instancia de la interfaz ITask implementada por ReceirverTask, que ha sido creada cuando llamamos a Arbiter.Receive. El CCR activa la devolución de Task y también asocia el iterador con la tarea. Cuando se ha realizado la tarea, el iterador continúa con la ejecución. De hecho, si el primer parámetro en la llamada a Arbiter.Receive (la persistencia), no es “true”, el Arbiter no seguirá escuchando el puerto indicado.

Las ventajas de usar iteradores proviene de dos características del lenguaje C#:

- Métodos anónimos: permite a los programadores crear bloques de código que se pueden encapsular en un delegado para su posterior ejecución.

- El compilador captura todas las variables locales que actúan dentro del cuerpo del método anónimo. Esto permite que el delegado pueda usar las variables definidas en el método padre, y además pueda comunicar los resultados, ya que siempre está procesando otros hilos, de la iteración.


Información relacionada en: Como usar las nuevas características de C Sharp 2.0

Comparte tus dudas, comentarios o sugerencias en el Foro de Robotics Studio en Español.

 


Add as favourites (204) | Quote this article on your site | Views: 6965

  Be first to comment this article
RSS comments

Only registered users can write comments.
Please login or register.


Related Items:

  1. Jobs: Two Chair positions for new Centre for Computational Neuroscience and Co
  2. Birmingham Fellows in Robotics and Cognitive Systems
  3. Finding papers about consciousness and robotics
  4. Paladyn. Journal of Behavioral Robotics
  5. International Journal of Social Robotics
  6. Cognitive Robotics and Machine Consciousness
  7. Cognitive Robotics
  8. Polymorphic Robotics
  9. Urbi goes Open Source
  10. The Tower of Hanoi for Robotics
Last Updated ( Friday, 01 February 2008 )
 





Lost Password?
No account yet? Register
 Conscious Robots RSS FeedConscious Robots RSS Feed

Find us on Facebook

Follow us on TwitterFollow us on twitter
Spotlight

Machine Consciousness Bibliography Database

 

ConsScale
The Cognitive Machine Consciousness Scale

 
Categories
Last Posts in Forum
 
CR
miel continental