Retomemos el algoritmo anterior sobre la compra de alimentos.
Supongamos que la instrucción inicial era la siguiente:
-
Aquí tienes 100 pesos.
-
Ve a la tienda “Cerca de Casa”.
-
Compra leche.
Esta es una instrucción muy específica, en la que podemos identificar el comando principal “compra leche” y varias constantes asociadas a él:
-
La cantidad de 100 pesos.
-
La tienda “Cerca de Casa”.
Al detallar este algoritmo como un conjunto de acciones, mañana quizás queramos comprar pan, o galletas, o plátanos, o cualquier otra cosa.
En estos algoritmos, muchas acciones serán similares, y las diferencias solo estarán en qué comprar exactamente.
Es decir, podemos crear un único algoritmo llamado “comprar” y especificar a este algoritmo “qué comprar,” “dónde comprar” y “la cantidad de dinero disponible”.
Fíjense: lo que se compra, dónde se compra y la cantidad de dinero disponible son magnitudes que pueden cambiar; en otras palabras, son variables.
Conceptos Clave
-
Un algoritmo se vuelve valioso al expandir su ámbito de aplicación—cuanto más amplio es el ámbito, más valioso es, porque puedes reutilizarlo (reuse).
-
Para abarcar un ámbito más amplio, es necesario parametrizar la tarea—identificar todas aquellas entidades que pueden cambiar pero que no afectan la esencia misma del algoritmo. En cierto sentido, la parametrización está directamente relacionada con la abstracción.
-
Los parámetros de una tarea son variables.
-
El nombre de la variable debe reflejar la esencia de lo que almacena: la nomenclatura (naming) es una de las tareas más difíciles en programación—encontrar un nombre para una variable que deje claro inmediatamente su propósito.
-
También existe el tipo de variable—define el rango permitido de valores que la variable puede contener (hablaremos de esto con más detalle más adelante).
-
Todo en conjunto: el nombre del algoritmo, los nombres de las variables de entrada, sus tipos y el tipo de retorno forman un contrato.
Vocabulario
-
Parámetro / Parametrizar
-
Variable / Variable de entrada
-
Tipo de variable
-
Nomenclatura (Naming)
-
Contrato