Los bucles condicionales o controlados por condición se utilizan cuando no se conoce a priori, el numero exacto de iteraciones a realizar. Existen diferentes tecnicas para realizar el control de un bucle:
1. Solicitar al usuario la continuacion de un bucle. Este metodo consiste simplemente en pedir al usuario mas entradas por teclado
Ejemplo: va sumando enteros mientras la respuesta del usuario sea "S" o "s"
01 Sub Main() 02 Dim respuesta As String 03 Dim suma As Integer 04 suma = 0 05 Do 06 Console.WriteLine("Introdusca un numero cualquiera") 07 Console.Write("Numero: ") 08 suma = suma + Val(Console.ReadLine) 09 Console.WriteLine("para continuar presione s/S") 10 respuesta = Trim(Console.ReadLine()) 11 Loop While (respuesta = "S") Or (respuesta = "s") 12 Console.WriteLine("Suma total : " & suma) 13 Console.ReadLine() 14 End Sub
2.- Valor Centinela. Un centinela es un valor especial utilizado para señalarel final de una lista de datos, el valor elegido debe ser totalmente distinto de los posibles valores de la lista para que se pueda utilizar para señalar el final de la lista.
01 Sub Main() 02 Dim suma As Integer 03 Dim numero As Integer 04 suma = 0 05 Console.Write("Numero: ") 06 numero = Val(Console.ReadLine) 07 Do While (numero >= 0) 08 suma = suma + numero 09 Console.Write("Numero: ") 10 numero = Val(Console.ReadLine) 11 Loop 12 Console.WriteLine("Suma total : " & suma) 13 Console.ReadLine() 14 End Sub
3. Uso de banderas o interruptores. Una bandera o interruptor (Flag) es una variable logica que se utiliza para conservar el estado verdadero o falso de una condicion. Se denomina bandera o interruptor por asociarse a un interruptor (encendido/apagado) o a una bandera (Arriba/abajo), el valor del interruptor debe inicializarse antes de comenzar el bucle para preparar la siguiente iteracion.
Ejemplo: leer enteros hasta que se introduce un numero positivo
01 Sub Main() 02 Dim bandera As Boolean 03 bandera = False 04 Do While Not bandera 05 Console.WriteLine("Escriba un numero mayor a cero") 06 Console.Write("Numero: ") 07 bandera = Val(Console.ReadLine) > 0 08 If Not bandera Then 09 Console.WriteLine("El numero es negativo") 10 End If 11 Loop 12 Console.WriteLine("Termino el ciclo") 13 Console.ReadLine() 14 End Sub
0 comentarios:
Publicar un comentario