25 jul 2010

Bucles condicionales


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.

Ejemplo: si el bucle lee una lista de numeros positivos, un numero negativo se puede utilizar como valor centinela.


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

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | cna certification