|
Visual Basic - 1
|
En los años 40 los primeros ordenadores
eran electromecánicos,
es decir, funcionaban mediante relés. Con cierta frecuencia
algún insecto (bug) se
introducía en los contactos del relé produciendo
la caída del sistema; un técnico chequeaba los
relés y quitaba al insecto, esto se llamaba debugger.
Hoy se ha mantenido la palabra bug
como error en el ordenador o software y debugger
como herramienta de reparación. Los ordenadores solo
entienden de 0 y 1, su lenguaje de programación en
esa época era el código
máquina.
Una instruccion en código máquina
sería:
110011100 (esto significaría
suma)
000001100 (este sería
el primer sumando, el 12)
000000110 (este sería
el segundo sumando, 6)
El tiempo fue pasando, en los años 50 (siempre aproximádamente)
los ordenadores se fabricaban con válvulas termoiónicas,
eran unas ampollas donde se les había realizado el
vacío y en cuyo interior se encontraban una serie de
electrodos que funcionaban como diodos, triodos, pentodos.
Se utilizaba un lenguaje de programación llamado ensamblador,
parecido al lenguaje máquina, pero más "humano".
En ensamblador la instrucción anterior
la programaríamos de esta forma:
Add 12,6
Después de realizar el programa en
ensamblador hay que compilarlo
para convertirlo en ceros y unos que es lo que de verdad entiende
la CPU. Pero la compilación lo hace automáticamente
una herramienta llamada compilador.
En los años 60 destacaba un lenguaje
de programación llamado FORTRAN (Traducción
de fórmulas), estaba especialmente destinado al cálculo
científico. Las instrucciones eran más intuitivas
con gran parecido a un texto en Inglés. Fueron apareciendo
otros lenguajes: el C, el COBOL (negocios), PASCAL, etc ...
Esto son lenguajes de alto nivel, en cambio el código
máquina y el ensambaldor se denominan de bajo nivel.
La instrucción anterior en estos lenguajes
sería simplemente :
c = 12 + 6
Al principio de los 70 Bill y Paul eran
amigos de Lakeside School en Seattle, Washington. A Bill y
Paul les divertía trabajar con ordenadores y hacer
programas de juegos como Tic-Tac-Toe y juegos de marcianitos.
Estos juegos estaban escritos en un lenguaje de programación
llamado BASIC (Beginner's All-Purpose Symbolic Instruction
Code, Código de Instrucciones Simbólicas Universal
para Principiantes). Un lenguaje basado en el FORTRAN. Cuando
se desarrolló el primer ordenador personal a mediados
de los 70, Bill y Paul comenzaban sus estudios universitarios.
Fueron capaces de vender su BASIC por 350$, los datos se guardaban
en cintas magnéticas. A partir de aquí se tomaron
las cosas en serio y fundaron una compañía:
Microsoft. Bill es Bill Gates y Paul es Paul Allen, éste
ya no trabaja para Microsoft, pero tiene su propia compañía.
El BASIC fue evolucionando con los años y salieron
versiones como GW-BASIC, QuickBasic y QBasic.
Hasta ese momento estos lenguajes eran textuales y funcionaban
bajo MSDOS. Cuando apareció Windows, se necesitó
un lenguaje de programación más moderno, intuitivo,
con ventanas, más vistoso, ... total que apareció
el Visual Basic, este es un lenguaje
basado en el BASIC pero que funciona en modo gráfico
y con ventanas.
El Visual Basic es un lenguaje fácil
de aprender y se lleva muy bien con el Windows. Se pueden
hacer programas de gran calidad. Otros lenguajes como el Visual
C, Delphi (PASCAL) son más potentes, tal vez más
profesionales, pero el Visual Basic es un buen primer paso
para empezar a programar.
Esto sería un programa en BASIC:
INPUT
"Escribe tu nombre ..", n$
INPUT "Tu Edad .. " , e
IF e >= 18 THEN
PRINT n$; " eres mayor de edad"
ELSE
PRINT n$; " no eres mayor de edad"
END |
ENTRADA
"Escribe tu nombre ... ", n$
ENTRADA "Tu Edad .. ", e
SI e >= 18 ENTONCES
ESCRIBE n$; " eres mayor de edad"
SINO
ESCRIBE n$; " no eres mayor de edad"
FIN |
En el CDROM de Windows 98, concretamente
en la carpeta TOOLS/OLDMSDOS se encuentra una aplicación
llamada QBASIC, con ella puedes empezar a aprender BASIC.
Aquí pongo algunos programas que puedes probar, es
interesante trabajar con ellos para luego pasar al Visual
Basic.
Bajar qbasic.exe (200 K)
Bajar ayuda del qbasic qbasic.hlp
(140 K) (Debes ponerlo en el mismo directorio)
|
Ejemplos de programas
en QBASIC
Nombre y edad
10 REM ******** Nombre y Edad *******
20 INPUT "Introduce tu nombre: ", n$
30 INPUT "Introduce tu edad: ", e
40 IF e >= 18 THEN PRINT n$; " eres mayor de edad"
50 IF e < 18 THEN PRINT n$; " eres menor de edad"
Pitágoras
10 REM ****** Pitagoras *******
20 PRINT "Teorema de Pitagoras"
30 PRINT
40 INPUT "Introduce un cateto: ", a
50 INPUT "Introduce otro cateto: ", b
60 c = SQR ( a*a + b*b)
70 PRINT "La hipotenusa vale: "; c
Tabla de multiplicar
10 REM ****** Tabla de multiplicar *******
20 PRINT "Tabla de multiplicar": PRINT: PRINT : PRINT
30 INPUT "Introduce un número del 1 al 9 "; k
40 IF k > 9 OR k < 1 THEN GOTO 30
50 FOR n=1 TO 9
60 PRINT n ; " x " ; k; " = "; n*k
70 NEXT n
Condicional
10 INPUT "Introduce un número ", x
20 r = x MOD 2
30 IF r = 0 THEN
40 PRINT "El numero introducido es par, porque al dividirlo
entre 2, nos da de resto 0"
50 ELSE
60 PRINT "El numero introducido es impar, porque al dividirlo
entre 2, nos da de resto 1"
70 END IF
Atención :
Si el IF ..... THEN consta de una sola instrucción puede
ir así :
IF r = 0 THEN PRINT "El numero
es par"
Pero si consta de varias instrucciones irá así :
IF r = 0 THEN
PRINT "Numero par"
f = f + 1
PRINT "Varias lineas"
c = 2 * c
END IF
Otra formas del IF .... THEN ...... ELSE
...... END IF
IF edad > 18 THEN
Print "Eres mayor de edad"
ELSE
Print "Eres menor de edad"
END IF
Ecuación de Segundo
Grado
10 INPUT "Coeficiente a "; a
20 INPUT "Coeficiente b "; b
30 INPUT "Coeficiente c "; c
40 REM ***** Vamos a realizar el b*b - 4 * a * c
50 r = b*b - 4 * a * c
60 REM ****** Se r es negativo no se puede realizar la raíz.
70 IF r < 0 THEN PRINT "Número imaginario, no se
puede realizar la raíz.": GOTO 150
80 REM ******* Es posible realizar la raíz ******
90 t = SQR (r)
100 x1 = (- b - t) / (2 * a)
110 x2 = (- b + t)/ (2 * a)
120 REM ****** Soluciones ********
130 PRINT "Las soluciones son: "; x1; " y ";
x2
150 END
Area y longitud
10 REM **** Área y longitud del círculo
20 INPUT "Introduce el diámetro de una circunferencia
"; d
30 r = d/2
40 a = 3.1416 * r * r
50 l = 2 * 3.1416 * r
60 PRINT "El área vale: "; a
70 PRINT "La longitud vale: "; l
Atención :
Se pueden poner varias instrucciones en una línea
separado por :
30 r = d/2 : a = 3.1416
* r * r : l = 2 * 3.1416 * r :
PRINT "Area "; a :
PRINT "Longitud " ; l
Pero es menos presentable.
Paralelo
10 REM **** Paralelo de dos resistencias *****
20 INPUT "Introduce el valor de una resistencia "; R1
30 INPUT "Introduce el valor de otra resistencia "; R2
40 RT = (R1 * R2) / (R1 + R2)
50 PRINT "El paralelo vale "; RT
Descomponer vector
10 REM **** Vector ****
15 CLS
20 PRINT "Dado el módulo y ángulo de un vector.
Hallar su componente horizontal y vertical"
30 INPUT "Introduce el modulo del vector "; m
40 INPUT "Introduce el angulo del vector en grados ";
ag
50 REM *** Paso del ángulo a radianes ***
60 ar = 2 * 3.1416 * ag / 360
70 h = m * cos(ar)
80 v = m * sin(ar)
90 PRINT "La componente horizontal vale "; h
100 PRINT "La componente vertical vale "; v
| |
Nota: El Seno, Cos y Tangente hay que expresarlo en radianes,
por eso hemos pasado de grados a radianes.
Para pasar de grados a radianes:
rad = 2 * 3.1416 * grad / 360
Para pasar de radianes a grados:
grad = rad * 360 / 2 * 3.1416
|
Adivina
5 CLS
10 REM Adivina
20 RANDOMIZE TIMER
30 x = INT(1 + RND * 100)
40 INPUT "Introduce numero (1 -100)"; n
45 inten = inten + 1
50 IF x = n THEN GOTO 80
60 IF x < n THEN PRINT "Mi numero es menor": GOTO 40
70 IF x > n THEN PRINT "Mi numero es mayor": GOTO 40
80 REM ACERTO
90 PRINT "Efectivamente, el numero era "; x
100 PRINT "Has acertado de "; inten; " intentos."
Media aritmética
VAL(n$) convierte una cadena alfanumérica
de caracteres númericos en números.
VAL("23") lo convierte al número 23
PRINT "Calculo de la media de varios numeros"
otro:
INPUT "Introduce un numero ( s ..... Salir) ", n$
IF n$ = "s" OR n$="S" GOTO calculo
t = t + VAL(n$)
c = c + 1
GOTO otro
calculo:
r = t / c
PRINT "La media vale : "; r
Divisores de un número
10 REM Divisores de un numero
20 CLS
30 PRINT "Vamos a mostrar los divisores de un numero"
40 INPUT "Introduce un numero del 1 al 1000 "; x
50 IF x < 1 OR x > 1000 GOTO 40
60 FOR n = 1 TO x
70 r = x MOD n
80 IF r = 0 THEN PRINT n
90 NEXT n
Escribir y leer archivo
10 OPEN "A" , #1, "C:\borra.txt" ------------>
Abre el archivo para escribir-añadir
20 INPUT "Nombre ", n$
30 INPUT "Edad ", e$
40 WRITE #1, n$, e$ ------------->
Escribe en el archivo
50 CLOSE #1
55 OPEN "I", #1, "C:\borra.txt" --------------->
Abre el archivo para leerlo
60 FOR n = 1 TO 20
70 IF EOF(1) GOTO 200
80 INPUT #1, a$, b$ ---------------->
Lee el archivo
90 PRINT a$, b$
100 NEXT n
200 CLOSE #1
210 END
| |
OPEN "O" para escribir-machacar
en el archivo (Se escribe con WRITE #1)(o PRINT #1)
OPEN "A" para escribir-añadir en el archivo
(Se escribe con WRITE #1)( o PRINT #1)
OPEN "I" para leer el archivo (Se lee con INPUT
#1)
EOF (End Of File) SI findearchivo VE A 200
|
Quiniela
Vamos a realizar una quiniela. Suponemos que tenemos un dado
con sus seis caras (1,2,3,4,5,6). Lo lanzamos.
Si sale la cara 1, 2 o 3 (o sea, CASO que SEA menos de 4) ponemos
un "1".
Si sale la cara 6 ponemos un "2" (o sea, CASO sea 6) .
Si sale la cara 4 o 5 ponemos una "X" (o sea, en OTRO
CASO).
CLS
RANDOMIZE TIMER
FOR n = 1 TO 15
g = INT(RND * 6) + 1
SELECT CASE g
CASE IS < 4
PRINT "1"
CASE 6
PRINT "2"
CASE ELSE
PRINT "X"
END SELECT
NEXT n
Primitiva
Creamos una tabla con 6 elementos (en realidad
7 porque el 0 también cuenta) DIM a(6)
Sacamos un número del 1 al 49.
Comprobamos si el número obtenido se encuentra en la tabla.
Si es así, saca otro número. Si no está en
la tabla lo guarda en su lugar correspondiente (n). Y lo escribe
en pantalla. Esto lo hacemos para evitar que se repita el número
sacado.
DIM a(6)
RANDOMIZE TIMER
FOR n = 1 TO 6
saca:
g = INT(RND * 49) + 1
FOR
k = 1 TO 6
IF
a(k) = g THEN GOTO saca
NEXT
k
a(n) = g
PRINT g; "-";
NEXT n
|
a(k)
|
g
|
El bucle FOR k ..... comprueba si en algunos de los
seis elementos de la tabla está el número
que acaba de salir (g) .
Si ahora sale el 8 otra vez, se comprueba que ese número
ya existe en la tabla con lo cual vuelve para atrás
a sacar otro número mediante
IF a(3) = 8 THEN GOTO saca.
En caso que el número no esté repetido
lo almacena en el siguiente lugar de la tabla
a(n) = g
|
|
a(1)
|
24
|
|
a(2)
|
31
|
|
a(3)
|
8
|
|
a(4)
|
15
|
|
a(5)
|
|
|
a(6)
|
|
Al revés
INPUT "Escribe tu Nombre ", a$
FOR n = LEN(a$) TO 1 STEP -1
b$ = MID$(a$, n, 1)
PRINT b$; "-";
SLEEP 2 : REM pausa 2 segundos
NEXT n
(Nota : Esta función en VB es StrReverse("asd"))
Mueve un caracter por la
pantalla. El punto debe encontrarse con el 0.
CLS
x = 10: y = 10
10 FOR n = 1 TO 20
CLS
a = INT(RND * 80) + 1
b = INT(RND * 20) + 1
LOCATE b, a
PRINT "0"
FOR t = 1 TO 50000
t$ = INKEY$
IF t$ = "a" THEN y = y -1 : IF y < 1 THEN y = 1
IF t$ = "z" THEN y = y +1 : IF y > 20 THEN y = 20
IF t$ = "," THEN x= x-1 : IF x < 1 THEN x= 1
IF t$ = "." THEN x = x + 1 : IF x > 80 THEN x= 80
IF t$ ="q" THEN END
LOCATE y, x
PRINT "."
IF x = a AND y = b THEN PRINT "¡¡¡ PUM !!!":
FOR j = 1 TO 40000: NEXT j: GOTO 10
PRINT "."
NEXT t
NEXT n
Crear directorio y listados
REM Crear un directorio
MKDIR "C:\EJEMPLO"
REM Cambiar a un directorio
CHDIR "C:\WINDOWS"
REM Listado de archivos (DIR)
FILES
Colores
SCREEN 7
FOR n = 1 TO 15
COLOR n
PRINT n
NEXT n
En caso de un error en el
programa va a la etiqueta mal,
imprime un mensaje y continua con la siguiente instrucción
(RESUME NEXT)
CLS
ON ERROR GOTO mal
x = -3
b = SQR(x)
c = 2 * x
PRINT c
END
mal:
PRINT "Ocurrio un error"
RESUME NEXT
Para poder utilizar órdenes
del DOS
SHELL "DIR"
SHELL "COPY C:\autoexec.bat C:\borra.txt"
SHELL "TYPE C:\autoexec.bat"
Bola.bas
Círculo que se mueve por la pantalla.
Capital
Hacemos una imposición en un Banco de un
Capital C, a un interés anual i, durante 9 años. Calculemos
los capitales resultantes en cada año.
(El código del acento circunflejo ^ , es
ALT 94, es el signo de exponente)
CLS
INPUT "Capital ", c
INPUT "Interes ", i
i = i / 100
FOR n = 1 TO 9
t = c * ( 1 + i ) ^ n
PRINT "Año "; n ; " .... "; : PRINT USING
"###,###,###"; CLNG(t)
NEXT n
Hacer Mientras c$ sea distinto
de pedro
PRINT "Estaras en el bucle hasta que escribas
la palabra -pedro-"
c$ = ""
DO WHILE c$ <> "pedro"
INPUT "Introduce la clave ", c$
LOOP
PRINT "Muy bien, escribistes -pedro- y salistes del bucle"
Hacer Bucle Mientras f > 0
PRINT "Te pide un numero y te escribe los 12 siguientes"
INPUT "Introduce un numero ", n
f = 12
DO WHILE f > 0
n = n + 1
PRINT n
f = f - 1
LOOP
Ecuación de la recta
10 REM *** Ecuacion de la recta ****
20 PRINT "Sabemos que una recta pasa por dos puntos"
30 PRINT "Si nos dan dos puntos (x1,y1) (x2,y2) podemos deducir
la ecuación de la recta"
40 PRINT
50 PRINT "Vamos a introducir las componentes (x,y) de un punto."
60 INPUT "Introduce x1 "; x1
70 INPUT "Introduce y1"; y1
80 PRINT "Ahora vamos a introducir las componentes (x,y) del
otro punto."
90 INPUT "Introduce x2 "; x2
100 INPUT "Introduce y2"; y2
110 REM ****** Calculos ******
115 REM Ecuacion de la recta (x-x1)/(x2-x1)=(y-y1)/(y2-y1)
120 m = (y2-y1)/(x2-x1)
130 PRINT "La ecuacion de la recta que pasa por ("; x1;",";y1;")";"
y (";x2;",";y2;") es ="
140 PRINT "Y = "; m; " * X + " ; y1 - x1*m
Alterna. Cálculo de un circuito RLC
10 REM Circuito serie RLC
15 CLS
20 PRINT "Tenemos un circuito serie RLC, al cual se le aplica una
tension V de frecuencia f"
30 PRINT "Calcular Xl, Xc, Z en polar y binomial, I, Vr, Vl, Vc
y frecuencia de resonancia del circuito"
40 REM DATOS
50 INPUT "Valor de la Resistencia en ohmios"; r
60 INPUT "Valor de la Bobina en mili Henrios "; l
70 INPUT "Valor del Condensador en micro Faradios "; c
80 INPUT "Valor de pico de la tension "; v
90 INPUT "Frecuencia "; f
100 REM CALCULOS
110 Xl = 2 * 3.1416 * f * l * .001
120 PRINT "El valor de Xl es de "; Xl
130 Xc = 1 / (2 * 3.1416 * f * c * .000001)
140 PRINT "El valor de Xc es de "; Xc
150 x = Xl - Xc
160 PRINT "La Z en binomial "; r; "+"; x; "j"
170 z = SQR(r * r + x * x)
180 ar = ATN(x / r)
185 REM ar esta en radianes, se pasa a grados
190 ag = ar * 360 / 6.28
200 PRINT "La Z en polar vale "; z;
210 PRINT " y su angulo "; ag
220 i = v / z
230 alfa = 0 - ag
240 PRINT "La intensidad vale "; i; " y su angulo de desfase ";
alfa
250 Vr = r * i
260 PRINT "La Vr vale "; Vr; " y su angulo de desfase "; alfa
270 Vl = Xl * i
280 al = 90 + alfa
290 PRINT "La Vl vale "; Vl; " y su angulo de desfase "; al
300 Vc = Xc * i
310 ac = -90 + alfa
320 PRINT "La Vc vale "; Vc; " y su angulo de desfase "; ac
330 fr = 1 / (2 * 3.1416 * SQR(l * .001 * c * .000001))
340 PRINT "La frecuencia de resonancia del circuito es "; fr; "
Hz."
Compilación .BAS
---------> .EXE
Si has realizado los programas anteriores observarás
que el código fuente, o sea,
el programa en textos se guarda como un archivo .BAS . Y que para
ejecutarlo hace falta entrar en el QBASIC y luego Ejecutar el programa.
Ahora vamos a COMPILAR
el archivo .BAS, es decir a convertirlo
en .EXE, para que no haga falta tener
que entrar en el QBASIC para ejecutarlo. Para ello vamos a utilizar
un Compilador llamado FIRSTBAS de PowerBASIC.
Te lo bajarás comprimido .ZIP, cuando lo
descomprimas ejecuta FIRSTBAS.EXE.
1.- Mediante Load
y Directory localiza el archivo.BAS
que quieres compilar.
2.- Cuando lo tengas ve a Compile,
saldrá un desplegable.
3.- Elige Destination....
EXE file,
márcalo.
4.- Luego marca Compile
(o pulsa Alt -F9).
Tu archivo.BAS habrá creado otro archivo llamado archivo.EXE
que será ejecutable.
El menú se activa mediante la tecla <Alt>
y una letra (F, E, R, C)
Algunas funciones
|
ABS( ) Valor absoluto
PRINT ABS (-3) ......................................................
3
|
|
ASC ( ) Valor numérico
del código ASCII
PRINT ASC("A") .....................................................65
|
|
CHR ( ) Convierte un número
a caracter ASCII
PRINT CHR(97) .......................................................a
|
|
STR( ) Convierte un número
a caracter
a$ = STR(23)
|
|
VAL ( ) Convierte caracter
a número
X = VAL("345")
|
|
ATN ( ) Arco Tangente
SIN ( ) Seno
COS ( ) Coseno
El argumento debe estar en radianes.
Para pasar grados a radianes
rad = grad * 2 * 3.1416 / 360
|
| CLS Borra pantalla |
|
LEN (a$ ) Longitud de una
cadena caracter
a$ = "Visual Basic es un lenguaje de Programacion"
PRINT LEN(a$) ........................................................43
|
|
LEFT(a$,4 ) Devuelve los
4 caracteres de la izquierda
a$ = "Visual Basic es un lenguaje de Programacion"
PRINT LEFT (a$,4) .................................................Visu
|
|
RIGHT(a$,4 ) Devuelve los
4 caracteres de la derecha
a$ = "Visual Basic es un lenguaje de Programacion"
PRINT RIGHT (a$,4) .................................................cion
|
|
MID(a$,8,4) Devuelve 4 caracteres
a partir del octavo
a$ = "Visual Basic es un lenguaje de Programacion"
PRINT MID (a$,8,4) .................................................Basi
|
| PSET (x,y) Dibuja
un punto |
|
TIMER Número de segundos
que han pasado desde medianoche
PRINT TIMER ..................................................
45675
|
Bucle FOR NEXT
FOR n = 1 TO 10
Print n
Next n
|
FOR n = 1 TO 12
PRINT n * 2
Next n
|
FOR n = 1 TO 18 STEP 2
PRINT n
Next n
|
FOR n = 20 TO 1 STEP -3
PRINT n
Next n
|
a = 2
FOR n = 1 TO 10
PRINT a * n
Next n
|
FOR n = 20 TO 30
PRINT n; "........"; 2 * n
Next n
|
Bucles anidados
FOR n=1 TO 9
FOR a=1 TO 9
PRINT n * a
NEXT a
PRINT
NEXT n
|
El BASIC era un lenguaje en modo texto apropiado para MSDOS.
Cuando evolucionaron los sistemas operativos a modo ventana, como
Windows, el BASIC también cambió y se convirtió
en Visual Basic. Su programación y uso es en modo ventana,
de tal manera que los programas realizados son como los que utilizamos
normalmente en Windows.
|
¿Y cómo puedo
conseguir el Visual Basic?
La versión completa es comercial.
En cambio Microsoft distribuye una versión secundaria
(para hacer controles OCX) con la cuál podrás
hacer casi de todo, menos convertir un programa de vbs a ejecutable.exe.
Es muy válido para aprender.
Bajar VB5: vb5ccein.exe
(7,3 M)
Bajar Ayuda VB5: vb5ayuda.exe (2,8
M)
|
Te recomiendo que cuando conozcas un poco Visual
Basic, le eches un vistazo a:
Visual Basic Script, Macros
en Word con Visual Basic y ASP
Aquí te presento algunos documentos para aprender Visual
Basic.
1.- ¿Sabes hacer Ayudas.hlp de Windows?
Aquí te pongo un archivo donde lo explico. Y un ejemplo. Ayuda.rtf
(31 K) Ayuda.hlp (9 K)
2.- Tutorial sobre Visual Basic: Curso
VB6-CNC.zip (426 K)
3.- FundamentosVB.zip (528 K)
4.- Tutorial de QBASIC, qbasic.zip (37
K) (está en inglés)
5.- Visita la página de MundoVisual MundoVisual.zip
(369 K)
6.- Basic.doc (45 K) Resumen de instucciones
BASIC
7.- Calculo del NIF.doc (186 K):
Muchos programas en Visual Basic
8.- Instalacion de Visual
Basic.doc (35 K) Instalación de Visual Basic
9.- Empaquetamiento
de programas.doc Cómo empaquetar programas en Visual
Basic
10.- Preguntas sobre VB.doc
(67 K) ¿Sabrías contestar a esta preguntas?
11.- Colección de programas .exe.visualexes.zip
(453 K)
Nociones
de Visual Basic
Página siguiente (2) >>
|