¿Cuál es la diferencia (si la hay) entre un algoritmo y un método / función?

Un algoritmo está muy cerca de una prueba matemática (en cierto sentido técnico, es [equivalente a] una prueba matemática). Es una idea , y en general el pseudocódigo es suficiente para explicar un algoritmo, con la idea de que se omiten detalles sin importancia (y exactamente como para las pruebas matemáticas), donde los matemáticos profesionales y los estudiantes de secundaria requieren diferentes niveles de detalles, qué detalles son exactamente omitido variaría mucho).

Se puede implementar un algoritmo (como algún programa) en el código fuente de algunos lenguajes de programación. Un lenguaje de programación es una especificación (escrita en inglés en algún documento, como R5RS para Scheme o n3337 para C ++ 11). El mismo algoritmo (por ejemplo, quicksort) puede implementarse como programas muy diferentes y escribirse en varios lenguajes de programación.

Los métodos y funciones son partes más o menos elementales de los programas (pero algunos lenguajes de programación no los tienen, por ejemplo, Prolog o Brainfuck).

También debe leer SICP e Introducción a los algoritmos.

Un algoritmo es la idea para su programa de computadora (o parte de él, por ejemplo, una función) [también puede hablar sobre un algoritmo fuera de la informática, pero vamos a restringirlo]. Por ejemplo, BubbleSort es un algoritmo, desea lograr el resultado deseado (ordenar algunos valores) y BubbleSort es una de las posibles ideas de los pasos que puede realizar para obtener este resultado. Y si desea utilizar este algoritmo, debe implementarlo realmente para crear una función BubbleSort que realice estos pasos. Pero puede hacerlo de muchas maneras, puede implementarlo sobre Array o List, o como una función genérica, puede implementarlo en Java o C ++ o Python, finalmente puede hacer muchos pequeños detalles de implementación y todo eso sería funciones diferentes, pero cuando las mira, le gustaría decir que, a pesar de la diferencia, esencialmente siguen la misma idea de alto nivel: implementan el mismo algoritmo. [Por supuesto, tampoco es necesario que implemente su algoritmo como una función, puede ser un sistema mucho más grande].

Piénselo de esta manera: el algoritmo es el modelo , son los pasos necesarios para escribir todo el programa o proyecto, o en cualquier caso. Ahora los métodos o funciones son las herramientas que utiliza para producir un resultado específico en su programa.

Olvídate de la informática por un segundo, El algoritmo es tu ritual en la mañana: despierta, cepilla tus dientes, desayuna, vístete y luego vete.

Ahora su función o métodos son: para cepillarse los dientes, llama a la función dental que tiene cepillo de dientes, pasta de dientes … siguiendo su algoritmo, desayuna, así que llama a la función de alimentos que tiene tazón, leche, cereal … y así sucesivamente.

Entonces el algoritmo no es lo mismo que una función, el primero son los pasos, el segundo son las herramientas utilizadas para producir los pasos.

Espero que mis metáforas no sean demasiado confusas, pero creo que es mejor usar diferentes ejemplos para explicar estos temas para que las personas puedan relacionarse con el tema sin perderse en los términos técnicos.

Un algoritmo es la serie de pasos para resolver un problema. Me gusta el algoritmo para determinar el máximo común denominador. Entonces, para 126 y 36, ¿cuál es el número más grande que se divide en ambos sin dejar un resto?

Esto se puede resolver con

def mcd (a, b):
mientras b:
a, b = b, a% b
devolver un

Entonces el primer bucle, da
a = 36, b = 18
entonces
a = 18, b = 0
y dado que be es 0, el ciclo se detiene y tenemos la respuesta.

La implementación anterior es una función que implementa el algoritmo (pero puede hacerlo a mano). Entonces, una función es una implementación particular de un algoritmo (aunque no todas las funciones son algoritmos).

Un algoritmo es una idea , es la lógica detrás de alguna acción.

Un método, de función, es una implementación de ese algoritmo. Es una forma de poner un algoritmo en práctica.

El mismo algoritmo se puede implementar de manera diferente en varios idiomas, pero el concepto sería el mismo.

Para ponerlo en frase, como lo hizo: un método / función aplica un algoritmo para alcanzar el objetivo deseado.

A veces, un algoritmo es famoso y es por eso que tiene un nombre, pero, en realidad, cualquier pieza de código que escriba es una implementación de un algoritmo.

Una función o método es un código que va a ocurrir varias veces en su programa. Puede proporcionar un tipo específico de funcionalidad como la que regularmente necesitamos clasificar. Por lo tanto, puede ordenar una burbuja de nombre de función para que no tenga que escribirla una y otra vez. Eso es lo que ha hecho Java. Ya implementé varias cosas para que pueda trabajar más rápido. Por otro lado, el algoritmo es una representación breve de algo. Al igual que el método para hacer té o café es el algoritmo. Cuando sigue el procedimiento en cualquier lenguaje de programa, obtiene el código.