En lugar de funciones , comience con subrutinas . Dígales que un programa es solo una lista de instrucciones, una receta para decirle a la computadora cómo hacer algo. Y que se está ejecutando una instrucción tras otra (con la posibilidad de hacer algunos pasos en paralelo, pero más sobre eso más adelante).
Algunas tareas son bastante comunes y repetitivas, por lo que sería terrible si siempre tuviéramos que escribirlas una y otra vez, por lo que las escribimos solo una vez y hacemos un "programa más pequeño": una subrutina que puede ser reutilizada por otras partes del programa Para poder ejecutarlo más de una vez, le damos un nombre significativo en nuestro programa. Y luego podemos usar ese nombre cuando queramos ejecutar este "pequeño programa" como parte de uno más grande, llamándolo por ese nombre.
Llamar a una subrutina es como convocar a un demonio que sabe cómo realizar esa tarea, con el nombre de ese demonio. Entonces, cuando queremos hacer esa tarea en particular en nuestro programa, escribimos "llama al demonio llamado Argoth", y el demonio aparece y hace la tarea por nosotros como le indicamos, y luego se va y podemos continuar con nuestro trabajo.
A veces, el demonio requiere información adicional sin la cual no puede decidir qué tareas realizar, o qué es lo que realmente queremos de él. Por ejemplo, si se supone que el demonio construye un castillo, es posible que necesite saber dónde se supone que lo construirá, o qué tan grande , etc. Esos son los argumentos pasados al demonio ... Quiero decir, la subrutina, que ahora se convierte en parametrizada .
Los parámetros son aquellas piezas de información que faltan, pero se requieren, para realizar la tarea. Cambian un poco lo que la subrutina puede hacer. Son como espacios en blanco en la receta que deben completarse antes de que podamos ejecutarla.
Los argumentos , por otro lado, son la información real (valores) que suministramos para estos parámetros.
En cuanto a la ejecución paralela, podemos pensar de esta manera: siempre hay alguien (o algo ) que está ejecutando el programa (la lista de instrucciones). Es otro ser humano (¿sabías que "computadora" alguna vez fue el nombre de una persona que realizaba el cálculo?) O una máquina. Un programa es solo una lista de instrucciones, no funciona por sí solo. Debe haber alguien o algo que haga el proceso computacional(realice estas acciones de la lista). Y a veces estas acciones se pueden hacer en paralelo: podemos distribuir las copias de la lista a varias personas y dejar que cada una de ellas realice un conjunto diferente de tareas de la lista, siempre que no se interrumpan entre sí, o no No tiene que esperar los resultados del trabajo de otra persona. Eso es multihilo para ti;)
En cuanto a la diferencia entre funciones y subrutinas (también llamadas procedimientos ), la diferencia habitual es que se llama a una función para calcular un cierto valor que devuelve como resultado de su ejecución, mientras que los procedimientos se ejecutan solo por diversión;) AKA por sus "efectos secundarios", solo por el bien de las operaciones realizadas de la lista.
Pero si llama un procedimiento o función causa algunos problemas al principio, puede usar otro término que alguna vez fue popular: saltar . Uno puede saltar a una subrutina, lo que significa que deja de ejecutar lo que esté haciendo en este momento y "salta" a otro lugar en la lista (u otra lista), la subrutina, para realizar sus tareas. Luego, cuando terminas, "saltas", es decir, regresas al lugar donde te interrumpieron, para que puedas continuar con tu tarea anterior. La diferencia entre llamar y saltar es que ahora eres el demonio.
En cuanto a los métodos mencionados aquí por alguien, o el hecho de que algunos lenguajes "no tienen funciones, solo métodos", ¡eso no es del todo correcto, porque los métodos son funciones! - un tipo especial de ellos: son funciones que se están utilizando para recuperar cierta información encapsulada dentro de un objeto, u operar en ellas. Son un "método de operar con esos datos". El nombre proviene del paradigma orientado a objetos en el que los datos están encerrados dentro de objetos y no se pueden operar directamente, solo mediante funciones especiales llamadas "métodos".
Un método es especial de otra manera: tiene que saber qué objeto en particular se supone que debe operar / ser llamado (el objeto "este"). Es por eso que los métodos generalmente se embellecen con un parámetro oculto adicional que almacena información sobre el objeto sobre el que se ha llamado (el puntero "este"). Esto complica la forma en que se llama un poco a la función, pero es un "detalle de implementación" que un programador no debería molestar mucho, siempre que sepa lo que está haciendo.