Anda di halaman 1dari 76

Operadores de comparacin

(Visual Basic)
Visual Studio 2013

Personas que lo han encontrado til: 3 de 4 - Valorar este tema


A continuacin se recogen los operadores de comparacin definidos en Visual Basic .NET.
< (Operador)
<= (Operador)
> (Operador)
>= (Operador)
= (Operador)
<> (Operador)
Is (Operador, Visual Basic)
IsNot (Operador) (Visual Basic)
Like (operador, Visual Basic)
Estos operadores comparan dos expresiones para determinar si son iguales, y si no lo son, para
determinar cules son sus diferencias. Is , IsNot y Like se explican detalladamente en distintas
pginas de la Ayuda. Los operadores de comparacin relacionales se explican detalladamente en
esta pgina.
result = expression1 comparisonoperator expression2
result = object1 [Is | IsNot] object2
result = string Like pattern

Elementos
result

Obligatorio. Un valor Boolean que representa el resultado de la comparacin.


expression
Obligatorio. Cualquier expresin.
comparisonoperator
Obligatorio. Cualquier operador de comparacin relacional.
object1, object2
string
pattern

Obligatorio. Cualquier nombre de objeto de referencia.


Obligatorio. Cualquier expresin de tipo String.
Obligatorio. Cualquier intervalo de caracteres o expresin String.

Comentarios

La siguiente tabla contiene una lista con los operadores de comparacin relacionales y las
condiciones que determinan si result es True o False.

operador

True si

False si

< (Menor que)

expression1 < expression2

expression1 >= expression2

<= (Menor o igual que)

expression1 <= expression2

expression1 > expression2

> (Mayor que)

expression1 > expression2

expression1 <= expression2

>= (Mayor o igual que)

expression1 >= expression2

expression1 < expression2

= (Igual a)

expression1 = expression2

expression1 <> expression2

<> (Distinto de)

expression1 <> expression2

expression1 = expression2

Nota

= (Operador, Visual Basic) tambin se utiliza como un operador de asignacin.


El operador Is, el operador IsNot y el operador Like tienen funcionalidades de comparacin
especficas que difieren de los operadores de la tabla anterior.

Comparar nmeros

Cuando una expresin de tipo Single se compara con otra de tipo Double, la expresin Single se
convierte aDouble. Este comportamiento es contrario al que se daba en Visual Basic 6.
De igual forma, cuando una expresin de tipo Decimal se compara con otra de
tipo Single o Double, la expresinDecimal se convierte a Single o Double. En las
expresiones Decimal, cualquier valor fraccionario menor que 1E-28podra perderse. Esta prdida de
valor fraccionario puede provocar que dos valores se consideren equivalentes sin serlo. Por esta
razn, debern extremarse las precauciones cuando se utilice el signo de igualdad (=) para
comparar dos variables de punto flotante. Es ms seguro comprobar si el valor absoluto de la
diferencia entre dos nmeros es inferior al mnimo aceptable.

Imprecisin de punto flotante

Cuando trabaje con nmeros de punto flotante, tenga presente que no siempre tienen una
representacin precisa en memoria. Esto podra producir que ciertas operaciones arrojaran
resultados inesperados, como una comparacin de valores y el operador Mod (Operador, Visual
Basic). Para obtener ms informacin, vea Solucionar problemas de tipos de datos (Visual Basic).

Comparar cadenas

Cuando se comparan cadenas, las expresiones de cadena se evalan en funcin del criterio de
ordenacin alfabtica, que depende del valor de Option Compare.
Option Compare Binary efecta comparaciones de cadenas en funcin de un criterio de
ordenacin que se deriva de las representaciones binarias internas de los caracteres. El criterio de

ordenacin viene determinado por la pgina de cdigos. En el ejemplo siguiente se muestra un


criterio de ordenacin binario tpico.
A < B < E < Z < a < b < e < z < < < < < <
Option Compare Text efecta comparaciones de cadenas en funcin de un criterio de ordenacin
textual que no distingue entre maysculas y minsculas y que viene determinado por la
configuracin regional del sistema. Al establecer Option Compare Text y ordenar los caracteres en
el ejemplo anterior, se aplica el criterio de ordenacin de texto siguiente:
(A=a) < (= ) < (B=b) < (E=e) < (= ) < ( = ) < (Z=z)

Dependencia de la configuracin regional

Cuando establece Option Compare Text, el resultado de una comparacin de cadenas puede
depender de la configuracin regional en la que se ejecuta la aplicacin. Dos caracteres podran
compararse como iguales en una configuracin local, pero no en otra. Si est utilizando una
comparacin de cadenas para tomar decisiones importantes, por ejemplo aceptar un intento de
inicio de sesin, debera estar atento a la sensibilidad de la configuracin regional. Considere la
posibilidad de definir Option Compare Binary o llamar a StrComp, que tiene en cuenta la
configuracin regional.

Programacin sin tipos con operadores de comparacin relacionales

No se permite utilizar operadores de comparacin relacionales con expresiones Object bajo Option
Strict On.Cuando Option Strict es Off, y expression1 o expression2 es una expresin Object, los
tipos en tiempo de ejecucin determinan cmo se comparan. En la siguiente tabla se muestra cmo
se comparan las expresiones y el resultado que devuelve tal comparacin en funcin del tiempo de
ejecucin de los operandos:

Si los operandos son...

La comparacin es...

Ambos String

Ordenar la comparacin segn las caractersticas de ordenacin


de las cadenas.

Ambos numricos

Objetos convertidos a Double, comparacin numrica.

Uno numrico y el
otro String

String se convertir en Double y se realizar una comparacin


numrica. SiString no puede convertirse a Double, se producir
una excepcinInvalidCastException.

Uno o ambos pertenecen a


tipos de referencia
distintos deString

Se produce una excepcin InvalidCastException.

Las comparaciones numricas tratan Nothing como 0. Las comparaciones de cadenas


tratan Nothing como "" (una cadena vaca).

Sobrecarga

Los operadores de comparacin relacionales (<, <= , >, >=, =, <>) se pueden sobrecargar, lo que
significa que una clase o una estructura pueden definir de nuevo su comportamiento cuando un
operando tiene el tipo de dicha clase o estructura. Si el cdigo utiliza alguno de estos operadores
en una clase o estructura de este tipo, asegrese de conocer su comportamiento redefinido. Para
obtener ms informacin, vea Procedimientos de operador (Visual Basic).

Observe que = (Operador, Visual Basic) slo se puede sobrecargar como operador de comparacin
relacional, y no como operador de asignacin.

Ejemplo

En este ejemplo se muestran varios usos distintos de los operadores de comparacin, que se
utilizan para comparar expresiones. Los operadores de comparacin relacionales devuelven un
resultado de tipo Boolean para indicar si la expresin se evala o no como True. Cuando los
operadores > y < se apliquen a cadenas, la comparacin se llevar a cabo utilizando el orden
alfabtico normal de las cadenas. Este orden puede depender de la configuracin regional. Que el
orden discrimine o no entre maysculas y minsculas depender de la configuracin de Option
Compare .
VB

Dim testResult As Boolean


testResult = 45 < 35
testResult = 45 = 45
testResult = 4 <> 3
testResult = "5" > "4444"

En el ejemplo anterior, la primera comparacin devuelve False y las comparaciones restantes


devuelven True.

hallar la suma de los 20 primeros numeros pares Visual


Basic - VB
Problema
Hacer un programa que permita hallar la suma de los 20 primeros numeros
view plainprint?

1. Public Class Form1


2.
Private Sub Button1_Click(ByVal sender As System.Object,
3.
ByVal e As System.EventArgs) Handles Button1.Click
4.
Dim sum As Integer = 0
5.
Dim cad As String = ""
6.
For i As Integer = 2 To 40 Step 2
7.
cad = cad + Trim(i) + " "
8.
sum = sum + i
9.
Next i
10.
TextBox1.Text = cad
11.
TextBox2.Text = Trim(sum / 20)
12.
End Sub
13. End Class

Descargar Proyecto Visual Basic


Publicado por George Tacuri en 7:18 0 comentarios Enlaces a esta entrada
Etiquetas: algoritmo, codigo fuente, ejercicios resueltos, programacion estructurada,Visual
Basic

martes, 26 de febrero de 2013

Determinar la suma de 2 nmeros Codigo en Visual


Basic - VB
Problema
Determinar un algoritmo que permita determinar la suma de 2 nmeros

Solucin

Entrada: 19 , 9

Salida: 28

Codigo Fuente en Visual Basic


view plainprint?

1. Public Class Form1


2.
Private Sub Button1_Click(ByVal sender As System.Object,
3.
ByVal e As System.EventArgs) Handles Button1.Click
4.
Dim a, b, suma As Double
5.
a = TextBox1.Text
6.
b = TextBox2.Text
7.
suma = a + b
8.
TextBox3.Text = Trim(suma)
9.
End Sub
10. End Class

Descargar Proyecto Visual Basic


Publicado por George Tacuri en 7:23 1 comentarios Enlaces a esta entrada
Etiquetas: algoritmo, codigo fuente, ejercicios resueltos, programacion estructurada,Visual
Basic

sbado, 23 de febrero de 2013

Convertir a nmeros ordinales entre 1 y 999 Codigo en


Visual Basic - VB
Problema
Determinar un algoritmo que permita convertir un nmero arbigo comprendido entre 1 y 999
a nmeros ordinales

Solucin

Entrada: 697

Salida: sexcentesimo nonagesimo septimo

view plainprint?

1. Public Class Form1


2.
Private Sub Button1_Click(ByVal sender As System.Object,
3.
ByVal e As System.EventArgs) Handles Button1.Click
4.
Dim N, u, d, c As Integer
5.
Dim Unidad() As String = {"", "primero", "segundo", "tercero",
6.
"cuarto", "quinto", "sexto", "septimo", "octavo", "noveno"}
7.
Dim Decena() As String = {"", "decimo", "vigesimo", "trigesimo",
8.
"cuadragesimo","quincuagesimo", "sexagesimo", "septuagesimo",
9.
"octogesimo", "nonagesimo"}
10.
Dim Centena() As String = {"", "centesimo", "ducentesimo",
11.
"tricentesimo"," cuadringentesimo", " quingentesimo",
12.
" sexcentesimo", " septingentesimo",
13.
" octingentesimo", " noningentesimo"}
14.
N = TextBox1.Text
15.
u = N Mod 10
16.
d = Math.Floor(N / 10) Mod 10
17.
c = Math.Floor(N / 100)
18.
If (N >= 100) Then
19.
TextBox2.Text = Centena(c) + " " + Decena(d) + " " + Unidad(u)

20.
Else
21.
If (N >= 10) Then
22.
TextBox2.Text = Decena(d) + " " + Unidad(u)
23.
Else
24.
TextBox2.Text = Unidad(N)
25.
End If
26.
End If
27.
End Sub
28. End Class

Descargar Proyecto Visual Basic


Publicado por George Tacuri en 6:59 0 comentarios Enlaces a esta entrada
Etiquetas: algoritmo, codigo fuente, ejercicios resueltos, programacion estructurada,Visual
Basic

jueves, 14 de febrero de 2013

calcular el perimetro de un rectangulo Codigo en Visual


Basic - VB
Pregunta
Realizar un diagrama de flujo en el programa FreeDFD que permita al usuario calcular
el permetro de un rectngulo El usuario debe ingresar el largo y el ancho del rectngulo.

Codigo Fuente en Visual Basic


view plainprint?

1. Public Class Form1


2.
Private Sub Button1_Click(ByVal sender As System.Object,
3.
ByVal e As System.EventArgs) Handles Button1.Click
4.
Dim ancho, largo, perimetro As Double
5.
largo = TextBox1.Text
6.
ancho = TextBox2.Text
7.
perimetro = 2 * (ancho + largo)
8.
TextBox3.Text = Trim(perimetro)
9.
End Sub
10. End Class

Descargar Proyecto Visual Basic


Publicado por George Tacuri en 22:59 0 comentarios Enlaces a esta entrada
Etiquetas: algoritmo, codigo fuente, ejercicios resueltos, programacion estructurada,Visual
Basic

sbado, 9 de febrero de 2013

Calcular el descuento y sueldo neto de un trabajador


dado su sueldo Codigo en Visual Basic - VB
Problema
A un trabajador le descuentan de su sueldo el 10%, si su sueldo es menor o igual a 1000, si es
por encima de 1000 y hasta 2000 el 5% del adicional (es decir del monto que sobrepasa de
1000), y por encima de 2000 el 3% del adicional (es decir del moto que sobrepasa de 2000).
Calcular el descuento y sueldo neto que recibe el trabajador dado su sueldo.

Codigo Fuente en Visual Basic


view plainprint?

1. Public Class Form1


2.
Private Sub Button1_Click(ByVal sender As System.Object,
3.
ByVal e As System.EventArgs) Handles Button1.Click
4.
Dim s, d, monto As Double
5.
s = TextBox1.Text
6.
If (s > 2000) Then
7.
d = 100 + (s - 1000) * 0.03
8.
monto = s - d
9.
Else
10.
If (s > 1000 And s <= 2000) Then
11.
d = 100 + (s - 1000) * 0.05
12.
monto = s - d
13.
Else
14.
d = s * 0.1
15.
monto = s - d
16.
End If
17.
End If
18.
TextBox2.Text = "El sueldo percibido es " +
19.
Trim(monto) + " y su descuento fue " + Trim(d)
20.
End Sub
21. End Class

Descargar Proyecto Visual Basic


Publicado por George Tacuri en 9:09 0 comentarios Enlaces a esta entrada
Etiquetas: algoritmo, codigo fuente, ejercicios resueltos, programacion estructurada,Visual
Basic

Calcular-porcentaje-aporte-tres-socios-Visual-Basic-VB
Problema
Juan, Raquel y Daniel aportan cantidades de dinero para formar un capital. Juan y Raquel
aportan en dlares y Daniel en soles. Disee un programa que determine el capital total en
dlares y que porcentaje de dicho capital aporta cada uno. Considere que: 1 dlar = 3.25
soles.
Codigo Fuente en Visual Basic
view plainprint?

1. Public Class Form1


2.
Private Sub Button1_Click(ByVal sender As System.Object,
3.
ByVal e As System.EventArgs) Handles Button1.Click
4.
Dim ju, ra, da, dol, total, porcra, porcda, porcju As Double
5.
ju = TextBox1.Text
6.
ra = TextBox2.Text
7.
da = TextBox3.Text
8.
dol = da / 3.25
9.
total = ju + ra + dol
10.
porcra = ra / total * 100
11.
porcda = dol / total * 100
12.
porcju = ju / total * 100
13.
TextBox4.Text = "El capital total es " + Trim(total) & vbCrLf &
14. "El porcentaje de aporte de juan es " + Trim(porcju) & vbCrLf &
15. " El porcentaje de aporte de raquel es " + Trim(porcra) & vbCrLf &
16. "El porcentaje de aporte de daniel es " + Trim(porcda)
17.
End Sub
18. End Class

Descargar Proyecto Visual Basic


Publicado por George Tacuri en 8:49 0 comentarios Enlaces a esta entrada
Etiquetas: algoritmo, codigo fuente, ejercicios resueltos, programacion estructurada,Visual
Basic

viernes, 8 de febrero de 2013

Calcular la secuencia de asteriscos en forma de


tringulo Codigo en Visual Basic - VB
Problema
Disear un algoritmo que muestre la siguiente serie
*
**
***
****
*****

Codigo Fuente en Visual Basic


view plainprint?

1. Public Class Form1


2.
Private Sub Button1_Click(ByVal sender As System.Object,
3.
ByVal e As System.EventArgs) Handles Button1.Click
4.
Dim cad As String = ""
5.
Dim n As Integer
6.
n = TextBox1.Text
7.
For y As Integer = 1 To n
8.
For w As Integer = 1 To y
9.
cad = cad + "*"
10.
Next w
11.
cad = cad & vbCrLf
12.
Next y
13.
TextBox2.Text = cad
14.
End Sub
15. End Class

Descargar Proyecto Visual Basic

Publicado por George Tacuri en 22:48 1 comentarios Enlaces a esta entrada


Etiquetas: algoritmo, codigo fuente, ejercicios resueltos, programacion estructurada,Visual
Basic

Calcular la serie 1223334444 Codigo en Visual Basic VB


Problema
Disear un algoritmo que muestre la siguiente serie 122333...NNNN.

Codigo Fuente en Visual Basic


view plainprint?

1. Public Class Form1


2.
Private Sub Button1_Click(ByVal sender As System.Object,
3.
ByVal e As System.EventArgs) Handles Button1.Click
4.
Dim cad = ""
5.
Dim n As Integer
6.
n = TextBox1.Text
7.
For y As Integer = 1 To n
8.
For w As Integer = 1 To y
9.
cad = cad + Trim(y)
10.
Next w
11.
Next y
12.
TextBox2.Text = cad
13.
End Sub
14. End Class

Descargar Proyecto Visual Basic


Publicado por George Tacuri en 22:24 1 comentarios Enlaces a esta entrada
Etiquetas: algoritmo, codigo fuente, ejercicios resueltos, programacion estructurada,Visual
Basic

jueves, 7 de febrero de 2013

Calcular el cubo de un numero Codigo en Visual Basic VB


Problema

Disear un algoritmo que escriba el cubo de los nmeros del 1 al 20.

Disear un algoritmo que escriba el cubo de los nmeros naturales tales que el cubo
tenga como mximo cuatro cifras.

Disear un algoritmo que escriba el cubo de los nmeros naturales tales que el cubo
tenga exactamente cuatro cifras

Codigo Fuente en Visual Basic


view plainprint?

1. Public Class Form1


2.
Dim cad As String = ""
3.
Private Sub Button1_Click(ByVal sender As System.Object,
4.
ByVal e As System.EventArgs) Handles Button1.Click
5.
cad = ""
6.
For q As Integer = 1 To 20
7.
cad = cad + " " + Trim(Math.Pow(q, 3))
8.
Next q
9.
TextBox1.Text = cad
10.
End Sub
11.
Private Sub Button2_Click(ByVal sender As System.Object,
12.
ByVal e As System.EventArgs) Handles Button2.Click
13.
cad = ""
14.
Dim c As Integer = 1
15.
Dim u As Integer = 1
16.
While (c < 10000)
17.
cad = cad + " " + Trim(c)
18.
u = u + 1
19.
c = Math.Pow(u, 3)
20.
End While
21.
TextBox1.Text = cad
22.
End Sub
23.
Private Sub Button3_Click(ByVal sender As System.Object,
24.
ByVal e As System.EventArgs) Handles Button3.Click
25.
cad = ""
26.
Dim c As Integer = 1
27.
Dim u As Integer = 1
28.
While (c < 10000)
29.
If (c >= 1000) Then
30.
cad = cad + " " + Trim(c)
31.
End If
32.
c = Math.Pow(u, 3)
33.
u = u + 1
34.
End While
35.
TextBox1.Text = cad
36.
End Sub
37. End Class

Descargar Proyecto Visual Basic


Publicado por George Tacuri en 22:35 0 comentarios Enlaces a esta entrada
Etiquetas: algoritmo, codigo fuente, ejercicios resueltos, programacion estructurada,Visual
Basic

Calcular el precio de un boleto de tren Codigo en Visual


Basic - VB
Problema
Disear un algoritmo que determine el precio de un billete ida y vuelta en ferrocarril,dando la
distancia a recorrer y el nmero de das en destino, sabiendo que si la estancia es superior a
7 das y la distancia es superior a 800 km. El billete tiene una reduccin del 30%. El precio por
kilmetro es de 8.5 soles.
Codigo Fuente en Visual Basic
view plainprint?

1. Public Class Form


2.
Private Sub Button1_Click(ByVal sender As System.Object,
3.
ByVal e As System.EventArgs) Handles Button1.Click
4.
Dim lon, dia As Integer
5.
Dim costo As Double
6.
lon = TextBox1.Text
7.
dia = TextBox2.Text
8.
If (dia > 7 And lon > 800) Then
9.
costo = lon * 8.5 - lon * 8.5 * 0.3
10.
Else
11.
costo = lon * 8.5
12.
End If
13.
TextBox3.Text = Trim((2 * costo))
14.
End Sub
15. End Class

Descargar Proyecto Visual Basic


Publicado por George Tacuri en 7:12 0 comentarios Enlaces a esta entrada
Etiquetas: algoritmo, codigo fuente, ejercicios resueltos, programacion estructurada,Visual
Basic

Calcular el cuadrado de los elementos pares de un


arreglo Codigo en Visual Basic
Problema
Disear un algoritmo que registre 30 nmeros en un array de una dimensin y que muestre el
cuadrado de los nmeros registrados en las posiciones pares.

Codigo Fuente en Visual Basic


view plainprint?

1. Public Class Form1


2.
Dim cont As Integer = 0
3.
Dim A(29) As Integer
4.
Private Sub Button1_Click(ByVal sender As System.Object,
5.
ByVal e As System.EventArgs) Handles Button1.Click
6.
Dim n As Integer
7.
Dim cad As String = ""
8.
If (cont < 30) Then
9.
n = TextBox1.Text
10.
A(cont) = n
11.
Label4.Text = "Elemento " + Trim(cont + 1)
12.
Else
13.
Button1.Text = "Calcular"
14.
For q As Integer = 0 To 29
15.
If (q Mod 2 <> 0) Then
16.
cad = cad + " " + Trim(Math.Pow(A(q), 2))
17.
End If
18.
Next q
19.
TextBox2.Text = cad
20.
End If
21.
cont = cont + 1
22.
End Sub
23. End Class

Descargar Proyecto Visual Basic


Publicado por George Tacuri en 6:44 0 comentarios Enlaces a esta entrada
Etiquetas: algoritmo, codigo fuente, ejercicios resueltos, programacion estructurada,Visual
Basic

lunes, 4 de febrero de 2013

Calcular el cociente y el residuo sin dividir Codigo en


Visual Basic - VB
Problema
Disear un algoritmo que permita, dado a, b determinar el valor de la divisin entera y el resto
de la divisin entera de a, b (sin usar los operadores de div. Ni de Mod).

Solucin

Entrada: 17 3

Salida: cociente 5 residuo 2

Codigo Fuente en Visual Basic


view plainprint?

1. Public Class Form1


2.
Private Sub Button1_Click(ByVal sender As System.Object,
3.
ByVal e As System.EventArgs) Handles Button1.Click
4.
Dim p As Integer = 1
5.
Dim q As Integer = 0
6.
Dim Dividendo, Divisor As Integer
7.
Dividendo = TextBox1.Text
8.
Divisor = TextBox2.Text
9.
If (Dividendo >= Divisor) Then
10.
While ((Dividendo - Divisor) >= q)
11.
q = Divisor * p
12.
p = p + 1
13.
End While
14.
TextBox3.Text = "El cociente es " + Trim(p - 1) +
15.
" y el residuo es " + Trim((Dividendo - q))
16.
Else
17.
TextBox3.Text = "El denominador debe ser menor"
18.
End If
19.
End Sub
20. End Class

Descargar Proyecto Visual Basic


Publicado por George Tacuri en 23:39 0 comentarios Enlaces a esta entrada

Etiquetas: algoritmo, codigo fuente, ejercicios resueltos, programacion estructurada,Visual


Basic

Calcular los cinco primeros nmeros impares mltiplos


de tres Codigo en Visual Basic - VB
Problema
Disear un algoritmo que permita mostrar los cincos primeros nmeros impares que son
mltiplos de tres.

Codigo Fuente en Visual Basic


view plainprint?

1. Public Class Form1


2.
Private Sub Button1_Click(ByVal sender As System.Object,
3.
ByVal e As System.EventArgs) Handles Button1.Click
4.
Dim cad As String = ""
5.
For i As Integer = 1 To 30
6.
If (i Mod 2 <> 0 And i Mod 3 = 0) Then
7.
cad = cad + " " + Trim(i)
8.
End If
9.
Next i
10.
TextBox1.Text = cad
11.
End Sub
12. End Class

Descargar Proyecto Visual Basic


Publicado por George Tacuri en 22:44 0 comentarios Enlaces a esta entrada
Etiquetas: algoritmo, codigo fuente, ejercicios resueltos, programacion estructurada,Visual
Basic

Convertir una fecha en letras Codigo en Visual Basic VB


Problema
Disear un algoritmo que permita determinar Ingresar el da, mes y ao en el formato
numrico (2-11-2001), para luego mostrarlo el formato carcter (2 de Noviembre del 2001).

Codigo Fuente en Visual Basic


view plainprint?

1. Public Class Form1


2.
Private Sub Button1_Click(ByVal sender As System.Object,
3.
ByVal e As System.EventArgs) Handles Button1.Click
4.
Dim Mes() As String = {"Enero", "Febrero", "Marzo", "Abril", "Mayo", "Juni
o", "Julio", "Agosto", "Septiembre", "Octubre", "Noviembre", "Diciembre"}
5.
Dim d, m, a As Integer
6.
d = TextBox1.Text
7.
m = TextBox2.Text
8.
a = TextBox3.Text
9.
TextBox4.Text = Trim(d) + " de " + Mes(m - 1) + " del " + Trim(a)
10.
End Sub
11. End Class

Descargar Proyecto Visual Basic


Publicado por George Tacuri en 22:22 1 comentarios Enlaces a esta entrada
Etiquetas: algoritmo, codigo fuente, ejercicios resueltos, programacion estructurada,Visual
Basic

viernes, 1 de febrero de 2013

Determinar si un ao es bisiesto Codigo en Visual Basic


- VB
Problema
Disear un algoritmo que permita determinar si un ao es bisiesto. Un ao es bisiesto si es
mltiplo de 4 (por ejemplo 1984). Los aos mltiplos de 100 no son bisiestos, salvo si ellos son
tambin mltiplos de 400 (2000 es bisiesto, pero; 1800 no lo es).

Solucin

Entrada: 1988

Salida: es ao bisiesto

Codigo Fuente en Visual Basic


view plainprint?

1. Public Class Form1


2.
Private Sub Button1_Click(ByVal sender As System.Object,
3.
ByVal e As System.EventArgs) Handles Button1.Click
4.
Dim a As Integer
5.
a = TextBox1.Text
6.
If (a Mod 4 = 0 And a Mod 100 <> 0 Or a Mod 400 = 0) Then
7.
TextBox2.Text = "el ao " + Trim(a) + " Si es bisiesto"
8.
Else
9.
TextBox2.Text = "el ao " + Trim(a) + " No es bisiesto"
10.
End If
11.
End Sub
12. End Class

Descargar Proyecto Visual Basic


Publicado por George Tacuri en 23:21 0 comentarios Enlaces a esta entrada
Etiquetas: algoritmo, codigo fuente, ejercicios resueltos, programacion estructurada,Visual
Basic

Determinar los das que tiene cada mes Codigo en


Visual Basic - VB
Problema
Disear un algoritmo que permita ingresar el nmero del mes y determinar cuntos das tiene
el mes, para el caso de Febrero, el algoritmo deber indicar que no cuenta con la informacin
necesaria para dar la respuesta.

Solucin

Entrada: 12

Salida: tiene 31 das

Codigo Fuente en Visual Basic


view plainprint?

1. Public Class Form1


2.
Private Sub Button1_Click(ByVal sender As System.Object,
3.
ByVal e As System.EventArgs) Handles Button1.Click
4.
Dim m As Integer
5.
m = TextBox1.Text
6.
If (m >= 3 And m <= 12 Or m = 1) Then
7.
If (m <= 7) Then
8.
If (m Mod 2 = 0) Then
9.
TextBox2.Text = "el mes " + Trim(m) + " tiene
10.
Else
11.
TextBox2.Text = "el mes " + Trim(m) + " tiene
12.
End If
13.
Else
14.
If (m Mod 2 = 0) Then
15.
TextBox2.Text = "el mes " + Trim(m) + " tiene
16.
Else
17.
TextBox2.Text = "el mes " + Trim(m) + " tiene
18.
End If
19.
End If
20.
Else
21.
TextBox2.Text = "No hay informacion necesaria"
22.
End If
23.
End Sub
24. End Class

30 dias"
31 dias"

31 dias"
30 dias"

Descargar Proyecto Visual Basic


Publicado por George Tacuri en 23:00 1 comentarios Enlaces a esta entrada
Etiquetas: algoritmo, codigo fuente, ejercicios resueltos, programacion estructurada,Visual
Basic

jueves, 31 de enero de 2013

Calcular la hora un segundo despus Codigo en Visual


Basic - VB
Problema
Disear un algoritmo que permita ingresar la hora, minutos y segundos y que me calcule la
hora en el siguiente segundo ("0=< H =<23", "0=< M =<59" "0=< S=<59").

Solucin

Entrada: 8 : 1:59

Salida: 8h:2m:0s

Codigo Fuente en Visual Basic


view plainprint?

1. Public Class Form1


2.
Private Sub Button1_Click(ByVal sender As System.Object,
3.
ByVal e As System.EventArgs) Handles Button1.Click
4.
Dim h, m, s As Integer
5.
h = TextBox1.Text
6.
m = TextBox2.Text
7.
s = TextBox3.Text
8.
If (h < 24 And m < 60 And s < 60) Then
9.
If (s < 59 And s >= 0) Then
10.
TextBox4.Text = Trim(h) + "h " + Trim(m) +
11.
"m " + Trim(s + 1) + "s"
12.
Else
13.
If (s = 59) Then
14.
If (m = 59) Then
15.
If (h = 23) Then
16.
TextBox4.Text = "00h 00m 00s"
17.
Else
18.
TextBox4.Text = Trim(h + 1) +
19.
"h " + "00m 00s"
20.
End If
21.
Else
22.
TextBox4.Text = Trim(h) + "h " +
23.
Trim(m + 1) + "m 00s"
24.
End If
25.
End If
26.
End If
27.
Else
28.
TextBox4.Text = "Fuera de rango"
29.
End If
30.
End Sub
31. End Class

Descargar Proyecto Visual Basic


Publicado por George Tacuri en 22:13 0 comentarios Enlaces a esta entrada
Etiquetas: algoritmo, codigo fuente, ejercicios resueltos, programacion estructurada,Visual
Basic

Convertir horas minutos y segundos en segundos


Codigo en Visual Basic - VB
Problema
Disear un algoritmo que permita ingresar la hora, minutos y segundos y que me indique
cuantos segundos son.
Solucin

Entrada: 1 : 1:40

Salida: 3700

Codigo Fuente en Visual Basic


view plainprint?

1. Public Class Form1


2.
Private Sub Button1_Click(ByVal sender As System.Object,
3.
ByVal e As System.EventArgs) Handles Button1.Click
4.
Dim h, m, s, hh, mm, t As Integer
5.
h = TextBox1.Text
6.
m = TextBox2.Text
7.
s = TextBox3.Text
8.
hh = h * 3600
9.
mm = m * 60
10.
t = hh + mm + s
11.
TextBox4.Text = Trim(t)
12.
End Sub
13. End Class

Descargar Proyecto Visual Basic


Publicado por George Tacuri en 21:59 0 comentarios Enlaces a esta entrada
Etiquetas: algoritmo, codigo fuente, ejercicios resueltos, programacion estructurada,Visual
Basic

Calcular el rea del tringulo Codigo en Visual Basic VB


Problema
Disear un algoritmo que permita calcular el rea del tringulo ingresando su base y su

altura.

Solucin

Entrada: 5,4

Salida: 10

Codigo Fuente en Visual Basic


view plainprint?

1. Public Class Form1


2.
Private Sub Button1_Click(ByVal sender As System.Object,
3.
ByVal e As System.EventArgs) Handles Button1.Click
4.
Dim b, h As Double
5.
Dim area As Double
6.
b = TextBox1.Text
7.
h = TextBox2.Text
8.
area = b * h / 2
9.
TextBox3.Text = Trim(area)
10.
End Sub
11. End Class

Descargar Proyecto Visual Basic


Publicado por George Tacuri en 21:38 6 comentarios Enlaces a esta entrada
Etiquetas: algoritmo, codigo fuente, ejercicios resueltos, programacion estructurada,Visual
Basic

Calcular sumatoria de la inversa de nmeros impares


Codigo en Visual Basic - VB
Problema
Disear un algoritmo que permita calcular la suma de los primeros 30 trminos de la siguiente
serie: 1-1/3+1/5-1/7...+1/9 , Siendo N un numero ingresado por el teclado.

Codigo Fuente en Visual Basic

view plainprint?

1. Public Class Form1


2.
Private Sub Button1_Click(ByVal sender As System.Object,
3.
ByVal e As System.EventArgs) Handles Button1.Click
4.
Dim cad As String = ""
5.
Dim Sum As Double = 0.0
6.
Dim n As Integer
7.
Dim div As Double = 0.0
8.
n = TextBox1.Text
9.
For i As Integer = 1 To n
10.
div = (1 / ((2 * i) - 1))
11.
If (i Mod 2 = 0) Then
12.
Sum = Sum - div
13.
Else
14.
Sum = Sum + div
15.
End If
16.
Next i
17.
TextBox2.Text = Trim(Sum)
18.
End Sub
19. End Class

Determinar el menor y el mayor de cuatro nmeros


Codigo Fuente en Visual Basic
Problema
Desarrolle un algoritmo que lea cuatro nmeros diferentes y a continuacin imprima el mayor
de los cuatro nmeros introducidos y tambin el menor de ellos.

Solucin

Entrada: 5 8 1 9

Salida: menor 1 y mayor 9

Codigo Fuente en Visual Basic


view plainprint?

1. Public Class Form1


2.
Private Sub Button1_Click(ByVal sender As System.Object,
3.
ByVal e As System.EventArgs) Handles Button1.Click
4.
Dim A, B, C, D, X, Y As Integer
5.
A = TextBox1.Text
6.
B = TextBox2.Text
7.
C = TextBox3.Text

8.
D = TextBox4.Text
9.
If (A > B And A > C And A > D) Then
10.
X = A
11.
Else
12.
If (B > A And B > C And B > D) Then
13.
X = B
14.
Else
15.
If (C > A And C > B And C > D) Then
16.
X = C
17.
Else
18.
X = D
19.
End If
20.
End If
21.
End If
22.
If (A < B And A < C And A < D) Then
23.
Y = A
24.
Else
25.
If (B < A And B < C And B < D) Then
26.
Y = B
27.
Else
28.
If (C < A And C < B And C < D) Then
29.
Y = C
30.
Else
31.
Y = D
32.
End If
33.
End If
34.
End If
35.
TextBox5.Text = "el mayor es " + Trim(X) +
36.
" el menor es " + Trim(Y)
37.
End Sub
38. End Class

Descargar Proyecto Visual Basic


Publicado por George Tacuri en 18:24
Etiquetas: algoritmo, codigo fuente, ejercicios resueltos, programacion estructurada,Visual
Basic

2 comentarios:

Annimo dijo...
vacan si me salia pero no se por que ya no me sale
28 de enero de 2014, 19:55

Annimo dijo...
Desarrolle un programa en Visual Studio que permita introducir
el
nombre completo y
edad de 5 personas
.

Debe realizar lo siguiente:

Determinar cul es la persona


de mayor edad e imprimir su nombre.

Si coinciden
ms de una persona
en
tener
la
edad mayor
, imprimir todos los nombres
que
correspondan
.
11 de abril de 2014, 19:32

Publicar un comentario en la entrada.

Aprender a programar
http://aprenderaprogramar.com/index.php?option=com_content&view=category&id=37&Itemid=61

Ejercicios bsicos Visual Basic: extraer datos de archivos


de texto. For, If, Do While Loop, Labels (CU00331A)
Escrito por Mario R. Rancel

Resumen: Entrega n30 del curso Aprender a programar en Visual Basic desde cero.

Codificacin aprenderaprogramar.com: CU00331A

El objetivo de estos ejercicios es aplicar conocimientos sobre "Herramientas bsicas para la programacin" a
un lenguaje como es Visual Basic. Para su realizacin debemos tener conocimientos bsicos sobre algoritmia,
uso de bucles o estructuras iterativas y apertura y cierre de archivos. En algunos casos, propondremos la
solucin a un ejercicio con distintas estructuras de programacin.

EJERCICIO EJEMPLO N 1
En un fichero se encuentran las notas de 35 alumnos de una clase en un array Nota(1), Nota(2), Nota(3), ...,
Nota(35), establecidas entre cero y 10. Desarrollar el cdigo para un programa que determine:
El porcentaje de aprobados.

El porcentaje de suspensos.
El nmero de alumnos que han obtenido un 10.
El nmero de alumnos que han obtenido un 0.

Considerar que los datos se encuentran en el fichero notas.dat, cuyo contenido es el siguiente:6 7 8 5
6 4 7 8 7 10 0 5 6 7 6 5 0 7 8 10 2 3 4 5 6 7 6 5 4 10 4 3
2 3 4 (suponemos que cada dato est en una lnea, aqu los ponemos separados por guiones para no
ocupar 35 lneas).

SOLUCIN
El cdigo a plantear ser diferente segn la versin de Visual Basic que estemos utilizando:
a) Para versiones menos recientes de Visual Basic: usaremos la gestin de ficheros basada en las instrucciones
Open, Write, Freefile, Write#, Input#, etc.
b) Para las versiones ms recientes de Visual Basic usaremos la gestin de ficheros basada en StreamReader,
StreamWriter, Write, Read, WriteLine y ReadLine.

Nosotros vamos a exponer el cdigo necesario tanto para versiones menos recientes como para versiones ms
recientes de Visual Basic (aunque dependiendo de la versin de Visual Basic que ests utilizando es posible
que necesites hacer pequeas adaptaciones).
Comenzaremos creando un nuevo proyecto al que aadiremos un label para mostrar los resultados y un botn
que el usuario deber pulsar para comenzar a leer los datos desde el archivo y procesarlos.

Cdigo para versiones menos recientes de Visual Basic:

Rem Curso Visual Basic aprenderaprogramar.com


Option Explicit
Dim Canal As Integer
Dim i As Integer
Dim Nota(35) As Single
Dim Aprobados!, Suspensos As Single
Dim Dieces%, Ceros As Integer
Private Sub Form_Load()
Form1.Caption = "Notas"
CommandCalcular.Caption = "Leer archivo"
End Sub
Private Sub CommandCalcular_Click()
LabelResultados.Alignment = 2
LabelResultados.FontBold = True
'[Apertura del archivo]
Canal = FreeFile
Open "C:\notas.dat" For Input As Canal
For i = 1 To 35
'[Lectura de datos desde archivo]
Input #Canal, Nota(i)
If Nota(i) >= 5 Then
Aprobados = Aprobados + 1
Else
Suspensos = Suspensos + 1
End If
If Nota(i) = 10 Then
Dieces = Dieces + 1
End If
If Nota(i) = 0 Then
Ceros = Ceros + 1
End If
Next i
Close Canal '[Cerramos el archivo]
LabelResultados = vbCrLf & "% de aprobados es " & (Aprobados / 35) * 100 & vbCrLf
LabelResultados = LabelResultados & vbCrLf & "% de suspensos es " & (Suspensos / 35) *
100 _
& vbCrLf
LabelResultados = LabelResultados & vbCrLf & "Obtienen 10 un total de " & Dieces & _
" alumnos" & vbCrLf
LabelResultados = LabelResultados & vbCrLf & "Obtienen 0 un total de " & Ceros & "
alumnos"
End Sub

El resultado grfico es el que se muestra ms abajo.

Cdigo para versiones ms recientes de Visual Basic:

REM Curso Visual Basic aprenderaprogramar.com


Option Explicit On
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
Me.Text = "Notas"
Button1.Text = "Leer archivo"
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
Button1.Click
Dim contador As Integer
Dim Nota(35) As Single
Dim Aprobados, Suspensos As Single
Dim Dieces, Ceros As Integer
LabelResultados.Font = New Font("Arial", 10, FontStyle.Bold)
LabelResultados.TextAlign = ContentAlignment.MiddleCenter
'[Apertura del archivo, ojo: poner la ruta que sea correcta]
Dim myFileToRead As New System.IO.StreamReader("C:\Users\Toshiba\Desktop\notas.dat", False)
For contador = 1 To 35
'[Lectura de datos desde archivo]
Nota(contador) = myFileToRead.ReadLine()
If Nota(contador) >= 5 Then
Aprobados = Aprobados + 1
Else
Suspensos = Suspensos + 1
End If
If Nota(contador) = 10 Then
Dieces = Dieces + 1
End If
If Nota(contador) = 0 Then
Ceros = Ceros + 1
End If
Next contador
myFileToRead.Close()

LabelResultados.Text = vbCrLf & "% de aprobados es " & (Aprobados / 35) * 100 & vbCrLf
LabelResultados.Text = LabelResultados.Text & vbCrLf & "% de suspensos es " & (Suspensos / 35) * 100 &
vbCrLf
LabelResultados.Text = LabelResultados.Text & vbCrLf & "Obtienen 10 un total de " & Dieces &
" alumnos" & vbCrLf
LabelResultados.Text = LabelResultados.Text & vbCrLf & "Obtienen 0 un total de " & Ceros & " alumnos"
End Sub
End Class

El resultado grfico:

El bucle se puede plantear igualmente con un Do While. Este sera el cdigo:

Cdigo (versionesVB menos


recientes)

Cdigo (versiones VB ms recientes)

'[Curso VB aprenderaprogramar.com]

'[Curso VB aprenderaprogramar.com]
i=1
'[Apertura del archivo]
Canal = FreeFile
Open "C:\notas.dat" For Input As
Canal
Do While i <= 35
'[Lectura de datos desde archivo]
Input #Canal, Nota(i)
If Nota(i) >= 5 Then
Aprobados = Aprobados + 1
Else
Suspensos = Suspensos + 1
End If
If Nota(i) = 10 Then
Dieces = Dieces + 1
End If
If Nota(i) = 0 Then
Ceros = Ceros + 1
End If
i=i+1
Loop
Close Canal '[Cerramos el archivo]

contador = 1
'[Apertura del archivo, ojo: poner ruta que sea correcta]
Dim myFileToRead As New
System.IO.StreamReader("C:\Users\Toshiba\Desktop\notas.dat", False)
Do While contador <= 35
'[Lectura de datos desde archivo]
Nota(contador) = myFileToRead.ReadLine()
If Nota(contador) >= 5 Then
Aprobados = Aprobados + 1
Else
Suspensos = Suspensos + 1
End If
If Nota(contador) = 10 Then
Dieces = Dieces + 1
End If
If Nota(contador) = 0 Then
Ceros = Ceros + 1
End If
contador = contador + 1
Loop
myFileToRead.Close()

EJERCICIO EJEMPLO N 2
En un fichero tenemos las notas de 35 alumnos de una clase en un array Nota(1), Nota(2), ..., Nota(35),
establecidas entre cero y 10. Se desea desarrollar un programa que determine la nota media.
Considerar que los datos se encuentran en el fichero notas.dat, cuyo contenido es el siguiente:6 7 8 5
6 4 7 8 7 10 0 5 6 7 6 5 0 7 8 10 2 3 4 5 6 7 6 5 4 10 4 3
2 3 4 (suponemos que cada dato est en una lnea, aqu los ponemos separados por guiones para no
ocupar 35 lneas).

SOLUCIN
Comenzaremos creando un nuevo proyecto al que aadiremos un label para mostrar los resultados y un botn
que el usuario deber pulsar para comenzar a leer los datos desde el archivo y procesarlos.

Cdigo (versionesVB menos


recientes)

Curso VB aprenderaprogramar.com
Option Explicit
Dim Canal%, i As Integer
Dim Nota(35) As Single
Dim Sumatorio!, Media As Single
Private Sub Form_Load()
Form1.Caption = "Media"
CommandCalcular.Caption = "Leer
archivo"
End Sub
Private Sub
CommandCalcular_Click()
LabelResultados.Alignment = 2
LabelResultados.FontBold = True
'[Apertura del archivo]
Canal = FreeFile
Open "C:\notas.dat" For Input As
Canal
For i = 1 To 35
'[Lectura de datos desde archivo]
Input #Canal, Nota(i)
Sumatorio = Sumatorio + Nota(i)
Next i
Close Canal '[Cerramos el archivo]
Media = Sumatorio / 35
LabelResultados = vbCrLf & "La nota

Cdigo (versiones VB ms recientes)

REM Curso Visual Basic aprenderaprogramar.com


Option Explicit On
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Me.Text = "Media"
Button1.Text = "Leer archivo"
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles Button1.Click
Dim contador As Integer
Dim Nota(35) As Single
Dim Sumatorio, Media As Single
LabelResultados.Font = New Font("Arial", 10, FontStyle.Bold)
LabelResultados.TextAlign = ContentAlignment.MiddleCenter
'[Apertura del archivo, ojo: poner ruta correcta]
Dim myFileToRead As New
System.IO.StreamReader("C:\Users\Toshiba\Desktop\notas.dat", False)
For contador = 1 To 35
'[Lectura de datos desde archivo]
Nota(contador) = myFileToRead.ReadLine()
Sumatorio = Sumatorio + Nota(contador)
Next contador
myFileToRead.Close()
Media = Sumatorio / 35
LabelResultados.Text = vbCrLf & "La nota media de la clase es " & Media
End Sub

media de la clase es " & Media


End Sub

End Class

Grficamente:

Bucles (ciclos) Visual Basic: For Next Step, Do While


Loop, Until. Ejemplos y ejercicios resueltos (CU00326A)
Escrito por Mario R. Rancel

Resumen: Entrega n25 del curso Aprender a programar en Visual Basic desde cero.

Codificacin aprenderaprogramar.com: CU00326A

ESTRUCTURAS DE REPETICIN (BUCLES) CON VISUAL BASIC


Vamos a ver cmo materializar con Visual Basic estructuras de repeticin que permitirn que en nuestros
programas se realice un proceso n veces. En concreto veremos las instrucciones Desde Siguiente (For

Next) con su clusula Paso (Step), la instruccin Mientras Hacer (Do While Loop) y la instruccin Hacer
Repetir Mientras (Do Loop While).

Muchas veces podremos optar indistintamente por usar una instruccin u otra. En otros casos, es
recomendable decantarse por una de ellas por hacer el programa ms legible o sencillo que usando otras
opciones.

INSTRUCCIN DESDE ... SIGUIENTE (FOR ... NEXT) Y CLUSULA PASO (STEP)
La sintaxis a emplear con Visual Basic es la siguiente:

For VAR = Vi To Vf
Instruccin 1
Instruccin 2

Instruccin n
Next VAR

El incremento que sufre el contador es, por defecto, unitario. Es decir, el primer valor que toma VAR en el
bucle ser Vi, el segundo Vi + 1, el tercero (Vi + 1) + 1, etc. La modificacin de dicho valor de incremento la
realizaremos a travs de la clusula Step despus del valor Vf. Step 2 implicar que en cada repeticin del
bucle el contador se incremente en dos unidades, Step 5 implicar que en cada repeticin del bucle el
contador se incremente en cinco unidades. Un paso negativo del tipo Step -1 supone que el contador decrece
en vez de incrementarse. Si el paso es negativo, Vi necesariamente habr de ser mayor que Vf, ya que en
caso contrario no se producir la entrada en el bucle.
Con este cdigo se nos muestra en pantalla 3 veces hola (se ha invertido el sentido del bucle):

Cdigo (versionesVB menos recientes)

Rem Curso Visual Basic


aprenderaprogramar.com
Option Explicit
Dim VAR As Integer
Dim Vi As Integer
Dim Vf As Integer
Private Sub Form_Load()
Vi = 1
Vf = 3
For VAR = Vf To Vi Step 1
'[Tambin supondra tres repeticiones
For VAR = Vi to Vf]
MsgBox ("hola")
Next VAR
End Sub

Cdigo (versiones VB ms recientes)

REM Curso Visual Basic aprenderaprogramar.com


Option Explicit On
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles MyBase.Load
Dim VAR As Integer
Dim Vi As Integer
Dim Vf As Integer
Vi = 1
Vf = 3
For VAR = Vf To Vi Step -1
'[Tambin supondra tres repeticiones For VAR = Vi to Vf]
MsgBox("hola")
Next VAR
End Sub
End Class

Con Visual Basic resulta admisible usar Next sin indicar la variable que est sirviendo de gua del bucle, pues
todo bucle ha de tener un cierre. Sin embargo, no lo creemos recomendable pues puede dificultar la lectura y
depuracin de los programas.
La instruccin For ... Next es anidable dentro de s misma o dentro de otros tipos de bucles o estructuras,
debiendo seguir las pautas que ya hemos comentado.

EJERCICIO
Transformar en cdigo el siguiente planteamiento: queremos generar un programa que pida un nmero del 1
al 10 y nos muestre la tabla de multiplicar correspondiente.

Ficheros con Visual Basic. Leer (acceso) y guardar datos.


Registros, campos. Operar con archivos (CU00327A)
Escrito por Mario R. Rancel

Resumen: Entrega n26 del curso Aprender a programar en Visual Basic desde cero.

Codificacin aprenderaprogramar.com: CU00327A

INSTRUCCIN LEER E INSTRUCCIN GUARDAR. INTRODUCCIN A ARCHIVOS CON VISUAL


BASIC.

Advertencia: una manipulacin incorrecta de ficheros


puede dar lugar a la prdida de datos, al

malfuncionamiento de programas o a fallos del sistema


operativo del ordenador. Es necesario disponer de
copias de seguridad de toda informacin que se
considere importante.

Guardar datos a un disco o recuperar los datos previamente guardados son procesos fundamentales en
cualquier lenguaje informtico. La importancia del almacenamiento de contenidos es obvia: envo de
informacin a otros usuarios, posponer el trabajo varios das o semanas sin tener que introducir manualmente
los datos de nuevo, acceso a informacin almacenada en sistemas remotos, etc. Incluso para desarrollos de
software de relativamente corta longitud resulta relevante la gestin de datos, por ahorrar una cantidad de
tiempo considerable.
Ficheros y bases de datos constituyen un cuerpo de conocimiento de cierta complejidad y extensin. Por
motivos de espacio no vamos a hacer ms que una breve introduccin a ellos.
Podemos pensar en los ficheros o archivos de forma anloga a lo que sera un archivo fsico: un lugar donde
hay informacin almacenada. Ahora bien, eso no nos dice cmo se encuentra esa informacin: si est
ordenada (alfabticamente, de mayor a menor, en impresos con campos predefinidos), si son datos de un tipo
o de varios tipos (numricos, tipo texto, mezcla de tipos de datos...), si se leen usando alguna clave de
interpretacin (una partitura no se lee igual que un texto), etc. Todo esto es relevante y por ello normalmente
sabremos qu tipo de datos contiene el fichero y cmo estn ordenados antes de acceder a l. No es lo mismo
guardar "3246" como nmero tipo Integer que como cadena de caracteres. Un tipo Integer ocupa 2 bytes y
tiene una "clave" para su lectura, mientras que como caracteres cada cifra ocupa un byte y se lee como si de
texto se tratara.

Un asunto a considerar es si la informacin est contenida en campos de longitud predefinida. Consideremos


un archivo donde se almacenan los nombres, nmeros de DNI y ao de nacimiento de 3 personas. Podemos
considerar diferentes casos:

a) Existen campos de longitud predefinida, que pueden carecer de informacin por no estar disponible.

En el fichero fsico la informacin la guardamos en hojas preimpresas donde cada apartado tiene una longitud
disponible para escribir en l. En el fichero informtico la informacin la guardamos en registros (un registro
equivale a una hoja del fichero fsico), constando cada registro de 3 campos (campo "Nombre", campo "DNI" y
campo "Ao de nacimiento"). Los campos seran por ejemplo:
Nombre: tipo texto 25 caracteres de longitud.
DNI: tipo entero largo (Long).
Ao de nacimiento: tipo entero (Integer).

Cada registro ocupa 25 + 4 +2 = 29 bytes. Si tenemos tres registros el fichero ocupa 29 * 3 = 87 bytes,
independientemente de que los datos realmente existan o no, ya que el espacio se encuentra disponible para
albergar un dato.

b) La informacin no est en campos de longitud predefinida.

Pedro Gonzlez Aparicio. 1966.


Alfredo Prez Prez. 79555444.
1975.
Ramn Gonzlez Prez.
79666444. 1981.

En el fichero fsico la informacin la guardamos en hojas donde escribimos los datos disponibles para cada
persona. En el fichero informtico la informacin la guardamos en lneas (cada lnea equivale a la informacin
disponible de una persona) sabiendo que cada lnea puede tener informacin de uno o varios aspectos
(nombre, DNI y edad) y una longitud variable.
No sabemos cuntos bytes nos ocupa cada lnea ni cuntos bytes nos ocupa el fichero. No sabemos en qu
posicin se encuentra una informacin dada porque no tenemos referencias de situacin. Ante ello, optamos
por hacer una lectura tipo "texto" en la que un nmero de 8 cifras nos va a requerir 8 bytes frente a los 4
bytes que supondran como tipo Long.

c) La informacin no est en campos de longitud predefinida pero se dispone de informacin referente a


su ubicacin.

Alfredo Prez Prez


79555444
1975

Pgina 1 lneas 1 a 3

Pedro Gonzlez Aparicio


1966

Pgina 2 lneas 1 a 2

Ramn Gonzlez Prez


79666444
1981

Pgina 3 lneas 1 a 3

En el fichero fsico la informacin la guardamos en hojas indexadas, donde cada dato dispone de un
localizador. Por ejemplo, en la pgina 3 lnea 3 encontramos el dato correspondiente al ao de nacimiento de
Ramn Gonzlez. En el fichero informtico la informacin la guardamos por bytes, sabiendo que cada tipo de
dato ocupa un nmero de bytes determinado. As si guardamos Importe: 3235, podramos hacerlo ocupando
11 bytes desglosados en 9 bytes (uno por carcter, incluidos los espacios) asociados a "Importe:" como tipo
texto + 2 bytes (para un tipo Integer) asociados al nmero 3235.
Tambin podramos guardarlo todo como tipo texto ocupando 13 bytes.
Una vez guardada la informacin, podramos recuperarla indicndole al ordenador: Extrae como tipo texto los
bytes comprendidos entre 1 y 9 y como nmero los bytes comprendidos entre 10 y 11.
Hemos tratado de introducir, a travs de la analoga con un fichero fsico, enfoques bsicos para la
comprensin y gestin de ficheros informticos. La problemtica, como se comprender, es muy amplia al
intervenir numerosos factores (directorios, unidades de disco, sobreescritura de archivos, borrado accidental
de datos, etc.) y posibilidades (datos ordenados, parcialmente ordenados o desordenados, diversidad de tipos
de datos, tramos de ficheros con registros y campos, etc.).
Nosotros estudiaremos simplificadamente cmo podemos gestionar ficheros con Visual Basic.

La ayuda y referencia de Visual Basic: herramienta en


programacin. Pensar como programadores (CU00306A)
Escrito por Mario R. Rancel

Resumen: Entrega n5 del curso Aprender a programar en Visual Basic desde cero.

Codificacin aprenderaprogramar.com: CU00306A

AYUDA Y REFERENCIA DEL LENGUAJE

Si ya has trabajado con algn otro lenguaje de programacin seguramente tendrs clara la importancia de la
documentacin de referencia de los lenguajes para los programadores. Pero si no es as, vamos a tratar de
dejarlo claro. En primer lugar, cabe decir que prcticamente nadie conoce a fondo todos los trminos y
posibilidades de un lenguaje.

Es como un idioma hablado: hay gente que lo chapurrea, gente que lo habla correctamente pero con escasez
de recursos, gente que lo habla bien y con abundancia de recursos y expertos a distinto nivel. Pero nadie lo
sabe absolutamente todo. Por tanto, cuando estamos programando y no sabemos hacer algo o tenemos
dudas tendremos que recurrir a ayudas externas como:
La ayuda del lenguaje disponible en el propio entorno de programacin.
La referencia del lenguaje disponible en internet.
Manuales del lenguaje y libros sobre el lenguaje publicados por los creadores del lenguaje o por otros
autores.
Cursos sobre programacin, apuntes, etc. disponibles a travs de universidades, webs, libros, etc.
Otros programas.
Otros programadores.

Elementos de uso habitual son la ayuda del lenguaje disponible en el propio entorno de programacin y la
referencia del lenguaje disponible en internet. Gracias a esto podemos acceder a encontrar informacin y

recomendaciones que han sido generadas por los propios creadores del lenguaje. Las principales ventajas de
la ayuda en el entorno y de la referencia en internet de un lenguaje son:
Rapidez: si estamos programando y surge una duda o necesidad podremos resolverla a travs de estas
herramientas sin necesidad de movernos o desplazar la atencin de lo que estamos haciendo.
Potencia: las ayudas y referencias suelen ser bastante completas y tiles, por lo que podemos estar
seguros de que van a resolver un alto porcentaje de los problemas que podamos tener con el lenguaje.

Como inconvenientes de las ayudas y referencias podemos citar:


Si no conocemos el trmino que describe aquello que buscamos quizs no podamos llegar a la
informacin deseada. Podemos buscar, pero no preguntar.
A veces la ayuda o referencia en espaol es una traduccin no demasiado acertada desde otro idioma, lo
que dificulta su comprensin. En algunos casos es recomendable remitirse a la informacin en ingls.

Cualquier programador que se precie conoce y usa las ayudas y referencias de los lenguajes. Son de especial
inters para programadores aprendices o autodidactas, y menos usadas por programadores avanzados o
expertos, pero todos las usamos.
Veamos ahora cmo acceder y sacar partido de la ayuda y referencia de Visual Basic.
En las versiones ms antiguas a travs de la barra de mens podremos acceder al men Ayuda, que nos
mostrar diferentes opciones.

Entrando en Temas de Ayuda podremos acceder a una completa informacin ordenada relativa al lenguaje.
Libros en pantalla... nos dar acceso a un manual de programacin con el que podremos aprender o consultar
alguna parte que nos resulte de inters. La opcin de soporte tcnico nos informa sobre vas para conseguir
parches, actualizaciones, y en general para cualquier asunto relacionado con el fabricante del software,
incluido el envo de informacin relativa a fallos detectados en el programa o recomendaciones sobre posibles
mejoras del mismo. En este caso hay un apartado especfico relacionado con esto mismo a travs de internet
(Microsoft en el Web). Por ltimo la opcin Acerca de nos permite obtener informacin relativa a la versin,
copyright y caractersticas del programa que estamos utilizando.
En las versiones ms modernas encontraremos contenidos similares pero podemos tener otras opciones
adicionales como Foros de MSDN (Microsoft Developer Network o red de desarrolladores Microsoft) desde
donde podemos acceder a foros donde podemos plantear preguntas relacionadas con el lenguaje o problemas
que nos surjan durante el desarrollo de programas. Adems al elegir Ver la ayuda nos dar opcin a usar la
ayuda de internet o usar la ayuda local almacenada en el propio equipo. Si vamos a trabajar con frecuencia
con la ayuda no es mala idea elegir Administrar configuracin de la ayuda, Instalar contenido desde internet y
elegir agregar Visual Basic en espaol. Si no se hace uso frecuente en general, usaremos la opcin de internet.

Tambin podemos acceder a la ayuda o referencia de Visual Basic a travs de la direccin web de Microsoft
http://msdn.microsoft.com/es-es/

BUSCAR AYUDA SOBRE UN TRMINO CONCRETO


Podemos acceder a informacin rpidamente sobre un tema determinado. En las versiones ms antiguas
cuando entremos a temas de ayuda nos aparecer una ventana con tres pestaas similar a esta:

La pestaa Contenido nos permite obtener informacin ordenada en forma de rbol, mientras que a travs de
ndice podemos encontrar informacin ordenada alfabticamente y a travs de Buscar podemos acceder a una
bsqueda de trminos o frases.
En las versiones ms modernas la forma ms cmoda de acceder es desde el men de Visual Studio, elegir
Ver la ayuda, con lo que se nos abrir una pgina web. Dentro de esta web elegiremos Documentacin
Visual Studio, Lenguajes de Visual Studio, Visual Basic y Visual C#. Desde aqu podemos acceder a tutoriales
de introduccin donde se muestran los conceptos bsicos, ejemplos de cdigo, foros, etc. Tambin podemos
escribir una palabra clave como Label en el buscador para obtener informacin sobre este elemento.
Ya hemos visto que un Label es un objeto prefabricado del que disponemos directamente en Visual Basic,
dentro de lo que se denominan "controles". Supongamos que queremos buscar informacin referida a qu es
un Label y sus propiedades. En las versiones ms antiguas haremos doble click sobre Referencia del lenguaje,
a continuacin doble click sobre Objetos, doble click sobre la letra "L" y doble click sobre Label (Control). En

las versiones ms modernas podemos buscar Label en el buscador de la pgina web de Microsoft.
Llegaremos a una ventana con informacin relativa al trmino que hemos seleccionado.

A travs de la ayuda de Visual Basic tenemos acceso a centenares de ventanas de este tipo. La
estructura habitual comprende:

Nombre del trmino y clasificacin del mismo: por ejemplo Label (Control) Asc (Funcin)
Autosize (Propiedad).

Definicin o descripcin breve del cometido: por ejemplo, "Un control Label es un control
grfico..."

Sintaxis: cmo hay que escribir cdigo relacionado con ese trmino. Cuando la sintaxis comprende
distintos trminos, se nos indica cules son y su descripcin. En este caso, con Label no hay distintos
trminos por lo cual no hay descripcin de partes.

Valores: nos informa de valores posibles de elementos de la sintaxis y sus consecuencias. Por
ejemplo, muchas propiedades se utilizan con dos valores posibles: True y False. A travs de la ayuda
podemos saber qu supone el que esa propiedad est establecida en uno u otro valor.

Comentarios y notas: informacin adicional relativa al trmino.

Dentro de la ventana tenemos, en la parte superior, links a distintas opciones como:

Vea tambin: nos permite acceder a trminos relacionados con el que estamos consultando.

Ejemplo: nos muestra un ejemplo de uso del trmino seleccionado en cdigo "real".

Propiedades: para un objeto, nos dice cules son las propiedades que tiene y nos permite acceder a
informacin sobre ellas.

Mtodos: para un objeto, nos dice cules son los mtodos que tiene y nos permite acceder a
informacin sobre ellos.

Eventos: para un objeto, nos informa de los eventos que acepta y nos permite acceder a
informacin sobre ellos.

Detalles: informacin adicional.

No te preocupes ahora por consultar la ayuda de Visual Basic o por llegar a ver exactamente las pantallas o
descripciones que hemos mostrado a modo de ejemplo. En este curso daremos las instrucciones necesarias
para que puedas avanzar sin necesidad de recurrir a ayuda suplementaria. No obstante, debes saber que un
programador cuando tiene un problema recurre a la ayuda del lenguaje, su referencia en internet, libros o
manuales publicados, etc. para resolverlos. Poco a poco debes ir aprendiendo a consultar y utilizar estos
recursos.

Ejemplos de uso de forms, labels, inputbox y msgbox en


Visual Basic. Ejercicios resueltos bsicos (CU00332A)
Escrito por Mario R. Rancel

Resumen: Entrega n31 del curso Aprender a programar en Visual Basic desde cero.

Codificacin aprenderaprogramar.com: CU00332A

El objetivo de estos ejercicios es aplicar conocimientos sobre "Herramientas bsicas para la programacin" a
un lenguaje como es Visual Basic. Para su realizacin debemos tener conocimientos bsicos sobre algoritmia,
uso de bucles o estructuras iterativas y apertura y cierre de archivos. En algunos casos, propondremos la
solucin a un ejercicio con distintas estructuras de programacin.

EJERCICIO EJEMPLO USO DE FORMS, LABELS, INPUTBOX, MSGBOX


Desarrollar el cdigo que d respuesta al siguiente problema:
Una central distribuye cal hacia diferentes almacenes sucursales. Disponen de un muelle de carga a donde van
llegando sacas de cal de entre 3000 y 9000 Kgs, con pesos variables en funcin de las circunstancias de la
produccin. La empresa dispone de una flota de camiones con capacidades de carga de entre 18000 y 28000
Kgs.
Se pretende establecer un protocolo consistente en cargar 20 camiones diarios. Cada camin se quiere cargar
como mximo a su lmite de capacidad debiendo partir si con la siguiente saca en la lnea de produccin se
fuera a exceder su capacidad.

La empresa quiere desarrollar un programa que le pida al operario encargado de carga la capacidad del
camin y el peso de las sacas, indicndole si debe cargar la saca o despachar el camin para comenzar a
cargar otro, y que emita un aviso cuando se complete la carga de 20 camiones.

SOLUCIN
Cdigo para versiones menos recientes de Visual Basic:

Rem Curso Visual Basic aprenderaprogramar.com


Option Explicit
Dim i%, j%
Dim Capacidad%, Pesosaca%, Cargado As Integer
Private Sub Form_Load()
Show
Form1.Caption = "Distribucin de cal"
For i = 1 To 20
Capacidad = InputBox("Introduzca la capacidad del camin n " & i & " en kgs",
"Dato capacidad")
Do While(Cargado + Pesosaca) <= Capacidad
If Pesosaca > 0 Then
MsgBox("Cargue la saca n " & j)
Cargado = Cargado + Pesosaca
End If
j=j+1
Pesosaca = InputBox("Introduzca el peso de la saca n " & j & " en kgs", "Dato
saca")
Loop
If i < 20 Then MsgBox("No cargue todava. Despache el camin n " & i & " y ponga"
&_
" a cargar el camin n " & i + 1)
Cargado = 0
Next i
Labelfinal.Alignment = 2
Labelfinal.FontBold = True
Labelfinal = "No cargue esta saca. Despache el camin " & i - 1 & vbCrLf &
"FINALIZADA" & _
" LA CARGA DEL DA"
End Sub

Antes de ejecutar el cdigo habremos incorporado al formulario en la vista de diseo un Label al que hemos
denominado Labelfinal. El resultado grfico se muestra ms abajo.

Cdigo para versiones ms recientes de Visual Basic:

REM Curso Visual Basic aprenderaprogramar.com


Option Explicit On
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
Dim i, j As Integer
Dim Capacidad, Pesosaca, Cargado As Integer
Me.Text = "Distribucin de cal"
For i = 1 To 20
Capacidad = InputBox("Introduzca la capacidad del camin n " & i & " en kgs", "Dato capacidad")
Do While (Cargado + Pesosaca) <= Capacidad
If Pesosaca > 0 Then
MsgBox("Cargue la saca n " & j)
Cargado = Cargado + Pesosaca
End If
j=j+1
Pesosaca = InputBox("Introduzca el peso de la saca n " & j & " en kgs", "Dato saca")
Loop
If i < 20 Then MsgBox("No cargue todava. Despache el camin n " & i & " y ponga" & _
" a cargar el camin n " & i + 1)
Cargado = 0
Next i
Labelfinal.Font = New Font("Arial", 10, FontStyle.Bold)
Labelfinal.TextAlign = ContentAlignment.MiddleCenter
Labelfinal.Text = "No cargue esta saca. Despache el camin " & i - 1 &vbCrLf& "FINALIZADA" & _
" LA CARGA DEL DA"
End Sub

End Class

Comentarios: el programa podra mejorarse creando restricciones para que no se puedan introducir pesos de
sacas

capacidad

de

El aspecto grfico es el siguiente:

carga

de

camiones

fuera

de

los

rangos

permitidos.

EJERCICIO EJEMPLO USO DO WHILE LOOP, LABELS, INPUTBOX


Desarrollar el cdigo que resuelva el siguiente problema: una ONG tiene puntos de reparto de vacunas que se
pretende funcionen de la siguiente manera. Cada da, empezar con 1000 vacunas disponibles y a travs de un
programa que controla las entregas avisar si el inventario baja de 200 unidades. El programa debe partir de
que existen 1000 vacunas e ir pidiendo al usuario las cantidades de vacunas entregadas hasta avisar cuando el
inventario baje de 200 unidades.

SOLUCIN
Cdigo para versiones menos recientes de Visual Basic:

Rem Curso Visual Basic aprenderaprogramar.com [Control de vacunas]


Option Explicit
Dim Existencias%, Entregadas%

Private Sub Form_Load()


Show
Form1.Caption = "Control de vacunas"
Existencias = 1000
Do While Existencias >= 200
Entregadas = InputBox("Introduzca el nmero de uds entregadas", "Dato
entrega")
Existencias = Existencias - Entregadas
Loop
Labelfinal.Alignment = 2
Labelfinal.FontBold = True
Labelfinal = vbCrLf & "El inventario ha bajado de 200 uds" & vbCrLf & "Debe
comunicarlo"
End Sub

Antes de ejecutar el cdigo habremos incorporado al formulario en la vista de diseo un Label al que hemos
denominado Labelfinal. El resultado grfico se muestra ms abajo.

Cdigo para versiones ms recientes de Visual Basic:

REM Curso Visual Basic aprenderaprogramar.com


Option Explicit On
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles
MyBase.Load
Dim Existencias, Entregadas As Integer
Me.Text = "Control de vacunas"
Existencias = 1000
Do While Existencias >= 200
Entregadas = InputBox("Introduzca el nmero de uds entregadas", "Dato entrega")
Existencias = Existencias - Entregadas
Loop
Labelfinal.Font = New Font("Arial", 10, FontStyle.Bold)
Labelfinal.TextAlign = ContentAlignment.MiddleCenter

Labelfinal.Text = vbCrLf & "El inventario ha bajado de 200 uds" & vbCrLf & "Debe comunicarlo"
End Sub
End Class

El resultado grfico:

SOLUCIN
Hemos realizado la pregunta relativa al nmero cuya tabla se desea conocer utilizando un InputBox.
Igualmente vlido hubiera sido hacerlo con un Label contenedor de la pregunta y un TextBox donde el usuario
introduce la informacin. La tabla la mostramos sobre un Label denominado LabelTabla.

Cdigo (versionesVB menos recientes)

Rem Curso Visual Basic


aprenderaprogramar.com
Option Explicit
Dim T As Integer
Dim i As Integer
Private Sub Form_Load()
Form1.Caption = "Tabla"
T = Val(InputBox("Qu tabla quiere
conocer?" & vbCrLf & _
"(Introduzca un nmero de 1 a 10)",
"Nmero?"))
LabelTabla.FontBold = True
LabelTabla.Alignment = 2
LabelTabla = "TABLA DEL " & T & vbCrLf &
vbCrLf
For i = 1 To 10
LabelTabla = LabelTabla & T & " * " & i &
" = " & T * i & vbCrLf
Next i
End Sub

Aspecto grfico:

Cdigo (versiones VB ms recientes)

REM Curso Visual Basic aprenderaprogramar.com


Option Explicit On
Public Class Form1
Dim T As Integer
Dim i As Integer
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e
As System.EventArgs) Handles MyBase.Load
Me.Text = "Tabla"
T = Val(InputBox("Qu tabla quiere conocer?" & vbCrLf & _
"(Introduzca un nmero de 1 a 10)", "Nmero?"))
LabelTabla.Font = New Font("Arial", 10, FontStyle.Bold)
LabelTabla.TextAlign = ContentAlignment.MiddleCenter
LabelTabla.Text = "TABLA DEL " & T & vbCrLf & vbCrLf
For i = 1 To 10
LabelTabla.Text = LabelTabla.Text & T & " * " & i & " = " & T * i
& vbCrLf
Next i
End Sub
End Class

EJERCICIO
Transformar en cdigo el siguiente planteamiento: queremos generar un programa que muestre todos los
enteros comprendidos entre un nmero definido por el usuario y 100.

SOLUCIN

Cdigo (versionesVB menos recientes)

Rem Curso Visual Basic aprenderaprogramar.com


Option Explicit
Dim Num As Integer
Dim i As Integer
Private Sub Form_Load()
Form1.Caption = "Enteros"

Cdigo (versiones VB ms recientes)


REM Curso Visual Basic aprenderaprogramar.com
Option Explicit On
Public Class Form1
Private Sub Form1_Load(ByVal sender As System.Object,
ByVal e As System.EventArgs) Handles MyBase.Load
Dim Num As Integer
Dim i As Integer
Me.Text = "Enteros"

Num = Val(InputBox("Introduzca un nmero


entero comprendido entre 1 y 99", "Nmero?"))
LabelTabla.Alignment = 2
LabelTabla.FontBold = True
LabelTabla = "ENTEROS ENTRE " & Num & " y 100"
& vbCrLf & vbCrLf
For i = Num To 100
LabelTabla = LabelTabla & i & " "
Next i
End Sub

Aspecto grfico:

Num = Val(InputBox("Introduzca un nmero entero


comprendido entre 1 y 99", "Nmero?"))
LabelTabla.TextAlign = ContentAlignment.MiddleCenter
LabelTabla.Font = New Font("Arial", 10, FontStyle.Bold)
LabelTabla.Text = "ENTEROS ENTRE " & Num & " y 100"
& vbCrLf & vbCrLf
For i = Num To 100
LabelTabla.Text = LabelTabla.Text & i & " "
Next i
End Sub
End Class

INSTRUCCIN MIENTRAS ... HACER (DO WHILE ... LOOP)


La sintaxis que hemos de seguir es la siguiente:

Do While [condicin]
Instruccin 1
Instruccin 2
.
.
.
Instruccin n
Loop

Las instrucciones tipo Do While son anidables dentro de s mismas o dentro de otras estructuras. Es
importante verificar que los bucles diseados con esta instruccin dispongan de una condicin de salida vlida.
Ejemplo: k = 0: Do while k < 5. Dentro del bucle tendremos que incrementar el valor de k, k = k +1.

INSTRUCCIN HACER ... REPETIR MIENTRAS (DO ... LOOP WHILE)


La sintaxis a utilizar es:

Do
Instruccin 1
Instruccin 2
.
.
.
Instruccin n
Loop
[condicin]

While

Un Do ... Loop While es anidable dentro de s mismo o dentro de otras estructuras. Es importante verificar que
los bucles diseados con esta instruccin dispongan de una condicin de salida vlida.
Ejemplo:
Do
LabelTabla.Text = LabelTabla.Text & "Iteracin " & k & vbCrLf
k=k+1
Loop While k <= 5

Visual Basic admite adems de la clusula While, usar el trmino Until, como
equivalente a "hasta que se cumpla que". As Loop Until i >= 3 significara
"Repetir hasta que i sea mayor o igual que 3". En un bucle en el que i parte de un valor

cero y se incrementa unitariamente Do While i < 3 sera equivalente a Do Until i >= 3, y


Loop Until i >= 3 sera equivalente a Loop While i < 3. Dado que podemos valernos de
equivalencias, puede evitar confundirnos el usar preferentemente un mismo tipo de
expresin, sabiendo que disponemos de otra equivalente.

Codigo para ordenar 4 numeros de mayor a menor

Dim num1, num2, num3, num4 As Integer


Dim mayor, medio, menor, medio1 As Double

Private Sub Command1_Click()


If num1 = num2 And num2 = num3 And num3 = num4 And num1 = num4 Then
Label10.Caption = "todos los numeros son iguales"
Else

If num1 = num2 And num2 = num3 Then


Label10.Caption = "primero, segundo y tercero son iguales"
If num2 > num4 Then
mayor = num2
menor = num4
Else: mayor = num4
menor = num2
End If
Label5.Caption = "Numero mayor: " & mayor
Label6.Caption = "Numero menor: " & menor
Else
If num1 = num2 And num2 = num4 Then
Label10.Caption = "primero, segundo y cuarto son iguales"
If num2 > num3 Then
mayor = num2
menor = num3
Else: mayor = num3
menor = num2
End If
Label5.Caption = "Numero mayor: " & mayor
Label6.Caption = "Numero menor: " & menor
Else
If num1 = num3 And num3 = num4 Then
Label10.Caption = "primero, tercero y cuarto son iguales"
If num1 > num2 Then
mayor = num1

menor = num2
Else: mayor = num2
menor = num1
End If
Label5.Caption = "Numero mayor: " & mayor
Label6.Caption = "Numero menor: " & menor
Else
If num2 = num3 And num3 = num4 Then
Label10.Caption = "segundo, tercero y cuarto son iguales"
If num1 > num2 Then
mayor = num1
menor = num2
Else: mayor = num2
menor = num1
End If
Label5.Caption = "Numero mayor: " & mayor
Label6.Caption = "Numero menor: " & menor
Else
If num1 = num2 Then
Label10.Caption = "primero y el segundo son iguales"
If num1 > num3 And num1 > num4 Then
mayor = num1
If num3 > num4 Then
medio = num3
menor = num4
Else:

medio = num4
menor = num3
End If
End If
Label5.Caption = "Numero mayor: " & mayor
Label6.Caption = "Numero medio: " & medio
Label7.Caption = "Numero memor: " & menor
Else
If num1 = num3 Then
Label10.Caption = "primero y el tercero son iguales"
If num1 > num2 And num1 > num4 Then
mayor = num1
If num2 > num4 Then
medio = num2
menor = num4
Else:
medio = num4
menor = num2
End If
End If
Label5.Caption = "Numero mayor: " & mayor
Label6.Caption = "Numero medio: " & medio
Label7.Caption = "Numero menor: " & menor
Else
If num1 = num4 Then
Label10.Caption = "primero y el cuarto son iguales"

If num1 > num3 And num1 > num2 Then


mayor = num1
If num3 > num2 Then
medio = num3
menor = num2
Else:
medio = num2
menor = num3
End If
End If
Label5.Caption = "Numero mayor: " & mayor
Label6.Caption = "Numero medio: " & medio
Label7.Caption = "Numero menor: " & menor
Else
If num2 = num3 Then
Label10.Caption = "segundo y tercero son iguales"
If num2 > num1 And num2 > num4 Then
mayor = num2
If num1 > num4 Then
medio = num1
menor = num4
Else
medio = num4
menor = num1
End If
End If

Label5.Caption = "Numero mayor: " & mayor


Label6.Caption = "Numero medio: " & medio
Label7.Caption = "Numero menor: " & menor
Else
If num2 = num4 Then
Label10.Caption = "segundo y cuarto son iguales"
If num2 > num1 And num2 > num3 Then
mayor = num2
If num1 > num3 Then
medio = num1
menor = num3
Else
medio = num3
menor = num1
End If
End If
Label5.Caption = "Numero mayor: " & mayor
Label6.Caption = "Numero medio: " & medio
Label7.Caption = "Numero menor: " & menor
Else
If num3 = num4 Then
Label10.Caption = "tercero y cuarto son iguales"
If num3 > num1 And num3 > num2 Then
mayor = num3
If num1 > num2 Then
medio = num1

menor = num2
Else
medio = num2
menor = num1
End If
End If
Label5.Caption = "Numero mayor: " & mayor
Label6.Caption = "Numero medio: " & medio
Label7.Caption = "Numero menor: " & menor

Else
If num1 <> num2 And num1 <> num3 And num1 <> num4 And num2 <> num3 And num2 <> num4
And num3 <> num4 Then
Label10.Caption = " "
If num1 > num2 And num1 > num3 And num1 > num4 Then
mayor = num1
If num2 > num3 And num2 > num4 And num3 > num4 Then
medio = num2
medio1 = num3
menor = num4
Else
If num2 > num3 And num2 > num4 And num4 > num3 Then
medio = num2
medio1 = num4
menor = num3

Else
If num3 > num2 And num3 > num4 And num2 > num4 Then
medio = num3
medio1 = num2
menor = num4
Else
If num3 > num2 And num3 > num4 And num4 > num2 Then
medio = num3
medio1 = num4
menor = num2
Else
If num4 > num3 And num4 > num2 And num3 > num2 Then
medio = num4
medio1 = num3
menor = num2
Else
medio = num4
medio1 = num2
menor = num3
End If
End If
End If
End If
End If

ElseIf num2 > num1 And num2 > num3 And num2 > num4 Then

mayor = num2
If num1 > num3 And num1 > num4 And num3 > num4 Then
medio = num1
medio1 = num3
menor = num4
Else
If num1 > num3 And num1 > num4 And num4 > num3 Then
medio = num1
medio1 = num4
menor = num3
Else
If num3 > num1 And num3 > num4 And num1 > num4 Then
medio = num3
medio1 = num1
menor = num4
Else
If num3 > num1 And num3 > num4 And num4 > num1 Then
medio = num3
medio1 = num4
menor = num1
Else
If num4 > num3 And num4 > num1 And num3 > num1 Then
medio = num4
medio1 = num3
menor = num1
Else

medio = num4
medio1 = num1
menor = num3
End If
End If
End If
End If
End If

ElseIf num3 > num1 And num3 > num2 And num3 > num4 Then
mayor = num3
If num1 > num2 And num1 > num4 And num2 > num4 Then
medio = num1
medio1 = num2
menor = num4
Else
If num1 > num2 And num1 > num4 And num4 > num2 Then
medio = num1
medio1 = num4
menor = num2
Else
If num2 > num1 And num2 > num4 And num1 > num4 Then
medio = num2
medio1 = num1
menor = num4
Else

If num2 > num1 And num2 > num4 And num4 > num1 Then
medio = num2
medio1 = num4
menor = num1
Else
If num4 > num2 And num4 > num1 And num2 > num1 Then
medio = num4
medio1 = num2
menor = num1
Else
medio = num4
medio1 = num1
menor = num2
End If
End If
End If
End If
End If

ElseIf num4 > num1 And num4 > num2 And num4 > num3 Then
mayor = num4
If num1 > num2 And num1 > num3 And num2 > num3 Then
medio = num1
medio1 = num2
menor = num4
Else

If num1 > num2 And num1 > num3 And num3 > num2 Then
medio = num1
medio1 = num3
menor = num2
Else
If num2 > num1 And num2 > num3 And num1 > num3 Then
medio = num2
medio1 = num1
menor = num3
Else
If num2 > num1 And num2 > num3 And num3 > num1 Then
medio = num2
medio1 = num3
menor = num1
Else
If num3 > num2 And num3 > num1 And num2 > num1 Then
medio = num3
medio1 = num2
menor = num1
Else
medio = num3
medio1 = num1
menor = num2
End If
End If
End If

End If
End If
End If

End If
End If
End If
End If
End If
End If
End If
End If

Label5.Caption = "Numero mayor: " & mayor


Label6.Caption = "Numero Medio mayor: " & medio
Label7.Caption = "Numero medio menor: " & medio1
Label8.Caption = "Numero Menor: " & menor

End If
End If
End If
End If

mayor = 0
medio = 0
medio1 = 0

menor = 0

End Sub

Private Sub Command2_Click()


Text1.Text = " "
Text2.Text = " "
Text3.Text = " "
Text4.Text = " "
Label5.Caption = " "
Label6.Caption = " "
Label7.Caption = " "
Label8.Caption = " "
Label10.Caption = " "
Text1.SetFocus
mayor = 0
menor = 0
medio = 0
medio1 = 0
End Sub

Private Sub Command3_Click()


End
End Sub

Private Sub Text1_Change()


If Text1.Text <> " " Then
num1 = Val(Text1.Text)
End If
End Sub

Private Sub Text2_Change()


If Text2.Text <> " " Then
num2 = Val(Text2.Text)
End If
End Sub

Private Sub Text3_Change()


If Text3.Text <> " " Then
num3 = Val(Text3.Text)
End If
End Sub

Private Sub Text4_Change()


If Text4.Text <> " " Then
num4 = Val(Text4.Text)
End If
End Sub
Aplicaciones pra

Aplicaciones vba 2013 esenciales


http://www.bravent.net/category/desarrollo-net/

Anda mungkin juga menyukai