Usar el while
-
Upload
martin-orosio-carreon -
Category
Technology
-
view
7.474 -
download
0
Transcript of Usar el while
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
Buscar MSD
Documentación de Visual Studio
Visual Basic
Referencia (Visual Basic)
Referencia de Visual Basic
Instrucciones
Instrucciones Q-Z
While...End While (Instrucción)
Contenido de la comunidad
Agregue ejemplos de código y sugerencias para mejorar este tema.
Más...
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
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
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
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")
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
Mapa de la web
Lengua
o Francés
o Alemán
o Inglès
o Español
o Italiano
o Portugués
RSS
o Actualidades
o FAQ
o Programas
o Programas - Actualizaciones
Conexión
IdentificaciónUsuario Contraseña ( ¿olvidado? )
High-Tech
Salud
Inicio
Foro
Trucos
Descargar
Conexión
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
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
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
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.
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
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
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
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
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
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
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
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
....
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 -
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.
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
....
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
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
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
Denunciar
Andrea Guadalupe15 jun 2010, 02:47
el comillado son las comas para hacer enfasis a la lectura
Respuesta
+0
Denunciar
mar21 may 2010, 05:28
son ciclos que te sirven como si, no o sino
Respuesta
-2
Denunciar
Master42631Puestosviernes, 4 de abril de 2008Fecha de inscripción18 sep 2008,
20:32
Hola
aca te mando una pagina con una explicacion
http://www.monografias.com/trabajos17/manual-visual/manual-visual.shtml
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
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
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 -
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
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...]>
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"
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
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:
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
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í:
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
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
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!
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.
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 -
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
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...]>
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"
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
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:
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
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í:
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
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
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!
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.
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