Cómo crear funciones que devuelven valores en la programación c
Una gran mayoría de las funciones del lenguaje C devolver una de valor, es decir, que generan algo. Su código no puede usar los valores, pero son devueltos todos modos.
Una función que devuelve un valor ilustra una función que se envía un valor y devuelve otro valor. Esa es la forma en la mayoría de las funciones de trabajo, aunque algunas funciones devuelven valores sin necesidad de recibir ninguna. Por ejemplo, getchar () devuelve la entrada pero no requiere ningún argumento. En una versión más estricta, la función de conversión () acepta un valor Fahrenheit y devuelve su centígrados equivalente.
Una función que devuelve un valor
#include flotador converso (float f) -INT main () {temp_f flotador, temp_c-printf ("La temperatura en grados Fahrenheit:") -scanf ("% f", temp_f) -temp_c = convertir (temp_f) -printf ("% .1fF es% .1fC n ", temp_f, temp_c) -Retorno (0) -} float converso (float f) {float tt = (f - 32) / 1,8-retorno (t) -}
Línea 3 en una función que devuelve un valor declara prototipo de la función de conversión (). La función requiere un valor de punto flotante y devuelve un valor de punto flotante.
La función de conversión () se llama en la línea 11. Su valor de retorno se almacena en la variable temp_c en esa misma línea. En la línea 12, printf () muestra el valor original y la conversión. Se utiliza el marcador de posición .1f. Limita la salida de punto flotante a todos los números a la izquierda del punto decimal, pero sólo un número a la derecha.
La función de conversión () comienza en la línea 16. Utiliza dos variables: F contiene el valor que se pasa a la función, una temperatura en grados Fahrenheit. Una variable local, t, se utiliza para calcular el valor de temperatura Celsius, declarado en la línea 18 y asignado por la fórmula en la línea 20.
Línea 20 convierte el valor f Fahrenheit en el valor de t Celsius. Los paréntesis que rodean f - 32 directa el compilador para realizar esa parte del cálculo primero y luego dividir el resultado por 1,8. Si omite los paréntesis, 32 se divide por 1,8 en primer lugar, lo que conduce a un resultado incorrecto.
Resultado de la función es enviado de vuelta en la línea 21 mediante el uso de la palabra clave de retorno.
Ejercicio 1: Escriba el código fuente de una función que devuelve un valor en su editor. Genere y ejecute.
Funciones que devuelven valores pueden tener ese valor almacenado en una variable, como se muestra en la línea 11 de una función que devuelve un valor, o también pueden utilizar el valor inmediatamente. Por ejemplo:
printf (". 1FF% es% .1fC n", temp_f, convertir (temp_f)) -
Ejercicio 2: Editar el código fuente de una función que devuelve un valor de modo que la función de conversión () se utiliza inmediatamente en la función printf (). Insinuación: Esa no es la única línea que usted necesita para arreglar para hacer el cambio completo.
También se puede notar que la propia función convert () tiene un elemento redundante. ¿Usted realmente necesita la t variable en esa función?
Ejercicio 3: Edite el código fuente del Ejercicio 2, esta vez comparando la t variable de la función de conversión ().
Honestamente, usted puede simplemente eliminar la función de conversión () por completo porque es sólo una línea. Sin embargo, el beneficio de una función como que uno es que se puede llamar desde cualquier lugar en el código.
Así que en lugar de repetir lo mismo una y otra vez, y tienen que editar esa repetida trozo de texto una y otra cuando algo cambia, sólo tiene que crear una función. Tal cosa es perfectamente legítimo, y se hace todo el tiempo en C.
Una versión más estricta muestra el resultado final para el ejercicio 3.
UNA VERSIÓN MÁS ESTRECHO
#include flotador converso (float f) -INT main () {float temp_f-printf ("La temperatura en grados Fahrenheit:") -scanf ("% f", temp_f) -printf ("% 1 ss es% .1fC n". , temp_f, convertir (temp_f)) - retorno (0) -} float converso (float f) {return (f - 32) / 1.8-}
Matemáticas La función de conversión () se comprime a una línea, por lo que una variable de almacenamiento temporal (t desde la Línea 18 en una función que devuelve un valor) no es necesario.