GOSUB

GOSUB

GOSUB es un comando que usan muchos versiones de lenguajes de programación BASIC. GOSUB es un salto a una subrutina donde se ejecutan varias sentencias de código. La subrutina está señalada por una etiqueta como punto de entrada y finaliza al encontrar la primera sentencia RETURN devolviendo el control a la siguiente instrucción que invocó la subrutina.

En algunas versiones de BASIC, GOSUB acepta parámetros de llamada, pero no es lo frecuente. La utilidad del comando GOSUB es que permite ejecutar el mismo código en diferentes momentos (a diferencia de los bucles, que lo hacen de forma seguida), evitando con ello duplicar código.[1]

Contenido

Modo de invocación

GOSUB siempre referencia a una etiqueta que debe existir. La etiqueta a su vez es una constante cuyo contenido aloja una dirección de memoria que es relativa respecto de la ubicación del programa.

GOSUB Etiqueta
IF X = 5 THEN GOSUB Etiqueta

Código de ejemplo con una llamada

En el ejemplo se usa un bucle para recorrer los grados de un círculo, dentro del bucle se utiliza una llamada mediante GOSUB, para calcular los radianes y presentar el resultado. En este ejemplo todo el código contenido en la subrutina podría estar dentro del bucle y eliminar la subrutina, pero puede entenderse la utilidad de la subrutina si se necesita calcular en cualquier momento los radianes.

  CONST PI= 3.141592
 
  Dim Radianes AS SINGLE
  DIM k AS INTEGER
 
     For k = 0 to 359
        GOSUB CalculaRadian
     NEXT
     END
 
  CalculaRadian:
     Radianes = k / (180/PI)
     PRINT k & " grados de ángulo son: " & Radianes
  RETURN

Detalles

GOSUB realiza la misma tarea que puede realizar un método pero estando la misma dentro de un método. Es decir es como una función dentro de otra función. Normalmente se utiliza cuando sólo una función o método requiere los servicios de la subrutina; parte del código se ejecuta varias veces, pero no de una forma seguida. Si desde varias partes del código del programa se requiere la ejecución de la subrutina, entonces dicho código debe ser un método común.

Se señalan algunos detalles a continuación:

  • Cuando se ejecuta GOSUB, se guarda en la pila la dirección de la instrucción que realiza la llamada + 1.
  • Cuando se alcanza la sentencia RETURN salta a la última posición que se localiza en la pila.
  • Las líneas de código de la llamada y las de la subrutina donde se localiza la etiqueta pueden estar ne cualquier parte del código
  • En una subrutina invocada por GOSUB puede haber tantas sentencias RETURN como se requiera y del mismo modo la subrutina puede contener tantas etiquetas como se requiera.
  • En una subrutina llamada por GOSUB, que contiene varias etiquetas, cada una de ellas puede comportarse como una subrutina, en las que todas pueden estar controladas por un mismo y único retorno y/o por otro particular.

Se ilustra este caso con un ejemplo. Obsérves como todas las etiquetas están directamente retornadas con el retorno que aparece después de la etiqueta Domingo. Obsérvese también como la etiqueta Miercoles (y las anteriores) están controladas además por el RETURN dentro de la etiqueta Miercoles.

Ejemplo de varias etiquetas
  GOSUB Lunes
  END
 
   Lunes:
      ' instrucciones
   Martes:
      ' instrucciones
   Miercoles:
      IF X = 5 THEN
           GOSUB Viernes
      ELSE
           RETURN
      END IF
   Jueves:
      ' instruccciones
   Viernes:
      ' instruccciones
   Sabado:
      ' instruccciones
   Domingo:
      ' instruccciones
   RETURN

Implementación

GOSUB puede ser implementado fácilmente con funciones de salto. En pseudocodigo.

    Guardar Puntero + 1 actual en la pila
    Saltar a la dirección que indica Etiqueta
    Instrucción, punto de Retorno donde regresa después de ejecutarse la subrutina.
    Etiqueta ' posición donde se localiza, la subrutina
      ... instrucciones a ejecutarse
    Saltar a la última dirección de la pila

Véase también

Referencias

  1. «GOSUB...RETURN Detalles del comando.». Microsoft (1988). Consultado el 04-07-2008.

Wikimedia foundation. 2010.

Игры ⚽ Поможем решить контрольную работу

Mira otros diccionarios:

  • GOSUB — is a command in many versions of BASIC. GOSUB statements branch to simple kinds of subroutines without (sometimes with) parameters or local variables, the RETURN command resuming program flow from the point at which GOSUB was invoked. The GOSUB… …   Wikipedia

  • Gosub...Return —   [Abk. für Go to Subroutine...Return, dt. »Gehe zum Unterprogramm...kehre zurück«], eine Anweisung in der Programmiersprache Basic, mit der innerhalb einer Routine eine Verzweigung in eine Unterroutine hergestellt werd …   Universal-Lexikon

  • BASICODE — 2 auf einer Compact Cassette BASICODE war ein Computerprojekt mit dem Ziel, einen einheitlichen Sprachstandard für die Programmiersprache BASIC festzulegen. BASIC war zwar auf vielen populären Heimcomputern verbreitet, aber in unzähligen… …   Deutsch Wikipedia

  • BasiCode — 2 auf einer Compact Cassette BASICODE war ein Computerprojekt mit dem Ziel, einen einheitlichen Sprachstandard für die Programmiersprache BASIC festzulegen. BASIC war zwar auf vielen populären Heimcomputern verbreitet, aber in unzähligen… …   Deutsch Wikipedia

  • Basicode — 2 auf einer Compact Cassette BASICODE war ein Computerprojekt mit dem Ziel, einen einheitlichen Sprachstandard für die Programmiersprache BASIC festzulegen. BASIC war zwar auf vielen populären Heimcomputern verbreitet, aber in unzähligen… …   Deutsch Wikipedia

  • BASICODE — was a computer project intended to create a unified standard for the BASIC programming language. BASIC was available on many popular home computers, but there were countless variants that were mostly incompatible with each other. The project was… …   Wikipedia

  • GOTO — o GO TO (ir a en inglés) es una instrucción muy común en los lenguajes de programación con el objetivo de controlar el flujo del programa. El efecto de su versión más simple es transferir sin condiciones la ejecución del programa a la etiqueta o… …   Wikipedia Español

  • MSX BASIC — Desarrollador(es) microsoft.com Información general Paradigma Imperativo …   Wikipedia Español

  • PICAXE — is the name of a UK sourced microcontroller system based on a range of Microchip PICs. There are 13 PICAXE variants of differing pin counts from 8 to 40 pins. Initially marketed for use in education and by electronics hobbyists, they are also… …   Wikipedia

  • Citinite — Founded 2006 Genre Electrofunk Location London / New York …   Wikipedia

Compartir el artículo y extractos

Link directo
Do a right-click on the link above
and select “Copy Link”