Variables locales, de clase y globales en Visual Basic. Concepto. Ejemplos y ejercicios resueltos (CU00339A)

Resumen: Entrega nº38 del curso Aprender a programar en Visual Basic desde cero.
Codificación aprenderaprogramar.com: CU00339A

 

 

VARIABLES LOCALES, DE CLASE Y GLOBALES EN VISUAL BASIC.

Ya hemos dicho que existen distintas formas de declarar variables con Visual Basic, aunque hayamos venido utilizando principalmente una: la instrucción Dim. Vamos a ver ahora el concepto de variable local, de clase y global trasladado a este lenguaje.

En primer lugar, usaremos el término ámbito para referirnos a aquel conjunto de partes del programa en el que una variable es conocida. Así distinguiremos:

Visual Basic
 

· Variables con ámbito un procedimiento (Sub).

Son declaradas dentro del procedimiento y sólo son conocidas dentro de él. Son declaradas al principio del procedimiento (cabecera del procedimiento) o en un punto intermedio del mismo. No puede invocarse la variable sin que antes se haya declarado. En general, para una mejor ordenación del programa siempre será preferible que las declaraciones sean en cabecera. Podemos llamarlas variables locales al procedimiento.

 

· Variables con ámbito el módulo o la clase de formulario.

Son declaradas en la cabecera del código asociado al formulario y no están dentro de un procedimiento o función (Sub) concreto. Podemos llamarlas variables locales al módulo de formulario ó en las versiones más recientes de Visual Basic la denominación es “variables de clase” o “atributos de la clase”, ya que en las versiones más recientes de Visual Basic decimos que el código se organiza en “clases”. Estas variables son conocidas por todos los procedimientos existentes en el código asociado al formulario.

 

· Variables con ámbito todos los módulos o todas las clases del programa.

Son declaradas dentro de un módulo estándar usando la declaración Public.

 

Prueba el siguiente código:

Código (versiones VB menos recientes) Código (versiones VB más recientes)
'Curso VB aprenderaprogramar.com
Option Explicit

Private Sub Form_Load()
Positiv
End Sub

Private Sub Form_Click()
Positiv
End Sub

Private Sub Positiv()
Dim Valor As Integer
Dim Número As Single
Número = InputBox("Por favor, introduzca un número", "Número")
Valor = Abs(CInt(Número))
Label1 = "El valor absoluto entero más próximo es " & Valor
End Sub


 
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
        Positiv()
    End Sub

Private Sub Form1_Click1(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Click
        Positiv()
End Sub

Private Sub Positiv()
   Dim Valor As Integer
   Dim Número As Single
Número = InputBox("Por favor, introduzca un número", "Número")
Valor = Math.Abs(CInt(Número))
Label1.Text = "El valor absoluto entero más próximo es " & Valor
End Sub
End Class

 

 

Las variables Valor y Número son variables locales al procedimiento Positiv, resultando no conocidas en el resto del programa.

 

 

EJERCICIO

Transformar en código el siguiente pseudocódigo referente a un programa denominado SUC01. El cometido del programa es calcular la suma de los términos de la sucesión:

                                                                           1       1        1                1 
                                                                          --- , --------, ---------,  ...  ,  ---
                                                                           a     a - 1    a - 2             1
 
siendo a un número entero comprendido entre 1 y 100.
 
PROGRAMA SUC 01 Curso Visual Basic aprenderaprogramar.com

Variables
Reales: a, Suma

1.  Inicio
2.  Llamar EntraDatos
3.  Llamar Calculo
4.  Mostrar “El valor del sumatorio es”, Suma
5.  Fin

Módulo EntraDatos
1.  Mientras a <= 0 ó a > 100 Hacer
      1.1  Mostrar “Por favor introduzca un número entero comprendido entre 1 y 100”
      1.2  Pedir a
      1.3  a = Redondear(a)
Repetir
2.  Mostrar “El dato base es”, a
FinMódulo


Módulo Calculo
Variables
Enteras: i

1.  Hacer
      1.1  Suma = Suma + 1 / a
      1.2  a = a – 1
      1.3  i = i + 1
Repetir Mientras a <> 0
2.  Mostrar “Contabilizados”, i, “términos”
FinMódulo

 

 

SOLUCIÓN

Código (versiones VB menos recientes) Código (versiones VB más recientes)
'Curso VB aprenderaprogramar.com
Option Explicit  '[Programa SUC01]
Dim a!, Suma As Single

Private Sub Form_Load()
EntraDatos
Cálculo
Label2 = "El valor del sumatorio es " & Suma
End Sub

Private Sub EntraDatos()
Do While a <= 0 Or a > 100
    a = InputBox("Introduzca un entero comprendido entre 1 y 100", "Entero")
    a = CInt(a)
Loop
Label1 = "El dato base es " & a
End Sub

Private Sub Cálculo()
Dim i As Integer
Do
    Suma = Suma + 1 / a
    a = a - 1
    i = i + 1
Loop While a <> 0
Label1 = Label1 & vbCrLf & vbCrLf & "Contabilizados " & i & " términos"
End Sub


 
REM Curso Visual Basic aprenderaprogramar.com
Option Explicit On '[Programa SUC01]
Public Class Form1
    Dim a, Suma As Single

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        EntraDatos()
        Cálculo()
        Label2.Text = "El valor del sumatorio es " & Suma
    End Sub

    Private Sub EntraDatos()
        Do While a <= 0 Or a > 100
            a = InputBox("Introduzca un entero comprendido entre 1 y 100", "Entero")
            a = CInt(a)
        Loop
        Label1.Text = "El dato base es " & a
    End Sub

    Private Sub Cálculo()
      Dim i As Integer
      Do
            Suma = Suma + 1 / a
            a = a - 1
            i = i + 1
      Loop While a <> 0
      Label1.Text = Label1.Text & vbCrLf & vbCrLf & "Contabilizados " & i & " términos"
    End Sub
End Class

 

 

El programa trabaja con tres variables: a, Suma y i. Las variables a y Suma son de tipo Single, y por estar declaradas en la cabecera del módulo de formulario son conocidas en todos los procedimientos. La variable i es de tipo Integer y por estar declarada en la cabecera de un procedimiento es una variable local de dicho procedimiento. Si pruebas a escribir esta modificación: Label2 = "El valor del sumatorio es" & Suma & "con" & i & "términos", comprobarás que te sale en pantalla el mensaje: "Error de compilación: Variable no definida." En realidad la variable i sí está definida, pero tiene un ámbito restringido y no podemos usarla en el sitio donde hemos tratado de hacerlo.

 

Si ejecutas el programa se deben obtener resultados como:

a = 1 . El valor del sumatorio es 1.               a = 2. El valor del sumatorio es 1,5.

a = 3. El valor del sumatorio es 1,8333.        a = 5. El valor del sumatorio es 2,2833.

a = 10. El valor del sumatorio es 2,9289.      a = 50. El valor del sumatorio es 4,4992.

 

 

 

 

 

 

Para acceder a la información general sobre este curso y al listado completo de entregas pulsa en este link:  Ver curso completo.
 
Para  hacer un comentario o consulta utiliza los foros aprenderaprogramar.com, abiertos a cualquier persona independientemente de su nivel de conocimiento.

¿Puedo yo aprender?

Seas o no del área informática, si quieres aprender a programar te ofrecemos una solución guiada y personalizada: realizar un curso tutorizado on-line. Con este tipo de curso, podrás aprender a programar de forma ágil y amena.

Acceder a detalles y precios de los cursos tutorizados on-line

Política sobre cookies

Utilizamos cookies propias y de terceros para ofrecerte una mejor experiencia y servicio, de acuerdo a tus hábitos de navegación.

Si continúas navegando, consideramos que aceptas su uso. Puedes obtener más información en nuestra Política de Cookies.

En Facebook!

Ahora puedes seguirnos en Facebook. Noticias, novedades y mucho más ¡Te esperamos!

RANKING APR2+

Ranking de lenguajes y entornos de programación aprenderaprogramar.com
 

JULIO - AGOSTO 2017

1. Java / J2EE
2. Entornos Oracle
3. Entornos SQL Server
4. JavaScript, jQuery
5. .NET, C#
6. HTML, CSS
7. Android, iOS
8. Php, MySql


Acceder a detalles sobre el ranking de programación aprenderaprogramar.com

FOROS APR2+

Pregunta, responde, consulta, lee, intercambia...

Participa!!! Entra en los foros aprenderaprogramar.com.

             Copyright 2006-2017 aprenderaprogramar.com                La web abierta a cualquier persona interesada en la programación