Page 56
Image_628_0
Ejercicios con RND. Ordenación del código.
__rendered_path__5
EJERCICIO CON RND Y RANDOMIZE
Vamos a generar un programa en Visual Basic donde utilizaremos el comando Rnd para generación de
números aleatorios. El ejercicio es el siguiente: crear el código de un programa en el que se declaran
tres variables tipo Single A, B y C cuyo valor se muestra en pantalla y debe estar comprendido entre
cero y 10, excluido el diez.
Solución (versionesVB menos recientes):
Solución (versiones VB más recientes):
Image_633_0Image_631_0
Rem Curso Visual Basic aprenderaprogramar.com
REM Curso Visual Basic aprenderaprogramar.com
Option Explicit
Option Explicit On
Dim A!, B!, C As Single
Public Class Form1
Dim A, B, C As Single
Private Sub Form_Load()
Randomize
Private
Sub
Form1_Load(
ByVal
sender
As
A = Rnd * 10
B = Rnd * 10
System.
Handles
Object
MyBase
,
ByVal
.Load
e
As
System.
EventArgs
)
C = Rnd * 10
MsgBox ("A vale " & A & " ;B vale " & B & " ; C vale
Randomize()
A = Rnd() * 10
" & C)
End Sub
B = Rnd() * 10
C = Rnd() * 10
MsgBox(
" ; C vale "
"A vale "
& C)
& A &
" ;B vale "
& B &
Image_632_0
End
End
Class
Sub
__rendered_path__57
Image_630_0
__rendered_path__73
EJERCICIO NÚMEROS ALEATORIOS
Crear el código de un programa que genera tres números enteros aleatorios A, B, C comprendidos entre
65 y 90, ambos inclusive, y los muestra en pantalla.
Solución (versionesVB menos recientes):
Solución (versiones VB más recientes):
Image_629_0
Rem Curso Visual Basic aprenderaprogramar.com
REM Curso Visual Basic aprenderaprogramar.com
Image_631_0
Option Explicit
Option Explicit On
Dim A%, B%, C As Integer
Public Class Form1
Dim A, B, C As Integer
Private Sub Form_Load()
Randomize
Private
Sub
Form1_Load(
ByVal
sender
As
A = Int(Rnd * 26) + 65
B = Int(Rnd * 26) + 65
System.
Handles
Object
MyBase
,
ByVal
.Load
e
As
System.
EventArgs
)
C = Int(Rnd * 26) + 65
MsgBox ("A vale " & A & " ;B vale " & B & " ; C vale
Randomize()
A = Int(Rnd() * 26) + 65
" & C)
End Sub
B = Int(Rnd() * 26) + 65
C = Int(Rnd() * 26) + 65
MsgBox(
" ; C vale "
"A vale "
& C)
& A &
" ;B vale "
& B &
Image_632_0
End
End
Class
Sub
__rendered_path__134
Image_630_0
__rendered_path__148
__rendered_path__1
© 2006-2029 aprenderaprogramar.com

Page 57
Image_628_0
Ejercicios con RND. Ordenación del código.
__rendered_path__5
Comentarios: Si quieres respetar la literalidad de la fórmula que expusimos en apartados anteriores del
curso puedes escribir con igual resultado lo siguiente:
A = Int((90 - 65 + 1) * Rnd + 65); B = Int((90 - 65 + 1) * Rnd + 65); C = Int((90 - 65 + 1) * Rnd + 65)
CONCATENACIÓN DE ÓRDENES Y ORDENACIÓN SIMBÓLICA DEL CÓDIGO
La escritura de órdenes con Visual Basic se realiza con los criterios que ya hemos visto: las instrucciones
pueden escribirse una debajo de otra en líneas independientes o bien en una misma línea separadas
por dos puntos. Así estos dos códigos resultan equivalentes:
Código V1 (versionesVB menos recientes):
Código V1 (versiones VB más recientes):
Image_659_0
Rem Curso Visual Basic aprenderaprogramar.com
REM Curso Visual Basic aprenderaprogramar.com
Image_658_0
Option Explicit
Option Explicit On
Dim A%, B%, C%, D%
Public Class Form1
Dim A, B, C, D%
Private Sub Form_Load()
A = 3: B = 2: C = A * B: D = C ^ 2
Private
Sub
Form1_Load(
ByVal
sender
As
MsgBox ("D vale " & D)
End Sub
System.
Handles
Object
MyBase
,
ByVal
.Load
e
As
System.
EventArgs
)
A = 3 : B = 2 : C = A * B : D = C ^ 2
MsgBox(
"D vale "
& D)
Image_632_0
End
End
Class
Sub
__rendered_path__52
Image_630_0
__rendered_path__64
Código V2 (versionesVB menos recientes):
Código V2 (versiones VB más recientes):
Image_657_0
Rem Curso Visual Basic aprenderaprogramar.com
REM Curso Visual Basic aprenderaprogramar.com
Image_656_0
Option Explicit
Option Explicit On
Dim A%, B%, C%, D%
Public Class Form1
Dim A, B, C, D%
Private Sub Form_Load()
A = 3
Private
Sub
Form1_Load(
ByVal
sender
As
B = 2
C = A * B
System.
Handles
Object
MyBase
,
ByVal
.Load
e
As
System.
EventArgs
)
D = C ^ 2
MsgBox ("D vale " & D)
A = 3
B = 2
End Sub
C = A * B
D = C ^ 2
Image_632_0
MsgBox(
End
Sub
"D vale "
& D)
__rendered_path__114
End Class
Image_630_0
__rendered_path__128
La sangría al escribir código la estableceremos normalmente a través del tabulador, aunque para
algunas instrucciones puede ser el propio editor de Visual Basic quien establezca la sangría automática.
Si introducimos sangrías manualmente, el primer nivel de sangrado corresponderá a una primera
pulsación del tabulador, el segundo nivel a dos pulsaciones y así sucesivamente...
__rendered_path__1
© 2006-2029 aprenderaprogramar.com

Page 58
Image_628_0
Ejercicios con RND. Ordenación del código.
__rendered_path__5
A través del menú Opciones, Herramientas... (en algunas versiones hay que entrar además en Editor de
texto, Basic, Tabulaciones) Visual Basic nos da la posibilidad de configurar el sangrado que deseamos a
través de dos opciones:
1. Sangría automática: cuando incluyamos una tabulación en la primera línea de código todas las
__rendered_path__14
líneas siguientes comenzarán en esa posición de tabulación.
2. Ancho de tabulación (tamaño de tabulación): establece el ancho de la tabulación, ancho que puede
__rendered_path__19
oscilar entre 1 y 32 espacios, con un valor predeterminado de 4 espacios. Podemos establecer el
valor que mejor se adapte a nuestras necesidades o gustos estéticos.
Una posibilidad que puede resultar interesante es la de usar un símbolo de prolongación de línea
cuando tenemos una línea muy larga que no queremos separar a través de un símbolo de dos puntos.
Para ello usamos el símbolo de concatenación de línea, que es un guión bajo ( _ ). Dicho símbolo
indicará que el texto que aparece en dos líneas, a efectos de ejecución del programa será tratado como
si de una línea se tratara. Veamos el siguiente ejemplo:
Código (versionesVB menos recientes):
Código (versiones VB más recientes):
Image_664_0Image_663_0
Rem Curso Visual Basic aprenderaprogramar.com
REM Curso Visual Basic aprenderaprogramar.com
Option Explicit
Option Explicit On
Dim A%, B%, C%, D%
Public Class Form1
Dim A, B, C, D%
Private Sub Form_Load()
A = 3
Private
Sub
Form1_Load(
ByVal
sender
As
B = 2
C = A * B
System.
Handles
Object
MyBase
,
ByVal
.Load
e
As
System.
EventArgs
)
D = C ^ 2
MsgBox ("Los valores de las variables que intervienen en
A = 3
B = 2
el proceso, tal y como " _
& "han sido definidas en el manual del programa son " _
& " A =" & A & " B =" & B & " C =" & C & " D =" & D)
End Sub
C = A * B
D = C ^ 2
MsgBox(
que intervienen en el proceso, tal y como "
&
"han sido definidas en el manual
del programa son "
_
"Los valores de las variables
_
Image_632_0
&
C &
" D ="
" A ="
& D)
& A &
" B ="
& B &
" C ="
&
__rendered_path__69
End
End
Class
Sub
Image_630_0
Introducimos un símbolo de guión bajo cada vez que queramos continuar una línea. Hemos dividido
__rendered_path__87
una línea larga en tres renglones de longitud media. Los motivos para ello pueden ser varios, como
estimarlo mejor para la ejecución del programa, o simplemente evitar que en el visor del editor nos
quede la línea cortada y que podamos verla en toda su longitud. Prueba a escribir la línea dividiéndola
en cuatro a través del guión bajo o dejándola completa sin divisiones. ¿No te parece que "el efecto"
visual es muy distinto?
Próxima entrega: CU00317A
Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la dirección siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=37&Itemid=61
__rendered_path__1__rendered_path__65
© 2006-2029 aprenderaprogramar.com

Page 59
Image_675_0
Instrucción pedir con Visual Basic. Los TextBox
__rendered_path__4
INSTRUCCIÓN PEDIR CON VISUAL BASIC. LOS TEXTBOX.
La forma de pedir datos con Visual Basic resultará un tanto distinta a la que se utiliza cuando se trabaja
con pseudocódigo puro o lenguajes estructurados como C. Una petición de datos no necesitará ser
dispuesta en el código, sino que se obtendrá a través de un objeto prefabricado: un TextBox. Vamos a
aprender a utilizarlo.
Visualiza el formulario y vete en el cuadro de herramientas al botón correspondiente a TextBox,
representado por un símbolo ab|. Pulsando dos veces sobre él, o pulsando una vez y después
insertándolo en el formulario, tendrás un TextBox cuyo nombre por defecto será Text1, TextBox1 ó
similar. Agrándalo un poco y sin haber escrito código para el programa, da orden de ejecutar. El
resultado es que te aparece el formulario con el TextBox sobre él. Puede que te aparezca vacío o que
muestre un texto por defecto como Text1 dentro del TextBox. En la vista del diseño del formulario
podemos escribir el mensaje que queramos dentro del TextBox. Borra el contenido de texto en el
TextBox (si es que había alguno) y escribe por ejemplo "Realizada modificación del textbox" y pulsa
enter. Quizás no hayas podido agrandar el TextBox en sentido vertical, ahora veremos cómo se puede
hacer.
Image_676_0
Un TextBox es un control que principalmente utilizamos para que el usuario introduzca datos, pero
también puede mostrar una respuesta predeterminada o incluso servir para mostrar en vez de para
pedir datos.
Un TextBox tiene una serie de propiedades, como puedes ver pulsando sobre el Textbox y recorriendo
la lista que te aparece en la ventana Propiedades (si no tienes activada esta ventana, actívala). Prueba
por ejemplo a cambiar el color de fondo (Backcolor). El mensaje inicial que aparecerá sobre el TextBox
cuando comience el programa también es una propiedad: la propiedad Text. Prueba a cambiar esta
propiedad (puedes tanto escribir un texto como dejar vacío el TextBox). Comprobarás que si escribes un
contenido y pulsas enter, cuando ejecutas dicho texto aparece dentro del TextBox sobre el formulario.
Te bastará con establecer Text vacío para que no haya ningún mensaje inicial cuando ejecutes el
programa.
Muchas propiedades pueden establecerse en tiempo de diseño (cuando diseñamos el formulario) o en
tiempo de ejecución (contenidos del código que se realizan cuando ejecutamos el programa). Escribe
como texto para el TextBox en el diseño del formulario el texto "Text1". Escribe el siguiente código:
__rendered_path__1
© 2006-2029 aprenderaprogramar.com

Page 60
Image_675_0
Instrucción pedir con Visual Basic. Los TextBox
__rendered_path__4
Código (versionesVB menos recientes):
Código (versiones VB más recientes):
Image_689_0
Rem Curso Visual Basic aprenderaprogramar.com
REM Curso Visual Basic aprenderaprogramar.com
Image_687_0
Option Explicit
Option Explicit On
Public Class Form1
Private Sub Form_Load()
Private Sub Form1_Load(ByVal sender As
Text1.Text = ""
Text1.BackColor = vbGreen
System.
Handles
Object
MyBase
,
ByVal
.Load
e
As
System.
EventArgs
)
End Sub
TextBox1.Text =
TextBox1.BackColor =
""
Color
.Green
End
End
Class
Sub
Image_688_0
__rendered_path__84
Image_686_0
El resultado es que el TextBox se muestra vacío y con color de fondo verde. El mostrarse vacío se debe a
__rendered_path__94
que hemos indicado que cuando se cargue el formulario la propiedad Text del control (un elemento
como un TextBox se denomina “control”) se establezca a cadena vacía (""). En versiones menos
recientes de Visual Basic incluso se permitía escribir simplemente Text1 = "", ya que se consideraba que
si no se especificaba propiedad era para referirnos a la propiedad Text. En las versiones más recientes
es obligatorio indicar siempre la propiedad a modificar.
Hemos cambiado la propiedad de color indicándole que cambie a vbGreen ó Color.Green. VbGreen ó
Color.Green se corresponden con constantes predefinidas por Visual Basic que tenemos disponibles
para ser usadas cuando estemos escribiendo código.
__rendered_path__38
Visual Basic define constantes para simplificar la programación. Puedes consultar “Constantes
__rendered_path__39
de Visual Basic" para conocer todas las constantes definidas, que se agrupan en constantes de
__rendered_path__33__rendered_path__38
color, Calendar, del compilador, de fecha, Dir, GetAttr y SetAttr, IMEStatus, Instr, StrComp, de código de
__rendered_path__40
teclas, MsgBox , QueryClose, Shell, StrConv, de color del sistema, VarType y otras.
__rendered_path__40
Sólo citaremos algunas constantes que juzgamos interesantes. Una de ellas es vbCrLf, una constante
__rendered_path__41__rendered_path__74__rendered_path__75__rendered_path__76__rendered_path__77
que supone una indicación de salto de línea y retorno de carro. Cuando se introduce esta constante,
__rendered_path__45
equivale a una pulsación de enter. Su equivalente usando código ASCII es Chr(13) + Chr(10). Es decir,
__rendered_path__45
podemos escribir tanto una cosa como otra, resultando equivalentes. El interés de las constantes es que
__rendered_path__46
suelen resultar más sencillas de usar que su escritura con otro tipo de código. Prueba estos códigos y
__rendered_path__48
comprobarás que hacen lo mismo:
__rendered_path__48
a) Caso 1
__rendered_path__49
MsgBox ("22 salones" & vbCrLf & "4321 camarotes")
__rendered_path__52
__rendered_path__52
b) Caso 2
__rendered_path__46
MsgBox ("22 salones" & Chr(13) & Chr(10) & "4321 camarotes")
__rendered_path__48
__rendered_path__48
__rendered_path__1__rendered_path__46__rendered_path__48__rendered_path__48__rendered_path__46__rendered_path__48__rendered_path__48__rendered_path__46__rendered_path__48__rendered_path__48__rendered_path__46__rendered_path__48__rendered_path__48__rendered_path__49__rendered_path__52__rendered_path__52__rendered_path__46__rendered_path__48__rendered_path__48__rendered_path__62__rendered_path__65__rendered_path__65__rendered_path__46__rendered_path__48__rendered_path__48__rendered_path__46__rendered_path__48__rendered_path__48__rendered_path__49__rendered_path__52__rendered_path__52__rendered_path__70__rendered_path__38__rendered_path__39__rendered_path__38__rendered_path__72__rendered_path__72__rendered_path__78__rendered_path__79__rendered_path__80__rendered_path__81
© 2006-2029 aprenderaprogramar.com

Page 61
Image_675_0
Instrucción pedir con Visual Basic. Los TextBox
__rendered_path__4
En la ventana Propiedades puedes modificar la denominación del control (Text1 ó TextBox1) por otra
denominación. Supón que en ese cuadro de texto se espera que el usuario introduzca una altura.
Podemos establecer la propiedad Name como Textaltura. Así, podríamos escribir por ejemplo
Textaltura.BackColor = vbGreen ó Textaltura.BackColor = Color.Green. También podríamos llamar al
TextBox simplemente altura y escribir altura.BackColor = … , aunque este tipo de denominaciones son
poco recomendables porque son menos claras. Conviene siempre respetar al menos un texto inicial que
nos permita saber que esa denominación corresponde a un TextBox, ya que en caso contrario puede
ser muy difícil de leer un programa. Por ejemplo, si vamos a pedir 4 datos que son nombre de edificio,
longitud, anchura y altura podemos nombrar los TextBox como TextNomEdificio, TextLongitud,
TextAnchura y TextAltura. Un mismo prefijo nos identifica todos los controles que son del tipo TextBox.
Las normas para nombrar objetos deben seguir razonamientos similares a lo que hemos descrito para
variables, tendentes a ser lo más claros y explicativos posibles.
Para terminar esta visión rápida de lo que son los TextBox, citaremos algunas propiedades que nos
parecen interesantes:
TextAlign ó Alignment: permite que el texto se alinee a la izquierda, a la derecha, o que aparezca
centrado.
BorderStyle ó Appearance: cambia la apariencia que puede ser tridimensional o plana.
Enabled: si está establecido a True permite que se pueda escribir sobre el TextBox. Si está
establecida a False, impide que el usuario pueda modificar el contenido del TextBox.
Maxlenght: limita el número máximo de caracteres que puede admitir un TextBox. Si escribimos el
valor 0, esto indica la ausencia de un máximo distinto del que imponga la memoria del sistema del
usuario (lo cual será un valor muy grande, prácticamente equivalente a decir “se admite cualquier
longitud de texto). Un valor mayor que 0 indica el número máximo de caracteres. Por ejemplo si
establecemos el valor en 5, el usuario podrá escribir “perro” porque tiene 5 letras, pero no podrá
escribir “serpiente” por tener más de 5 letras, sólo podría escribir << serpi >>
Multiline: establecido a False supone que el TextBox consta de una línea única. Establecido a True
permite que el TextBox conste de múltiples líneas. En algunas versiones es necesario establecer
Multiline como true si queremos agrandar verticalmente el formulario.
Scrollbars: permite añadir barras de desplazamiento verticales, horizontales o ambas al TextBox.
Visible: determina si el TextBox resultará visible para el usuario o no.
Trata de modificar los valores de estas propiedades y observa los resultados. Haz lo mismo actuando en
el código en vez de en el diseño del formulario. Podrás comprobar que existen muchas más
propiedades además de las que hemos citado. Prueba a modificar algunas de ellas para comprender
qué es lo que controlan.
Próxima entrega: CU00318A
Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la dirección siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=37&Itemid=61
__rendered_path__1__rendered_path__93
© 2006-2029 aprenderaprogramar.com

Page 62
Image_724_0
La función Val con Visual Basic
__rendered_path__3
LA FUNCIÓN VAL
En Visual Basic una petición de datos al usuario no necesitará ser dispuesta en el código, sino que se
obtendrá a través de un objeto prefabricado: un TextBox. Con frecuencia el dato que queremos obtener
será un valor numérico, mientras que sin embargo el contenido de los TextBox es tipo texto. Por ello
deberemos realizar una conversión. La función Val nos permite obtener el contenido de un TextBox en
formato numérico (Integer, Single, Double, etc.).
El contenido que introduce un usuario a través de un TextBox tiene carácter de texto. Para convertir un
número en formato texto a una variable numérica se usa la función Val. La sintaxis a emplear es:
__rendered_path__24__rendered_path__25
Variable = Val(Cadena)
__rendered_path__21__rendered_path__26__rendered_path__27
Ejemplo:
__rendered_path__22__rendered_path__24
Dim A As Single
__rendered_path__28
A = Val(TextBox1.Text)
__rendered_path__25
Supone que la variable A, que ha sido definida como tipo Single, adopta el contenido numérico del
__rendered_path__28
TextBox denominado TextBox1.
__rendered_path__27
La función Val deja de leer la cadena en el primer carácter que no puede reconocer como parte de un
Image_726_0
número. Los espacios en blanco, los tabuladores y los avances de línea se eliminan.
Image_725_0
Val(" 38205 (Distrito Norte)") devuelve 38205 como valor numérico. Los espacios en blanco se
__rendered_path__80
eliminan, y el resto de cadena a partir de donde no se puede reconocer un valor numérico se ignora. Si
la cadena empieza con un contenido no numérico Val devuelve cero. Por ejemplo Val (" (Distrito
Norte) 38205 " devuelve cero.
La función Val sólo reconoce el punto (.) como separador decimal válido (aunque esto puede verse
afectado por la configuración regional de tu ordenador). Cuando se usa un separador decimal
diferente, debe realizarse un tratamiento previo de la cadena o utilizarse una función de conversión de
tipos como CSng ó CDbl para convertir la cadena a un número.
__rendered_path__56
Otra forma muy relevante de pedir datos con Visual Basic consiste en el uso de ventanas
__rendered_path__57
de petición de datos (Inputbox ). Cuando se invoca la función Inputbox , se despliega una
__rendered_path__52__rendered_path__56
ventana independiente con un mensaje definido de solicitud de datos al usuario, que dispone de un
__rendered_path__58
Tex tbox asociado para responder y de botones para aceptar o cancelar. La sintax is es del tipo n =
__rendered_path__58
Val(InputBox ("Introduzca un número", "Introducción de número")), donde n es una variable que toma el
__rendered_path__59__rendered_path__84__rendered_path__85__rendered_path__86
valor que haya introducido el usuario. Valiéndote de la ayuda, prueba a crear distintos Inputbox .
__rendered_path__62__rendered_path__87
__rendered_path__62
A modo de ejemplo simple para ver el resultado de estas funciones, crea un proyecto y sitúa un TextBox
__rendered_path__59
sobre el formulario. Escribe el pequeño código que indicamos a continuación y comprueba sus
__rendered_path__62
resultados.
__rendered_path__62
__rendered_path__1__rendered_path__59__rendered_path__62__rendered_path__62__rendered_path__59__rendered_path__62__rendered_path__62__rendered_path__68__rendered_path__56__rendered_path__57__rendered_path__56__rendered_path__70__rendered_path__70__rendered_path__88__rendered_path__89__rendered_path__90__rendered_path__91
© 2006-2029 aprenderaprogramar.com

Page 63
Image_724_0
La función Val con Visual Basic
__rendered_path__3
Código (versionesVB menos recientes):
Código (versiones VB más recientes):
Image_749_0
Rem Curso Visual Basic aprenderaprogramar.com
REM Curso Visual Basic aprenderaprogramar.com
Image_747_0
Option Explicit
Public Class Form1
Dim A As Single
Dim A As Single
Private Sub Form_Load()
A = Val(Text1.Text)
e
Private
As
System.
Sub
Form1_Load(
EventArgs
)
ByVal
Handles
sender
MyBase
As
.Load
System.
Object
,
ByVal
MsgBox ("A vale " & A)
A = Val(InputBox("Introduzca un número",
A = Val(TextBox1.Text)
MsgBox(
"A vale "
& A)
"Introducción de número"))
MsgBox ("A vale " & A)
A = Val(InputBox(
número"
))
"Introduzca un número"
,
"Introducción de
End Sub
MsgBox("A vale " & A)
End Sub
Image_748_0
End Class
__rendered_path__35
Image_725_0
La función Val convierte a cualquier formato numérico, por tanto puede servir para introducir
__rendered_path__50
contenido en variables de tipo Integer, Long, Single, Double, etc.
Próxima entrega: CU00319A
Acceso al curso completo en aprenderaprogramar.com -- > Cursos, o en la dirección siguiente:
http://www.aprenderaprogramar.com/index.php?option=com_content&view=category&id=37&Itemid=61
__rendered_path__1__rendered_path__31
© 2006-2029 aprenderaprogramar.com