En un ejemplo que hice se me plantea la duda de poder tener una variable global o tenerla como local y pasarla por referencia.
El ejemplo es la creación de una figura de un rombo o diamante.
Se crea mediante dos bucles, primero el triangulo superior y luego el inferior. El código de ambos bucles se repite.
Así que creé otro procedimiento que era llamado desde los dos bucles. Podría haber repetido el código
dentro de los bucles. Eso es otra duda, ya que este código solo es usado por el ejemplo del rombo, no es un código
que se pueda aprovechar para hacer otra cosa. Pero haciendo el procedimiento es un ahorro para no repetir código.
Vayamos con el código:
Public Sub Main()
Rombo()
End
Public Sub Rombo()
Dim x As Integer
Dim altura As Integer
Dim long_estrellas As Integer
Print "¿ Qué altura tiene el rombo ?"
Input altura
For x = 1 To altura Step 2
Dibuja_linea(x, altura, ByRef long_estrellas)
Next
For x = altura - 3 To 1 Step -2
Dibuja_linea(x, altura, ByRef long_estrellas)
Next
End
Public Sub Dibuja_linea(x As Integer, altura As Integer, ByRef long_estrellas As Integer)
Dim long_espacios As Integer
long_estrellas = x
long_espacios = ((altura - long_estrellas) \ 2)
Print (String$(long_espacios, " ") & String$(long_estrellas, "*") & String$(long_espacios, " "))
End
Rombo()
End
Public Sub Rombo()
Dim x As Integer
Dim altura As Integer
Dim long_estrellas As Integer
Print "¿ Qué altura tiene el rombo ?"
Input altura
For x = 1 To altura Step 2
Dibuja_linea(x, altura, ByRef long_estrellas)
Next
For x = altura - 3 To 1 Step -2
Dibuja_linea(x, altura, ByRef long_estrellas)
Next
End
Public Sub Dibuja_linea(x As Integer, altura As Integer, ByRef long_estrellas As Integer)
Dim long_espacios As Integer
long_estrellas = x
long_espacios = ((altura - long_estrellas) \ 2)
Print (String$(long_espacios, " ") & String$(long_estrellas, "*") & String$(long_espacios, " "))
End
Aunque los nombres de las variables puedan repetirse son locales. La variable que podría haber sido global es long_estrellas.
long_espacios no necesita ser global, ya que se calcula dentro de Dibuja. ( Por poner un nombre)
Hay veces que según el numero introducido no se forma correctamente el diamante. Es problema de la división entera.
Si no se cumplen ciertas características, el rombo no se crea bien. Pero es solo un ejemplo.
¿ Qué os parece lo de pasar por referencia la variable y no tenerla como global ?. Si, se repite más código, eso es verdad.
Saludos
diamante.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | diamante.tar.gz | |
Tamaño: | 4.56 KB | |
Descargado: | 27 veces |
diamante.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | diamante.tar.gz | |
Tamaño: | 4.56 KB | |
Descargado: | 27 veces |
diamante.tar.gz | ||
Descripción: | Descargar |
|
Nombre del archivo: | diamante.tar.gz | |
Tamaño: | 4.56 KB | |
Descargado: | 27 veces |