Como procesa la maquina o el programa el valor de retorno??

Iniciado por FKT, 8 Septiembre 2015, 22:46 PM

0 Miembros y 1 Visitante están viendo este tema.

FKT

Entiendo perfectamente que cada programa tiene que devolver un valor, o no, pero nunca he entendido porque, por ejemplo cuando retorna un 0 la función principal es para indicar que el programa se ha ejecutado sin ningún tipo de problemas, pero el nombre retornar me ha echo liarme y pensar que cuando el programa ha terminado de procesar todo el código el numero 0 en el caso de por ejemplo una función main() sin llamada del sistema operativo o de otro programa, se devuelve a la parte de int main(), creo que no me he explicado muy bien aunque no sé otra forma de explicar como lo pienso,  dejare una imagen de lo que me ha echo pensar que hace el 0 en el retorno:




Igual no tiene mucha lógica pero bueno si alguien me explica que hace el 0 o por donde "viaja".

Gracias de antemano.
Solo hay 10 tipos de personas, las que saben binario y las que no.

ivancea96

Olvida eso de volver al principio de la función, no tiene que ver.

Realmente, deberías olvidarte de la función main de momento, y seguir.

http://v1.minidosis.org/C++/Subprogramas/Varias%20Funciones%201/

¿Por donde viaja el retorno de una función?
CitarLo de retorno no es más que una abstracción para simplificar la realidad. Y la realidad, que es lo que verás si llegas a programar ensamblador, es que "llamar a una función X, con unos parámetros A y B", es mover los parámetros A y B a registros de la CPU (o a la pila, según), y saltar a la dirección de la función.

Ahora veamos: cuando la función va a "devolver un valor", lo que hace es, generalmente, meter ese valor en un registro de la CPU. Una vez ahí guardado, retorna al punto desde el que fue llamado, y continúa por ahí. El retorno, estará guardado en el registro, y será utilizado por el programa de la manera que considere.

Hasta te recomendaría que aprendieses ensamblador, puesto que es lo más básico y simple, y no hay nada "oculto". Todo es como es, y como tal lo ves.

FKT

#2
Cita de: ivancea96 en  9 Septiembre 2015, 00:16 AM
Olvida eso de volver al principio de la función, no tiene que ver.

Realmente, deberías olvidarte de la función main de momento, y seguir.

http://v1.minidosis.org/C++/Subprogramas/Varias%20Funciones%201/



El chico de Minidosis creo que es de los únicos que me hace entender la programación de forma más fácil, así que gracias por el link que no lo tenía guardado.

Cita de: ivancea96 en  9 Septiembre 2015, 00:16 AM
¿Por donde viaja el retorno de una función?
Hasta te recomendaría que aprendieses ensamblador, puesto que es lo más básico y simple, y no hay nada "oculto". Todo es como es, y como tal lo ves.

Tengo pensado estudiar ensamblador después de C y python, que es mejor que aprenda después de C??

Por cierto cuando lee:
Código (cpp) [Seleccionar]
cin >> dia >> c >> mes >> c >> anyo;

El programa ya espera a que indiques el valor de esas variables es así?, sí es así en C que se hace con fgets()? Porque con scanf() no lo veo...
Saludos.

Solo hay 10 tipos de personas, las que saben binario y las que no.

ivancea96

cin >> var;

Lo único que hace es leer del flujo de entrada. Si lo que lee lo puede meter en la variable var, lo convierte y lo mete.

Es como hacen scanf y otros. Cada uno tiene su utilidad. De todos modos, cin es C++, y hay más cosas escondidas detrás de la sintaxis
Código (cpp) [Seleccionar]
cin >> a >> b >> c;
que no hace falta mencionar ahora.

FKT

Cita de: ivancea96 en  9 Septiembre 2015, 15:40 PM
cin >> var;

Lo único que hace es leer del flujo de entrada. Si lo que lee lo puede meter en la variable var, lo convierte y lo mete.

Es como hacen scanf y otros. Cada uno tiene su utilidad. De todos modos, cin es C++, y hay más cosas escondidas detrás de la sintaxis
Código (cpp) [Seleccionar]
cin >> a >> b >> c;
que no hace falta mencionar ahora.

Entiendo... Pero esto es posible¿?

scanf("%i %f %f %c",&numeroentero,&flotante,&flotante2,&nombre);

Saludos
Solo hay 10 tipos de personas, las que saben binario y las que no.

ivancea96

%c es caracter. %s es para cadenas de caracteres.
Y sí, es posible. Sinó, prueba.

FKT

Cita de: ivancea96 en  9 Septiembre 2015, 16:14 PM
%c es caracter. %s es para cadenas de caracteres.
Y sí, es posible. Sinó, prueba.

Comprobado, y si, es posible.
Gracias :)
Solo hay 10 tipos de personas, las que saben binario y las que no.