viernes, 11 de julio de 2014

■ Ejemplo de Estructuras Anidadas

■ Estructuras Anidadas


El hecho de 'anidar' estructuras se refiere a colocar unas dentro de otras según se requiera, anidar estructuras o sentencias es unas práctica muy común en la programación ya que en algunas ocasiones es forzosamente necesaria y en otras ayuda a reducir y optimizar al mismo tiempo nuestro código.


► Ejemplo:
Para a <- 1 hasta 10 hacer
     Si a < 6 entonces
          Escribe "a es menor que 6"
     Si_No
          Escribe "a es mayor o igual que 6


En el ejemplo anterior se anidaron dos estructuras: un "si" (if) dentro de un "para" (for), por lo que la sentencia "si" se ejecutará tantas veces como se repita el "para".


Para que quede un poco más claro pensemos en otro ejemplo; supongamos que necesitamos leer las calificaciones finales de un grupo de 5 alumnos, del cual debemos contar y mostrar cuantos de ellos aprobaron y cuantos no lo hicieron.


Lo haremos de dos maneras, una sin recurrir a las estructuras anidadas y la segunda anidando las estructuras necesarias.

► 1) Sin anidar

Empieza
calif[5] tipo arreglo de reales
aprobados, reprobados tipo entero

Para i <-1 hasta 5 hacer
     Escribe "Ingresa calificación"
     Leer calif[i]
Fin_Para

Si calif[1] > 5.9 entonces
     aprobados <- aprobados + 1
Si_No
     reprobados <- reprobados + 1

Si calif[2] > 5.9 entonces
     aprobados <- aprobados + 1
Si_No
     reprobados <- reprobados + 1

Si calif[3] > 5.9 entonces
     aprobados <- aprobados + 1
Si_No
     reprobados <- reprobados + 1

Si calif[4] > 5.9 entonces
     aprobados <- aprobados + 1
Si_No
     reprobados <- reprobados + 1

Si calif[5] > 5.9 entonces
     aprobados <- aprobados + 1
Si_No
     reprobados <- reprobados + 1
Fin


► 2) Empleando Estructuras Anidadas

Empieza
     calif tipo real
     aprobados, reprobados tipo entero
     Para i <- 1 hasta 5 hacer
          Escribe "Ingresa calificación "
          Leer calif
          Si calif > 5.9 entonces
               aprobados <- aprobados + 1
          Si_No
               reprobados <- reprobados + 1
          Fin_Si
     Fin_Para
     Escribe "Número de aprobados: ",aprobados
     Escribe "Número de no aprobados: ",reprobados
Fin

► Conclusión

Como puede observarse, el primer ejemplo requiere más líneas de código que el segundo (aún cuando ambos hacen lo mismo) puesto que las estructuras no están anidadas, es decir, en el primer ejemplo se piden las calificaciones en un ciclo pero se evalúan una por una fuera del mismo.

La ventaja de anidar estructuras radica en el hecho de que podemos pedir y evaluar las calificaciones en el mismo ciclo con solo colocar nuestra sentencia "si" dentro del mismo ciclo "para" como se observa en el segundo ejemplo.

No hay comentarios:

Publicar un comentario