/
Inicio :: Foros

 F.A.Q.F.A.Q.                  Conéctese para revisar sus mensajesConéctese para revisar sus mensajes   

Me da hasta verguenza preguntar...

 
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Ver tema anterior :: Ver siguiente tema  
AutorMensaje
Burnsed



Registrado: 11 Ene 2012
Mensajes: 5

MensajePublicado: 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

MensajePublicado: 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 Wink
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. Wink
_________________
Aprendiendo
Volver arriba
Burnsed



Registrado: 11 Ene 2012
Mensajes: 5

MensajePublicado: 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

MensajePublicado: 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
      Índice del Foro elrincondelc.com -> Principiantes C/C++
Página 1 de 1Todas las horas están en GMT - 8 Horas

 
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

(c) ElRincondelC.com

Un proyecto de UrlanHeat.com