*Básicamente es que la función te puede devolver algún valor en especial, sin embargo el procedimiento no lo puede hacer.
*Procedimiento = Proceso que puede o no requerir valores de entrada.
void MyProces(void);
void MyProces(int x);
Función = Proceso que admite valores de entrada y devuelve un resultado del tipo de dato del cual se ha declarado la función.
int MyFunt(char a, int x);
*Ambos son casi idénticos, la diferencia radica en que una función puede regresar un valor y un procedimiento no, realmente muchos lenguajes de programación modernos manejan únicamente funciones que pueden opcionalmente regresar un valor o no por medio de return();
Ejemplo en Pascal se manejaba así:
procedure print_screen()
{
draw();
}
function get_time()
{
return "01/01/2009";
}
en C:
void print_screen()
{
draw();
}
date get_time()
{
return "01/01/2009";
}