Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Caster

#331
Pues estoy leyendo sobre la recursividad y estoy totalmente perdido, no entiendo nada, dice que las llamadas a la funcion no se realizan en el momento de la llamada, sino que se acumulan hasta cumpla una condicion, y despues se ejecutan en orden inverso, es decir, que la primera llamada que se hizo es la ultima en ejecutarse?
Alguien amable podria explicarme esto de una forma algo mas facil, porque estoy muy perdido.

Gracias

EDITO: a ver, algo creo que voy entendiendo, de ejemplo me trae este codigo:

#include <stdio.h>

#define EOLN '\n'

void inverso(void);

int main() {
printf("Introduce una linea de texto debajo: \n");
inverso();
}

void inverso(void) {
char c;

if((c = getchar) != EOLN) inverso();
putchar(c);
return;
}


Antes de nada, no he compilado el codigo, voy a fiarme del libro, A ver si me explico y lo he entendido bien, este programa se supone que escribe el texto introducido al reves, ejemplo:

Citarhola - aloh

Cuaado tu introduces una letra, por ejemplo a, no la escribe, sino que vuelve a llamar a la funcion, es decir entra en bucle ejecutando la linea: if((c = getchar) != EOLN) inverso();hasta que la condicion del if se cumpla, entonces como segun el libro el orden de las llamdas es inverso, la primera letra que introduje sera la ultima en mostrarse, y asi con el resto de caracteres, estoy en lo cierto?

Espero haberlo entendido bien, porque es el ultimo punto de este tema y estoy deseando pasar de tema, pero no sin antes haberlo entendido todo perfectamente.

Gracias de nuevo
#332
Ahora mismo estoy atascado, porque habla de la recursividad, y no entiendo una *****  :xD
#333
Pues el libro es Programacion en C de Byron Gottfried de la edicion Mc Graw Hill.

overfl0w13, por si lees esto, lo del alcance de las variables, varibles locales, globales, estaticas y eso que creo que es de lo que hablas es justo el tema siguiente en mi libro al de las funciones que estoy viendo ahora.

Saludos
#334
Lo de paso por valor es de lo ultimo que he visto, ahora estoy con la recursividad, y ya he visto que el valor de variable solo cambia en la propia funcion, fuera no, lo de los punteros y esas cosas vienen explicadas mas adelante, asi que las vere cuando toque, muchas gracias a todos.

Saludos
#335
Cita de: overxfl0w13 en  1 Octubre 2012, 20:53 PM
Pero el ámbito o alcance de las variables ya se supone que lo tendrías que haber visto.

Pues no te digo que no, lo de las variables hace mucho que lo vi, hace unos meses, y este verano lo deje completamente, y ahora lo retome desde donde lo deje, en las estructuras de control, asi que de algunas cosas ya no me acuerdo, pero poco a poco las ire recordando, para eso esta el libro.

Cita de: overxfl0w13 en  1 Octubre 2012, 20:53 PM
He compilado los 3 códigos y no me da ningún error en ninguno de los 3 tio, mira a ver si lo has copiado bien :)

Es exactamente el mismo codigo, es un copia y pega de lo que has posteado tu y me sigue dando el fallo.

Cita de: Stakewinner00 en  1 Octubre 2012, 21:00 PM
como aprendo por libre de momento.

me pueden decir una rapida definición de lo que són los punteros?

Segun mi libro:

CitarUn puntero es una variable que representa la posicion (en vez del valor)de otro dato.

Lo que entiendo yo, es una variable pero en vez de tratar con valores se refiere a la posicion de la misma en la memoria.

Saludos
#336
Los punteros los tratan mas adelante en el libro que estoy leyendo, asi que voy a dejarlos para cuando toque, he compilado el codigo que has dejado y me da el sigueinte error:

Citar3:20: error: expected ';' , ',' or ')' before '&' token
#337
Pues siempre se aprende algo mas, gracias a mi duda tu tambien has aprendido algo  :D
#338
Pues nada mejor que programarlo y ver que ocurre, he hecho este programa:

#include <stdio.h>

void modificar(int a) {
a *= 3;
printf("\n\na = %d (desde la funcion, modificando el valor)", a);
return ;
}

int main() {

int a = 2;

printf("\na = %d (desde main, antes de llamar a la funcion)", a);
modificar(a);
printf("\n\na = %d (desde main, despues de llamar a la funcion)", a);
getchar();
}



Y el resultado ha sido:

Citara = 2 (desde main, antes de llamar a la funcion)
a = 6 (desde la funcion, modificando el valor)
a = 2 (desde main, despues de llamar a la funcion)

Por los resultados puedo saber que si, que realmente el valor solo cambia dentro de la funcion, para el resto del programa seguiria teniendo el valor 2.

Saludos y gracias por responder.
#339
No se si se entiende la pregunta, a ver que lo explico, por ejemplo, yo tengo una variable entera int a = 2; y una funcion cualquiera que modifica su valor, entonces antes de llamar a la funcion su valor inicial es 2, al llamar la funcion este valor cambia, la pregunta es, ¿despues de que se ejecute la funcion y se vuelva a main(), el valor de a seguira siendo 2 o habra adoptado el valor que se le da en la funcion?

No se si me he explicado correctamente.

Saludos.
#340
Programación C/C++ / Re: Ayuda con un problema.
1 Octubre 2012, 19:09 PM
Pues vete posteando aqui lo que tengas hecho para que podamos ayudarte mejor.

Saludos