68
Usar el while Página de inicio Biblioteca Aprender Descargas Soporte técnico Comunidad Iniciar sesión | México - Español | Preferencias MSDN Library Herramientas y lenguajes de desarrollo Visual Studio 2005 BuscarM SD

Usar el while

Embed Size (px)

Citation preview

Page 4: Usar el while

Instrucción While...End While (Visual Basic)

Visual Studio 2005

Otras versiones

Ejecuta una serie de instrucciones siempre que una condición dada sea

True.

Copiar

While condition

[ statements ]

[ Exit While ]

[ statements ]

End While

Partes

condition

Page 5: Usar el while

Requerido. Expresión Boolean. Si condition es Nothing, Visual Basic la trata

como False.

statements

Opcional. Una o más instrucciones a continuación de While, que se ejecutan cada

vez que condition es True.

Exit While

Opcional. Transfiere el control fuera del bloque While.

End While

Obligatorio. Termina la definición del bloque While.

Comentarios

Utilice una estructura While...End While si desea repetir un conjunto de

instrucciones un número indefinido de veces, siempre que una condición sea

True. Si desea más flexibilidad con respecto a la ubicación donde prueba la

condición o al resultado para el que la prueba, quizá prefiera Instrucción Do...Loop

(Visual Basic). Si desea repetir las instrucciones un número fijo de veces,

Instrucción For...Next (Visual Basic) suele ser mejor opción.

Si condition es True, se ejecutan todas las statements hasta que se encuentra la

instrucción End While Después, el control vuelve a la instrucción While y se

comprueba de nuevo condition. Si condition aún es True, se repite el proceso. Si

es False, el control pasa a la instrucción que sigue a la instrucción End While.

Reglas

Naturaleza de la condición. Generalmente, la condición es el resultado de

comparar dos valores, pero también puede ser cualquier expresión que da

como resultado un valor Boolean (Tipo de datos, Visual Basic) (True o

Page 6: Usar el while

False). Esto incluye los valores de otros tipos de datos, como los

numéricos, que han sido convertidos a valores de tipo Boolean.

Probar la condición. La instrucción While comprueba siempre la condición

antes de iniciar el bucle. La ejecución en bucle continúa mientras el

resultado de la condición sea True.

Número de iteraciones. Si condition es False cuando entra en el bucle por

primera vez, no se ejecuta ni una vez.

Anidar bucles. Los bucles While se pueden anidar, colocando un bucle

dentro de otro. También puede anidar tipos diferentes de estructuras de

control entre sí. Para obtener más información, vea Estructuras de control

anidadas.

Transferir fuera del bucle. Instrucción Exit (Visual Basic) transfiere el

control inmediatamente a la instrucción que sigue a la instrucción End

While. Puede desear salir de un bucle si detecta una condición que hace

que sea innecesario o que no se pueda continuar la iteración, como un

valor incorrecto o una solicitud de finalización. Puede incluir el número que

desee de instrucciones Exit While en cualquier parte del bucle While. Exit

While se utiliza a menudo tras evaluar alguna condición, por ejemplo en

una estructura If...Then...Else.

Bucles sin fin. Un uso de Exit While consiste en comprobar una condición

que puede ocasionar un bucle sin fin; es decir, un bucle que se puede

ejecutar un número extremadamente elevado o infinito de veces. Si detecta

este tipo de condición, puede utilizar Exit While para salir del bucle. Para

obtener más información, vea Instrucción Do...Loop (Visual Basic).

Ejemplo

Page 7: Usar el while

Este ejemplo utiliza la estructura While...End While para incrementar una variable

de contador. Las instrucciones del bucle se ejecutan en tanto la condición dé como

resultado True.

VB

C#

C++

F#

JScript

Copiar

Dim counter As Integer = 0

While counter < 20

counter += 1

' Insert code to use current value of counter.

End While

MsgBox("While loop ran " & CStr(counter) & " times")

Page 8: Usar el while

Vea también

Referencia

Instrucción Do...Loop (Visual Basic)

Instrucción For...Next (Visual Basic)

Boolean (Tipo de datos, Visual Basic)

Instrucción Exit (Visual Basic)

Conceptos

Estructuras de bucles

Estructuras de control anidadas

Contenido de la comunidadAgregar

Preguntas más frecuentes

© 2011 Microsoft. Reservados todos los derechos.

Términos de uso | Marcas Registradas | Privacidad| Administre su perfil | MSDN

Flash en Español | Contacto | Aviso legal| Comentarios

Recherche

Registrase

Buscar 0 OK

Page 10: Usar el while

Actualidades

Artìculos

Inicio ›

Foro ›

Programación ›

Para que sirve if, for y while, visual basic

Imprimir

Ayudarles

Estadisticas

Haga su pregunta Denunciar

Para que sirve if, for y while, visual basic [Resuelto/Cerrado]

a - Última respuesta el 17 jun 2010, 06:12

Hola,

mi nombr es alejandro quiero que me ayuden necesito que me digan para que

sirve if, for y while en visual basic

soy un estudiante y necesito ayuda ya!!!!!!!!!!

Para que sirve if, for y while, visual basic »

Sugerencias

Para que sirve if, for y while, visual basic

Programas en visual basic 6.0 (Resuelto) » Foro

Algoritmo en visual basic p indetif nro par o » Foro

While » Foro

Page 11: Usar el while

Ejercicio while » Foro

COMO HACER WHILE Y FOR EN VISUAL BASIC » Foro

Programar con visual basic 6 » Foro

Foro de discusión » Artículos

Cantidad de dias entre fechas en vb.net (Resuelto) » Foro

Codigos de visual basic para botones (Resuelto) » Foro

Más

18 respuestas

Respuesta

+76

Denunciar

AnaLes 5 dic 2008, 06:15

If =Si, con eso podes hacer comparaciones esto es que por ejemplo

If 4=4 then

Writeln('son iguales');

El for=Para

Este recorre ciertos datos por ejemplo de

For i:=1 to 10 do

readln(a);ejecuta 9 veces

el while es mientras...esto es mientras no se cumpla la condicion no entra

While Num<> 0 do Mientras el numero sea distinto de 0 se siga ejecutando

Page 12: Usar el while

Denunciar Amuro -5 dic 2008, 17:34

ese If 4=4 Then

No está bien usado dado que siempre lo pasaria

una buena sintaxis seria:

If NumeroA = NumeroB then

Writeln('son iguales');

Y tambien en el : For i:=1 to 10 do

readln(a);ejecuta 9 veces

Lo va a ejecutar 10 veces

Respuesta

+33

Denunciar

memo_informatico17 ene 2009, 21:00

hola mira lo que estas preguntando es algo sencillo bueno, "if" es una sentencia

que te permite identifica o comparar ya sea un numero entero o una cadena de

careacteres lo que sea, si se cumple la condicion es que en trara luego asa

sentecia y si no se cumple no entra o.k solo entiende que para comparar algo

ojo .......

la sentencia "while" te permite para entrar en un ciclo o.k pero solo cuando se

cumpla tambien osea mientras se cumpla sirta condicion entrara e ese ciclo de

Page 13: Usar el while

acuerdo ala sentencia que ayas puesto vale y si no pues mientras no entra o.k

solo si cumple.

la sentecia "for" te permite limitar un ciclo este es mas sencillo ya que tu tienes el

control de cuantas veces quieres que entre al ciclo o.k es lo que diferencia de

while si ose que desde 0 hasta 10 osea entrara solamente a compara la

sentencias que tengas dentro de ese ciclo 10 veces ya y si se cumple una pues es

de ahi si no simplemente no cumple nada pero ten cuidado al cerrar el ciclo ya que

si no , de lo contrario se te ciclara je o.k

espero y t haya podido ayudar algo y t sirva si no pues ahy tienes mi correo para

cualquier duda vale y suerte [email protected] je bye

Denunciar Programa-20 may 2010, 04:56

No entiendo que es un "ciclo o.k"

Denunciar Amuro -21 may 2010, 17:03

a ver... entendes la palabra "ciclo" como "algo que se repite una y otra vez" bueno

esa es la explicacion

Respuesta

+22

Denunciar

Kevo19 mar 2010, 17:31

te voy a dar un pantallaso jeneral de cada estructura despues la sintaxis corre por

tu cuenta!! primero empieso por las de iteracion:

For :Consiste en repetir N veces un bloque de acciones.

Page 14: Usar el while

Este número de veces que se deben ejecutar las acciones es fijo y conocido de

antemano.

para que tengas encuenta:

*La variable de control debe ser de tipo ordinal

*no debe modificarse dentro del lazo.

*Los incrementos ó decrementos y testeos son implícitos

*Al terminar el ciclo, la variable índice no tiene un valor definido (su uso se limita a

la repetición).

un ejemplo pequeño

For i=1 to 10

num = num + i

next

While :

Puede ocurrir que se desee ejecutar un bloque de instrucciones desconociendo el

número exacto de veces que se ejecutan.

Para estos casos existen en la mayoría de los lenguajes de programación

estructurada las estructuras de control iterativas condicionales.

Como su nombre lo indica las acciones se ejecutan dependiendo de la evaluación

de la condición.

Estas estructuras se clasifican en pre-condicionales y post-condicionales

Las estructuras iterativas pre-condicionales primero evalúan la condición y si es

Page 15: Usar el while

verdadera se ejecuta el bloque de acciones. Dicho bloque se pueda ejecutar 0, 1 ó

más veces.

Importante: el valor inicial de la condición debe ser conocido o evaluable antes de

la evaluación de la condición.

otro ejemplo:

{en la variable suma se guarda el resultado de la suma de los números

ingresados}

{ inicializa la variable suma }

suma := 0;

writeln ( "Ingrese un número entero:" );

{ la variable numero toma valor que luego utiliza como evaluar la condición

por primera vez}

readln ( numero );

while ( numero <> 0 ) do begin

suma := suma + numero;

writeln ( "Ingrese un número entero:" );

{ la variable número toma otro valor que utilizará como nueva condición }

read ( numero );

end;

writeln ( "El resultado de la suma es:", suma );

{ en suma se acumula la suma de los números leídos }

ahora la de decision

IF:

En un algoritmo representativo de un problema real es prácticamente imposible

que todo sea secuencial. Es necesario tomar decisiones en función de los datos

del problema.

un ejemplo de la estructura if

Page 16: Usar el while

If (condición) then

Acciones_por_Condición_Verdadera;

else

Acciones_por_Condicion_Falsa;

espero que te sirva la explicacion saludos.

Respuesta

+12

Denunciar

Amuro4646Puestoslunes, 3 de noviembre de 2008Fecha de inscripciónsábado, 9

de abril de 2011Último discurso14 nov 2008, 18:26

El es es una opcion entre unasintaxis, por ejemplo si un numero es mayor a otro

hace una accion, si no es mayor hace otra

Los For Y While son bucles que se repiten hasta que se cumpla una condicion(en

el caso del For es cuando llegue al numero puesto For A = 1 to N cuando se llega

al numero N para.)

Respuesta

+10

Denunciar

Page 17: Usar el while

sander el grande13 ene 2010, 16:33

HOLA LOQUE ESTAS PREGUNTAND ES MUY FACIL LA SENTENCIA "IF" SE

UTILIZA PARA UNA COMPARACION ES COMO UNA PREGUNTA PERO

SIEMPRE TIENES QUE TOMAR EN CUENTA QUE CADA IF QUE HABRAS DE

SIERRA CON UN "END IF" ACA TE DOY UN PEQUEÑO EJM

* REALIZA UN PROGRAMA QUE TE PERMITA INGRESAR 3 NOTAS DE UN

ALUMNO calcule su promedio si el promedio es menor que 11 entonces reportar

desaprobado y si es mayor que 12 reportar aprobado de lo contrario un msm

"notas incorrectas

1paso declaracion

privatesub_cmdcalcular_clic()

dim n1,n2,n3,pr as integer

n1 =val (txtn1.text)

n2 =val (txtn2.text)

n3 =val (txtn3.text)

pr=(n1+n2+n3) / 3

lblpro.caption=str (pr)

if pr mayor 10 and pr menor 21 then

lblreporte="alumno aprobado"

elseif pr mayor 0 and pr menor 11 then

lblreporte="alumno desaprobado"

elseif pr mayor 20 and pr menor 0 then

lblreporte ="notas incorretas "

end if

end sub

Denunciar enax420-9 abr 2010, 02:19

Page 18: Usar el while

x favor me podria mandar un link para descargar visual basic 6.0 .. x favor lo

necesito x la universidad...lo agradeceria mucho.. mi correo es

[email protected]

Respuesta

+10

Denunciar

faraon17 jun 2010, 06:12

INFORMACIÓN GENERAL

IDENTIFICACIÓN DE LA GUÍA

FECHA DE APLICACIÓN: Mayo 19 de 2010

PROGRAMA DE FORMACIÓN: Técnico en Sistemas

ID:

CENTRO AGROEMPRESARIAL Y TURISTICO DE LOS ANDES

RESULTADOS DE APRENDIZAJE:

* Identificar los conceptos de programación orientada a eventos y aplicarlos en un

lenguaje específico

CRITERIOS DE EVALUACIÓN:

1. Identificar la estructura del condicional IF(SI) dentro de la programación de

Visual Basic

NOMBRE DEL INSTRUCTOR- TUTOR: DARWIN ALEXIS CELIS BOADA

DESARROLLO DE LA GUIA

Page 19: Usar el while

INTRODUCCIÓN:

Visual-Basic es una herramienta de diseño de aplicaciones para Windows, en la

que estas se desarrollan en una gran parte a partir del diseño de una interface

gráfica. En una aplicación Visual - Basic, el programa está formado por una parte

de código puro, y otras partes asociadas a los objetos que forman la interface

gráfica.

Es por tanto un término medio entre la programación tradicional, formada por una

sucesión lineal de código estructurado, y la programación orientada a objetos.

Combina ambas tendencias. Ya que no podemos decir que VB pertenezca por

completo a uno de esos dos tipos de programación, debemos inventar una palabra

que la defina : PROGRAMACION VISUAL.

La estructura de control IF permite decir entre dos opciones resultantes de la

evaluación de una sentencia. Si la evaluación es positiva hace una cosa, también

podemos especificar acciones para realizar en caso de que la evaluación sea

negativa. Veamos cómo funciona en VBscript.

IF (expresion) then

Sentencias

....

END IF

Vemos que en primer lugar tenemos la sentencia IF, luego una expresión, que

puede o no ir entre paréntesis, y más tarde la parabra THEN. Vemos que luego

hay un salto de línea antes de colocar las sentencias asociadas a la evaluación

positiva de la sentencia. En VBScript las líneas si que importan.

Después de poner las sentencias del asociadas a la evaluación positiva

colocamos un END IF, para acabar la estructura del IF.

Enunciado ELSE

Page 20: Usar el while

Opcionalmente se puede colocar una serie de sentencias asociadas a la

evaluación negativa de la expresión. Estas sentencias se deben colocar después

de la orden ELSE y antes del END IF.

IF (expresion) then

Sentencias

....

ELSE

Sentencias

....

END IF

Enunciado ELSEIF

En Visual Basic Script existe la posibilidad de utilizar un enunciado especial en el

lugar donde utilizaríamos un ELSE. Sirve para encadenar sentencias IF de modo

que en un resultado negativo de un IF se pueda evaluar otra expresión, que

tendría a su vez otros enunciados THEN y probablemente ELSE u otro ELSEIF.

Se vería en un ejemplo com más facilidad:

IF (expresion1) then

Sentencias1

....

ELSEIF (expresion2) then

Sentencias2

....

ELSEIF (expresion3) then

Sentencias3

....

ELSE

Sentencias4

....

Page 21: Usar el while

END IF

Se evalúa la primera expresión, en caso positivo se ejecutan las sentencias1, en

caso negativo se evalua la expresion 2. Si la expresión 2 es positiva se ejecutan

las sentencias 2 en caso negativo evaluamos la expresión 3 con el siguiente

ELSEIF. Todo acaba en un ELSE en este ejemplo, pero el ELSE final no es

obligatorio.

Formulación de Actividades:

1. Realizar una aplicación en la cual se comparen dos números y se diga cual es

el mayor y cuál es el menor.

2. Realizar una aplicación en la cual se reciban los datos de una persona, se

procesen y se determine si es mayor de edad o menor de edad.

BIBLIOGRAFIA DE ANEXOS:

* Página oficial de Microsoft

* Foros y paginas de VB

EVALUACIÓN:

EVIDENCIAS DE APRENDIZAJE TECNICAS E INSTRUMENTOS DE

EVALUACION

Respuesta a preguntas sobre conceptos generales de VB como historia,

características, ventajas y desventajas, arquitectura, componentes, entre otros -

Page 22: Usar el while

Valoración de productos.

Por plataforma

Lista de chequeo

INFORMACIÓN GENERAL

IDENTIFICACIÓN DE LA GUÍA

FECHA DE APLICACIÓN: Mayo 19 de 2010

PROGRAMA DE FORMACIÓN: Técnico en Sistemas

ID:

CENTRO AGROEMPRESARIAL Y TURISTICO DE LOS ANDES

RESULTADOS DE APRENDIZAJE:

* Identificar los conceptos de programación orientada a eventos y aplicarlos en un

lenguaje específico

CRITERIOS DE EVALUACIÓN:

1. Identificar la estructura del condicional IF(SI) dentro de la programación de

Visual Basic

NOMBRE DEL INSTRUCTOR- TUTOR: DARWIN ALEXIS CELIS BOADA

DESARROLLO DE LA GUIA

INTRODUCCIÓN:

Visual-Basic es una herramienta de diseño de aplicaciones para Windows, en la

que estas se desarrollan en una gran parte a partir del diseño de una interface

gráfica. En una aplicación Visual - Basic, el programa está formado por una parte

de código puro, y otras partes asociadas a los objetos que forman la interface

gráfica.

Page 23: Usar el while

Es por tanto un término medio entre la programación tradicional, formada por una

sucesión lineal de código estructurado, y la programación orientada a objetos.

Combina ambas tendencias. Ya que no podemos decir que VB pertenezca por

completo a uno de esos dos tipos de programación, debemos inventar una palabra

que la defina : PROGRAMACION VISUAL.

La estructura de control IF permite decir entre dos opciones resultantes de la

evaluación de una sentencia. Si la evaluación es positiva hace una cosa, también

podemos especificar acciones para realizar en caso de que la evaluación sea

negativa. Veamos cómo funciona en VBscript.

IF (expresion) then

Sentencias

....

END IF

Vemos que en primer lugar tenemos la sentencia IF, luego una expresión, que

puede o no ir entre paréntesis, y más tarde la parabra THEN. Vemos que luego

hay un salto de línea antes de colocar las sentencias asociadas a la evaluación

positiva de la sentencia. En VBScript las líneas si que importan.

Después de poner las sentencias del asociadas a la evaluación positiva

colocamos un END IF, para acabar la estructura del IF.

Enunciado ELSE

Opcionalmente se puede colocar una serie de sentencias asociadas a la

evaluación negativa de la expresión. Estas sentencias se deben colocar después

de la orden ELSE y antes del END IF.

IF (expresion) then

Sentencias

....

Page 24: Usar el while

ELSE

Sentencias

....

END IF

Enunciado ELSEIF

En Visual Basic Script existe la posibilidad de utilizar un enunciado especial en el

lugar donde utilizaríamos un ELSE. Sirve para encadenar sentencias IF de modo

que en un resultado negativo de un IF se pueda evaluar otra expresión, que

tendría a su vez otros enunciados THEN y probablemente ELSE u otro ELSEIF.

Se vería en un ejemplo com más facilidad:

IF (expresion1) then

Sentencias1

....

ELSEIF (expresion2) then

Sentencias2

....

ELSEIF (expresion3) then

Sentencias3

....

ELSE

Sentencias4

....

END IF

Se evalúa la primera expresión, en caso positivo se ejecutan las sentencias1, en

caso negativo se evalua la expresion 2. Si la expresión 2 es positiva se ejecutan

las sentencias 2 en caso negativo evaluamos la expresión 3 con el siguiente

ELSEIF. Todo acaba en un ELSE en este ejemplo, pero el ELSE final no es

Page 25: Usar el while

obligatorio.

Formulación de Actividades:

1. Realizar una aplicación en la cual se comparen dos números y se diga cual es

el mayor y cuál es el menor.

2. Realizar una aplicación en la cual se reciban los datos de una persona, se

procesen y se determine si es mayor de edad o menor de edad.

BIBLIOGRAFIA DE ANEXOS:

* Página oficial de Microsoft

* Foros y paginas de VB

EVALUACIÓN:

EVIDENCIAS DE APRENDIZAJE TECNICAS E INSTRUMENTOS DE

EVALUACION

Respuesta a preguntas sobre conceptos generales de VB como historia,

características, ventajas y desventajas, arquitectura, componentes, entre otros -

Valoración de productos.

Por plataforma

Lista de chequeo

v

Page 26: Usar el while

Respuesta

+2

Denunciar

rober1993 7 ene 2009, 03:48

mira aqui un breve manual

http://www.recursosvisualbasic.com.ar/...

espero que te ayude

Respuesta

+2

Denunciar

AREN20 may 2010, 04:51

HOLA SOY ERENDIRA Y EL IF SIRVE PARA TOMAR DECISIONES EL FOR

PARA HACER UN CICLO ASTA QUE SE CUMPLA UNA CONDICION Y EL

WHILE ES PARA LO MISMO ES PARA UN CICLO ESO ME DIJO MI PROFE DE

INFORMATICA ESPERO Y T ALLA SERVIDO VA BUEN O BYE

Respuesta

+1

Page 28: Usar el while

Respuesta

-4

Denunciar

Bebiis10 feb 2010, 02:28

Olaaz Qeriid0o ps veraas

Qee el if es una estructura de condición la cual cuestionara antes de ejecitarse

el for ii el while son estructuras de repeticion las cuales permitiiran Qee una

iinstruccion se repiita cuantas veces sean reQueridaas..°!! =D

Respuesta

-11

Denunciar

miri conde26 mar 2010, 16:52

hola ps es muy facil lee el libro de redes va cuidat tk

Denunciar Amuro -29 mar 2010, 16:30

no hace falta saber de redes para saber lo del If... en cuanquier manual de

principiante de programación está eso.

Haga su pregunta

Page 29: Usar el while

Este documento intitulado « para que sirve if, for y while, visual basic » de

Kioskea.net (es.kioskea.net) esta puesto a diposición bajo la licencia Creative

Commons. Puede copiar, modificar bajo las condiciones puestas por la licencia,

siempre que esta nota sea visible.

Entrevista exclusiva para Kioskea

Kevin Turner (COO, Microsoft): "Deseamos estar presentes en el 100%

de las empresas de Fortune Global 500 con nuestros servicios"

CCM-Benchmark Network

o www.commentcamarche.net

o de.kioskea.net

o en.kioskea.net

Page 30: Usar el while

o es.kioskea.net

o it.kioskea.net

o pt.kioskea.net

o salud.kioskea.net

o Expeert

o SUPINFO, Escuela de Ingeniería

Accesos directos

o Términos de uso

o Quiénes somos

o Contacto

o Aviso legal

Índice

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0-9

Recevez notre newsletter

<img width="1" height="1" src="http://logc15.xiti.com/hit.xiti?s=254140&p=forum

%3A%3Aaffich-23543-para-que-sirve-if-for-y-while-visual-basic&s2=5" alt="" />

el Guille, la Web del Visual Basic, C#, .NET y

más...

Lo+ - WinFX - .NET - ADO.NET - ASP.NET -

Cómo... - Colabora - VB6 - API - HTML - Vista -

email

Page 31: Usar el while

Links - Foros

Curso Básico de Programación

en Visual Basic

Sexta Entrega: 11/Ago/97.

por Guillermo "guille" Som

Si quieres linkar con las otras entregas, desde el índice lo puedes hacer

Solución de los ejercicios de la Quinta Entrega

Pulsa este link para ver la solución de los ejercicios de la quinta entrega (aunque

el nombre la página sea: basico06_sol)

Como hemos visto en el apéndice de la entrega anterior, la instrucción IF...

THEN... nos permite tomar decisiones según el valor de una variable o el resultado

de una expresión. En esta entrega veremos como sacarle rendimiento a esta

instrucción.

Pero antes de entrar en detalles, veamos cómo podemos decirle al Basic que

haga las cosas. En realidad vamos a ver la forma en que se le puede decir que las

haga...

Forma de especificar las instrucciones en Visual Basic

Las instrucciones en Basic no tienen porqué estar cada una en una línea. Se

pueden escribir varias instrucciones en la misma línea, pero separando cada una

de ellas con el signo : (dos puntos).

Cuando VB encuentra los dos puntos, deja de 'interpretar' la instrucción y pasa a

Page 32: Usar el while

la acción, una vez traducido a su lenguaje interno, toma lo que hay después del

signo : y sigue su camino en busca de más instrucciones o el final de la línea.

Veámoslo de forma práctica:

Nombre = "Pepe" : Print Nombre

Esta línea tiene dos instrucciones: una asignación y una instrucción Print.

Podemos poner cuantas instrucciones queramos, separadas con los dos puntos.

Pero, (siempre hay un pero), si una de las instrucciones es el IF/THEN la cosa

puede cambiar...

Ya vimos que IF comprueba la expresión que viene a continuación, si es cierta,

ENTONCES procesa lo que haya después de THEN. En caso de ser en la misma

línea, interpretará todas las instrucciones que estén a continuación; en caso de ser

un bloque IF... THEN... END IF, ejecutará todo lo que esté dentro de ese bloque.

Ahora bien, si la expresión es falsa pasa a la siguiente línea, tanto si es o no un

bloque. En el caso del bloque la siguiente línea a interpretar será la que esté

después de END IF.

En los tiempos del BASIC interpretado de MS-DOS, era habitual encontrar las

líneas con varias instrucciones separadas por dos puntos.

En mi caso, cuando empecé a usar el QuickBasic 2.0 y al poder usar bloques IF...

THEN... END IF, fui dejando a un lado el "mogollón" de instrucciones en la misma

línea...

Ahora, salvo en contadas excepciones, escribo cada instrucción en una línea. Y te

recomiendo que hagas lo mismo, tu código ganará en claridad y si alguna vez

vuelves a verlo, te será más fácil de entender.

Después de este pequeño respiro, veamos cómo estaría formada una línea de VB

para usar con un IF... THEN...

[instrucciones:] IF <expresión> THEN <instrucciones si es cierto [:más

instrucciones...]>

Page 33: Usar el while

A continuación de THEN podemos incluir cuantas instrucciones queramos,

separadas por dos puntos.

Estas sólo se ejecutarán cuando la expresión sea cierta. Si el resultado de la

expresión es falso, se obvia 'todo' lo que hay después de THEN y se pasa a la

siguiente línea.

Espero que lo hayas asimilado y que no te indigestes con lo siguiente...

Pero, (...), existe otra instrucción que PUEDE acompañar al IF... THEN... y es para

los casos en los cuales el resultado de la expresión sea FALSO.

Si, ya sé que dije que cuando es falso se pasa a la siguiente línea, pero eso es

cuando no se usa la cláusula ELSE.

Con ésta, la definición de la instrucción "tomadora de decisiones" quedaría así:

IF <expresión> THEN <si se cumple> ELSE <si no se cumple>

Tanto en <si se cumple> como en <si no se cumple> pondremos tantas

instrucciones como queramos, (separadas por dos puntos).

Pero no te recomiendo que lo hagas, es preferible, al menos para darle "claridad"

a nuestro código, usar el bloque:

IF <expresión> THEN

<si se cumple>

ELSE

<si no se cumple>

END IF

Sé que esto puede ocupar más líneas de código, pero nuestro "coco" lo

agradecerá, ya que es más fácil de comprender, sino veamos un ejemplo:

IF numero > limite THEN

Print "tu número es grande"

Page 34: Usar el while

ELSE

Print "OK, McKey!"

END IF

Ahora veámoslo en una sóla línea:

IF numero > limite THEN Print "tu número es grande" ELSE Print "OK, McKey!"

En este ejemplo, aún queda claro, pero lo podríamos complicar con más

instrucciones para ambos casos, es decir, para cuando la expresión es cierta y

también cuando es falsa.

En los tiempos del BASIC que venían incorporados con los ordenadores, cada

línea del programa había que numerarla, ya que todo lo que se escribía sin

número de línea, se ejecutaba inmediatamente; al igual que ocurre con lo que se

escribe en la ventana Inmediate del Visual Basic.

Los números de líneas se usaban, además de porque era obligatorio, para

cambiar el orden de ejecución, sobre todo después de una comparación. De esta

forma, aún sin tener bloques IF/THEN/ELSE/END IF, se podían simular.

¿Cómo se lograba?

Usando una instrucción que muchos creen que es "indecente, antisocial, etc."

La estrella del Basic: (redoble de tambores) "GOTO"

A partir de hoy, más de un purista de la programación no me dirigirá la palabra...

pero no me importa...

Se ha "denostado" (injuriado) con exageración el uso de esta instrucción.

Realmente es una instrucción de "bifurcación", es decir, sirve para "IR A" otro sitio

de nuestro programa.

Su uso ha sido el más criticado de los NO PARTIDARIOS del Basic y siempre han

basado sus críticas en el exagerado uso del GOTO en todos los programas Basic.

Pero aclaremos que C también tiene esta instrucción y que cualquier programa en

código máquina (ensamblador) está "plagado" de JMP que para el caso es lo

Page 35: Usar el while

mismo que el sufrido GOTO, realmente una instrucción GOTO número_linea se

convierte en JMP número_linea.

No voy a recomendar el uso del GOTO, para nada, ya que hoy día es innecesario

su uso. Antes no teníamos más remedio, porque el BASIC no disponía de

instrucciones para poder estructurar el código. Pero sería una tontería querer

hacer creer que no existe esta instrucción. Sabiendo que está y cómo podemos

evitarla, es preferible a decir que no existe y si por casualidad la descubres... a

que la uses.

Por tanto, insisto en mi recomendación, (de esta forma los PURISTAS volverán a

dirigirme la palabra), NO USES EL GOTO, ni aún cuando creas que no tienes más

remedio... aunque, aquí entre nosotros, algunas veces es más cómodo usarlo...

pero que no se entere nadie...

Este es un programa de los de antes, sirve para mostrar en pantalla los números

del 1 al 10 y sin usar el FOR/NEXT

10 A = 1

20 Print A

30 A = A + 1

40 IF A <= 10 THEN GOTO 20

'Con el Commodore este programa se solía escribir así:

10 A=1

20 PRINTA:A=A+1:IFA<=10GOTO20

'Sin ESPACIOS NI NADA... TODO APELMAZADO... ¿que más daba usar el

GOTO?

Imagine there's no heaven... (es que está sonando J. Lennon... un momento...)

En este ejemplo, es obvio que podríamos sustituirlo con:

Page 36: Usar el while

10 For A = 1 To 10

20 Print A

30 Next

El NEXT hace lo mismo que la asignación y la comparación.

Pero hay otras maneras, para ello existe una serie de instrucciones que funcionan

de manera similar, veamos otros ejemplos con más instrucciones para hacer

bucles, seguiré usando los números de línea por aquello de la "nostalgia", pero

salvo en el primer ejemplo, en los demás no es necesario.

10 A = 1

20 While A <= 10

30 Print A

40 A = A + 1

50 Wend

El WHILE/WEND ya casi ni se usa, porque tienen un sustituto más versátil, ahora

lo veremos, pero el uso sería:

WHILE <expresión>

<instrucciones si se cumple>

WEND

Es decir, MIENTRAS la expresión sea cierta, repite todo lo que haya hasta el

WEND.

Por supuesto podemos ponerlo todo en una sola línea:

10 A = 1 : While A <= 10 : Print A : A = A + 1 : Wend

Pero esto tampoco es recomendable, queda algo "difuso"...

El WEND funciona como IF A <=10 THEN GOTO xxx, con la ventaja que evitamos

Page 37: Usar el while

el GOTO y lo que hace es comprobar si la expresión que hay tras el WHILE es

cierta o no, en caso de que sea verdadero el resultado, (ya sabes, distinto de

CERO), se ejecutará todo lo que hay entre WHILE y WEND. Estas instrucciones

ya existían en el GWBASIC (el basic de los PCs)

Hay que tener cuidado con esto de que la expresiones evalúan el cero como

FALSO y cualquier otro valor como VERDADERO, por ejemplo:

A = 1 o

While A While 1

Print A Print A

A = A + 1 A = A + 1

Wend Wend

En ambos casos el bucle sería "infinito", realmente se detendría en un momento

dado, ya que llegaría a "desbordarse" el valor máximo y en ese momento el

programa acabaría por producirse un error... pero prueba esto y verás:

While 1

Print "Hola Mundo"

Wend

Esto nunca finalizará, salvo que pulses CRTL+BEAK (o INTERrumpir), para

detener el programa.

Más instrucciones para hacer bucles

Con el QuickBasic 3.0, (yo no llegué a tenerlo, pero creo que fue ahí dónde se

introdujo), entró en funcionamiento una nueva forma de hacer bucles:

DO... LOOP

El último ejemplo podríamos escribirlo así:

Page 38: Usar el while

Do

Print "Hola Mundo"

Loop

Pero la "gracia" de este tipo de bucle es que podemos usar dos nuevas cláusulas

para evaluar cuanto durará el bucle.

La primera es WHILE y funciona igual que en WHILE/WEND

A = 1

Do While A <= 10

Print A

A = A + 1

Loop

La ventaja es que WHILE se puede poner tanto después de DO como a

continuación de LOOP.

Si lo usamos como DO WHILE <expresión>... la forma de actuar es igual que

WHILE/WEND, es decir, se evalúa la expresión y sólo en caso de que sea cierta,

se ejecuta lo que está dentro del bucle, es decir entre DO y LOOP.

Pero si evaluamos la expresión en LOOP, se ejecutará todo lo que hay tras el DO,

como mínimo una vez y se seguirá repitiendo si se cumple la condición. De esta

forma, como he dicho, se ejecutará el contenido del bucle, como mínimo una vez.

Veamos un ejemplo:

A = 1

Do

Print A

A = A + 1

Page 39: Usar el while

Loop While A <= 10

El problema es que si A, en lugar de valer 1, tiene un valor superior a 10, también

se ejecutará, al menos, una vez.

A = 11 : Do : Print A: A = A + 1: Loop While A <= 10

Que mal queda en una sola línea, ¿verdad?

Pero con DO/LOOP también puede usarse UNTIL, en este caso, el bucle se

repetirá HASTA que se cumpla la expresión

A = 1

Do Until A > 10

Print A

A = A + 1

Loop

Fíjate que la expresión ha cambiado de <= (menor o igual) a > (mayor), ya que

ahora se evalúa de esta forma:

Hasta que A sea mayor que diez, REPITE todo hasta LOOP.

Por supuesto también podemos usarlo después del LOOP:

A = 1

Do

Print A

A = A + 1

Loop Until A > 10

Aquí hago la misma aclaración que antes, si el valor inicial de A es más de 10 se

ejecutará como mínimo una vez.

Realmente para contar de forma secuencial y prácticamente para casi todo tipo de

Page 40: Usar el while

bucle, no es necesario hacer los bucles con DO/LOOP, ya que FOR/MEXT lo hace

bastante bien.

Sigamos con estos bucles, pero en lugar de contar de menor a mayor, vamos a

contar "pa trás", es decir de mayor a menor... quién sabe, lo mismo necesitas

hacer un programa que cuente al revés...

A = 10

Do While A >= 1

Print A

A = A - 1

Loop

Cuando se muestre el 1, A=A-1 se convertirá en A = 0 y la comparación A >= 1 no

se cumplirá, por tanto dejará de repetirse el bucle, pero esto también se puede

hacer con FOR/NEXT:

For A = 10 To 1

Print A

Next

El único inconveniente es que NO SE REPITE NI UNA VEZ... ¿Por qué?

Porque si no se le indica lo contrario, FOR/NEXT siempre cuenta de forma

ascendente y cuando ve que A debe ir de 10 hasta 1 y que eso no es

ascendente... pasa de ejecutar el bucle. Esto es una cosa a tener en cuenta, FOR

siempre evalúa los valores del bucle que tiene que hacer y si no está entre los

valores que debe, no se ejecuta ni una sola vez. En este caso debe empezar por

DIEZ y llegar hasta UNO, así que se da cuenta de que ya ha terminado... incluso

sin haber empezado... ¡que listo es el FOR!

Page 41: Usar el while

Para que el FOR cuente hacia atrás, necesitamos un nuevo peldaño (esto en

inglés quedaría "clavado"), en la escala evolutiva del FOR/NEXT (ahí queda eso!!!)

Ya sin coñas, se necesita la palabra STEP para indicarle que no queremos ir de

uno en uno de forma ascendente, en nuestro ejemplo lo usaríamos así:

For A = 10 To 1 Step -1

Print A

Next

De esta forma contará desde 10 hasta 1, restando uno en cada repetición.

Pero, ¿que hacer si queremos usar otros valores?

Simplemente ponerlo después de STEP, por ejemplo:

For A = 10 To 1 Step -1

For A = 1 To 10 Step 3, etc, etc.

Insisto, todo esto está muy bien, pero en la práctica usaremos otras cosas además

de contar de forma lineal, con incrementos o sin ellos... habrá veces que

queramos salir de un bucle.

Ya lo hemos visto, por ejemplo Exit Sub salía del procedimiento, ¿recuerdas el

Exit For?

Para salir de los bucles podremos Exit y a continuación For, Do, etc. Pero NO

podremos salir de un bucle WHILE/WEND.

Ya veremos ejemplos para estos casos y otros que surgirán más adelante.

Bien, creo que ya hemos dado demasiadas vueltas con tanto bucle, para terminar:

los ejercicios esos que tanto os gustan.

1.) Haz un programa que al pulsar en un botón (CommandButton) haga un bucle

entre dos valores que habrás introducido por medio de dos cajas de textos (una

para el inicio y otra para el final)

2.) Otro que tenga una tercera caja de textos y que el valor introducido en ella sea

el incremento.

Page 42: Usar el while

3.) Como tercer ejercicio, una vez terminado el bucle, que muestre en un Label las

veces que se ha repetido.

Por ejemplo, si hacemos un bucle del uno al diez de uno en uno, se repetirá diez

veces; pero si lo hacemos de dos en dos, se repetirá cinco veces...

Como pista, decirte que no tendrás que hacer ninguna comparación para obtener

el resultado, la solución es tan SIMPLE que seguramente la descartarás "porque

no puede ser tan fácil"

Por supuesto, me gustaría que los bucles los hicieras tanto con FOR/NEXT y

DO/LOOP. Ya puestos, podrías hacerlo con el WHILE/WEND e incluso con el

GOTO...

¡Feliz programación!

Y seguimos con la costumbre esta de pedirte tus comentarios sobre el curso.

Sobre todo necesito saber si realmente está claro y entendible... ya que si no no

valdrá para mucho el montón de horas que le dedico a cada una de las entregas...

si, aunque no te lo creas, le dedico más de 5 horas a cada entrega...

Si no pasa nada raro, seguramente en este mismo mes habrá una nueva entrega.

Nos vemos.

Guillermo

el Guille, la Web del Visual Basic, C#, .NET y

más...

Lo+ - WinFX - .NET - ADO.NET - ASP.NET -

Cómo... - Colabora - VB6 - API - HTML - Vista -

Page 43: Usar el while

Links - Foros

Curso Básico de Programación

en Visual Basic

Sexta Entrega: 11/Ago/97.

por Guillermo "guille" Som

Si quieres linkar con las otras entregas, desde el índice lo puedes hacer

Solución de los ejercicios de la Quinta Entrega

Pulsa este link para ver la solución de los ejercicios de la quinta entrega (aunque

el nombre la página sea: basico06_sol)

Como hemos visto en el apéndice de la entrega anterior, la instrucción IF...

THEN... nos permite tomar decisiones según el valor de una variable o el resultado

de una expresión. En esta entrega veremos como sacarle rendimiento a esta

instrucción.

Pero antes de entrar en detalles, veamos cómo podemos decirle al Basic que

haga las cosas. En realidad vamos a ver la forma en que se le puede decir que las

haga...

Forma de especificar las instrucciones en Visual Basic

Las instrucciones en Basic no tienen porqué estar cada una en una línea. Se

pueden escribir varias instrucciones en la misma línea, pero separando cada una

de ellas con el signo : (dos puntos).

Cuando VB encuentra los dos puntos, deja de 'interpretar' la instrucción y pasa a

Page 44: Usar el while

la acción, una vez traducido a su lenguaje interno, toma lo que hay después del

signo : y sigue su camino en busca de más instrucciones o el final de la línea.

Veámoslo de forma práctica:

Nombre = "Pepe" : Print Nombre

Esta línea tiene dos instrucciones: una asignación y una instrucción Print.

Podemos poner cuantas instrucciones queramos, separadas con los dos puntos.

Pero, (siempre hay un pero), si una de las instrucciones es el IF/THEN la cosa

puede cambiar...

Ya vimos que IF comprueba la expresión que viene a continuación, si es cierta,

ENTONCES procesa lo que haya después de THEN. En caso de ser en la misma

línea, interpretará todas las instrucciones que estén a continuación; en caso de ser

un bloque IF... THEN... END IF, ejecutará todo lo que esté dentro de ese bloque.

Ahora bien, si la expresión es falsa pasa a la siguiente línea, tanto si es o no un

bloque. En el caso del bloque la siguiente línea a interpretar será la que esté

después de END IF.

En los tiempos del BASIC interpretado de MS-DOS, era habitual encontrar las

líneas con varias instrucciones separadas por dos puntos.

En mi caso, cuando empecé a usar el QuickBasic 2.0 y al poder usar bloques IF...

THEN... END IF, fui dejando a un lado el "mogollón" de instrucciones en la misma

línea...

Ahora, salvo en contadas excepciones, escribo cada instrucción en una línea. Y te

recomiendo que hagas lo mismo, tu código ganará en claridad y si alguna vez

vuelves a verlo, te será más fácil de entender.

Después de este pequeño respiro, veamos cómo estaría formada una línea de VB

para usar con un IF... THEN...

[instrucciones:] IF <expresión> THEN <instrucciones si es cierto [:más

instrucciones...]>

Page 45: Usar el while

A continuación de THEN podemos incluir cuantas instrucciones queramos,

separadas por dos puntos.

Estas sólo se ejecutarán cuando la expresión sea cierta. Si el resultado de la

expresión es falso, se obvia 'todo' lo que hay después de THEN y se pasa a la

siguiente línea.

Espero que lo hayas asimilado y que no te indigestes con lo siguiente...

Pero, (...), existe otra instrucción que PUEDE acompañar al IF... THEN... y es para

los casos en los cuales el resultado de la expresión sea FALSO.

Si, ya sé que dije que cuando es falso se pasa a la siguiente línea, pero eso es

cuando no se usa la cláusula ELSE.

Con ésta, la definición de la instrucción "tomadora de decisiones" quedaría así:

IF <expresión> THEN <si se cumple> ELSE <si no se cumple>

Tanto en <si se cumple> como en <si no se cumple> pondremos tantas

instrucciones como queramos, (separadas por dos puntos).

Pero no te recomiendo que lo hagas, es preferible, al menos para darle "claridad"

a nuestro código, usar el bloque:

IF <expresión> THEN

<si se cumple>

ELSE

<si no se cumple>

END IF

Sé que esto puede ocupar más líneas de código, pero nuestro "coco" lo

agradecerá, ya que es más fácil de comprender, sino veamos un ejemplo:

IF numero > limite THEN

Print "tu número es grande"

Page 46: Usar el while

ELSE

Print "OK, McKey!"

END IF

Ahora veámoslo en una sóla línea:

IF numero > limite THEN Print "tu número es grande" ELSE Print "OK, McKey!"

En este ejemplo, aún queda claro, pero lo podríamos complicar con más

instrucciones para ambos casos, es decir, para cuando la expresión es cierta y

también cuando es falsa.

En los tiempos del BASIC que venían incorporados con los ordenadores, cada

línea del programa había que numerarla, ya que todo lo que se escribía sin

número de línea, se ejecutaba inmediatamente; al igual que ocurre con lo que se

escribe en la ventana Inmediate del Visual Basic.

Los números de líneas se usaban, además de porque era obligatorio, para

cambiar el orden de ejecución, sobre todo después de una comparación. De esta

forma, aún sin tener bloques IF/THEN/ELSE/END IF, se podían simular.

¿Cómo se lograba?

Usando una instrucción que muchos creen que es "indecente, antisocial, etc."

La estrella del Basic: (redoble de tambores) "GOTO"

A partir de hoy, más de un purista de la programación no me dirigirá la palabra...

pero no me importa...

Se ha "denostado" (injuriado) con exageración el uso de esta instrucción.

Realmente es una instrucción de "bifurcación", es decir, sirve para "IR A" otro sitio

de nuestro programa.

Su uso ha sido el más criticado de los NO PARTIDARIOS del Basic y siempre han

basado sus críticas en el exagerado uso del GOTO en todos los programas Basic.

Pero aclaremos que C también tiene esta instrucción y que cualquier programa en

código máquina (ensamblador) está "plagado" de JMP que para el caso es lo

Page 47: Usar el while

mismo que el sufrido GOTO, realmente una instrucción GOTO número_linea se

convierte en JMP número_linea.

No voy a recomendar el uso del GOTO, para nada, ya que hoy día es innecesario

su uso. Antes no teníamos más remedio, porque el BASIC no disponía de

instrucciones para poder estructurar el código. Pero sería una tontería querer

hacer creer que no existe esta instrucción. Sabiendo que está y cómo podemos

evitarla, es preferible a decir que no existe y si por casualidad la descubres... a

que la uses.

Por tanto, insisto en mi recomendación, (de esta forma los PURISTAS volverán a

dirigirme la palabra), NO USES EL GOTO, ni aún cuando creas que no tienes más

remedio... aunque, aquí entre nosotros, algunas veces es más cómodo usarlo...

pero que no se entere nadie...

Este es un programa de los de antes, sirve para mostrar en pantalla los números

del 1 al 10 y sin usar el FOR/NEXT

10 A = 1

20 Print A

30 A = A + 1

40 IF A <= 10 THEN GOTO 20

'Con el Commodore este programa se solía escribir así:

10 A=1

20 PRINTA:A=A+1:IFA<=10GOTO20

'Sin ESPACIOS NI NADA... TODO APELMAZADO... ¿que más daba usar el

GOTO?

Imagine there's no heaven... (es que está sonando J. Lennon... un momento...)

En este ejemplo, es obvio que podríamos sustituirlo con:

Page 48: Usar el while

10 For A = 1 To 10

20 Print A

30 Next

El NEXT hace lo mismo que la asignación y la comparación.

Pero hay otras maneras, para ello existe una serie de instrucciones que funcionan

de manera similar, veamos otros ejemplos con más instrucciones para hacer

bucles, seguiré usando los números de línea por aquello de la "nostalgia", pero

salvo en el primer ejemplo, en los demás no es necesario.

10 A = 1

20 While A <= 10

30 Print A

40 A = A + 1

50 Wend

El WHILE/WEND ya casi ni se usa, porque tienen un sustituto más versátil, ahora

lo veremos, pero el uso sería:

WHILE <expresión>

<instrucciones si se cumple>

WEND

Es decir, MIENTRAS la expresión sea cierta, repite todo lo que haya hasta el

WEND.

Por supuesto podemos ponerlo todo en una sola línea:

10 A = 1 : While A <= 10 : Print A : A = A + 1 : Wend

Pero esto tampoco es recomendable, queda algo "difuso"...

El WEND funciona como IF A <=10 THEN GOTO xxx, con la ventaja que evitamos

Page 49: Usar el while

el GOTO y lo que hace es comprobar si la expresión que hay tras el WHILE es

cierta o no, en caso de que sea verdadero el resultado, (ya sabes, distinto de

CERO), se ejecutará todo lo que hay entre WHILE y WEND. Estas instrucciones

ya existían en el GWBASIC (el basic de los PCs)

Hay que tener cuidado con esto de que la expresiones evalúan el cero como

FALSO y cualquier otro valor como VERDADERO, por ejemplo:

A = 1 o

While A While 1

Print A Print A

A = A + 1 A = A + 1

Wend Wend

En ambos casos el bucle sería "infinito", realmente se detendría en un momento

dado, ya que llegaría a "desbordarse" el valor máximo y en ese momento el

programa acabaría por producirse un error... pero prueba esto y verás:

While 1

Print "Hola Mundo"

Wend

Esto nunca finalizará, salvo que pulses CRTL+BEAK (o INTERrumpir), para

detener el programa.

Más instrucciones para hacer bucles

Con el QuickBasic 3.0, (yo no llegué a tenerlo, pero creo que fue ahí dónde se

introdujo), entró en funcionamiento una nueva forma de hacer bucles:

DO... LOOP

El último ejemplo podríamos escribirlo así:

Page 50: Usar el while

Do

Print "Hola Mundo"

Loop

Pero la "gracia" de este tipo de bucle es que podemos usar dos nuevas cláusulas

para evaluar cuanto durará el bucle.

La primera es WHILE y funciona igual que en WHILE/WEND

A = 1

Do While A <= 10

Print A

A = A + 1

Loop

La ventaja es que WHILE se puede poner tanto después de DO como a

continuación de LOOP.

Si lo usamos como DO WHILE <expresión>... la forma de actuar es igual que

WHILE/WEND, es decir, se evalúa la expresión y sólo en caso de que sea cierta,

se ejecuta lo que está dentro del bucle, es decir entre DO y LOOP.

Pero si evaluamos la expresión en LOOP, se ejecutará todo lo que hay tras el DO,

como mínimo una vez y se seguirá repitiendo si se cumple la condición. De esta

forma, como he dicho, se ejecutará el contenido del bucle, como mínimo una vez.

Veamos un ejemplo:

A = 1

Do

Print A

A = A + 1

Page 51: Usar el while

Loop While A <= 10

El problema es que si A, en lugar de valer 1, tiene un valor superior a 10, también

se ejecutará, al menos, una vez.

A = 11 : Do : Print A: A = A + 1: Loop While A <= 10

Que mal queda en una sola línea, ¿verdad?

Pero con DO/LOOP también puede usarse UNTIL, en este caso, el bucle se

repetirá HASTA que se cumpla la expresión

A = 1

Do Until A > 10

Print A

A = A + 1

Loop

Fíjate que la expresión ha cambiado de <= (menor o igual) a > (mayor), ya que

ahora se evalúa de esta forma:

Hasta que A sea mayor que diez, REPITE todo hasta LOOP.

Por supuesto también podemos usarlo después del LOOP:

A = 1

Do

Print A

A = A + 1

Loop Until A > 10

Aquí hago la misma aclaración que antes, si el valor inicial de A es más de 10 se

ejecutará como mínimo una vez.

Realmente para contar de forma secuencial y prácticamente para casi todo tipo de

Page 52: Usar el while

bucle, no es necesario hacer los bucles con DO/LOOP, ya que FOR/MEXT lo hace

bastante bien.

Sigamos con estos bucles, pero en lugar de contar de menor a mayor, vamos a

contar "pa trás", es decir de mayor a menor... quién sabe, lo mismo necesitas

hacer un programa que cuente al revés...

A = 10

Do While A >= 1

Print A

A = A - 1

Loop

Cuando se muestre el 1, A=A-1 se convertirá en A = 0 y la comparación A >= 1 no

se cumplirá, por tanto dejará de repetirse el bucle, pero esto también se puede

hacer con FOR/NEXT:

For A = 10 To 1

Print A

Next

El único inconveniente es que NO SE REPITE NI UNA VEZ... ¿Por qué?

Porque si no se le indica lo contrario, FOR/NEXT siempre cuenta de forma

ascendente y cuando ve que A debe ir de 10 hasta 1 y que eso no es

ascendente... pasa de ejecutar el bucle. Esto es una cosa a tener en cuenta, FOR

siempre evalúa los valores del bucle que tiene que hacer y si no está entre los

valores que debe, no se ejecuta ni una sola vez. En este caso debe empezar por

DIEZ y llegar hasta UNO, así que se da cuenta de que ya ha terminado... incluso

sin haber empezado... ¡que listo es el FOR!

Page 53: Usar el while

Para que el FOR cuente hacia atrás, necesitamos un nuevo peldaño (esto en

inglés quedaría "clavado"), en la escala evolutiva del FOR/NEXT (ahí queda eso!!!)

Ya sin coñas, se necesita la palabra STEP para indicarle que no queremos ir de

uno en uno de forma ascendente, en nuestro ejemplo lo usaríamos así:

For A = 10 To 1 Step -1

Print A

Next

De esta forma contará desde 10 hasta 1, restando uno en cada repetición.

Pero, ¿que hacer si queremos usar otros valores?

Simplemente ponerlo después de STEP, por ejemplo:

For A = 10 To 1 Step -1

For A = 1 To 10 Step 3, etc, etc.

Insisto, todo esto está muy bien, pero en la práctica usaremos otras cosas además

de contar de forma lineal, con incrementos o sin ellos... habrá veces que

queramos salir de un bucle.

Ya lo hemos visto, por ejemplo Exit Sub salía del procedimiento, ¿recuerdas el

Exit For?

Para salir de los bucles podremos Exit y a continuación For, Do, etc. Pero NO

podremos salir de un bucle WHILE/WEND.

Ya veremos ejemplos para estos casos y otros que surgirán más adelante.

Bien, creo que ya hemos dado demasiadas vueltas con tanto bucle, para terminar:

los ejercicios esos que tanto os gustan.

1.) Haz un programa que al pulsar en un botón (CommandButton) haga un bucle

entre dos valores que habrás introducido por medio de dos cajas de textos (una

para el inicio y otra para el final)

2.) Otro que tenga una tercera caja de textos y que el valor introducido en ella sea

el incremento.

Page 54: Usar el while

3.) Como tercer ejercicio, una vez terminado el bucle, que muestre en un Label las

veces que se ha repetido.

Por ejemplo, si hacemos un bucle del uno al diez de uno en uno, se repetirá diez

veces; pero si lo hacemos de dos en dos, se repetirá cinco veces...

Como pista, decirte que no tendrás que hacer ninguna comparación para obtener

el resultado, la solución es tan SIMPLE que seguramente la descartarás "porque

no puede ser tan fácil"

Por supuesto, me gustaría que los bucles los hicieras tanto con FOR/NEXT y

DO/LOOP. Ya puestos, podrías hacerlo con el WHILE/WEND e incluso con el

GOTO...

¡Feliz programación!

Y seguimos con la costumbre esta de pedirte tus comentarios sobre el curso.

Sobre todo necesito saber si realmente está claro y entendible... ya que si no no

valdrá para mucho el montón de horas que le dedico a cada una de las entregas...

si, aunque no te lo creas, le dedico más de 5 horas a cada entrega...

Si no pasa nada raro, seguramente en este mismo mes habrá una nueva entrega.

Nos vemos.

Guillermo