Fundamentos de la Programación

#01 – Introducción a la Programación

Comenzamos con esta versión actualizada del curso «Fundamentos de la Programación«. Y para empezar, nada mejor que una pequeña introducción sobre el fascinante mundo de la programación. ¡Disfrutadla!

Programación: ese bello arte.

Vamos a empezar por lo más básico de lo básico: ¿qué es programar? Pues según nuestros buenos amigos de la RAE, programar es:

«Elaborar programas para su empleo en computadoras.«

Vale, todo claro, ¿no? … Como definición, deja mucho que desear… Veamos que entienden 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.”

Bueno, la cosa ya tiene mejor pinta. La verdad es que no existe una definición común para programación: según la fuente que consultes, encontraras distintas aproximaciones, desde muy simples (como la de la RAE, por ejemplo) hasta otras extremadamente largas y complejas. Para lo que a nosotros nos atañe, y dado el carácter de este curso, podemos definir programación 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.

Lenguajes de Programación

Así que visto lo visto, lo primero que necesitamos para poder empezar a programar es un lenguaje de programación. Lenguajes hay miles, veamos algunos de ellos.

Código Máquina

Es el lenguaje más básico que existe, formado unicamente por cadenas de 1 y 0. Es el lenguaje que entienden los computadores (utilizaremos este termino en lugar de ordenadores, ya que suena más técnico :P), y como podrás deducir, sería un infierno programar únicamente con el mismo (y para complicar más la cosa, cada familia de procesadores utiliza su propia codificación). Su origen se basa en el Algebra de Boole (algo bastante conveniente que todo programador debería conocer :P).

Algebra de Boole: Operador SUMA.

Lenguaje Ensamblador

Ya podéis imaginaros lo que era programar en los principios de la informática. Programar en código máquina resultaba en una tarea tediosa y bastante propensa a cometer errores, así que no tardaron en desarrollar un lenguaje más sencillo y legible:

SUM #01, #02, #13
DIV #13, #04, #10
FIN

Para ser sinceros, el lenguaje ensamblador es más bien un traductor que un lenguaje. Este lee las instrucciones escritas y las traduce a código máquina. Para ser exactos, 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.

Lenguajes de Alto Nivel

Llegados a este punto la cosa comienza a ponerse interesante. Como se ha mencionado por ahí arriba, cada familia de procesadores utiliza su propio juego de instrucciones máquina (secuencias de 0 y 1). Así que, ¿tenemos que memorizar un lenguaje diferente para cada procesador del mercado? La respuesta es no (afortunadamente). Para superar dicho problema, se desarrollaron los lenguajes de alto nivel. Estos se basan en el lenguaje natural, lo que los hace altamente comprensibles y cómodos para los desarrolladores. También resultan ser independientes del computador donde se ejecuten, ya que será un programita muy especial el que se encargue de traducirlos al lenguaje ensamblador correspondiente a cada procesador. Este gran amigo será un compilador o un intérprete, dependiendo del lenguaje que utilicemos. Ambos se diferencian en:

  • 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.

Debido a estas diferencias, los lenguajes interpretados suelen ser por lo general más lentos que los compilados, ya que al propio tiempo de ejecución hay que sumarle el tiempo de la traducción. Sin embargo, permiten una mayor flexibilidad al desarrollador durante el tiempo de ejecución, así que en la actualidad el uso de ambos es bastante similar.

Python

En este curso, vamos a utilizar el lenguaje interpretado Python, que fue desarrollado por un tal Guido van Rossum. ¿Y por qué Python? Pues porque hoy en día, a no ser que te dediques al desarrollo de herramientas u optimización, la mayoría de los motores de videojuegos existentes se basan en la utilización de scripts (pequeños programas que añaden funcionalidades a objetos ya existentes dentro de la lógica del propio motor). Y Python posee una sintaxis muy similar a la de dichos scripts, así que a la vez que aprendemos un lenguaje profesional, nos acostumbramos a la sintaxis. Otras características a remarcar 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).

Para no complicar más las cosas, durante este curso utilizaremos un intérprete online, con el cual podremos escribir y ejecutar programas. Concretamente, vamos a utilizar OnlineGDB (aunque sois libres de instalar el intérprete en vuestro PC si os resulta más cómodo).

Algoritmos

Pues ahora que ya sabemos que es un lenguaje de programación, toca ver que es el otro concepto mencionado en nuestra anterior definición. Así que, ¿qué es un algoritmo? A grandes rasgos, un algoritmo es como una receta: una serie de instrucciones y/o operaciones que se ejecutan en orden secuencial con el objetivo de obtener siempre el mismo resultado tras su ejecución.

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.

Y para finalizar (bastantes conceptos nuevos para un día, ¿no creéis?), el anterior algoritmo traducido al lenguaje Python quedaría así:

a = float(input("Operando A: "))
b = float(input("Operando B: "))
c = (a + b)/2
print("La media es: ", c)

Nos vemos en la siguiente lección: Tipos de Datos.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

back to top