| Ver tema anterior :: Ver siguiente tema | | Autor | Mensaje |
|---|
Burnsed
Registrado: 11 Ene 2012 Mensajes: 5
| Publicado: 11/01/2012 5:21 am | | | Título: Me da hasta verguenza preguntar... |
| Bueno verán, empeze hace 2 días con esto del C. Me recomendaron empezar por este lenguaje ya qué es muy parecido a los demás, y bien, me dijeron que el tutorial de Gorka, el admin, estaba muy bien, y sí, la verdad, lo está. Pero que es lo que pasa cuando me quedo trabado? Cuando no encuentro la razón a lo que se tiene que hacer para que ese programa haga eso? Pues que me desespero y lo veo muy difícil lo de programar. Por ejemplo, en el tema 7, el de sentencias. En el ejercicio 3 dice: Ejercicio 3: Escribe un programa que muestre en pantalla lo siguiente: * ** *** **** *****
La solución es:
| Código: | int main() { int i, j; for( i=0; i<6; i++ ) { for( j=0; j<i; j++ ) printf( "*" ); printf( "\n" ); } return 0; }
|
Vale. Aquí ya me rayo, como todos pensareis: peró si esto es muy básico. Yo no lo veo tan básico, no se ni que hace la variable i ni que hace la j. Esto no es todo, el tema siguiente, tema 8, las funciones... Esto ya se complica, y mucho... no entiendo que hace el void, porque se tienen que devolver valores con return... no entiendo el ejemplo 3... En fin, dudas como estas tengo y tendré... No se si me explico peró lo veo muy difícil... Gracias, acepto consejos. |
| | Volver arriba | |  | dehm
Registrado: 29 Abr 2011 Mensajes: 32
| Publicado: 11/01/2012 8:54 am | | | Título: |
| Bueno, pues paciencia y a preguntar, que nadie nació aprendido. Lo que preguntas de los bucles es la primera bestia negra que tenemos los aprendices. En este caso se trata de un bucle anidado. El segundo bucle se repetirá las veces que marque el primero. Te pongo la versión C++ con alguna corrección y con comentarios:
| Código: | #include <iostream> using namespace std;
int main () { int i, j; //primer bucle que se repetirá 5 veces (desde 1 hasta 5) for(i=1; i<6; i++) { //este es el bucle mas interesante. //en las 5 veces que se repetirá, la primera será un bucle que va desde //j=0 hasta i=1, es decir, lo que hay dentro se hará 1 vez //lo que hay dentro es imprimir el caracter "*" //terminado esa acción se imprime el retorno de carro
//volvemos al bucle superior //ahora i=2, por lo que el inferior va desde 0 hasta 2 //es decir, el contenido del bucle se hace dos veces //como el contenido es imprimir el caracter "*" pues lo hace 2 veces //nuevo retorno de carro //y así hasta que el último bucle va desde 0 hasta 5
for(j=0; j<i; j++) { cout<<"*"; } cout<<endl; } return 0; } |
Bueno, me explico requetefatal.
La idea es que el primer bucle se repite 5 veces. Además, el valor de i es incrementado en cada iteración y servirá de valor para el segundo, con lo que el segundo bucle ira desde j=0 a i=1 realizo lo que hay dentro 1 vez {imprimir "*"} + retorno de carro j=0 a i=2 realizo lo que hay dentro 2 veces{imprimir "*"} + retorno de carro j=0 a i=3 realizo lo que hay dentro 3 veces {imprimir "*"} + retorno de carro j=0 a i=4 realizo lo que hay dentro 4 veces{imprimir "*"} + retorno de carro j=0 a i=5 realizo lo que hay dentro 5 veces {imprimir "*"} + retorno de carro
Alguien te lo explicará mejor que yo  Como me dijeron a mi, ensaya mucho los bucles. No es que yo los haga ya bien, pero estaba como tú por mayo, así que se como te sientes.  _________________ Aprendiendo |
| | Volver arriba | |  | Burnsed
Registrado: 11 Ene 2012 Mensajes: 5
| Publicado: 11/01/2012 1:01 pm | | | Título: Me queda claro. |
| Sí, vale, me queda claro esto, peró esque joder por mucho que me sepa como va cada sentencia, y eso, no se como hacer para que un programa haga lo que yo quiera, no se ingeniarmelas... tengo 15 años y yo creo que tengo cierta edad para espavilarme, ya que quiero estudiar ingenieria informatica en la universidad e ir preparado... Si una cosa tengo claro, es que rendirse es de cobardes... |
| | Volver arriba | |  | | Pantalàimon_
Registrado: 17 Jul 2007 Mensajes: 922
| Publicado: 11/01/2012 6:00 pm | | | Título: |
| Quizá te hace dudar el sangrado. El código sangrado al estilo K&R:
| Código: | int main() { int i, j; for( i=0; i<6; i++ ) { for( j=0; j<i; j++ ) printf( "*" ); printf( "\n" ); } return 0; }
|
Es decir, dentro del for más interior sólo hay la sentencia printf( "*" );. Identado como lo tenías antes parecería que tanto printf("*"); como printf("\n"); se ejecutaran dentro del for interior. Para que se ejecutaran las 2 sentencias dentro del for interior es necesario poner llaves:
| Código: | int main() { int i, j; for( i=0; i<6; i++ ) { for( j=0; j<i; j++ ) { printf( "*" ); printf( "\n" ); } } return 0; }
|
Pero en este caso se ejecutaría de forma no deseada. Sólo lo pongo porque quizá es así como has interpretado que se ejecutaría el código y te puede aclarar un poco.
Ánimos! |
| | Volver arriba | |  | | |
| No puede crear mensajes No puede responder temas No puede editar sus mensajes No puede borrar sus mensajes No puede votar en encuestas
|
|
| |