Autor
|
Tema: Retorno (Leído 5,129 veces)
|
FKT
Desconectado
Mensajes: 221
|
|
Retorno
« en: 2 Septiembre 2015, 19:55 pm » |
|
Nunca he sabido como funciona exactamente lo de que la función retorne un valor, sé que cuando el programa le dice que cuando la función termine envié un 0 para que sepa si el programa se ha ejecutado sin errores pero como funciona ? Igual parece una pregunta exageradamente absurda. El 0 que retorna la función main() se retorna hacia main() o ese 0 que hace? esque me gusta aprender las cosas desde la raíz.
|
|
|
En línea
|
Solo hay 10 tipos de personas, las que saben binario y las que no.
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
|
Re: Retorno
« Respuesta #1 en: 2 Septiembre 2015, 21:09 pm » |
|
Si bien main es un retorno, es el último retorno en el que debas pensar. No funciona igual que una función normal.
Practica con funciones normales primero.
Si sigues queriendo ver lo del main, imagínate al sistema operativo llamando a la función main() de tu programa. Como si fuera una función normal.
|
|
|
En línea
|
|
|
|
FKT
Desconectado
Mensajes: 221
|
|
Re: Retorno
« Respuesta #2 en: 2 Septiembre 2015, 21:19 pm » |
|
Si bien main es un retorno, es el último retorno en el que debas pensar. No funciona igual que una función normal.
Practica con funciones normales primero.
Si sigues queriendo ver lo del main, imagínate al sistema operativo llamando a la función main() de tu programa. Como si fuera una función normal.
Entiendo... entonces si hablamos de funciones normales?
|
|
|
En línea
|
Solo hay 10 tipos de personas, las que saben binario y las que no.
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
|
Re: Retorno
« Respuesta #3 en: 3 Septiembre 2015, 00:24 am » |
|
Las funciones cogen unos parámetros (si hay), los procesan, y retornan un resultado (salvo que sea void). float n = sqrt(2.0); // SQuareRooT, Raíz cuadrada
Ahora "n" es igual a lo que retornó esa función, es decir, la raiz cuadrada de 2.
|
|
|
En línea
|
|
|
|
FKT
Desconectado
Mensajes: 221
|
|
Re: Retorno
« Respuesta #4 en: 3 Septiembre 2015, 12:55 pm » |
|
Las funciones cogen unos parámetros (si hay), los procesan, y retornan un resultado (salvo que sea void). float n = sqrt(2.0); // SQuareRooT, Raíz cuadrada
Ahora "n" es igual a lo que retornó esa función, es decir, la raiz cuadrada de 2. Asi? Primero aclaro que nunca he usado funciones ( aparte de main() ), solo he leido y como se usan, así que sera la primera subfunción que hago. #include <stdio.h> #include <stdlib.h> int funcionSuma(int numero1, int numero2){ int retornoDeResultado; retornoDeResultado = numero1 + numero2; return retornoDeSuma; } int main(){ int primerNumero, segundoNumero, resultaldoSuma; printf("Introduze el primer numero:\n"); scanf("%i",&primerNumero ); printf("Introduce el segundo numero: \n); scanf("%i",&segundoNumero); resultadoSuma = retornoDeSuma; printf("La suma de los dos numeros es: %i",resultadoSuma); return 0; }
Bueno espero que el número de errores sea mínimo Creo que lo he echo bien pero una cosa que he echo porque he visto que todos lo hacen así es que en la subfunción ponen parametros como por ejemplo en mi caso los enteros: (int numero1, int numero2)
Porque no se ponen dentro de la función poniendo: int numero1, numero2;
O si así no es posible porque en parámetros no se pone la variable que se va ha usar como resultado también? (espero haberme explicado bien).
|
|
|
En línea
|
Solo hay 10 tipos de personas, las que saben binario y las que no.
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
|
Re: Retorno
« Respuesta #5 en: 3 Septiembre 2015, 13:46 pm » |
|
Los parámetros, se le pasan a la función, y son esos entre los paréntesis. Tu código sería así: resultadoSuma = funcionSuma(primerNumero, segundoNumero);
Ahí lo que ocurre es que esos dos valores se les pasa a la función. Así que en tu función, y rtepito, SOLO DENTRO de tu función, las variables numero1 y numero2 seran iguales a primerNumero y a segundoNumero, respectivamente. Una vez ahí, tras toda la lógica que quieras, se retorna un valor. Un valor, no una variable. Si pones "return retornoDeSuma;", se retornará el valor de la variable retornoDeSuma. Una vez la función ha retornado, donde antes tenias "funcion(...)", ahora "tienes" el valor de retorno. Incluso puedes poner: printf("La suma de los dos numeros es: %i", funcionSuma (primerNumero , segundoNumero ));
|
|
|
En línea
|
|
|
|
FKT
Desconectado
Mensajes: 221
|
|
Re: Retorno
« Respuesta #6 en: 3 Septiembre 2015, 17:36 pm » |
|
Es verdad... me he dejado los parametros cuando asigno el retorno de la funcón a "resultadoSuma". Una vez ahí, tras toda la lógica que quieras, se retorna un valor. Un valor, no una variable. Si pones "return retornoDeSuma;", se retornará el valor de la variable retornoDeSuma.
Entiendo que devuelve un valor pero el valor no se tiene que guardar en una variable para usarla en la función principal? y si no es así como en el return de una funcion como la del ejemplo que se pone?
|
|
|
En línea
|
Solo hay 10 tipos de personas, las que saben binario y las que no.
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
|
Re: Retorno
« Respuesta #7 en: 3 Septiembre 2015, 20:29 pm » |
|
Puedes poner: int funcionSuma(int numero1, int numero2){ return numero1 + numero2; }
|
|
|
En línea
|
|
|
|
FKT
Desconectado
Mensajes: 221
|
|
Re: Retorno
« Respuesta #8 en: 4 Septiembre 2015, 10:30 am » |
|
Puedes poner: int funcionSuma(int numero1, int numero2){ return numero1 + numero2; }
Vale, pero he leído que en programas largos es mejor meter el valor que va ha retornar en una variable, es así?
|
|
|
En línea
|
Solo hay 10 tipos de personas, las que saben binario y las que no.
|
|
|
ivancea96
Desconectado
Mensajes: 3.412
ASMático
|
|
Re: Retorno
« Respuesta #9 en: 4 Septiembre 2015, 11:10 am » |
|
Depende. En un programa largo, el retorno puede acabar como el resultado de una multiplicacion, de una suma, o del retorno de otra función. Guardar porque sí, al final es una asignación extra.
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
problema con el retorno del rey
Juegos y Consolas
|
dakaiz
|
3
|
2,846
|
4 Enero 2004, 02:35 am
por dakaiz
|
|
|
Retorno al foro
Sugerencias y dudas sobre el Foro
|
gabymar
|
1
|
2,713
|
15 Febrero 2010, 21:51 pm
por sirdarckcat
|
|
|
Retorno de carro
Hacking Wireless
|
dss76
|
1
|
2,552
|
28 Agosto 2010, 15:30 pm
por laxelaxante
|
|
|
MOVIDO: Retorno
Programación General
|
Eleкtro
|
0
|
1,517
|
6 Septiembre 2015, 16:36 pm
por Eleкtro
|
|
|
Problema con función con retorno
Programación C/C++
|
nemesis27
|
6
|
3,245
|
12 Mayo 2017, 21:25 pm
por nemesis27
|
|