elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Retorno
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Retorno  (Leído 4,619 veces)
FKT

Desconectado Desconectado

Mensajes: 221



Ver Perfil
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. ;D


En línea

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


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
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 Desconectado

Mensajes: 221



Ver Perfil
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 Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
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).

Código
  1. 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 Desconectado

Mensajes: 221



Ver Perfil
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).

Código
  1. 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.

Código
  1.  
  2. #include <stdio.h>
  3. #include <stdlib.h>
  4.  
  5. int funcionSuma(int numero1, int numero2){
  6.  
  7.     int retornoDeResultado;
  8.  
  9.     retornoDeResultado = numero1 + numero2;
  10.  
  11.  
  12.     return retornoDeSuma;
  13.  
  14.  
  15. }
  16.  
  17.  
  18.  
  19. int main(){
  20.  
  21. int primerNumero, segundoNumero, resultaldoSuma;
  22.  
  23.     printf("Introduze el primer numero:\n");
  24.     scanf("%i",&primerNumero);
  25.     printf("Introduce el segundo numero: \n);
  26.     scanf("%i",&segundoNumero);
  27.  
  28.     resultadoSuma = retornoDeSuma;
  29.  
  30.     printf("La suma de los dos numeros es: %i",resultadoSuma);
  31.  
  32.     return 0;
  33.  
  34. }
  35.  

Bueno espero que el número de errores sea mínimo  ;D

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:
Código
  1. (int numero1, int numero2)
Porque no se ponen dentro de la función poniendo:
Código
  1. 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 Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
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í:

Código
  1. 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:

Código
  1. printf("La suma de los dos numeros es: %i", funcionSuma(primerNumero, segundoNumero));
En línea

FKT

Desconectado Desconectado

Mensajes: 221



Ver Perfil
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 Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Retorno
« Respuesta #7 en: 3 Septiembre 2015, 20:29 pm »

Puedes poner:

Código
  1. int funcionSuma(int numero1, int numero2){
  2.    return numero1 + numero2;
  3. }
En línea

FKT

Desconectado Desconectado

Mensajes: 221



Ver Perfil
Re: Retorno
« Respuesta #8 en: 4 Septiembre 2015, 10:30 am »

Puedes poner:

Código
  1. int funcionSuma(int numero1, int numero2){
  2.    return numero1 + numero2;
  3. }

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 Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
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

Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
problema con el retorno del rey
Juegos y Consolas
dakaiz 3 2,652 Último mensaje 4 Enero 2004, 02:35 am
por dakaiz
Retorno al foro
Sugerencias y dudas sobre el Foro
gabymar 1 2,545 Último mensaje 15 Febrero 2010, 21:51 pm
por sirdarckcat
Retorno de carro
Hacking Wireless
dss76 1 2,353 Último mensaje 28 Agosto 2010, 15:30 pm
por laxelaxante
MOVIDO: Retorno
Programación General
Eleкtro 0 1,356 Último mensaje 6 Septiembre 2015, 16:36 pm
por Eleкtro
Problema con función con retorno
Programación C/C++
nemesis27 6 3,001 Último mensaje 12 Mayo 2017, 21:25 pm
por nemesis27
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines