Te dice archivo, línea, columna y hasta cómo arreglarlo. Léelo: es el mejor tutor que vas a tener a las 2 a. m.
Salida real de clang 21.1.0 · gcc lo expresa con otras palabras
Qué es una función
Una máquina: entra algo, sale algo.
a = 2
b = 3
suma
a + b
5
Entradas · parámetros
Lo que la función recibe.
Salida · valor de retorno
Lo que la función devuelve a quien la llamó.
FUNCIÓN suma(a, b) RETORNAR a + b FIN-FUNCIÓN
Cómo se declara
Cuatro piezas. main también es una.
int
tipo de retorno
Qué tipo de valor devuelve.
suma
nombre
Cómo la vas a llamar.
(int a, int b)
parámetros
Las entradas, con su tipo.
{ … }
cuerpo
Lo que hace la máquina.
int suma(int a, int b)
{
return a + b;
}
Y int main(void) sigue la misma receta: devuelve un int (el 0 del final) y no recibe nada.
Definir, llamar, recibir
suma.c
#include<stdio.h>int suma(int a, int b)
{
return a + b;
}
int main(void)
{
int total = suma(2, 3);
printf("%d\n", total);
return 0;
}
$ gcc suma.c && ./a.out
5
Lo que pasa al llamar
1suma(2, 3) main llama a la función
2a = 2, b = 3 los parámetros reciben los valores
3return 5 el cuerpo calcula y devuelve
4total = 5 main guarda el valor de retorno
El prototipo
Avisa que existe antes de usarla.
Sin prototipo
suma_sinproto.c:5:20: error: call to undeclared function 'suma'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
5 | printf("%d\n", suma(2, 3));
| ^
1 error generated.
Salida real de clang 21.1.0
Con prototipo
#include<stdio.h>int suma(int a, int b); /* prototipo */int main(void)
{
printf("%d\n", suma(2, 3));
return 0;
}
int suma(int a, int b)
{
return a + b;
}
Compila y imprime 5
El prototipo es la firma de la función con punto y coma: solo le adelanta al compilador cómo se llama y qué recibe.
Reto
Tu primera función.
1
Crea reto.c con un main que imprima tu Hola, mundo
2
Escribe int cuadrado(int n)Debe devolver n multiplicado por n.
3
Llámala desde main con el número que quierasImprímelo con printf("%d\n", …).
4
Compila, ejecuta y rompe algo a propósitoQuita un punto y coma o mueve la función debajo de main. Lee el error.
reto.c
$ gcc reto.c && ./a.out
Hola, mundo
49
Ejemplo con n = 7
El mensaje de hoy
Tu computadora no te entiende.
Un compilador sí lo intenta.
Cada programa de este deck se compiló y se ejecutó antes de llegar a esta sala. Ahora te toca a ti.