lunes, 21 de marzo de 2016

Capitulo 9: Small Basic ciclo For. Parte 2

Diario de un programador.- Dia 26

Un ciclo for también puede ser interrumpido o finalizado antes de terminar su proceso por una condición que le entreguemos. Un ejemplo de ello sería algo así:

For a = 1 to 10 Step 1
    TextWindow.WriteLine(a)
EndFor

Este simple bucle o ciclo, mostrará los números del 1 al 10, pero que pasa si por algún motivo queremos que finalice a la mitad, una opción es utilizar la instrucción goto, la cual podemos utilizar en combinación de una condicional if, para hacer que finalice. Esto quedaría de la siguiente manera

For a = 1 to 10 Step 1
    TextWindow.WriteLine(a)
    If a = 5 Then
      Goto salir
     EndIf
EndFor
salir:

Entonces, cuando la variable "a" sea igual a 5, la instrucción goto llevará el flujo del programa fuera del bucle, provocando la finalización de éste. Finalizar un ciclo antes de que termine es muy util cuando ya encontramos o damos con el resultado que queremos, como por ejemplo si estamos verificando si un número es primo o no. Al hacer las divisiones del número que queremos comprobar(si es divisible por 2,3,4,5,6 etc), si encontramos que este número es divisible por un x número, entonces no es necesario seguir haciendo las otras divisiones ya que sabemos que el número no es primo, por lo que finalizar el bucle es una buena opción. Estuve averiguando en la web y me encontré que en otros lenguajes, donde no está disponible la instrucción goto, se utiliza la instrucción break, (romper) la cual hace que el bucle finalice.
 
CICLOS ANIDADOS
El ciclo o bucle for también puede ser anidado y se pueden conseguir algunas cosas interesantes, como por ejemplo el siguiente código

For a = 1 to 10 Step 1
  For b = 1 To 10 Step 1
    TextWindow.WriteLine(a + " x " + b + " = " + a*b)
  EndFor 
EndFor

En solo 5 líneas es posible mostrar la tabla de multiplicar del 1 hasta la tabla del 10


Algo que me costó entender es como funciona un for anidado así que aquí voy a tratar de explicarlo.
Aquí se entra al ciclo, el "for" exterior , el cual hará 10 ciclos
For a = 1 to 10 Step 1
Luego, pasamos al ciclo "for" interior, el cual también hará 10 ciclos. Por cada 10 ciclos interiores, se ejecutará un ciclo exterior.
For b = 1 To 10 Step 1
Entonces, como se muestra a continuación, la sección marcada con la flecha negra (bucle interior) se ejecuta 10 veces, sale del ciclo (bucle interior) y recién entonces el bucle exterior hace 1 ciclo. Siendo entonces que la variable "a" (del ciclo exterior) cambia su valor de 1 a 2 y este ejercicio ocurre hasta que la variable "a" sea igual a 10, que es entonces que finaliza el ciclo. Es por esta razón que se muestran las tablas de multiplicar del 1 al 10
Otro programa interesante que se puede lograr con ciclos for anidados, es un programa que ordena una lista de números de menor a mayor, utilizando lo que se conoce como el ordenamiento de la burbuja (más información acá). A continuación un ejemplo que ordena una lista de 5 números de menor a mayor:
(Este programa utiliza arreglos. Los arreglos serán explicados en el capítulo 12)

For i = 1 To 5
  TextWindow.Write("Ingresa numero ")
  a[i] = TextWindow.ReadNumber()
EndFor
For i = 1 To 5
  For j = 0 To 5 - i
    If a[j] > a[j + 1] Then
      aux = a[j]
      a[j] = a[j + 1]
      a[j + 1] = aux
    EndIf
  EndFor
EndFor
 
TextWindow.WriteLine(a[1] + "," + a[2] + "," + a[3] + "," + a[4] + "," + a[5])


Esto es todo por ahora. En el próximo capítulo se mostrará otra instrucción para crear ciclos. Hasta luego



Gustavo J. Cerda Nilo

Agosto 2015, última modificación, Marzo 2016

1 comentario:

C++ El apuntador This

El apuntador This En C++, cada objeto tiene acceso a su propia dirección a través de un puntero o apuntador denominado This. Lo...