TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: ivan braga en 11 de Noviembre de 2007, 20:59:25

Título: Existe GOTO em C??????
Publicado por: ivan braga en 11 de Noviembre de 2007, 20:59:25
Olá a todos do forum.

Desculpem se minha pergunta parace estupidez.
Comecei com o Basic, porem estou uma certa dificuldade nesta línguagem.

 Lendo o forum, achei a linguagem C mais versátil, porém um pouco mais difícil de entender, porque em alguns momentos ainda penso em linguagem Basic.

 Procurei alguns tutorias na Internet, descrevendo um pouco sobre a programação em linguagem C, pois o arquivo de ajuda CCS não explica  detalhadamente certas funções, por exemplo:
 
cresult=strcmp (s1, s2) Compare s1 to s2  , aqui ele não descreve que s1 e s2 forem iguais ele retorna 0, e se forem diferentes retorna != 0.

 No momento não vou escrever muito, pois ainda tenho muito para ler. No entanto não consigo tirar esta dúvida da cabeça.

 
 Como fazer o programa retorna ao início como se faz em Basic .



Exemplo:


MAIN:
          instrução
           ..........
           comparação
          ...........
           é assim por diante,  até
 
          GOTO MAIN
END.

 Pode até ser que  ainda encontre um tutorial em C, informe como isto acontece. Porém até o momento já li 2 e não percebi como se faz isso.

 Sei que a linguagem C é muito estruturada, que dependendo da maneira que se programe esta função GOTO acabará nem sendo usada.

 Deixo para os maestros aqui do forum, se possível explicarem a minha dúvida.

 Desde já agradeço.

 Ivan Braga
Título: Re: Existe GOTO em C??????
Publicado por: jfh900 en 11 de Noviembre de 2007, 21:19:57
En CCS se puede utilizar goto etiqueta;. No obstante en "C" estándar no se admite el GOTO, dado que cualquier programa estructurado se puede controlar el flujo de programa sin usar el goto.

Un saludo
Título: Re: Existe GOTO em C??????
Publicado por: ivan braga en 11 de Noviembre de 2007, 22:01:52
Olá jfh900 ,

Gracias por contestar.  :mrgreen:

Porém como já havia dito antes:
Citar
Sei que a linguagem C é muito estruturada, que dependendo da maneira que se programe esta função GOTO acabará nem sendo usada.

É que o pouco que aprendi foi Basic, então continuo pensando em Basic.

Vou continuar lendo para, que momento que tiver duvidas venha recorrer aos maestros aqui do foro.

Gracias

Ivan Braga
Título: Re: Existe GOTO em C??????
Publicado por: maunix en 12 de Noviembre de 2007, 15:55:33
Hace tiempo se debatió el tema en este hilo.

http://www.todopic.com.ar/foros/index.php?topic=14474.0

Espero te sirva.  Saludos
Título: Re: Existe GOTO em C??????
Publicado por: MGLSOFT en 12 de Noviembre de 2007, 19:10:34
En otras palabras, para los buenos programadores de un lenguaje estructurado, como el caso del C, usar un GOTO es mala palabra !! :D :D
Lo cual no quiere decir que no puedas utilizarlo, pero en ese caso no lo comentes... :mrgreen: :mrgreen:
Título: Re: Existe GOTO em C??????
Publicado por: ivan braga en 12 de Noviembre de 2007, 19:20:01
Gracias aqueles que respoderam.

Pelo que pude ler no topico que maunix indicou, não sou o unico que pensou sobre o assunto (GOTO).

Continuarei na leitura, e depois pergunto a vocês

Mais uma vez obrigado.

Ivan Braga
Título: Re: Existe GOTO em C??????
Publicado por: RICHI777 en 12 de Noviembre de 2007, 23:53:01
Ivan, como se comento en este foro, no es "polite" ( prolijo ) usar GOTO, pero en ciertos casos su uso se justifica, ejemplo de eso logjmp o setjmp, que son en definitiva GOTO o el TRY..CATCH en C++.
Creo que en tu caso se solucionara de esta manera en "C"

while ( 1 )
{
... // Instrucciones aca, las que quieras
}
Título: Re: Existe GOTO em C??????
Publicado por: maunix en 14 de Noviembre de 2007, 09:37:50
Los invito a que sigan el link que dejé más arriba donde precisamente se trató el tema antes y se expusieron los mismos argumentos.

 :P :P
Título: Re: Existe GOTO em C??????
Publicado por: ivan braga en 14 de Noviembre de 2007, 19:01:40
Novamente gostaria agradecer a resposta de todos, porém sigo tendo dúvidas a qual apresentarei vocês.

 No código que segue baixo, em vez de usar o GOTO como foi usado poderia seguir a sugestão do amigo RICHI77 ,  até aí eu entendi, pois se colocar uma condição verdadeira ele fica num loop de infinito.

 Mas supondo que no meio do código eu quisesse testar uma condição de em outra função.
 Por exemplo: (em Basic)
Citar
LABEL
Estado:    .............
      ...........
      GoSub test (aqui segue para sub-função)
      ..............     (aqui volta da sub-função)
      ..............
                           goto estado
end

Na função acima é só colocar GoSub test, a partir deste comando ele vai para sub função test  faz o que tem que fazer e retorna na linha abaixo deste comando.

 Como disse anteriormente, o pouco que aprendi foi em Basic então para entender um pouco mais sobre o fluxo na linguagem C novamente preciso da ajuda dos companheiros.

 Sei que a minha dúvida pode parecer estupidez  :? para aqueles que já dominam a programação  em C, mas para eu que estou aprendendo realmente é muito difícil. Pois a documentação existente em língua portuguesa é muito pouca, já em inglês e espanhol ela é mais vasta. E além do mais estou fazendo isso sozinho, apenas com leitura de alguns tutorias e lendo muito também este fórum, que está sendo de grande ajuda.   :mrgreen:

Gracias  :D :-/

 Ivan Braga
Título: Re: Existe GOTO em C??????
Publicado por: MGLSOFT en 15 de Noviembre de 2007, 00:07:08
No es asi en C, la notacion de una funcion en C como la defines alli seria mas o menos asi:



Void Test()
{
//hago lo que debo hacer aqui...
}

Void Main();
{
//para llamar a esta funcion lo haces desde tu programa de la siguiente forma:
Test();
Otra_Funcion();
// ya esta!! el programa salto hacia la funcion Test(), realizo las tareas de la misma y luego volvio a seguir su curso...
}
Título: Re: Existe GOTO em C??????
Publicado por: ivan braga en 15 de Noviembre de 2007, 00:26:56
    Gracias MGLSOFT,

Exactamente eso que quería saber!!!!!   :-/ :-/

   Continuarei lendo, depois volto com mais duvidas.

  Obrigado.

  Ivan Braga
Título: Re: Existe GOTO em C??????
Publicado por: MGLSOFT en 15 de Noviembre de 2007, 00:31:42
Si estas aprendiendo desde cero, te recomiendo la lectura de algunos libros.
Por ejemplo este:
(http://img528.imageshack.us/img528/1673/bookfabioye9.jpg)
Esta en tu idioma nativo, ademas para conocer la sintaxis del lenguaje C, una buena opcion es:
(http://img530.imageshack.us/img530/6875/thecprogrammingyw8.jpg)
y tambien si utilizas el CCS C, este otro:
(http://img530.imageshack.us/img530/3480/nigel20book20coveres1.jpg)
Título: Re: Existe GOTO em C??????
Publicado por: ivan braga en 15 de Noviembre de 2007, 00:55:28
   Ok MGLSOFT,

   Estou lendo o ultimo que você indicou (do Nigel Gardner), mais como é em inglês demoro mais porque não domino este idioma.

  Y la otra cosa importante, el libro no habla e no escribe :D :D .

  Gracias por su atención in responder a mis preguntas  :lol:

   Ivan Braga
Título: Re: Existe GOTO em C??????
Publicado por: RICHI777 en 15 de Noviembre de 2007, 15:01:11
Muchachos CCS que quiere decir ??? Casi un Compilador Se
jejejeje Era un chiste a no enojarse !!!!
 :D :D :D :D :D
Título: Re: Existe GOTO em C??????
Publicado por: MGLSOFT en 15 de Noviembre de 2007, 15:29:25
No, la sigla significa (en ingles es al reves) Solo Con MiCrochip.... :D :D
O sea que no anda con los Chotorola !! :mrgreen: :mrgreen:
Vos tampoco te enojes!! :-) :-) 8) 8)
Título: Re: Existe GOTO em C??????
Publicado por: RICHI777 en 15 de Noviembre de 2007, 16:16:02
No, la sigla significa (en ingles es al reves) Solo Con MiCrochip.... :D :D
O sea que no anda con los Chotorola !! :mrgreen: :mrgreen:
Vos tampoco te enojes!! :-) :-) 8) 8)
JAJAJAJAJAA !!!! Muy bueno capo !!!!
Título: Re: Existe GOTO em C??????
Publicado por: maunix en 16 de Noviembre de 2007, 08:32:35
No, la sigla significa (en ingles es al reves) Solo Con MiCrochip.... :D :D
O sea que no anda con los Chotorola !! :mrgreen: :mrgreen:

 :D :D :D .  Será por eso que ahora se llaman Freescale?  :-) :-) :-)