Sigamos con esto de la lógica. Imaginemos que tenemos que repetir una tarea determinada cantidad de veces (como las tablas de multiplicar).
Tomemos ese ejemplo. Digamos, la tabla del 15 (de las otras imagino, te sabrás varias de memoria ).
Si dibujamos el proceso (imaginando la tabla de los primeros 20 valores), sería algo así:
En principio, esto podría codificarse “literalmente”:
Private Sub Tabla() Dim Contador As Integer = 1 Dim Resultado As Integer Seguir: If Contador > 20 Then Exit Sub End If Resultado = Contador * 15 Print(Resultado) Contador = Contador + 1 GoTo Seguir End Sub
private void Tabla() { int Contador = 1; int Resultado = 0; Seguir: if (Contador > 20) { return; } Resultado = Contador * 15; Print(Resultado); Contador = Contador + 1; goto Seguir; }
Nota: la sentencia Print en C# no existe. ahora vemos como se hace esto en realidad para probar.
Mejor un bucle.
Los lenguajes de programación implementan formas sintácticas optimizadas para estas cosas; los bucles For.
Private Sub Tabla() Dim Resultado As Integer For Contador As Integer = 1 To 20 Resultado = Contador * 15 Debug.WriteLine(Resultado) Next End Sub
private void Tabla() { int Resultado = 0; for (int Contador = 1; Contador <= 20; Contador++) { Resultado = Contador * 15; Debug.WriteLine(Resultado); } }
La sintaxis de for admite indicar además los “pasos” en los que se ejecutan las repeticiones, pudiendo hacerse en pasos de más de una unidad (de a dos, de a tres, etc.), o inclusive, en reversa (Indicando el paso como un valor negativo y el valor de inicio mayor que el final)
For Contador As Integer = 20 To 1 Step -1
for (int Contador = 20; Contador >= 1; Contador -= 1)
Repitiendo sin contar.
A veces es necesario hacer tareas por cada uno de los elementos de un conjunto. Por supuesto se podrían contar cuantos son y meterlos dentro de un for. Pero existe una sintaxis específica para esto, que podríamos parafrasear como “por cada uno de estos cosos…”
For Each elemento In estalista Next
foreach (elemento in estalista) { }
Repitiendo (mientras haga falta).
Esta sería la otra forma posible de repetición. Mientras se cumpla una condición se debe realizar la tarea.
Esto se realiza con dos palabras reservadas (Do y Loop), donde una (y solo una) de ellas lleva adosada la condición con la expresión While o la expresión Until que determinan el “mientras” o el “hasta que”.
Do While condición Loop ' Do Until condición Loop Do Loop While condición ' Do Loop Until condición
while (condición) { } // while (!(condición)) { } // do { } while (condición); // do { } while (!(condición));
Poner la condición en el inicio condiciona si la tarea se realiza o no, ANTES de comenzar.
En cambio, si la condición está en la instrucción final, significará que al menos una vez se hará, antes de evaluar la condición.