Autor Tema: GOTO-GOSUB-RETURN  (Leído 4906 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado LETAL

  • PIC16
  • ***
  • Mensajes: 101
GOTO-GOSUB-RETURN
« en: 16 de Agosto de 2006, 18:40:18 »
Hola:

Mis preguntas siempre son tontas porque recién comienzo en esto de los pic, y en programación muuuuuuy flojo.
Alguien puede explicarme claramente para que sirven y la diferencia entre goto, gosub y return???
Mejor si es con ejemplos.

Gracias.

Desconectado derinium

  • PIC10
  • *
  • Mensajes: 35
Re: GOTO-GOSUB-RETURN
« Respuesta #1 en: 16 de Agosto de 2006, 20:11:08 »
Hola:

Mis preguntas siempre son tontas porque recién comienzo en esto de los pic, y en programación muuuuuuy flojo.
Alguien puede explicarme claramente para que sirven y la diferencia entre goto, gosub y return???
Mejor si es con ejemplos.

Gracias.

Hombre !. Lo más seguro es que nadie te conteste si antes no te has leido lo más básico para programar. En fin...

Gosub y Return van ligados. Con Gosub xxx haces un salto a la etiqueta xxx y con Return hace que vuelva a la linea siguiente del Gosub xxx
Con Goto xxx solo hace un salto a la etiqueta xxx.

Ejemplo rápido Gosub-Return:

................... (lineas de codigo)
gosub avisa
...................
...................
...................
...................



avisa: ---->Etiqueta avisa
...................
...................
Return   ----------> vuelve a la siguiente linea al Gosub

Ejemplo con Goto :

................... (lineas de codigo)
goto avisa
...................
...................
...................
...................


avisa: ---->Etiqueta avisa
....................
....................

Una vez más reitero que empieces a leer manuales, ejemplos y sobre todo practiques.

Un saludo.

Desconectado xocas

  • Administrador
  • PIC24H
  • *******
  • Mensajes: 2312
Re: GOTO-GOSUB-RETURN
« Respuesta #2 en: 16 de Agosto de 2006, 20:59:33 »
hola

coincido por completo con el amigo derinium. somos muchos los que estamos comenzando y hemos de poner algo de nuestra parte si queremos aprender, de lo contrario terminaremos 'quemando' a quienes tan desinteresadamente nos ayudan y no por ello aprenderemos mas.

si no tienes el manual te lo puedes descargar de la pagina de melabs directamente: http://www.melabs.com/resources/index.htm#Manuals -la ultima version, pero en ingles-, si lo necesitas en castellano lo tienes en www.frino.com.ar y en formato .html en http://www.todopic.com.ar/pbp_sp.html (... te suena?). ademas, como te comento LordLafebre en otro post, la ayuda de microcode es un buen recurso. tampoco estaria mal que usaras el buscador del foro...

no me lo tomes a mal amigo letal que no es mi intencion molestarte ya que, como te decia, yo tambien estoy aprendiendo y consulto cuando lo necesito...

un saludo

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: GOTO-GOSUB-RETURN
« Respuesta #3 en: 16 de Agosto de 2006, 21:19:05 »
Hola:

En efecto como bien dicen derinium y xocas06 , en la tarde no le pude responder por problemas de conexion, pero guarde mi mensaje que es este:

Citar
Hola:

Amigo LETAL, creo recordar que te aconseje sobre la ayuda, y veo que no has hecho caso de mi consejo, la ayuda claramente te indica sobre cada uno de las funciones, mira:

GOSUB      
GOSUB Label
Jump to the subroutine at Label saving its return address on the stack. Unlike GOTO, when a RETURN statement is reached, execution resumes with the statement following the last executed GOSUB statement. An unlimited number of subroutines may be used in a program. Subroutines may also be nested. In other words, it is possible for a subroutine to call another subroutine. Such subroutine nesting should be restricted to no more than four levels deep.
Example
GOSUB beep ' Execute subroutine named beep
...
beep: HIGH 0 ' Turn on LED connected to Pin0
SOUND 1,[80,10] ' Beep speaker connected to Pin1
LOW 0 ' Turn off LED connected to Pin0
RETURN ' Go back to main routine that called us

GOTO      
GOTO Label
Program execution continues with the statements at Label.
Example
GOTO send ' Jump to statement labeled send
...
send: SEROUT 0,N2400,["Hi"] ' Send “Hi” out Pin0 serially
RETURN      
Return from subroutine. RETURN resumes execution at the statement following the GOSUB which called the subroutine.
Example
GOSUB sub1 ' Go to subroutine labeled sub1
...
sub1:
  SEROUT 0,N2400,["Lunch"] ' Send “Lunch” out Pin0 serially
  RETURN ' Return to main program after Gosub

Gosub y Goto, sirve para hacer saltos a etiquetas, y return regresa a la linea siguiente de un Gosub, Return no sirve si utilizas el goto, puedes darte cuenta claramente en los ejemplos, asi que de nuevo va mi consejo, para este tipo de funciones, me parece que va sobrada la ayuda del PBP :mrgreen:

Ya te comente antes, te comento en ese texto que no pude postear, y te lo vuelvo a comentar, la ayuda es muy buena, incluye ejemplos... y como te dije tambien en otro post: A LEER LA AYUDA.

Yo creo que aqui podemos ayudarte con otros problemitas, pero no a algo tan basico que lo puedes resolver tranquilamente leyendo la ayuda.
« Última modificación: 16 de Agosto de 2006, 21:22:57 por LordLafebre »

Desconectado LETAL

  • PIC16
  • ***
  • Mensajes: 101
Re: GOTO-GOSUB-RETURN
« Respuesta #4 en: 17 de Agosto de 2006, 18:33:44 »
Ya entendí como se usan esas instrucciones. Disculpen si pregunto cosas básicas. Pero nunca había programado y sobre lo que está en inglés no cazo una.
Busqué y leí información sobre las instrucciones y por el momento parece ser que las entendí.
 Gracias por ayudarme a pesar que no les guste mis preguntas. Espero poder aportar algo en algún hilo. 

Desconectado derinium

  • PIC10
  • *
  • Mensajes: 35
Re: GOTO-GOSUB-RETURN
« Respuesta #5 en: 17 de Agosto de 2006, 19:07:58 »
Ya entendí como se usan esas instrucciones. Disculpen si pregunto cosas básicas. Pero nunca había programado y sobre lo que está en inglés no cazo una.
Busqué y leí información sobre las instrucciones y por el momento parece ser que las entendí.
 Gracias por ayudarme a pesar que no les guste mis preguntas. Espero poder aportar algo en algún hilo. 

No hay que disculparse !. Preguntando se hace maestro el alumno. Aquí estamos para ayudar y para que nos ayuden, sobre todo a mi.

Entiende que si preguntasemos todas y cada una de las palabras clave que tiene PBP, pues estariamos haciendo otro manual mediante mensajes, y para eso ya existen manuales hechos, bien explicados y para descargar desde muuuuchos sitios.

Recopila información. Empieza con ejemplos muy sencillitos. Poco a poco, modifica esos ejemplos y experimenta. Más adelante intenta desarrollar tu imaginación con algo, aunque sea una tontería e intenta programarla. Como digo, lo más importante es la práctica, pero empieza por el principio.
Con esas prácticas que realices si no hay manera de que te funcionen, pues pregunta. Verás como se te resuelve.

Aquí tenemos a LordLafebre, que lo apodo "el señor de los anillos", perdon, "el señor del PBP"  :) , que como ves tambien te iba a contestar. Este señor no defrauda, pero es muy serio. :lol:

Un saludo.