lunes, 17 de marzo de 2014

8.- UN EJEMPLO EN EL ANTIGUO BASIC


Palabras reservadas (instrucciones del lenguaje)
Así como los lenguajes naturales usan un vocabulario de palabras para construir frases, el VBA tiene un vocabulario de palabras reservadas que son las instrucciones y no las podemos usar como nombres de variable. Un lenguaje natural tiene muchísimas palabras (el castellano tiene entre 300.000 y 400.000), un lenguaje como el VBA tiene apensas unas decenas, y las que usamos normalmente son muy pocas. Una lista completa se puede ver aquí, y esta es una lista de las más comunes:

Dim, Do, Double, Else, Elseif, End, Exit, For, Function, Get, Global, Gosub, Goto, if, Integer, Long, Module, Private, Public, REM, Resume, Return, Single, Step, Stop, String, Then,  To, True, Variant, Wend, While, Xor, =, <, >

Como ven, para programar basta con manejar un vocabulario de menos de 40 palabras, que se combinan para hacer las diferentes expresiones. ¡Cualquiera puede aprenderlas!

Para efectos pedagógicos solamente, vamos a agregar dos instrucciones que son del antiguo Basic: Input, que permite recibir datos entrados desde el teclado y Print, que muestra datos en pantalla. Estas dos instrucciones ya no se usan en VBA pero son intuitivas y fáciles de comprender así es que haremos algunos ejemplos usando código Basic antiguo, lo que además les sirve si después quieren aprender Python u otros lenguajes que usan estas instrucciones.

Usando antiguo código Basic, explicaremos como funciona el condicional If y los loop con For, veamos

Ejemplo con If - Then -End if
Ingresar los datos de cantidad de un artículo comprado y precio unitario, almacenarlos en dos variables que llamaremos (arbitrariamente) CantCompra y PrecUnit, determinar si la compra excede o no el cupo de 500000, si no lo excede, poner en pantalla "Compra Autorizada", si lo excede poner "No Autorizada-Excede Cupo", luego, en cualquiera de los casos, debe poner el mensaje "FIN", el código en Basic es el siguiente:

Input "Ingrese Cantidad", CantCompra
Input "Ingrese Precio Unitario", PrecUnit
TotVta=CantCompra*PrecUnit
If TotVta > 500000 Then
         Print "No Autorizada-Excede Cupo"
End If
If TotVta <= 500000 Then
         Print "Compra Autorizada"
End If
Print "FIN"

Comentario del código:
Este código contiene 10 líneas o "expresiones", equivalentes a 10 frases en lenguaje natural, se ejecutan secuencialmente, una después de otra de arriba a abajo, es una lista de instrucciones. Las primeras dos líneas piden que entremos datos a las variables CantCompra y PrecUnit usando el teclado, para ello muestran dos mensajes constantes que son "Ingrese Cantidad" e "Ingrese Precio Unitario", los mensajes y valores de texto (String) constantes se escriben entre comillas para distinguirlos de las variables. Su valor es siempre el mismo. Las variables en cambio pueden almacenar cualquier valor que les ingresemos, o sea sus valores son distintos cada vez.

Las variables generalmente pueden recibir su valor de dos maneras: ingresadas por el usuario (por ejemplo desde el teclado) o generadas por el programa mediante un cálculo o una instrucción. En la línea 3 se define una nueva variable que le pusimos nombre TotVta y se genera por el programa mediante un cálculo: multiplicando la cantidad por el precio.

Las líneas 4, 5 y 6 comparan el valor de TotVta con el valor constante de 500000 (como es un número, no va entre comillas, si lo ponemos entre comillas sería tratado como String y no podríamos hacer la comparación). Entonces la condición es ¿TotVta es mayor que 500000?, si es mayor coloca un mensaje que niega la venta y si no es mayor salta a la instrucción siguiente.

Las líneas 7, 8, y 9 comparan nuevamente el valor de TotVta con el valor constante de 500000, pero esta vez la condición es ¿TotVta es menor o igual a 500000? (noten que la condición en este caso es menor o igual, o sea dos en una), si se cumple entonces autoriza la venta.

En cualquiera de los casos salta a la instrucción 10 que coloca en pantalla el mensaje constante "FIN"

Este ejemplo es trivial y no está optimizado, el código se puede mejorar un poquito -lo dejo como ejercicio- pero lo escribí así para una máxima claridad pedagógica. Ese código lo podemos representar en un Diagrama de Flujo que se muestra al comienzo de esta entrada (doble clic para verlo más grande).

Ejemplo con For - To - Next

For i = 1 to 100
      print "Pasada número ", i
Next i
Print "Fin de las pasadas"

Al ejecutarse este programa mostrara 100 mensajes del tipo: "Pasada número 1", "Pasada número 2", "Pasada número 3"... etc. hasta "Pasada número 100". Después de eso mostrará un solo mensaje que dirá  "Fin de las pasadas".


NOTA IMPORTANTE: ¿Se han fijado que todas las instrucciones que van "dentro de un If o un ciclo For aparecen "corridas" hacia la derecha? esto se llama "indentación" y aunque en VBA no es obligatorio es muy importante escribir siempre así es código, para su claridad de lectura, todo lo que sigue a un If o un For se escribe corrido un tab a la derecha, siempre (en otros lenguajes como Python esto es obligatorio).

38 comentarios:

  1. En VBA las variables no pueden poseer los nombres que existen en las instrucciones, como por ejemplo: Dim, Do, Double, Else, Elseif, End, Exit, For, Function, Get, Global, Gosub, Goto, if, Integer, Long, Module, Private, Public, REM, Resume, Return, Single, Step, Stop, String, Then, To, True, Variant, Wend, While, Xor, =, <, >
    Además se puede programar manejando un vocabulario menor de 40 palabras que combinadas producen diferentes expresiones.
    Para los ejemplos se utilizaron dos instrucciones del antiguo Basic (no se usan en VBA, pero sirven para Python): Input (recibe datos entrados del teclado) y Print (muestra datos en pantalla).

    If - Then -End if
    Ingresar los datos de cantidad de un artículo comprado y precio unitario, almacenarlos en dos variables llamadas CantCompra y PrecUnit, determinar si la compra excede o no el cupo de 500000, si no lo excede, poner en pantalla "Compra Autorizada", si lo excede poner "No Autorizada-Excede Cupo", luego se debe poner el mensaje "FIN”:

    Input "Ingrese Cantidad", CantCompra
    Input "Ingrese Precio Unitario", PrecUnit
    TotVta=CantCompra*PrecUnit
    If TotVta > 500000 Then
    Print "No Autorizada-Excede Cupo"
    End If
    If TotVta <= 500000 Then
    Print "Compra Autorizada"
    End If
    Print "FIN"

    Este código tiene 10 expresiones y son una lista de instrucciones secuenciales . Las primeras dos líneas piden ingreso de datos a las variables CantCompra y PrecUnit usando el teclado, para ello muestran dos mensajes que son "Ingrese Cantidad" e "Ingrese Precio Unitario". Su valor es siempre el mismo, a diferencia de las variables (sus datos son distintos cada vez).
    Las variables pueden recibir su valor de dos maneras:
    1.- ingresadas por el usuario (desde el teclado)
    2.- generadas por el programa (mediante cálculos o una instrucciones)
    En la línea 3 se define una variable con el nombre TotVta que se genera por el programa mediante un cálculo: multiplica cantidad por precio.
    Las líneas 4, 5 y 6 comparan el valor de TotVta con el valor constante de 500000. Si la condición es mayor que 500000 coloca un mensaje que niega la venta y si no es mayor salta a la instrucción siguiente.
    Las líneas 7, 8, y 9 comparan el valor de TotVta con el valor constante de 500000. Si condición es menor o igual a 500000 entonces autoriza la venta.
    En cualquiera de los casos salta a la instrucción 10 que coloca en pantalla el mensaje constante "FIN"

    For - To – Next

    For i = 1 to 100
    print "Pasada número ", i
    Next i
    Print "Fin de las pasadas"


    Al ejecutarse este programa mostrara 100 mensajes del tipo: "Pasada número 1", "Pasada número 2", "Pasada número 3"... etc. hasta "Pasada número 100". Al finalizar un mensaje dirá "Fin de las pasadas".
    Pregunta:
    ¿Cómo podemos llevar este ejemplo a VBA (ya que no tendria imput ni print)?

    Juan Pablo Domínguez (INGESIC)

    ResponderEliminar
  2. Hola Juan Pablo, con la aparición de los sistemas operativos basados en ventanas en lugar de pantallas negras con solo texto, que tienen elementos activos que responden a un clik, doble click, a la tecla Enter, etc. Input y print pasaron de moda en los lenguajes visuales (aún se usan en muchos otros lenguajes que funcionan en modo de texto como Python por ejemplo).

    ¿Como se reemplazan? con un solo objeto que es -por ejemplo- TextBox1.Text donde TextBox1 es el nombre del objeto que VBA coloca por defecto (podemos cambiarlo por cualquier otro si queremos) y funciona como input si se escribe a la derecha de una instrucción y como print si se escribe a la izquierda, Te pongo el ejemplo en Basic antiguo y VBA para que se entienda claro

    Basic antiguo
    Input, "Nombre", Nomb
    VBA
    Nomb=Textbox1.Text
    (suponiendo que en Textbox1.Text ingresas el nombre, en este caso al lado lo pones un Label1 cuya propiedad Caption sea "Nombre")

    Print "Nombre",Nomb
    TxtBox1.Text=Nomb
    SUponiendo que el programa en alguna parte calcula o define la variable Nomb como el nombre, también en este caso le puedes poner un Label "Nombre" al lado del TextBox

    ResponderEliminar
  3. Entendemos que al igual que los lenguajes naturales pueden formar palabras, el VBA también puede crear palabras que son las instrucciones. Estas no se puede usar como variables porque son palabras reservadas.

    Sólo se necesitan aprender unas 40 palabras para combinarlas y lograr expresiones.

    Es interesante ver como se puede hacer un código muy útil con muy pocas palabras!.

    sabemos que las variables las pueden ingresar los usuarios pero ¿como puedo hacer para que se ejecuten desde un programa sólo? por ejemplo yo quiero hacer un macro y esa "instrucción" debe ejecutarse sólo después de que el usuario coloque las variables. ¿para eso debo tener un programa ya hecho?.¿esto se puede hacer con python no?

    Otra pregunta "ejemplo for- to- next-" ¿esto es para que se repita una acción?

    saludos profesor

    ResponderEliminar
  4. Hola Nicolás
    Las variables pueden obtener sus valores (el valor de sus propiedades) porque las ingresan desde el teclado pero también porque son calculadas dentro del programa, por ejemplo en alguna parte del código yo podría escribir

    tot=cantid*precio

    donde cantid y precio son ingresados por el usuario y tot es calculado por el programa cuando se ejecuta. También podemos cambiar el valor de las variables ajustando las propiedades cuando diseñamos la interfaz de usuario (la userform), al cambiar la propiedad label.caption o userform.caption por ejemplo le estamos dando valores a esa propiedad durante el diseño. Incluso se podrían obtener valores para las variables desde Internet o con aparatos de medición, etc. los valores se pueden obtener desde varias fuentes.

    Parece que tu pregunta es si un programa puede arrancar solo, sin que el usuario no igrese nada, claro que si y eso se hace con instrucciones de autoejecución o auto-open como las que vimos en el código del virus de macro que estudiamos.

    Los ciclos for-to-next son para repetir una acción, generando una variable que va incrementando o decreciendo su valor. por ejemplo

    for i=1 to 10
    print i, "hola"
    next 1

    Mostrará

    1 hola
    2 hola
    3 hola
    ...etc.. hasta
    10 hola

    Y esta otra

    for i=10 to 1 step -1
    print i, "hola "
    next i

    mostrará

    10 hola
    9 hola
    8 hola
    ...etc.. hasta

    1 hola

    ResponderEliminar
  5. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
  6. Palabras reservadas del VBA:
    Dim, Do, Double, Else, Elseif, End, Exit, For, Function, Get, Global, Gosub, Goto, if, Integer, Long, Module, Private, Public, REM, Resume, Return, Single, Step, Stop, String, Then, To, True, Variant, Wend, While, Xor, =, <, >

    Instrucciones Input y Print. (Basic antiguo.)
    Input: permite recibir datos entrados desde el teclado.
    Print: Muestra datos en pantalla.

    En una instrucción las comillas se usan para disinguir las palabras de las variables.
    Las variables generalmente pueden recibir su valor de dos maneras: ingresadas por el usuario (por ejemplo desde el teclado) o generadas por el programa mediante un cálculo o una instrucción.

    Ejemplo con If - Then - End

    Input "Ingrese Cantidad", CantCompra
    Input "Ingrese Precio Unitario", PrecUnit
    TotVta=CantCompra*PrecUnit
    If TotVta > 500000 Then
    Print "No Autorizada-Excede Cupo"
    End If
    If TotVta <= 500000 Then
    Print "Compra Autorizada"
    End If
    Print "FIN"

    Ejemplo con For - To - Next

    For i = 1 to 100
    print "Pasada número ", i
    Next i
    Print "Fin de las pasadas"

    ES MUY IMPORTANTE ESCRIBIR SIEMPRE CON INDENTACIÓN, ES DECIR, TODO LO QUE SIGUE A UN IF O UN FOR SE ESCRIBE CORRIDO UN TAB A LA DERECHA, ESTO PARA SU CLARIDAD DE LECTURA.

    Preguntas:
    .- ¿El ejemplo con For - To - Next, también es del Basic Antiguo?
    .-¿ En que casos se programaría con For - To - Next? y en cuales con If?

    Celeste Ayelén Soriano INGESIC

    ResponderEliminar
  7. Hola Celeste,

    El ejemplo es también en Basic antiguo porque tiene una instrucción "print" recuerda que las instrucciones "print" e "input" en VAB son reemplazadas por Textbox.Text y otras similares

    Los ciclos For- to next se usan siempre que necesites hacer varias operaciones repetidas, por ejemplo leer todos los datos de una tabla, uno por uno.

    La instrucción if-then se usa cuando debes tomar una decisión basada en si una condición se cumple o no. Siguiendo el ejemplo anterios, si estás leyendo todos los datos de una lista y quieres que se muestren solo los que cumplen una condición, podría ser un inventario donde quieres listar solo los productos de un determinado proveedor y no los otros productos

    ResponderEliminar
  8. Palabras reservadas (instrucciones del lenguaje)
    El VBA tiene un vocabulario de palabras reservadas que son las instrucciones y no las podemos usar como nombres de variable. Este lenguaje tiene apenas unas decenas, y las que usamos normalmente son muy pocas. Algunas palabras como - Dim, Do, Double, Else, Elseif, End, Exit, For, Function, Get, Global, Gosub, Goto, if, Integer, Long, Module, Private, Public, REM, Resume, Return, Single, Step, Stop, String, Then, To, True, Variant, Wend, While, Xor, =, <, > - Son ejemplos del lenguaje VBA.
    Existen dos instrucciones del antiguo basic y son Input, que permite recibir datos entrados desde el teclado y Print, que muestra datos en pantalla. No se utilizan en el VBA, pero son fáciles de comprender

    Ejemplo con If - Then -End if
    Se ingresa los datos del articulo comprado y se almacenan en dos variables que se llamaran CantCompra y PrecUnit, luego, se determinara si la compra excede o no el cupo de 500000, si no lo excede, se pondrá en la pantalla "Compra Autorizada", si lo excede se pondrá "No Autorizada-Excede Cupo", luego, en cualquiera de los casos, debe poner el mensaje "Fin".
    El código seria el siguiente:
    Input "Ingrese Cantidad", CantCompra
    Input "Ingrese Precio Unitario", PrecUnit
    TotVta=CantCompra*PrecUnit
    If TotVta > 500000 Then
    Print "No Autorizada-Excede Cupo"
    End If
    If TotVta <= 500000 Then
    Print "Compra Autorizada"
    End If
    Print "FIN"

    Las variables reciben su valor de dos maneras:
    1) ingresadas por el usuario (por ejemplo desde el teclado)
    2) generadas por el programa mediante un cálculo o una instrucción.

    Ejemplo con For - To - Next
    For i = 1 to 100
    print "Pasada número ", i
    Next i
    Print "Fin de las pasadas"

    Al ejecutarse este programa mostrara 100 mensajes del tipo: "Pasada número 1", "Pasada número 2", "Pasada número 3"... etc. hasta "Pasada número 100". Después de eso mostrará un solo mensaje que dirá "Fin de las pasadas".

    Profesor:
    1) El VBA y VB Pueden programar el ejemplo For – To – Next?
    2) Viendo el listado que puso sobre las palabras del VB Cual es la diferencia entre las palabras claves reservadas y las NO reservadas?. ¿Acaso si en una programación pongo una palabra NO reservada me perjudicaría la acción que estoy haciendo?

    ResponderEliminar
  9. 1.- Por supuesto, las instruccionaes if y for-to-next (en distintos formatos pero son lo mismo) existen prácticamente en todos los lenguajes de programación que yo conozco, desde los más antiguos a los más modernos. El VBA y el VB tienen código prácticamente idéntico y ambos tienen esas dos instrcciones, igualitas.

    2.-Se habla de "palabras reservadas" porque no se pueden usar como nombres de variables, siempre que aparece "for" por ejemplo el compilador (VB) o el intérprete (VBA) la interpretan como una instrucción. Si tu usas por ejemplo
    for=cant*valor

    Te aprecerá un mensaje de error del tipo "nombre de variable ilegal" o similar, eso quiere decir "reservada", que no puedes usarla como nombre de variable.

    ResponderEliminar
  10. el VBA tiene un vocabulario de palabras reservadas que son las instrucciones y no la podemos utilizar como nombres de variables tiene un vocabularios sencillo (de muy pocas palabras) y las mas comunes son :

    Dim, Do, Double, Else, Elseif, End, Exit, For, Function, Get, Global, Gosub, Goto, if, Integer, Long, Module, Private, Public, REM, Resume, Return, Single, Step, Stop, String, Then, To, True, Variant, Wend, While, Xor, =, <, >

    al tener un vocabularios de instrucciones para cualquier persona es fácil manejar el VBA

    en el antiguo BASIC se encuentran dos instrucciones :Input, que permite recibir datos entrados desde el teclado y Print, que muestra datos en pantalla. Estas dos instrucciones ya no se usan en VBA pero son intuitivas y fáciles de comprender

    Ejemplo con If - Then -End if
    almacenan en dos variables que llamaremos CantCompra y PrecUnit, determinar si la compra excede o no el cupo de 500000, si no lo excede, poner en pantalla "Compra Autorizada", si lo excede poner "No Autorizada-Excede Cupo", luego, en cualquiera de los casos, debe poner el mensaje "FIN
    el código que se debe ejecutar es el siguiente:
    Input "Ingrese Cantidad", CantCompra
    Input "Ingrese Precio Unitario", PrecUnit
    TotVta=CantCompra*PrecUnit
    If TotVta > 500000 Then
    Print "No Autorizada-Excede Cupo"
    End If
    If TotVta <= 500000 Then
    Print "Compra Autorizada"
    End If
    Print "FIN"

    Las variables pueden recibir su valor de dos maneras:
    1.- ingresadas por el usuario (desde el teclado)
    2.- generadas por el programa (mediante cálculos o una instrucciones)

    Ejemplo con For - To - Next

    For i = 1 to 100
    print "Pasada número ", i
    Next i
    Print "Fin de las pasadas"

    Al ejecutarse este programa mostrara 100 mensajes del tipo: "Pasada número 1", "Pasada número 2", "Pasada número 3"... etc. hasta "Pasada número 100". Después de eso mostrará un solo mensaje que dirá "Fin de las pasadas".

    Felipe castro ingesic

    ResponderEliminar
  11. Palabras reservadas (instrucciones del lenguaje)
    el VBA tiene un vocabulario de palabras reservadas que son las instrucciones y no las podemos usar como nombres de variable. usamos normalmente son muy pocas. esta es una lista de las más comunes:
    Dim, Do, Double, Else, Elseif, End, Exit, For, Function, Get, Global, Gosub, Goto, if, Integer, Long, Module, Private, Public, REM, Resume, Return, Single, Step, Stop, String, Then, To, True, Variant, Wend, While, Xor, =, <, >

    Para los ejemplos se utilizaron dos instrucciones del antiguo Basic (no se usan en VBA, pero sirven para Python): Input (recibe datos entrados del teclado) y Print (muestra datos en pantalla).
    Input "Ingrese Cantidad", CantCompra
    Input "Ingrese Precio Unitario", PrecUnit
    TotVta=CantCompra*PrecUnit
    If TotVta > 500000 Then
    Print "No Autorizada-Excede Cupo"
    End If
    If TotVta <= 500000 Then
    Print "Compra Autorizada"
    End If
    Print "FIN"
    Este código tiene 10 expresiones y son una lista de instrucciones secuenciales . Las primeras dos líneas piden ingreso de datos a las variables CantCompra y PrecUnit usando el teclado, para ello muestran dos mensajes que son "Ingrese Cantidad" e "Ingrese Precio Unitario". Su valor es siempre el mismo, a diferencia de las variables (sus datos son distintos cada vez).
    Las variables pueden recibir su valor de dos maneras:
    1.- ingresadas por el usuario (desde el teclado)
    2.- generadas por el programa (mediante cálculos o una instrucciones)
    En la línea 3 se define una variable con el nombre TotVta que se genera por el programa mediante un cálculo: multiplica cantidad por precio.
    Las líneas 4, 5 y 6 comparan el valor de TotVta con el valor constante de 500000. Si la condición es mayor que 500000 coloca un mensaje que niega la venta y si no es mayor salta a la instrucción siguiente.
    Las líneas 7, 8, y 9 comparan el valor de TotVta con el valor constante de 500000. Si condición es menor o igual a 500000 entonces autoriza la venta.
    En cualquiera de los casos salta a la instrucción 10 que coloca en pantalla el mensaje constante "FIN"

    Ejemplo con For - To - Next

    For i = 1 to 100
    print "Pasada número ", i
    Next i
    Print "Fin de las pasadas"

    Al ejecutarse este programa mostrara 100 mensajes del tipo: "Pasada número 1", "Pasada número 2", "Pasada número 3", hasta "Pasada número 100". Después de eso mostrará un solo mensaje que dirá "Fin de las pasadas".

    claudia choque INGESIC

    ResponderEliminar
  12. Para que podamos utilizar el VBA debes darle instrucciones de acuerdo al lenguaje que este entiende; y para ello tiene un lenguaje reservado de las cuales no podemos utilizarlo como nombres de variables estas son las más comunes : Dim, Do, Double, Else, Elseif, End, Exit, For, Function, Get, Global, Gosub, Goto, if, Integer, Long, Module, Private, Public, REM, Resume, Return, Single, Step, Stop, String, Then, To, True, Variant, Wend, While, Xor, =,
    Estas instrucciones son del antiguo basic, son fáciles de comprender , está el Input : que permite recibir datos entrados desde el teclado y Print:, que muestra datos en pantalla.
    Ejemplo con If - Then -End if
    Input "Ingrese Cantidad", CantCompra
    Input "Ingrese Precio Unitario", PrecUnit
    TotVta=CantCompra*PrecUnit
    If TotVta > 500000 Then
    Print "No Autorizada-Excede Cupo"
    End If
    If TotVta <= 500000 Then
    Print "Compra Autorizada"
    End If
    Print "FIN"
    Estas instrucciones se van ejecutando secuencialmente una tras otra, de arriba abajo. Las dos 1° líneas requiere que ingresemos datos directamente del teclado para las variables (esos datos que ingresemos serán constantes). Los mensajes y valores de texto constantes se escriben entre comillas para distinguirlos de las variables; sin embargo las variables podrán cambiar y exiten dos maneras de para que esta reciba su valor.. la primera es ingresada directamente por el usuario y la segunda se generaría por el programa mediante un calculo o instrucción .

    ¿Las palabras reservadas (más comunes ) son las mismas en VB y VBA ?
    ¿Porque en el ejemplo pone a veces el”PRINT “ con un tab y en otras no? Eso no afecta a la lectura del código?



    KAREN CALLE LOPEZ (ISIC)

    ResponderEliminar
  13. Hola Karen, las palabras reservadas son exactamente las mismas

    En Visual Basic y VBA los tab son solo para presentar bien el código, si se colocan con tab o no depende si la instrucción está "anidada" dentro de otra rutina, un if o un ciclo for. Los tab se usan para entender mejor el gódigo
    , en los comentarios habrás notado que no aparecen, pero eso es porque eel editor de comentarios de Blogger los borra.

    En VB y VBA no son obligatorios, en otros lenguajes modernos si no se usan tab te aparece error, son parte de la sintaxis, para obligar a los programadores a escribir claro e indentar adecuadamente.

    ResponderEliminar
  14. Palabras reservadas (instrucciones del lenguaje)
    VBA tiene un vocabulario de palabras reservadas que son las instrucciones y no las podemos usar como nombres de variable.
    Dim, Do, Double, Else, Elseif, End, Exit, For, Function, Get, Global, Gosub, Goto, if, Integer, Long, Module, Private, Public, REM, Resume, Return, Single, Step, Stop, String, Then, To, True, Variant, Wend, While, Xor, =, <, >

    Para programar basta con manejar un vocabulario de menos de 40 palabras, que se combinan para hacer las diferentes expresiones.
    Se van a agregar dos instrucciones que son del antiguo Basic: Input (permite recibir datos entrados desde el teclado) y Print (muestra datos en pantalla) Ambas ya no se usan en VBA pero son intuitivas y fáciles de comprender así es que haremos algunos ejemplos usando código Basic antiguo.

    Ejemplo con If - Then -End if
    Ingresar los datos de cantidad de un artículo comprado y precio unitario, almacenarlos en dos variables llamadas CantCompra y PrecUnit, determinar si la compra excede o no el cupo de 500000, si no lo excede, poner en pantalla "Compra Autorizada", si lo excede poner "No Autorizada-Excede Cupo", luego poner el mensaje "FIN", el código en Basic es el siguiente:

    Input "Ingrese Cantidad", CantCompra
    Input "Ingrese Precio Unitario", PrecUnit
    TotVta=CantCompra*PrecUnit
    If TotVta > 500000 Then
    Print "No Autorizada-Excede Cupo"
    End If
    If TotVta <= 500000 Then
    Print "Compra Autorizada"
    End If
    Print "FIN"

    Comentario del código:
    Este código contiene 10 líneas o "expresiones", se ejecutan secuencialmente Las primeras dos líneas piden que entremos datos a las variables CantCompra y PrecUnit usando el teclado, para ello muestran dos mensajes :"Ingrese Cantidad" e "Ingrese Precio Unitario", los mensajes y valores de texto (String) constantes se escriben entre comillas para distinguirlos de las variables. Su valor es siempre el mismo. Las variables en cambio pueden almacenar cualquier valor que ingresemos

    Las variables generalmente pueden recibir su valor de dos maneras: -ingresadas por el usuario (por ejemplo desde el teclado)
    -generadas por el programa mediante un cálculo o una instrucción.
    En la línea 3 se define una nueva variable que le pusimos nombre TotVta y se genera por el programa mediante un cálculo: multiplicando la cantidad por el precio.
    Las líneas 4, 5 y 6 comparan el valor de TotVta con el valor constante de 500000 Entonces la condición es ¿TotVta es mayor que 500000?, si es mayor coloca un mensaje que niega la venta y si no es mayor salta a la instrucción siguiente.
    Las líneas 7, 8, y 9 comparan el valor de TotVta con el valor constante de 500000, la condición es ¿TotVta es menor o igual a 500000? si se cumple entonces autoriza la venta.

    En cualquiera de los casos salta a la instrucción 10 que coloca en pantalla el mensaje constante "FIN"

    Ejemplo con For - To - Next
    For i = 1 to 100
    print "Pasada número ", i
    Next i
    Print "Fin de las pasadas"

    Al ejecutarse este programa mostrara 100 mensajes del tipo: "Pasada número 1", "Pasada número 2", "Pasada número 3"... etc. hasta "Pasada número 100". Después de eso mostrará un solo mensaje que dirá "Fin de las pasadas".

    Allyson Antezana INGESIC

    ResponderEliminar
  15. En VBA existe un vocabulario de palabras que son reservadas para las instrucciones, las cuales no puedes ser nombres de variable. Contiene apenas unas decenas de palabras y pocas de ellas se utilizan. Las mas comunes son : Dim, Do, Double, Else, Elseif, End, Exit, For, Function, Get, Global, Gosub, Goto, if, Integer, Long, Module, Private, Public, REM, Resume, Return, Single, Step, Stop, String, Then, To, True, Variant, Wend, While, Xor, =, <, >

    Instrucciones básicas para comprender mejor son Input, que permite recibir datos entrados desde el teclado y Print, que muestra datos en pantalla.

    Ejemplo con If - Then - End if
    Ingresando los datos de cantidad de un artículo comprado y precio unitario, almacenarlos en dos variables que llamaremos CantCompra y PrecUnit. Si No excede se debe poner "Compra Autorizada", Si excede se debe poner "No Autorizada- Excede Cupo". En cualquier caso se debe poner "FIN".

    Input "Ingrese Cantidad", CantCompra
    Input "Ingrese Precio Unitario", PrecUnit
    TotVta=CantCompra*PrecUnit
    If TotVta > 500000 Then
    Print "No Autorizada-Excede Cupo"
    End If
    If TotVta <= 500000 Then
    Print "Compra Autorizada"
    End If
    Print "FIN"

    Las líneas 1 y 2 piden que entremos datos a las variables CantCompra y PrecUnit usando el teclado. Los mensajes y valores de texto (String) constantes se escriben entre comillas para distinguirlos de las variables y este puede almacenar cualquier valor que les ingresemos.

    En la línea 3 se define una nueva variable que le pusimos nombre TotVta y se genera por el programa mediante un cálculo: multiplicando la cantidad por el precio.

    Las líneas 4, 5 y 6 comparan el valor de TotVta con el valor constante de 500000
    la condición es ¿TotVta es mayor que 500000?, si es mayor coloca un mensaje que niega la venta y si no es mayor salta a la instrucción siguiente.

    Las líneas 7, 8, y 9 comparan nuevamente el valor de TotVta con el valor constante de 500000, pero esta vez la condición es ¿TotVta es menor o igual a 500000?, si se cumple entonces autoriza la venta.

    En cualquiera de los casos salta a la instrucción 10 que coloca en pantalla el mensaje constante "FIN"
    Ejemplo con For - To - Next

    For i = 1 to 100
    print "Pasada número ", i
    Next i
    Print "Fin de las pasadas"

    Al ejecutarse este programa mostrara 100 mensajes del tipo: "Pasada número 1", "Pasada número 2", "Pasada número 3"... etc. hasta "Pasada número 100".Después de eso mostrará un solo mensaje que dirá "Fin de las pasadas".

    Profesor mi pregunta es; Que si estamos utilizando el código Basic antiguo. ¿En el más actualizado cuales vendrían siendo las diferencias más relevantes. Se podría decir que es lo mismo pero dicho de otra forma o simplemente aporta mucho más que el Basic antiguo?

    ResponderEliminar
  16. Buena pregunta, hice el ejemplo en Basic antiguo porque es más fácil de entender a primera vista, se parece mucho al "seudocódigo" que se usa para enseñar a programar. La diferencia entre Basic Antiguo y VBA es que el antiguo no era visual así es que había que escribir cientos o miles de líneas para dibujar una interfaz de usuario simple (una ventana por ejemplo) el VBA trae eso incorporado en los objetos como los textbox, commandbutton, label, combobox, etc.

    ResponderEliminar
  17. Palabras reservadas (instrucciones del lenguaje)
    el VBA tiene un vocabulario de palabras reservadas que son las instrucciones.Un lenguaje natural tiene muchas palabras mientras que un lenguaje como el VBA tiene unas decenas , y las que usamos normalmente son :
    Dim, Do, Double, Else, Elseif, End, Exit, For, Function, Get, Global, Gosub, Goto, if, Integer, Long, Module, Private, Public, REM, Resume, Return, Single, Step, Stop, String, Then, To, True, Variant, Wend, While, Xor, =, <, >

    Usando antiguo código Basic, explicaremos como funciona el condicional If y los loop con For, veamos

    Ejemplo con If - Then -End if

    Input "Ingrese Cantidad", CantCompra
    Input "Ingrese Precio Unitario", PrecUnit
    TotVta=CantCompra*PrecUnit
    If TotVta > 500000 Then
    Print "No Autorizada-Excede Cupo"
    End If
    If TotVta <= 500000 Then
    Print "Compra Autorizada"
    End If
    Print "FIN"

    Ejemplo con For - To - Next

    For i = 1 to 100
    print "Pasada número ", i
    Next i
    Print "Fin de las pasadas"

    -¿VBA tiene menos palabras que VB o tienen la misma cantidad?

    -En los ejemplos que dio algunos estan entre comillas ,¿es muy importante poner o no las comillas?

    Alejandra Díaz (ISIC)

    ResponderEliminar
  18. VBA y VB tienen prácicamente el mismo set de instrucciones, solo mínias diferencias y muy específicas.

    Las comillas son imprtntísimas porque definen que la palabra que está entre comillas es un string y no un nombre de variable (como lo tomaía el programa si estuviera sin comillas). Si no coloca comillas al asignar valor a un string el intérprete lo tomará como un nombre de variable o bien arrojara un error del tipo "nombre de variable no válido"

    ResponderEliminar
  19. Con este ejemplo me queda mucho más claro como funcionan las instrucciones. La única duda que me queda es que las instrucciones están escritas en ingles, para poder yo usarlo quizás sin tener demasiado vocabulario en inglés, lo puedo traducir directamente al español? o será que las palabras no siempre llevan el significado directo?.

    ResponderEliminar
  20. Buena pregunta, las instrucciones no están en ingles sino que en un lenguaje llamado "Visual Basic" o "Visual Basic Para Aplicaciones", solo para efectos de nemotectia se usan palabras en inglés relacionadas con su significado, por ejemplo "IF" que en inglés significa "Si" también podría haber sido definida como "XXKRT" por ejemplo, pero sería mucho más difícil para el programador acordarse para que sirve. No puedes traducir las instrucciones al español de ninguna manera, o no puedes usarlas traducidas, como los que desarrollaron el lenguaje hablaban inglés las instrucciones son esas y no otras

    ResponderEliminar
  21. Entiendo que al igual que una simple formula de Excel, toda vez que quiero mantener una constante, debo dejarlo entre "comillas" y en el caso de Excel es con el signo $. Importante es tener en cuenta que podemos determinar condiciones combinadas y eso acotaría en varias líneas nuestra nuestro código.

    ResponderEliminar
  22. El tipo de las variables se puede definir usando una sentencia Dim o Global en un módulo o bien colocando ciertos símbolos al comienzo de su nombre, cuando una variable comienza por el símbolo $, por ejemplo $Pesos, eso indica que su contenido debe ser tratado como string, por ejemplo si $precio="200" y $cantidad="150" al poner $precio*$cantidad da un error (tipos de variable incorrectos) y al poner $precio+$cantidad da "200150"

    Las constantes son valores fijos, por ejemplo tipocambio=500 donde tipocambio tiene un valor fijo que es 500, no cambia nunca

    ResponderEliminar
  23. Hola profe

    Ejemplo en el antiguo Basic

    El VBA tiene un vocabulario de palabras reservadas que son las instrucciones y no las podemos usar como nombres de variable. Un lenguaje natural tiene muchísimas palabras , un lenguaje como el VBA tiene apenas unas decenas, y las que usamos son muy pocas. Algunas de estas son:

    Dim, Do, Double, Else, Elseif, End, Exit, For, Function, Get, Global, Gosub, Goto, if, Integer, Long, Module, Private, Public, REM, Resume, Return, Single, Step, Stop, String, Then, To, True, Variant, Wend, While, Xor, =, <, >

    Para programar basta con manejar un vocabulario de menos de 40 palabras, que se combinan para hacer las diferentes expresiones.

    Solo se agregaran dos instrucciones que son del antiguo Basic:
    *Input: Que permite recibir datos entrados desde el teclado.
    Print: Que muestra datos en pantalla.
    Estas dos instrucciones ya no se usan en VBA pero son intuitivas y fáciles de comprender, además sirve si después quieren aprender Python u otros lenguajes que usan estas instrucciones.

    saludos
    Carolina Vega (PAE)

    ResponderEliminar
  24. Palabras reservadas (instrucciones del lenguaje)
    Así como los lenguajes naturales usan un vocabulario de palabras para construir frases, el VBA tiene un vocabulario de palabras reservadas que son las instrucciones y no las podemos usar como nombres de variable. Un lenguaje natural tiene muchísimas palabras (el castellano tiene entre 300.000 y 400.000), un lenguaje como el VBA tiene apenas unas decenas, y las que usamos normalmente son muy pocas. Una lista completa se puede ver aquí, y esta es una lista de las más comunes:
    Dim, Do, Double, Else, Elseif, End, Exit, For, Function, Get, Global, Gosub, Goto, if, Integer, Long, Module, Private, Public, REM, Resume, Return, Single, Step, Stop, String, Then, To, True, Variant, Wend, While, Xor, =, <, >
    Para programar basta con manejar un vocabulario de menos de 40 palabras, que se combinan para hacer las diferentes expresiones. ¡Cualquiera puede aprenderlas!
    Para efectos pedagógicos solamente, vamos a agregar dos instrucciones que son del antiguo Basic: Input, que permite recibir datos entrados desde el teclado y Print, que muestra datos en pantalla. Estas dos instrucciones ya no se usan en VBA pero son intuitivas y fáciles de comprender así es que haremos algunos ejemplos usando código Basic antiguo, lo que además les sirve si después quieren aprender Python u otros lenguajes que usan estas instrucciones.
    Usando antiguo código Basic, explicaremos cómo funciona el condicional If y los loop con For, veamos
    Ejemplo con If - Then -End if
    Ingresar los datos de cantidad de un artículo comprado y precio unitario, almacenarlos en dos variables que llamaremos (arbitrariamente) CantCompra y PrecUnit, determinar si la compra excede o no el cupo de 500000, si no lo excede, poner en pantalla "Compra Autorizada", si lo excede poner "No Autorizada-Excede Cupo", luego, en cualquiera de los casos, debe poner el mensaje "FIN", el código en Basic es el siguiente:
    Input "Ingrese Cantidad", CantCompra
    Input "Ingrese Precio Unitario", PrecUnit
    TotVta=CantCompra*PrecUnit
    If TotVta > 500000 Then
    Print "No Autorizada-Excede Cupo"
    End If
    If TotVta <= 500000 Then
    Print "Compra Autorizada"
    End If
    Print "FIN"

    ResponderEliminar
  25. Comentario del código:
    Este código contiene 10 líneas o "expresiones", equivalentes a 10 frases en lenguaje natural, se ejecutan secuencialmente, una después de otra de arriba a abajo, es una lista de instrucciones. Las primeras dos líneas piden que entremos datos a las variables CantCompra y PrecUnit usando el teclado, para ello muestran dos mensajes constantes que son "Ingrese Cantidad" e "Ingrese Precio Unitario", los mensajes y valores de texto (String) constantes se escriben entre comillas para distinguirlos de las variables. Su valor es siempre el mismo. Las variables en cambio pueden almacenar cualquier valor que les ingresemos, o sea sus valores son distintos cada vez.
    Las variables generalmente pueden recibir su valor de dos maneras: ingresadas por el usuario (por ejemplo desde el teclado) o generadas por el programa mediante un cálculo o una instrucción. En la línea 3 se define una nueva variable que le pusimos nombre TotVta y se genera por el programa mediante un cálculo: multiplicando la cantidad por el precio.
    Las líneas 4, 5 y 6 comparan el valor de TotVta con el valor constante de 500000 (como es un número, no va entre comillas, si lo ponemos entre comillas sería tratado como String y no podríamos hacer la comparación). Entonces la condición es ¿TotVta es mayor que 500000?, si es mayor coloca un mensaje que niega la venta y si no es mayor salta a la instrucción siguiente.
    Las líneas 7, 8, y 9 comparan nuevamente el valor de TotVta con el valor constante de 500000, pero esta vez la condición es ¿TotVta es menor o igual a 500000? (noten que la condición en este caso es menor o igual, o sea dos en una), si se cumple entonces autoriza la venta.
    En cualquiera de los casos salta a la instrucción 10 que coloca en pantalla el mensaje constante "FIN"
    NOTA IMPORTANTE: ¿Se han fijado que todas las instrucciones que van "dentro de un If o un ciclo For aparecen "corridas" hacia la derecha? esto se llama "indentación" y aunque en VBA no es obligatorio es muy importante escribir siempre así es código, para su claridad de lectura, todo lo que sigue a un If o un For se escribe corrido un tab a la derecha, siempre (en otros lenguajes como Python esto es obligatorio).
    Profesor:
    ¿Estas palabras reservadas se pueden utilizar en VB y/o VBA o existen algunas que son de “uso exclusivo” para el programa?
    ¿Cómo podemos identificar, dentro de las extensas líneas de códigos, para qué es cada línea?

    HERNALDO RODRIGUEZ ESTAY (PAE)

    ResponderEliminar
  26. Las palabras reservadas son instrucciones y no se pueden usar como nombre de variables, por eso se dice que están "reservadas" para el sistema.

    Cada línea de código es una frase que tiene un significado dentro de un procedimiento. Esa frase puede contener instrucciones, nombres de variable, operaciones aritméticas, llamadas a subrutinas, etc.

    ResponderEliminar
  27. Profesor: Quizás formulé mal mi segunda pregunta, a lo que me refería, es que si existe alguna opción que permita otorgar mayor claridad al momento de "leer" la programación, colocando alguna breve reseña para que se programó esa línea, quizás para que la persona que NO programó sepa como se estructuraron las líneas de códigos. Por ejemplo, poner en la línea 3, una frase que indiqué que se obtiene como resultado de esa programación.

    Input "Ingrese Cantidad", CantCompra
    Input "Ingrese Precio Unitario", PrecUnit
    TotVta=CantCompra*PrecUnit (INDICA EL VALOR TOTAL DE LA COMPRA)
    If TotVta > 500000 Then
    Print "No Autorizada-Excede Cupo"
    End If
    If TotVta <= 500000 Then
    Print "Compra Autorizada"
    End If

    ResponderEliminar
    Respuestas
    1. Ah claro, para eso se usan los comentarios, cada vez que ua línea empieza con Rem (de remark) o con una comilla simple, eso se considera un comentario y lo que está escrito a continuación no se ejecuta

      Eliminar
  28. ..En el ejemplo antiguo de Basic..
    existen diferentes códigos que contienen varias lineas, que se ejecutan secuencialmente, una después de otra de arriba a abajo. En algunos se pide que entremos datos a las variables usando el teclado, el cual muestran mensajes constantes. Los mensajes y valores de texto string se escriben entre comillas... ¿ que función cumple string ?
    Atte.
    Joanna Rocha H.( PAE)

    ResponderEliminar
    Respuestas
    1. Las variables pueden ser de dsitintos tipos y según el tipo es como las trata el intérprete, "String" es un tipo de variable que dice que su contenido debe ser tratado como caracteres, es decir no se pueden hacer operaciones aritméticas con ella aunque contengan números, "string" indica que son letras, no valores numéricos

      Eliminar
  29. Palabras del lenguaje Visual Basic

    palabra reservada son aquellas palabras que pertenecen al propio lenguaje de programación y que no pueden ser usadas por el programador, salvo para lo que ya han sido creadas.

    Imaginemos la palabra FOR, esta palabra esta usada por Visual Basic para permitir al programador crear bucles, pero el programador no puede usar esa misma palabra para otra cosa, como por ejemplo una variable, osea, el programador no podra hacer esto:

    Puesto que visual basic indicara que le faltan parametros, osea , visual basic no reconoce a la palabra for como una variable sino como para lo que ha sido creada, y por lo tanto provocara un error en ejecución.

    De modo que ninguna de las palabras reservadas se pueden usar para cualquier otro propósito que para el que han sido creada, a continuación mostramos la lista de palabras reservadas de visual basic.
    Abs Add And App
    Activate Array Ascatn Base
    Beep Cbool Cbyte Ccur
    Cdate Cdbl Cdec Cint
    Clng Csng Cstr Cvar
    Cverr Call Case Cdh
    Choose Chdir Chdrive Clear
    Close Collection Command Compare
    Const Cos CreateObject Curdir
    Dateserial Datevalue Day Ddb
    Defftype Dim Deletesetting Dir
    Do Doevents Each End
    Environ Eof Eqv Erase
    Err Error Exit Exp
    Explicit Fileattr Filecopy Filedatetime
    Filelen Fix For Format
    Freefile Function Fv Get
    Getattr GetObject Getsetting Getallsetting
    Gosub Goto Hex Hour
    Imp Input Instr Int
    Integer Ipmt Irr Is
    Isarray Isdate Isempty Iserror
    Ismissing Isnull Isnumeric Isobject
    Item Kill Lbound Lcase
    Left Let Like Loc
    Lock Lof Log Loop
    Lset Ltrim Me Mid
    Minute Mirr Mkdir Mod
    Month Name New Next
    Not Nper Npv Oct
    On Onerror Open Or
    Option Print Ppmt Print#
    Private Property Public Put
    Pv Qbcolor Raise Randomize
    Rate Redim Remove Reset
    Resume Return Rgb Right
    Rmdir Rnd Rset Rtrim
    Savesettings Second Selectcase Seek
    Shell SendKeys Setattr Sgn
    Sin Single Sln Space
    Spc Sqr Static Stop
    Str Strcomp Strconv String
    Sub Syd Switch Tab
    Tan Timer TimeSerial TimeValue
    Trim Typename Ubound Ucase
    Unlock Val Vartype Weekday
    Wend While Width Write#
    Xor Yeqr #if #else

    Estas son las palabras del propio lenguaje de visual basic y que solo permite ser usadas para su determinada función, cada una de las funciones que realizan estas palabras, las encontrará detallamente descritas en Funciones, en el menu principal del curso.

    CRISTIAN CARRASCO PAE

    ResponderEliminar
  30. Buen aporte, la mayoría de esas instrucciones no las he usado nunca y hay varias que ni sabía que existían. En la práctica no son más que 0-15 las que se usan

    ResponderEliminar
  31. En el antiguo Basic para comunicarnos solo podemos ocupar una decena de códigos, no como en nuestro lenguaje castellano que tenemos miles de palabras para comunicarnos.
    Dim, Do, Double, Else, Elseif, End, Exit, For, Function, Get, Global, Gosub, Goto, if, Integer, Long, Module, Private, Public, REM, Resume, Return, Single, Step, Stop, String, Then, To, True, Variant, Wend, While, Xor, =, <, >
    Al Ingresar datos veremos dos variablesque si cumplen con la function arrojara una información y si no cumple arrojara otra información.
    Input "Ingrese Cantidad", CantCompra
    Input "Ingrese Precio Unitario", PrecUnit
    TotVta=CantCompra*PrecUnit
    If TotVta > 500000 Then
    Print "No Autorizada-Excede Cupo"
    End If
    If TotVta <= 500000 Then
    Print "Compra Autorizada"
    End If
    Print "FIN"
    Las variables pueden recibir su valor en dos maneras distintas, constante 500000 (sin comillas sino aparece como string) entonces la condicionante es ¿TOTVTA es mayor que 500000? Si es mayor niega la venta sino pasa a la intruccion siguente.
    José Huanca Choque PAE

    ResponderEliminar
  32. El VBA tiene un vocabulario de palabras reservadas que son las instrucciones.Un lenguaje natural tiene muchas palabras mientras que un lenguaje como el VBA tiene unas decenas , y las que usamos normalmente son :
    Dim, Do, Double, Else, Elseif, End, Exit, For, Function, Get, Global, Gosub, Goto, if, Integer, Long, Module, Private, Public, REM, Resume, Return, Single, Step, Stop, String, Then, To, True, Variant, Wend, While, Xor, =, <, >

    Usando antiguo código Basic, explicaremos como funciona el condicional If y los loop con For, veamos

    Ejemplo con If - Then -End if
    Input "Ingrese Cantidad", CantCompra
    Input "Ingrese Precio Unitario", PrecUnit
    TotVta=CantCompra*PrecUnit
    If TotVta > 500000 Then
    Print "No Autorizada-Excede Cupo"
    End If
    If TotVta <= 500000 Then
    Print "Compra Autorizada"
    End If
    Print "FIN"

    Ejemplo con For - To - Next

    For i = 1 to 100
    print "Pasada número ", i
    Next i
    Print "Fin de las pasadas"


    Alfredo Santibañez (ISIC)

    ResponderEliminar
  33. wow, el antiguo basic.

    interesante articulo profesor.

    saludos
    Atte Cristian Gómez
    Alumno Pae Ing en Administración de Empresas

    ResponderEliminar

Nota: solo los miembros de este blog pueden publicar comentarios.