"La différence, pour les langages qui distinguent fonctions et procédures, c'est que la fonction retourne un résultat au programme appelant. Mais la fonction peut également remplir d'autres taches.
La procédure ne retourne pas de résultat (directement) au programme appelant, c'est un sous-programme, qui remplit une tache précise."
http://www.commentcamarche.net/forum/affich-6435771-procedure-et-fonction
(Plus clair que mes explications)
À noter que certains langages ne distinguent pas une procédure à une fonction (C).