11 de marzo de 2019

Fundamentos de la Programación (I)


Como ya os comenté, ¡comienza el curso de “Fundamentos de la Programación”! En esta primera entrega veremos una pequeña introducción al mundo de la programación y conoceremos algunos conceptos básicos relacionados con la misma. Os recuerdo que se trata de un curso dirigido a todos aquellos sin estudios de informática que les gustaría dedicarse al Desarrollo de Videojuegos Indie, donde utilizaremos el lenguaje Python.

#01 - Introducción a la Programación.
El principal objetivo de este curso es enseñarte a ti, querido lector, a programar. Pero, ¿qué entendemos por programar? Según la RAE programar es:
Elaborar programas para su empleo en computadoras.”
No parece que diga mucho esa frase, ¿no os parece? Veamos que define por programa:
Conjunto unitario de instrucciones que permite a una computadora realizar funciones diversas, como el tratamiento de textos, el diseño de gráficos, la resolución de problemas matemáticos, el manejo de bancos de datos, etc.”
Ya parece que va tomando forma, pero todavía no acaba de estar del todo claro, al menos para lo que a nosotros nos atañe. Básicamente, podríamos definir programar como la acción de diseñar y expresar algoritmos en forma de programas escritos, utilizando para ello un lenguaje de programación, con el objetivo de poder ejecutar los mismos en un computador. 

1. Lenguajes de Programación
De la anterior definición, podemos ver que lo primero que necesitamos para poder programar es conocer un lenguaje de programación con el que poder escribir nuestro código. Desde el inicio de la informática, han existido multitud de lenguajes de programación. A continuación daremos un pequeño repaso para que, al menos, tengamos unas nociones generales. 

1.1 Código Máquina
Es el lenguaje más básico, con el que se llevan a cabo todas las operaciones en un computador. Está compuesto únicamente por 0 y 1, y cada familia de procesadores utiliza su propia codificación. Este lenguaje está basado en el Álgebra de Boole.

OperandosSumaAcarreo
0  0
0  1
1  0
1  1
0
1
1
0
0
0
0
1
Operador Suma en Álgebra de Boole.

Este curso no va a entrar en detalles de cómo funciona un computador, pero aquí van unas nociones básicas: en la memoria del computador se encuentran almacenadas una serie de instrucciones en código máquina, es decir, una sucesión de 0 y 1. Cada posición de la memoria equivale a una instrucción, y el procesador se dedica a ejecutar instrucción por instrucción hasta que aparece una que le obliga a detenerse. 

1.2 Lenguaje Ensamblador
Como podréis imaginar, programar en los inicios de la informática resultaba en una tarea tediosa y bastante propensa a cometer errores, así que en cuanto se pudo, se creo un lenguaje más sencillo.
SUM #01, #02, #13
DIV #13, #04, #10
FIN
Ejemplo de código en pseudoenxamblador.

El lenguaje ensamblador es, en cierto modo, más un traductor que un lenguaje. Este lee las instrucciones escritas y las traduce a código máquina. Es el repertorio de expresiones mnemotécnicas que son traducidas a código máquina y sus reglas lo que se conoce como lenguaje ensamblador. 

1.3 Lenguajes de Programación de Alto Nivel
Antes hemos mencionado que cada procesador tiene su propia codificación en código máquina. ¿Eso quiere decir que tenemos que aprender un lenguaje diferente para procesador en el mercado? Por suerte, la respuesta es no. Para evitar esto se desarrollaron los lenguajes de alto nivel. Estos están basados en el lenguaje natural, por lo que son fácilmente comprensibles por los desarrolladores, y son independientes del ordenador sobre el que se ejecutan. Será un programa especial el que traduzca estos lenguajes al código máquina correspondiente. Este programa puede ser bien un compilador o un interprete. Sus principales diferencias son que:
  • el compilador lee al completo el programa escrito en un lenguaje de alto nivel y acto seguido lo traduce al programa en código máquina equivalente. Este programa puede ser ejecutado las veces que se desee, sin necesidad de volver a traducir, a compilar el original.
  • El intérprete lee el programa escrito en un lenguaje de alto nivel instrucción por instrucción, traduciendo cada una de ellas a código máquina y ejecutándolas de inmediato. Esto quiere decir que cada vez que se ejecuta el programa, se realiza de nuevo el proceso de traducción y ejecución.
Estas diferencias ocasionan que los lenguajes interpretados sean, por lo general, más lentos que los compilados, ya que al tiempo de ejecución se le suma el tiempo de traducción. No obstante, permiten una mayor flexibilidad durante la ejecución, por lo que en la actualidad ambos son igualmente utilizados. 

1.4 Python
En este curso, utilizaremos el lenguaje interpretado Python (lenguaje desarrollado por Guido van Rossum). ¿Por qué Python? Bueno, hoy en día la mayoría de motores utilizan lo que se denominan “scripts”, pequeños programas que añaden funcionalidades a objetos creados mediante el motor. La sintaxis de Python es muy parecida a la de estos lenguajes, por lo que de esta forma matamos dos pájaros de un tiro. Otras características de Python son:
  • Lenguaje muy expresivo, por lo que los programas son más compactos.
  • Es muy legible por su similitud al lenguaje natural.
  • Al tratarse de un lenguaje interpretado, facilita la realización de pruebas.
  • Puede usarse como un lenguaje orientado a objetos (ya hablaremos de esto).

Logotipo del lenguaje interpretado Python.
Para este curso, nos serviremos de un intérprete online, para de este modo evitar posibles incompatibilidades entre diversos sistemas operativos. Para ello, deberemos acceder a la web gratuita OnlineGDB, en la cual podremos escribir y ejecutar nuestros programas. 

2. Algoritmos
Y tras toda esta introducción, llegamos al fin al meollo de la cuestión. ¿Qué es un algoritmo? Pues al principio hemos definido programar como “la acción de diseñar y expresar algoritmos”. Básicamente, podríamos definir un algoritmo como una receta: una serie de instrucciones y/o operaciones que se ejecutan en orden secuencial. Los algoritmos suelen definirse en lenguaje natural, ya que si utilizamos un lenguaje de programación especifico cabe la posibilidad de que quien lo lea no conozca dicho lenguaje. Por ello, al expresarlos en lenguaje natural, son comprensibles por todos los desarrolladores, y luego estos ya se encargarán de traducirlos al lenguaje de programación objetivo. Un ejemplo de algoritmo podría ser el siguiente (para el calculo de la media de dos números):
  1. Introduce el primer operando.
  2. Introduce el segundo operando.
  3. Suma los dos operandos.
  4. Divide el resultado de la suma entre 2.
  5. Muestra por pantalla el resultado de la división.
Como final de este primer capítulo, veamos el anterior algoritmo expresado en el lenguaje Python:

a = float(input("Operando A: "))
b = float(input("Operando B: "))
c = (a + b)/2
print("La media es: ", c)
Cálculo de la media.
-----
Hasta aquí esta primera entrega del curso de "Fundamentos de la Programación". Mi idea es ir añadiendo material semanalmente, a ser posible los lunes. Espero que os guste, y dejad en los comentarios cualquier duda que os pueda surgir.

No hay comentarios:

Publicar un comentario