logo logo
Inicio arrow Portada
Tuesday, 07 de October de 2008
 
 
English English  Español Español  
Etiquetas
Análisis Artificial Associations Científicos Conciencia Consciencia Consciencia Artificial Conscientes Consciousness Howto Investigación Microsoft Máquinas Publicaciones Researchers Reviews Robot Robotics Robots Robótica Servicios Studio artificial conciencia
Categorías
Titulares RSS
Introducción a los Iteradores (Iterators) en C# 2.0 Imprimir E-Mail
escrito por Ana Santos y Raúl Arrabales   
Tuesday, 29 de January de 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.

 


Related Items:

  1. Páginas de Microsoft Robotics Studio
  2. Cómo encontrar artículos sobre consciencia y robótica
  3. Robótica Cognitiva
  4. Robots Polimórficos
  5. Microsoft Robotics Studio Octubre 2006 CTP
  6. Microsoft Robotics Studio Noviembre 2006 CTP
  7. Robotics Studio 1.0 Liberado
  8. Simulador RoboCup para Robotics Studio
  9. Robotics Studio 1.5 Mayo 2007 CTP
  10. Robotics Studio 1.5 Liberado

Add as favourites (59) | Cite este artículo en su sitio | Views: 1077 | E-Mail

  Sea el primero en comentar el artículo
RSS de los comentarios

Solo los usuarios registrados pueden agregar sus comentarios.
Por favor, vaya a login, o regístrese.

Powered by AkoComment Tweaked Special Edition v.1.4.4

Modificado el ( Friday, 01 de February de 2008 )
 





¿Recuperar contraseña?
¿Quieres registrarte? Hazlo aquí
Destacamos

Páginas de MSRS (Microsoft Robotics Studio) de Conscious-Robots.com

Estas páginas contienen información, servicios MSRS, código C# y recursos de programación para robots reales y simulados usando MSRS. Estas páginas son de interés para cualquiera que trabaje en el campo de la robótica móvil. La mayoría del código incluido en esta sección está diseñado para su uso en proyectos académicos de robótica.

 

 
Encuestas
¿Puede Ser Consciente un Robot?
 
Mensajes en el Foro
Últimos Comentarios
My review of Conscious Machines
Review of the book ‘The Co...
23/09/08 12:32 Más...
Por Raúl

Re: How do i use this in a simulated rob
Hi, let me answer...
12/08/08 14:46 Más...
Por Raúl

How do i use this in a simulated robot?
I\'m entirely new ...
10/08/08 16:30 Más...
Por carlcs

How do i use this in a simulated robot?
I\'m entirely new ...
10/08/08 16:29 Más...
Por carlcs

Foro de Robotics Studio en Español
Hola sutaro, he copiado...
17/07/08 14:32 Más...
Por Raúl

fallo de ejecución:Unhandled within caus
Hola a todos, es ...
17/07/08 13:03 Más...
Por sutaro

Amazed Challenge 2
Good news for those of you who missed t...
03/07/08 11:21 Más...
Por Raúl

Poster Session Pictures
Some pictures of the poster sessio...
08/04/08 13:17 Más...
Por Raúl

Final Announcement and Conference Overvi
Final Announcemen...
07/02/08 12:45 Más...
Por Raúl

Discussion about test for consciousness
More information a...
29/01/08 15:01 Más...
Por Raúl

 
Top! Top!