Iniciacion A La Programacion Con Visual Basic

wheeee. Este curso estaba (mal puesto) en proyectos, pero lo cambio aquí para que quede más bonito.


De momento no tengo índice, pq nu sé muy bien como seguir XD....Pero no os preocupéis que lo habrá XD.

allá vamos..


-----------------1ª Entrega -------------------

Weno, ahora que ya puedo postear aquí os voy a intentar explicar un poco cómo funciona Visual Basic.

Visual Basic es un lenguaje orientado a Eventos, lo que significa que no tiene un hilo determinado de ejecución.

Mejor lo vemos con un ejemplo
....

imaginad un programa en C (esto no es c, es un pseudocódigo)

----Inicio Programa-----

Muestra en pantalla "Hola ,¿como te llamas?"
Recoge lo que venga por el teclado y gúardalo en la variable A.
Muestra en Pantalla "Hola, encantado de conocerte" + A.

---FIn programa-------

Esto sacaría en pantalla
Hola ,¿como te llamas?
> (aqui metemos el nombre)  Billyberjas

Hola, encantado de conocerte Billyberjas.


Esto es un ejemplo de programación estructurada, (por ejemplo C).

Visual Basic sería algo distinto, ya que visual Basic no tiene (mas o menos) un hilo de ejecucion tipo "empiza-pregunta-recoge-finaliza" , sino que va orientado a eventos....

¿Qué es un evento?...

Puede ser cualquier cosa, desde mover el ratón por la pantalla, hasta pulsar una cierta combinación de teclas.

Visual Basic es un lenguaje orientado a eventos porque nosotros vamos a programar RESPUESTAS para los eventos que queramos.

En el ejemplo programaríamos una respuesta para el evento PULSAR EN EL BOTON OK...

mirad esta imagen...

Imagen

Hemos programado en el evento onClick (se llama así) del boton "OK", que imprima un mensaje en el que diga "HOLA"+nombre que hayamos puesto en la caja de texto (textbox)

Pillamos el concepto de orientado a eventos? XD


------------------------------------------------------------------------
más sobre visual basic (II)


En el anterior post hemos visto un sencillo programa en visual basic que mostraba el nombre que habíamos introducido en un textbox (caja de texto, hay que ir acostumbrándose xD).

Ahora veamos el código que hay detrás de todo esto.....

Private Sub BotonOK_Click()

[B]MsgBox "HOLA:" & Text1.Text [/B]

End Sub


Vemos que con tres líneas de código hemos hecho un programita....interesante... Ahora veamos en que consisten esas tres líneas malditas.... (os aviso que si empezaís a leer y os gusta....ya nada podrá acabar con vuestras ansias de programación XD).


Private Sub BotonOK_Click()

Esta linea es para visual Basic ....la "declaración de que queremos que nos avise cuando pase ese evento"...¿Que evento? pues ni más ni menos que el evento "Click" del "BotonOK"....

Tenemos un botón en el programa (mirad la imagen) que lo he llamado "BotonOk" todo junto, pues con esa instrucción, le decimos al VB (Visual Basic) que EJECUTE el código que viene a continuación CUANDO SE PULSE ESE BOTÓN...¿Entendido?


MsgBox "HOLA:" & Text1.Text

Este fragmento tiene más chicha....

La instruccion MsgBox sirve para mostrar un mensajito en pantalla (el mensajito que dice "HOLA:billyberjas")

MsgBox tiene varios "parámetros" (parámetros podríamos definirlo como "modificadores" o como "valores" para la instrucción, la instrucción se comportará de manera distinta con unos valores y con otros...)
Los parámetros se escriben así, separados por comas
MsgBox parametro1,parametro2,parametro3....

El principal es el parámetro uno, que es el "TEXTO A MOSTRAR EN EL MENSAJE"... Si pusieramos MsgBox "Hola soy un melón" ¿Qué saldría? XDDD

Pues eso.

Lo que nos interesa es que salga :"HOLA nombre "
pues tendríamos que coger el texto que hemos puesto, ¿cómo?
pues preguntado a la cajita de texto por el texto XD...

con esta sentencia Text1.text (text1 se llama la cajita de texto, aunque se puede llamar como queramos), tendremos el texto

oseasé que si ponemos
MsgBox "HOLA" & text1.text
Nos saldría el mensajito....

El símbolo & siginifica "añadir", oseasé que en realidad el primer parámetro sería "HOLA billyberjas" o "HOla _lo_que_hayas_puesto"...


mmm ok?
XD
well, estas serían los 2 primeros capítulos del cursito...

ahora necesito vuestra colaboración. ¿Os ha gustado? ¿Os habeís enterado? ¿Teneís alguna duda (de principiante) que no sabeís resolver? ¿Necesitaís una explicación de algún concepto o alguna función?....Pues ya sabeís...
Vaya un curso de visual jeje, bueno aunque a mi no me hace falta (me dedico a ello, bueno me dedicaba ahora programo en otra cosa) es un lenguaje que muchos agradecerán poder empezar en el, yo he hecho grandes cosas en el. Una cosa, el C es muy distinto del visual basic, aunque comparten puntos en comun ya que los dos son lenguajes de programación estructurada, no es bueno ponerlos de parentesco...yo desgraciadamente no tengo nada de tiempo para hacer tutoriales (bastante que me estoy currando uno de divx) sino seguramente habría hecho uno de visual tambien..
Acabo de instalarme el VB6 en casa (sólo lo había usado en la facultad) y al darle a ayuda me dice que la colección MSDN no existe. Parece ser que eso va en otro cd ¿no?, porque con el cd de VB6 este que me han pasado no me deja instalar nada del MSDN, sólo me deja el VB.
No sé si el MSDN es gratuito, estilo Acrobat o hay que comprarlo, ni donde conseguirlo, a ver si me podeis echar una mano, porque es muy útil la ayuda para ir viendo las funciones que no conozco bien.
Por cierto, todavía tengo un nivel más bien básico de VB, pero estoy dispuesto a echar una mano.
También he programado bastante en C, en Modula-2 (no os riais, que lo exigen en la carrera :)) y en Fortran (es que he estudiado matemáticas), pero para aquí no servirán de mucho, aunque siempre ayudan a la hora de aprender lenguajes nuevos.
Venga, un saludo.
pozí, la msdn va separada, normalmente en dos cds, (aunque eso es en la version "normal" q tenemos todos, la msdn es una coleccion q tienen las empresas desarolladoras y suelen mandar un par de cds al mes con TODOS los datos ténicos,articulos,etc....)


de todos modos, puedes ir (aunque es un rollo y mas lento ) a msdn.microsoft.com y ahí buscas lo q quieras.


Un saludo, y ya nos contarás q te parece el curso.
Ah, vale, gracias. A ver si los puedo conseguir que son muy útiles.
El curso ha empezado bien, ya con ejemplos. Es lo mejor. Normalmente empiezan con introducciones aburridísimas :). Es mejor empezar ya con ejemplos para poder ponerse a hacer algo desde el primer día.

Por cierto, ya que has dicho que podemos dejar dudas sobre funciones estoy ahora haciendo un programa :):) y me sería muy útil saber si hay alguna forma de coger sólo algunas letras de un texto. Por ejemplo, pones una caja de texto, el usuario escribe algo, y pulsa aceptar, pero a mi me interesa cojer las letras de 3 en 3 empezando por la izquierda. No sé si me he explicado :). Por ejemplo, el usuario escribe "Hola que tal" y yo lo que quiero es que cuando pulse aceptar, guardar "Hol" en una variable, hacer unas operaciones con esas letras, luego guardar "a q" en la misma variable, luego "ue ", y luego "tal" ¿Cómo podría hacer eso?

Gracias de nuevo y ánimo con el curso.

Salu2.
si, tienes la funcion left que te saca las letras empezando por la izq, mid por el centro y rigth por la derecha.

luego cuando tenga tiempo te posteo lo q me viene en la msdn ...
saludos.
Gracias de nuevo :). Ya he encontrado las funciones con el examinador de objetos. La mid sobre todo me ha sido muy útil. Ya tengo terminado mi primer programa [beer] XD, un conversor de bases (decimal, binaria, octal y hexadecimal) ;).

Salu2.
enhorabuena keko, pues si quieres postear y explicar un poco como funciona tu proyecto....puedes XD

saludines.
Yo SI tengo la biblioteca MSDN, lo que pasa es que por una parte está el Visual Basic 6 por separado y por otra esta el VISUA STUDIO, que incluy el Visual C, el Visual Basic 6.0, y mas herramientas de programación. Son 3 cds y el segundo y el tercero son el MSDN.
Venga, lo explico por si ayuda a alguien y de paso por si quereis comentar qué tal está (tened en cuenta que aún estoy empezando :)) a ver......

Pues primero pensé en hacer 6 funciones. 3 para pasar de de decimal a binario, octal y hexadecimal y otras 3 para los pasos inversos.
Luego detectar en cual de las 4 cajas de texto escribe el usuario, leer el número que ha escrito, pasarlo a decimal y luego de decimal a los otros 2 (si ya lo pone en decimal, se pasa de decimal a los otros 3).

Pero al final lo he cambiado para hacerlo un poco más corto. He hecho 4 funciones, de decimal a binario, de binario a octal, de octal a hexa y de hexa a decimal.
Se detecta en cual escribe el usuario con una variable global llamada opcion que vale 0 si no ha escrito nada, 1 si ha escrito en decimal,etc hasta 4.
Cuando pulsa aceptar, se crea un bucle infinito, del que sólo se sale si opcion=0, y dentro de ese bucle están las 4 funciones una detrás de otra en la forma:

salir=1
BUCLE
SI opcion=1 lee el decimal, lo pasa a binario, y lo escribe en la
columna de binario. Luego incrementa la variable salir. Si salir
es 4 es que ya se han hecho todas las transformaciones, así
que se hace opcion=0, si no opcion=2

SI opcion=2 lee el binario, lo pasa a octal, y lo escribe en la
columna de octal. Luego incrementa la variable salir. Si salir
es 4 es que ya se han hecho todas las transformaciones, así
que se hace opcion=0, si no opcion=3

SI opcion=3 lee el octal, lo pasa a hexa, y lo escribe en la
columna de hexa. Luego incrementa la variable salir. Si salir
es 4 es que ya se han hecho todas las transformaciones, así
que se hace opcion=0, si no opcion=4

SI opcion=4 lee el hexa, lo pasa a decimal, y lo escribe en la
columna de decimal. Luego incrementa la variable salir. Si salir
es 4 es que ya se han hecho todas las transformaciones, así
que se hace opcion=0, si no opcion=1

FIN BUCLE SI opcion=0

De esta forma el bucle hace 1 vez (y sólo una) cada transformación, empezando por la opción donde haya escrito el usuario.


El código es este:


Option Explicit
Public opcion As Integer

Private Sub cmdAceptar_Click()
Dim numero As Long
Dim hexa As Long
Dim cifra As Integer
Dim suma As Integer
Dim n As Integer
Dim m As Integer
Dim numCeros As Integer
Dim cifraHex(3) As Integer
suma = 1
Do

If opcion = 1 Then
numero = Val(txtDec.Text)
Do
cifra = numero Mod 2
numero = numero \ 2
txtBin.Text = Mid(Str(cifra), 2) & txtBin.Text
Loop Until numero < 2
If numero <> 0 Then
txtBin.Text = Mid(Str(numero), 2) & txtBin.Text
End If
suma = suma + 1
If suma = 4 Then
opcion = 0
Else
opcion = 2
End If
End If

If opcion = 2 Then
cifra = Len(txtBin.Text)
If (cifra Mod 3) = 1 Then
txtBin.Text = "00" & txtBin.Text
cifra = cifra + 2
numCeros = 2
ElseIf (cifra Mod 3) = 2 Then
txtBin.Text = "0" & txtBin.Text
cifra = cifra + 1
numCeros = 1
End If
cifra = cifra \ 3
For n = 1 To cifra
numero = 4 * Val(Mid(txtBin.Text, 3 * (n - 1) + 1, 1))
numero = numero + 2 * Val(Mid(txtBin.Text, 3 * (n - 1) + 2, 1))
numero = numero + Val(Mid(txtBin.Text, 3 * n, 1))
txtOct.Text = txtOct.Text & Mid(Str(numero), 2)
Next n
If numCeros = 1 Then
txtBin.Text = Mid(txtBin.Text, 2)
ElseIf numCeros = 2 Then
txtBin.Text = Mid(txtBin.Text, 3)
End If
suma = suma + 1
If suma = 4 Then
opcion = 0
Else
opcion = 3
End If
End If

If opcion = 3 Then
cifra = Len(txtOct.Text)
If (cifra Mod 4) = 1 Then
txtOct.Text = "000" & txtOct.Text
cifra = cifra + 3
numCeros = 3
ElseIf (cifra Mod 4) = 2 Then
txtOct.Text = "00" & txtOct.Text
cifra = cifra + 2
numCeros = 2
ElseIf (cifra Mod 4) = 3 Then
txtOct.Text = "0" & txtOct.Text
cifra = cifra + 1
numCeros = 1
End If
cifra = cifra \ 4
For n = 1 To cifra
numero = 128 * Val(Mid(txtOct.Text, 4 * (n - 1) + 1, 1))
numero = numero + 16 * Val(Mid(txtOct.Text, 4 * (n - 1) + 2, 1))
numero = numero + 8 * Val(Mid(txtOct.Text, 4 * (n - 1) + 3, 1))
numero = numero + Val(Mid(txtOct.Text, 4 * n, 1))
For m = 0 To 2
cifraHex(m) = numero Mod 16
numero = numero \ 16
Next m
For m = 2 To 0 Step -1
If cifraHex(m) < 10 Then
txtHex.Text = txtHex.Text & Mid(Str(cifraHex(m)), 2)
Else
Select Case cifraHex(m)
Case 10
txtHex.Text = txtHex.Text & "A"
Case 11
txtHex.Text = txtHex.Text & "B"
Case 12
txtHex.Text = txtHex.Text & "C"
Case 13
txtHex.Text = txtHex.Text & "D"
Case 14
txtHex.Text = txtHex.Text & "E"
Case 15
txtHex.Text = txtHex.Text & "F"
Case Else
End Select
End If
Next m
Next n
If numCeros = 1 Then
txtOct.Text = Mid(txtOct.Text, 2)
ElseIf numCeros = 2 Then
txtOct.Text = Mid(txtOct.Text, 3)
ElseIf numCeros = 3 Then
txtOct.Text = Mid(txtOct.Text, 4)
End If
Do
n = Len(txtHex.Text)
m = Val(Left(txtHex.Text, 1))
If (m = 0) And (n <> 1) Then
txtHex.Text = Mid(txtHex.Text, 2)
Else
Exit Do
End If
Loop
suma = suma + 1
If suma = 4 Then
opcion = 0
Else
opcion = 4
End If
End If

If opcion = 4 Then
m = Len(txtHex.Text)
hexa = 16 ^ (m - 1)
numero = 0
For n = 1 To m
Select Case Mid(txtHex.Text, n, 1)
Case "A", "a"
numero = numero + 10 * hexa
Case "B", "b"
numero = numero + 11 * hexa
Case "C", "c"
numero = numero + 12 * hexa
Case "D", "d"
numero = numero + 13 * hexa
Case "E", "e"
numero = numero + 14 * hexa
Case "F", "f"
numero = numero + 15 * hexa
Case Else
numero = numero + Val(Mid(txtHex.Text, n, 1)) * hexa
End Select
hexa = hexa \ 16
Next n
txtDec.Text = Mid(Str(numero), 2)
suma = suma + 1
If suma = 4 Then
opcion = 0
Else
opcion = 1
End If
End If

Loop Until opcion = 0
End Sub

Private Sub cmdLimpiar_Click()
txtDec.Text = ""
txtBin.Text = ""
txtHex.Text = ""
txtOct.Text = ""
End Sub

Private Sub cmdSalir_Click()
End
End Sub

Private Sub mnuAyudaAcerca_Click()
Dim msg As Integer
msg = MsgBox(" Este programa no es freeware. Si no mandas 100€ a mi dirección en los próximos 3 días, te reventará el disco duro :), es coña." _
& vbCrLf & vbCrLf & " Llevo 2 días chapando manuales de VB y este es el primer fruto del estudio. Que os sea útil.", 64, "Cambio de Base by KeKo")
End Sub

Private Sub mnuAyudaInstr_Click()
Dim msg As Integer
msg = MsgBox(" Escribe un número en la casilla de la base en la que viene expresado y pulsa Aceptar para obtener su representación en las demás bases." _
& vbCrLf & vbCrLf & " Antes de escribir otro número pulsa Limpiar.", 64, "Instrucciones")
End Sub


Private Sub txtDec_Change()
opcion = 1
End Sub

Private Sub txtBin_Change()
opcion = 2
End Sub

Private Sub txtOct_Change()
opcion = 3
End Sub

Private Sub txtHex_Change()
opcion = 4
End Sub



Por ejemplo, Private Sub txtDec_Change() comprueba si la caja de texto llamada txtDec ha cambiado su contenido (es decir, si se ha escrito algo en ella), y de ser así hace opcion=1 para saber que la primera transformacion sera de decimal a binario.
Las demás igual.

En Private Sub mnuAyudaInstr_Click() se indica lo que debe hacer el programa si el usuario entra en el menú Ayuda/Instrucciones.

Private Sub cmdLimpiar_Click() indica que cuando el usuario haga click en el botón Limpiar, se borren las cajas de texto (las hace igual a "", o sea vacías)

La funcion Val( texto ) transforma un texto en su valor numérico. El usuario escribe un número, pero el ordenador lo toma como un texto, así que hay que usar esa función para que lo pase a número.

Len(texto) nos devuelve el número de letras de un texto.

mid(texto, inicio, n) lee n letras a partir de la posición inicio del texto indicado.

str(numero) es la inversa de val, es decir, pasa un número a formato texto. El texto que devuelve empieza con un espacio en blanco. Por ejemplo str(12) devuelve " 12". Para eliminar ese espacio, he combinado esta función con la mid de esta forma:
mid(str(numero), 2), con lo que obtengo el texto sin espacio inicial.

Si quereis comento las operaciones de cambio de base, pero en otro momento, que ya me canso de escribir :).

A ver si puedo adjuntar el ejecutable por si quereis verlo. Por cierto ¿cómo creo una instalación que incluya las librerías necesarias por si el que va a usar el programa no las tiene?

Salu2.
Originalmente enviado por KeKo
Venga, lo explico por si ayuda a alguien y de paso por si quereis comentar qué tal está (tened en cuenta que aún estoy empezando :)) a ver......
Salu2.


ta bien exlpicao, pero tienes algunos fallos

Por ejemplo, si pongo 2 en dec lo convierte bien,pero si pongo 22 y luego borro (sin convertir) y dejo 2 otra vez y le doy a convertir....falla XD


por cierto, sábías q vb tieen funcionos para pasar a hex y octal...

hex(number)

oct(numer) XD

un saludo.

por cierto, cuando metas codigo, mételo mejor en un bloque [ CODE] [/ CODE] para q no pierda nada...pq hay veces q pierden.
Originalmente enviado por billyberjas


ta bien exlpicao, pero tienes algunos fallos

Por ejemplo, si pongo 2 en dec lo convierte bien,pero si pongo 22 y luego borro (sin convertir) y dejo 2 otra vez y le doy a convertir....falla XD


Cierto. Cada vez que conviertes algo, luego hay que darle a limpiar, si no acumula las conversiones :). Es decir, si pones un número le das a aceptar y luego pones otro y le das a aceptar, no borra lo anterior, sino que lo pone a continuación.

Ya está arreglado. Sólo había que añadir en cada opción que primero vacíe a caja de texto en la que va a escribir ;).

Puedes escribir en cualquier caja, no sólo la de decimal.


por cierto, sábías q vb tieen funcionos para pasar a hex y octal...

hex(number)

oct(numer) XD

un saludo.


Sí, pero haciéndolo yo todo cojo más práctica ;).


por cierto, cuando metas codigo, mételo mejor en un bloque [ CODE] [/ CODE] para q no pierda nada...pq hay veces q pierden.


De acuerdo. Gracias por hacer de beta tester :)

Me falta una cosilla. Quería que al pulsar enter hiciese lo mismo que al darle a aceptar. A ver si me sale :).

Salu2.
Madre de dios...que rapido eres tio...
Justo ahora estaba creando la central sobre los cursos en el rincon.

Bueno...la cosa es que ahi lo estoy poniendo.

Echale un ojo eh?
http://www.elotrolado.net/showthread.php?s=&threadid=53432

Aqui tienes el link a el mensage que prometi de union de cursos...
Originalmente enviado por billyberjas



por cierto, cuando metas codigo, mételo mejor en un bloque [ CODE] [/ CODE] para q no pierda nada...pq hay veces q pierden.



¿?¿?¿ ¿¿Eso es visual basic?? ummm.... o hace un montonazo que no toco visual basic (casi 3 años y medio) o que yo sepa eso en visual basic no se usa. En visual los slashs (/) únicamente se usan en operaciones aritméticas.
Originalmente enviado por GATOtico



¿?¿?¿ ¿¿Eso es visual basic?? ummm.... o hace un montonazo que no toco visual basic (casi 3 años y medio) o que yo sepa eso en visual basic no se usa. En visual los slashs (/) únicamente se usan en operaciones aritméticas.


me refiero a que meta el código "cortado y peagdo " pero dentro de un bloque [ CODE] de eol, para que así no se interprete los posiblies "
<html>
"etc....

XD
Pues yo me apunto.
Alomejor es tarde, pero estuve siguiendo el hilo sin poder hacer login pa apuntarme.
Yo se algo de VB q aprendí hace un par de años.
SALU2
que poco movimiento veo en este hilo :(

os adjunto un programa que hice yo, es una agenda, tiene algunos nombres que puse de prueba y no puedo quitar XDXDXD

esta todavia sin acabar, este verano lo acabare.

a ver q os parece

venga y a ver si se anima esto

un saludo
una duda demasiado basica:
¿que tengo que bajarme para empezar? es gratuito o hay que pagar?
tendras q conseguir el visual studio 6.0, pero has de pagar, o no?
y no hay algun programa gratuito pa iniciarse?
que yo sepa no, podrias usar el q-basic, aunque no se parece en nada, la mayoria del codigo, la creacion de varibles, bucles, constantes, etc. es muy parecido, y para ir cogiendo idea de programacion va bastante bien, si yo no hubiera sabido algo de q-basic no habria podido hacer mucho con visual, asi que te lo recomiendo.

éste si es gratis, y lo puedes encontrar en internet, o en el disco de windows 98 en una carpeta que se llamaba old-dos, si mal no recuerdo, si no lo encuentras dimelo, y lo intento buscar y subir

un saludo
pos no uso win 98, uso xp
me pondre ahora a buscarlo
como eskorbuto no se fia (no te culpo) pongo aqui el programa (otra vez pero con otro nombre; porque me dice q esta subio pero yo no lo veo ¬_¬) y asi si tiene virus me podeis echar, apalear y lo que querais XDXDXD

un saludo, y repito, ta sin acabar

Adjuntos

25 respuestas