elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda en sintaxis de C
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda en sintaxis de C  (Leído 4,099 veces)
the_jocker

Desconectado Desconectado

Mensajes: 41



Ver Perfil
Duda en sintaxis de C
« en: 3 Abril 2012, 00:06 am »

Buenas, Empiezo hace horas con el lenguaje C, se ve picante, pero empeze a familiarizarme con la sintaxis, pero qui la duda, resulta que edito con nano, en ubuntu, compilo con gcc, todo bien, pero vi codigo de ejemplo y por ejemplo esto no compila:
Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.     int a;
  6.     for(a=0;a<=10;a++)
  7.     {
  8.          printf("no molestar en clase\n");
  9.          return 0;
  10.     }
  11. }
  12.  

No entiendo el programa esta bie escrito, pero esto si toma perfecto:
Código
  1. #include <stdio.h>
  2.  
  3. int main()
  4. {
  5.     int a;
  6.     for(a=0;a<=10;a++)
  7.          printf("no molestar en clase\n");
  8.          return 0;
  9. }
  10.  

Es decir el segundo esta sin los corchetes del for y lo toma perfecto, puede que pase o asi es la sintaxis del lenguaje. Gracias.


En línea

Ferno


Desconectado Desconectado

Mensajes: 375


Ver Perfil
Re: Duda en sintaxis de C
« Respuesta #1 en: 3 Abril 2012, 00:33 am »

¿No compila? ¿O no funciona? ¿Qué error aparece?
A mí me compila perfecto (sin embargo, puede que dependa de los parámetros que utilices para compilar). En todo caso, puede que chille por el hecho de que main no estaría devolviendo un int en su ámbito más general (sino que está dentro del for).
Es decir, la gran diferencia entre ambos códigos, es que en el segundo caso, el return NO ESTÁ dentro del for (si no se explicitan corchetes, entonces las instrucciones solo toman una sentencia dentro de su ámbito, en este caso, solo el printf).


En línea

the_jocker

Desconectado Desconectado

Mensajes: 41



Ver Perfil
Re: Duda en sintaxis de C
« Respuesta #2 en: 3 Abril 2012, 00:51 am »

Los 2 funcionan, pero el segundo cumple con lo que quiero mostrar, es decir la cantidad de veces del for, pero el primero muestar una sola vez el mensaje y termina la ejecucion, yo vi en todos lados que los ciclos estan entre llaves en todos lo lenguajes, es mas probe solo con main(), y lo mismo, int main(void), tampoco, por eso mi duda, que es lo que estaria mal para que no haga lo que le pido.
« Última modificación: 3 Abril 2012, 00:55 am por the_jocker » En línea

farresito


Desconectado Desconectado

Mensajes: 302



Ver Perfil
Re: Duda en sintaxis de C
« Respuesta #3 en: 3 Abril 2012, 01:03 am »

Te explico. No se si conocias previamente un lenguaje, pero la funcion main, la principal, al ser una funcion int, debe retornar algo. Siempre (debería). Cuando retornas 0, le estas diciendo al programa que este termino correctamente. Si hubiera un error y no finalizase el programa, obviamente no llegariamos a la ultima linea, que es la que confirma que hemos acabado al programa sin errores, y retornaria otro valor.

La sintaxis de un loop (bucle) for es: todo lo que quieres que pase en una iteracion debe ir incluido entre llaves. Si no pones llaves, en cada iteracion solo ocurrira la primera linea despues del for, nada mas, aunque lo tengas situado a la misma altura en cuanto a espaciado,

En el primer ejemplo, el return 0 lo haces en CADA iteracion. El programa terminara mal, porque el return solo deberia ocurrir una vez. En el segundo ejemplo, despues del for, la unica linea que ocurre en cada iteracion al no haber llaves es el printf. El return solo ocurrira despues de que finalice el for. Esto de no usar siempre llaves se hace porque a veces solo interesa mostrar un simple printf, o en los if-else solo retornar algo, y asi nos ahorramos tiempo.
En línea

durasno


Desconectado Desconectado

Mensajes: 373


Ver Perfil
Re: Duda en sintaxis de C
« Respuesta #4 en: 3 Abril 2012, 01:11 am »

Hola! en instrucciones como for, while, do while, if se abre llaves cuando su bloque de codigo tiene mas de una sentencia, es decir:
for(; ; )
{
 sentencia1;
 sentencia2;
 sentencian;
}
Ahora cuando solo hay una sentecia se puede omitir las llaves:
for(; ; )
  sentencia1;

Vallamos a tu codigo: en el primer caso lo que estarias haciendo es entrar al for, imprimir una sola vez con el printf y luego salir(por el return) ya que el return se encuentra dentro del for. Return termina con el main
En el segundo caso se ejecutan las 10 veces los printf ya que return esta afuera del for. La unica sentencia q tiene el for es el printf y no return

Saludos
En línea

Ahorrate una pregunta, lee el man
the_jocker

Desconectado Desconectado

Mensajes: 41



Ver Perfil
Re: Duda en sintaxis de C
« Respuesta #5 en: 4 Abril 2012, 01:48 am »

Ya lo probe al codigo con el return fuera del for, y anduvo perfecto.
Recien empiezo con C,en realidad en la facultad estamos viendo C++ y lei por ahi que si aprendo bien c++ despues cuesta mucho acomodarse a C,entonces quiero aprender C junto a C++, nose si es correcto esto, el codigo me quedo asi:
Código
  1. #include <stdio.h>
  2.  
  3. main()
  4. {
  5.     int a;
  6.     for(a=0;a<=10;a++)
  7.     {
  8.           printf("No molestar en clase\n");
  9.     }
  10.     return 0;
  11. }
  12.  

Muchas gracias,es importante que consideren mi pregunta del orden en que deberia aprender un lenguaje deacuerdo a sus propias experiencias, para poder tomar una decision. Gracias desde Argentina
En línea

farresito


Desconectado Desconectado

Mensajes: 302



Ver Perfil
Re: Duda en sintaxis de C
« Respuesta #6 en: 4 Abril 2012, 02:36 am »

Ya lo probe al codigo con el return fuera del for, y anduvo perfecto.
Recien empiezo con C,en realidad en la facultad estamos viendo C++ y lei por ahi que si aprendo bien c++ despues cuesta mucho acomodarse a C,entonces quiero aprender C junto a C++, nose si es correcto esto, el codigo me quedo asi:
Código
  1. #include <stdio.h>
  2.  
  3. main()
  4. {
  5.     int a;
  6.     for(a=0;a<=10;a++)
  7.     {
  8.           printf("No molestar en clase\n");
  9.     }
  10.     return 0;
  11. }
  12.  

Muchas gracias,es importante que consideren mi pregunta del orden en que deberia aprender un lenguaje deacuerdo a sus propias experiencias, para poder tomar una decision. Gracias desde Argentina
Efectivamente, asi es. Y en cuento a la dificultad de aprender C... Yo no me preocuparia. La sintaxis es practicamente identica y si manejas C++, de C solo tendras que estudiarte pocas cosas. En serio, no te preocupes. Si aprendes primero C++, C te costara lo mismo: poco. Solo son algunos conceptos concretos, como los punteros, pero lo que es los bucles... Tranquilo. Cualquier elección sera correcta
En línea

the_jocker

Desconectado Desconectado

Mensajes: 41



Ver Perfil
Re: Duda en sintaxis de C
« Respuesta #7 en: 4 Abril 2012, 02:53 am »

Muchas gracias por responder,lo tengo que hacer a C++ igual, pero voy a ir por los 2,de nuevo farresito
espero algun dia poder darte una mano como lo hiciste vos, ojala todos los foros fueran iguales a este, no se si cierran los temas pero este ya lo pueden dar por solucionado.Muchas gracias y en especial a farresito.
En línea

farresito


Desconectado Desconectado

Mensajes: 302



Ver Perfil
Re: Duda en sintaxis de C
« Respuesta #8 en: 5 Abril 2012, 03:21 am »

Muchas gracias por responder,lo tengo que hacer a C++ igual, pero voy a ir por los 2,de nuevo farresito
espero algun dia poder darte una mano como lo hiciste vos, ojala todos los foros fueran iguales a este, no se si cierran los temas pero este ya lo pueden dar por solucionado.Muchas gracias y en especial a farresito.
Esta es la base de un foro como este: los nuevos aprenden de los que saben un poco mas. Yo estoy muy agradecido de usuarios como Eternal Idol que han dedicado su tiempo a responderme muchas veces. No es necesario tanto agradecimiento, de verdad. Un dia seras tu el que ayudaras. A quien debes agradecer por esto es a usuarios que dedican horas a hacer tutoriales y guias para novatos. Estos si que merecen un respeto. Creeme.

Un abrazo.
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Sintaxis FASM « 1 2 »
ASM
ferk93 16 11,263 Último mensaje 9 Julio 2009, 09:57 am
por Erik#
sintaxis php
PHP
MasterPunk 1 2,389 Último mensaje 21 Noviembre 2009, 15:10 pm
por Kasi
Duda con un par de elementos de la sintaxis.
PHP
ZHOSS-9 2 1,899 Último mensaje 22 Diciembre 2011, 00:45 am
por ZHOSS-9
Problema sintaxis JAVA
Java
crksergio 7 3,386 Último mensaje 23 Julio 2013, 18:46 pm
por crksergio
Duda de sintaxis..
Programación C/C++
digimikeh 5 2,275 Último mensaje 13 Abril 2019, 19:34 pm
por Loretz
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines