miércoles, 31 de agosto de 2016

Programación para los No-Matemáticos


Estaría mintiendo si dijera que la programación no tiene nada que ver con las matemáticas, es un proceso lógico y la computación en sí está basada en matemáticas, pero la mayoría del tiempo veo matemáticas innecesarias en problemas introductorios de programación.

Tengo la teoría de que hay una élite de gente insegura que se quiere sentir superior manteniendo el status quo de que "programar es difícil" así que pone un montón de problemas difíciles con ejemplos que usan sólo letras para seguir así.

Muchos de los ejercicios iniciales de programación son cosas como:
  • Sacar un promedio
  • Sacar un factorial
  • Convertir grados centígrados a Farenheit
  • series de fibonacci
  • números primos
Y esos fueron sencillos que se me ocurrieron, he visto otros sumamente complicados con números en bases raras y demás.

Una simple búsqueda en Google me dio esto:

La gente no se atora porque no sepa programar, se atora porque no sabe cómo resolver el problema en sí. A los que estudiemos ingeniería puede que se nos haga bien simple distinguir cuales son los números primos, pero hay gente que no, y si bien no van a dedicarse a ser desarrolladores profesionales, no me gusta que se queden con una idea confusa de que la programación es difícil porque las matemáticas eran difíciles.

No puedes programar una solución si no sabes la solución en primer lugar.

Así que empecemos a tratar de explicar programación sin usar problemas matemáticos confusos.*

ALGORITMOS

¿Qué es un algoritmo? Se oye super de nerds porque se confunde con la palabra "logaritmo" pero no es más que una serie de pasos para resolver un problema.
Ejemplos!

Vida real: Algoritmo para quitarte la sed en tu casa
1: Te levantas
2: Vas a la cocina
3: Tomas un vaso de la alacena
4: Lo pones bajo el garrafón
5: Lo llenas de agua
6: Te tomas el agua

Ejercicio común de matemáticas: Obtener el área de un triángulo
1: Obtienes la base del triángulo
2: Obtienes la altura del triángulo
3: Multiplicas base por altura
4: Lo divides entre dos
Aquí es donde mucha gente se atora, quizá todos nos sabemos el área del triángulo, pero ¿qué tal si dijera "convierte de coordenadas polares a coordenadas cartesianas? Tendrías que hacer una investigación extra para acordarte de qué son, y nadie te garantiza que vas a entender.

En un sistema común: Verificar las credenciales de inicio de sesión
1: Obtener usuario
2: Obtener contraseña
3: Buscar en la base de datos el usuario
4: Comparar si la contraseña dada es la misma que la que se tiene guardada
5: Otorgar o no acceso

En computación hay muchos problemas que se dan seguido, cómo por ejemplo hacer una búsqueda, y para ellos ya existen varios algoritmos predefinidos, pero no los veremos aquí.

Programar es darle instrucciones a la computadora, para llegar a una solución tienes que tener claro que instrucciones darás (aunque ya con práctica las vas inventando en el camino).

VARIABLES
La manera más fácil de explicar qué es una variable es como "un contenedor que contiene un valor".
Por ejemplo, la variable nombre puede valer "Thannia", pero también podría valer "Martha", "José" o "Alejandra". El valor puede ser desconocido y puede cambiar, he ahí el nombre de "variable".

Por ejemplo:

var nombre = "Thannia";
var apellido = "Blanchet";
var nombreCompleto = nombre + apellido;

print(nombreCompleto);

Aquí si imprimimos la variable nombreCompleto dirá "Thannia Blanchet", pero si cambiamos el nombre a Abraham y el apellido a Lincoln dirá otra cosa ;)

CONDICIONES 

Claro que no todo es lineal, a veces, dependiendo de lo que suceda, debe ejecutarse una acción o la otra. Por ejemplo, una niña tiene varias mascotas, dependiendo de la mascota a la que alimentará es la comida que va a usar:

var mascota;

if(mascota == "perro") {
    print("croquetas");
} else if (mascota == "gato") {
    print("atún");
} else if (mascota == "perico") {
   print("semillas");
} else if (mascota == "boa") {
   print("ratón");
} else {
    print("no hay comida para esa mascota");
}

Aquí primero compara el valor de "mascota" con algún animal, y dependiendo del que sea te dice la comida que ha de usarse, si no es ninguno de los anteriores, te dice que no tienes comida para esa mascota.

CICLOS
A veces hay cosas que tienen que repetirse mucho, y pues, es un poco impráctico tener que estarlo escribiendo una y otra vez, para eso existen los ciclos. Por ejemplo, un sujeto está a dieta y todos los días de la semana cena avena, puedes hacer esto:

print("cena avena");
print("cena avena");
print("cena avena");
print("cena avena");
print("cena avena");
print("cena avena");
print("cena avena");

O, en vez de escribirlo 7 veces, sólo escribirlo 1 y hacer que se repita 7:

for(int x=0; x < 7; x++) {
    print("cena avena");
}

Todo esto se puede combinar para crear cosas más complicadas ¿Qué tal si el sujeto de la dieta puede cenar tacos una vez al mes?

for(int día=1; día <= 31; día++){ 
    if(día == 31) {
        print("cena tacos");
    } else {
        print("cena avena");
}

Ahí hay un ciclo que se repite 31 veces (una por cada día del mes), y si es el día 31, te dice que cenes tacos, sino, te dice que cenes avena.

Obviamente todo esto es lo más básico de lo básico, pero espero ayude a aclarar de que se trata todo este rollo de "programar", sin que se mezcle la dificultad con la dificultad de los programas en sí.


*Todo el código es pseudocódigo


No hay comentarios:

Publicar un comentario en la entrada