Functions, parameters, and return values · Funciones, parámetros y valores de retorno
Por qué usar funciones
- Una función es un bloque de código con nombre que realiza una tarea. La escribes una sola vez y la llamas cada vez que la necesitas.
- Las funciones mantienen los programas cortos y claros, y permiten construir tareas grandes a partir de otras pequeñas.
- Ya has usado
printf—una función de<stdio.h>—. Ahora escribirás la tuya propia.
Parámetros y valores de retorno
- Los valores que pasas son los parámetros. El valor que devuelves es el valor de retorno.
int max2(int a, int b)toma dos parámetrosinty devuelve unint.return x;finaliza la función inmediatamente y devuelvexal llamador.
Funciones void y construcción de lo grande a partir de lo pequeño
- Una función que no retorna nada tiene como tipo de retorno
void. Realiza una tarea pero no devuelve ningún valor. - Una función puede llamar a otra.
max3puede llamar amax2dos veces para cumplir su cometido. - Las funciones pequeñas que hacen una sola cosa son más fáciles de leer y corregir.
C copia tus argumentos
- Cuando llamas a una función, C le pasa una copia de cada argumento.
- Por tanto, modificar un parámetro dentro de la función no cambia la variable del llamador.
- Tenlo en cuenta: en una lección posterior, los punteros permitirán que una función acceda al original.
#include <stdio.h>
void try_double(int x) {
x = x * 2; // changes only the COPY
}
int main(void) {
int n = 5;
try_double(n);
printf("%d\n", n); // still 5 — the original did not change
return 0;
}
Errores comunes
- Una función utilizada antes de ser definida necesita un prototipo encima de
main. - Los argumentos se pasan por valor: pasa un puntero si deseas modificar la variable del llamador.
Ahora te toca a ti
- Escribe cada función con el nombre exacto y los parámetros mostrados, y haz que
returnel valor correcto. - Puedes llamar a una de tus funciones desde otra.
- No escribas un
main—el verificador proporciona uno—.
Functions: call and return · Funciones: llamada y retorno
A call pushes a frame with its parameters; return pops it. · Una llamada empuja un marco con sus parámetros; return lo elimina.
Write int max2(int a, int b) returning the larger of two numbers, and int max3(int a, int b, int c) returning the largest of three. Make max3 call · llamada max2. Do not · no write a main. · Escribe int max2(int a, int b) que devuelva el mayor de dos números, y int max3(int a, int b, int c) que devuelva el mayor de tres. Haz que max3 llame a max2. No escribas una main.
Click Run to see the output here. · Haz clic en Ejecutar para ver la salida aquí.
Complete int power(int base, int exp) so it returns base raised to exp (assume exp >= 0). Use a loop. power(2, 10) is 1024. Do not · no write a main. · Completa int power(int base, int exp) para que devuelva base elevado a exp (asume exp >= 0). Usa un bucle. power(2, 10) es 1024. No escribas una main.
Click Run to see the output here. · Haz clic en Ejecutar para ver la salida aquí.
Complete int clamp(int x, int lo, int hi) so it keeps x within [lo, hi]: return lo if x is below lo, hi if x is above hi, otherwise x. Do not · no write a main. · Completa int clamp(int x, int lo, int hi) para que mantenga x dentro del rango [lo, hi]: devuelve lo si x está por debajo de lo, hi si x está por encima de hi, o bien x en otro caso. No escribas una main.
Click Run to see the output here. · Haz clic en Ejecutar para ver la salida aquí.