De Pascal no controlo mucho, yo controlo de ADA que según tengo entendido es como un hermano mayor en cuanto a sintaxis. Pero la pregunta es muy general. Es muy sencillo, una función es un bloque de código que devuelve algún resultado que puedes almacenar en una variable de tu programa. Por ejemplo, en 'pseudolenguaje': function Suma(a as int,b as int) return a+b end res=suma(1,1) 'asignará 2 a res Un proceso, procedimiento, método o como lo llamen es un bloque que no devuelve nada, pero que puede operar con las variables que le pasas como parámetros. Por ejemplo: procedure DimeAlgo(string elque) print(elque) end DimeAlgo("hola") Hay dos maneras de pasar parámetros a funciones y procedimientos. Si pasas 'por valor', le estás dando una copia a la función/procedimiento que luego se destruye. Sin embargo, si pasas 'por referencia', pasas directamente la variable (en realidad, un puntero a la variable), y cualquier cambio que se haga sobre ella se mantiene tras terminar la funcion/procedimiemto. Por ejemplo, en ADA el paso por valor se hace poniendo 'in' delante de la variable, y el paso por referencia con 'out'. La función de sumar de arriba quedaría: procedure Suma(in a as int,in b as int,out c as int) c=a+b end Suma(1,1, res) 'dejaría en res 2 Si tienes alguna otra duda o quieres que te aclare algo, no dudes en preguntarme.