Aprendiendo a programar (fundamentos de la programación)

Introducción
Ah, la programación, es algo de lo que muchos estudiantes y
profesores de informática y otras gentes hablan. Hoy os voy a contar
mi visión de lo que es, o debería ser, la programación.
Mucha gente conoce las reglas de la programación, pero no todos saben
programar. Programar es un arte que requiere una forma de pensar un
tanto peculiar, pero tranquilo, no hace falta estudiar ninguna
ingeniería para programar cosas maravillosas, sólo hace falta ponerse
a programar.
No voy a hablar de ningún lenguaje de programación en particular,
realmente casi todos son iguales, donde sí existen diferencias es en
los diferentes paradigmas de la programación como por ejemplo la
programación funcional, la programación orientada a objetos, y demás
que al final son diferentes formas de buscar una solución a un mismo
problema utilizando diferentes técnicas algorítmicas. Tonterías al fin
y al cabo. Lo realmente interesante y divertido es programar sin
preocuparse del lenguaje ni de los paradigmas de programación.
Programar no es más que convencer a una máquina para que haga una
acción repetitiva por ti. Después de esto vendrá el tratamiento de la
información, las redes, y otra serie de tonterías en principio
irrelevantes, aunque al final sean el verdadero progreso.
Como bien sabrás querido lector, la programación es una "ciencia" que
proviene directamente de las matemáticas y por tanto verás muchas
cosas relacionadas con esta ciencia si decides meterte realmente en
esto de la programación real. Por eso si has decidido estudiar
ingeniería informática y no te gustan las matemáticas, lo mismo estás
equivocado, o lo más probable es que tus profesores no sean demasiado
buenos, porque al fin y al cabo, ¿a quién no pueden gustarle las
matemáticas?
Bueno, vamos al lío, en cada sección voy a poner un ejemplo de código
en python, que bien podría ser en C, C++, java o lo que sea. Pero
python es más legible.
Supongamos que estoy iniciándome en esto de las matemáticas, y como
tengo poca memoria no soy capaz de memorizar la tabla del 2. Me puedo
hacer un programa que me lo recuerde, ya que un ordenador no es más
que una gran calculadora y de multiplicar sabe un rato:
2 * 1 2 * 2 2 * 3 2 * 4 2 * 5 2 * 6 2 * 7 2 * 8 2 * 9 2 * 10
Variables
Las variables, como en las funciones matemáticas son elementos
variables, como su propio nombre indica. Esto quiere decir que lo
mismo vale 2 que vale 3, no lo sabes, no quieres saberlo, es variable.
En todo lenguaje de programación que aprendas (o en casi todo) tendrás
que lidiar con variables que serán de diferentes tipos. Al final todo
se reduce a números, enteros, flotantes (los que llevan un punto),
caracteres, etc. Y algún día tratarás con conjuntos de variables que
se pueden llamar vectores (o arrays), estructuras, etc. que al final
no son más que bonitos contenedores de tipos básicos, como cajitas que
te permitirán hacer cosas chulas.
Supongamos ahora que ya me he aprendido la tabla del 2, pero ahora estoy
con la tabla del 3 que me está dando más problemas de los que debería.
Puedo utilizar el código anterior que me resolvería mis problemas,
pero tendría que cambiar todos los 2 por 3, y como yo soy un hombre
inteligente y pienso en el futuro, lo mismo también debería pensar en
la tabla del 4 y posteriores.
Como habrás observado avispado lector el primer número es "variable"
y por tanto es un caso estupendo para usar esto:
variable = 3 variable * 1 variable * 2 variable * 3 variable * 4 variable * 5 variable * 6 variable * 7 variable * 8 variable * 9 variable * 10
Y con este código si quiero la tabla del 2, del 3, o del 4 sólo tengo
que cambiar el valor de la variable.
Es muy recomendable poner nombres a las variables que representen bien
lo que pueden contener, es decir, que si lees el código puedas saber
qué va a tener esa variable. En nuestro ejemplo podríamos llamar a la
variable multiplicando, pero le vamos a dejar variable porque esto son
ejemplo tontos.
Condicionales
¿Qué sería de la programación si no tienes posibilidad de ejecutar
acciones diferentes según algún criterio? Pues nada, los condicionales
son la parte más básica de la programación, te permiten hacer una cosa
si esto y si no pues otra. Es decir, que teniendo partes "variables" y
condicionales ya puedes programar cualquier cosa. Por ejemplo un juego
de fútbol: Si la pelota entra en la portería es gol. Muy fácil de
programar.
Tan solo se trata de evaluar una condición y en función de si es
verdadero o falso se ejecuta una porción de código u otra.
Ahora que ya tengo las tablas de multiplicar del número que me
apetezca quiero conseguir las multiplicaciones hasta el 11 si el
número es mayor que 3, para el 1,2 y 3 me basta con las
multiplicaciones hasta el 10. ¡Pues puedo usar un condicional para
hacer esto!.
variable = 4 variable * 1 variable * 2 variable * 3 variable * 4 variable * 5 variable * 6 variable * 7 variable * 8 variable * 9 variable * 10 if variable > 3: variable * 11
Bucles
Los bucles te permiten repetir una instrucción una y otra vez haciendo
pequeñas variaciones en las variables implicadas. Son bucles son los
que le dan realmente potencia a la programación, además de que son la
causa directa de la complejidad computacional, pero eso es otra
historia.
Muchas personas creen que los bucles son imprescindibles, pero como
veremos más adelante con recursividad se pueden ejecutar bucles de
manera simple y en muchas ocasiones es más simple que un bucle
tradicional. Normalmente los bucles se utilizan para iterar sobre una
lista de elementos.
variable = 4 i = 1 while i<=10: variable * i i = i + 1 if variable > 3: variable * 11
Anda, conseguimos un código mucho más corto. En casi todos los
lenguajes de programación tendrás una instrucción while o for para
iterar. Si eres observador te habrás dado cuenta de que se declara
otra variable nueva, i, que nos sirve para llevar la cuenta de cuantas
iteraciones llevamos.
Funciones
Todo lenguaje de programación que se precie te permitirá definir
funciones, otros lo llamarán métodos y a las variables las llamarán
atributos, pero al final será lo mismo.
Cuando escribes código normalmente tendrás partes que se repiten, eso
puedes convertirlo en una función y luego puedes hacer llamadas a esa
función cada vez que quieras. Una función recibirá una serie de
argumentos que serán las variables definidas que harán que la función
haga una cosa u otra. También suelen devolver un valor. Si una función
no recibe parámetros y no devuelve nada se suele llamar rutina.
Ahora que ya tengo resuelto lo de las tablas de multiplicar puedo
escribir una función que me haga eso y conseguir la tabla del 2, 3 y 4
a la vez.
def tabla(n): i = 1 while i<=10: n * i i = i + 1 if n > 3: n * 11 for i in [2, 3, 4]: tabla(i)
Si la función que estás escribiendo ocupa más de una pantalla (y con
una pantalla quiero decir 30 líneas) algo está mal, así que tienes que
dividir la función en varias más, ninguna función debe ocupar más de
30 líneas.
Recursividad
Como último recurso programático te presento la recursividad. ¿Qué es
eso? La recursividad es un nombre bonito para una cosa simple, tan
solo es llamar a la función que estás definiendo desde dentro de la
misma función.
Una función recursiva siempre tiene que tener una condición de parada
para que no sea infinita. Ademas tiene que tener al menos una llamada
a la misma función que se está definiendo para que se pueda llamar
función recursiva.
Ahora que soy un maestro de las matemáticas puedo jugar un poco con la
programación y voy a definir la función tabla de manera recursiva.
def tabla(x, i): if i == 11: if x > 3: x*i else: x*i tabla(x, i+1) tabla(4, 1)
Con esto acaba la clase práctica de hoy.




fixed, arreglado xD
- reply
Submitted by danigm on Tue, 27/10/2009 - 00:10.Debería ser:
- reply
Submitted by penyaskito (not verified) on Mon, 26/10/2009 - 19:38.