Fundamentos de programación
Desde el año 1642 en que Blaise Pascal, inventó La Pascalina, una máquina que ayudaba a contar mediante unos dispositivos de ruedas, se han sucedido numerosos inventos que han ido evolucionando, a medida que se programaban mediante códigos de máquina, lenguajes ensambladores, hasta llegar a los lenguajes de programación de alto nivel en los que ya no se dependía del hardware de la máquina sino de la capacidad de abstracción del programador y de la sintaxis, semántica y potencia del lenguaje.
El ordenador
Un ordenador (o computadora) es un dispositivo electrónico, utilizado para procesar información y obtener resultados, capaz de ejecutar cálculos y tomar decisiones a velocidades millones o cientos de millones más rápidas que puedan hacerlo los seres humanos. En el sentido más simple una computadora es “un dispositivo” para realizar cálculos o computar.
El término sistema de computadora o simplemente computadora se utiliza para enfatizar que, en realidad, son dos partes distintas: hardware y software. El hardware es la computadora en sí misma. El software es el conjunto de programas que indican a la computadora las tareas que debe realizar.
Los datos y la información se pueden introducir en la computadora por una entrada (input) y a continuación se procesan para producir una salida (output, resultados).
Hoy en día, la mayoría de los programadores emplean lenguajes de programación como Java, C, C++, Python, Visual Basic, HTML, CSS, Perl, PHP, JavaScript..., aunque todavía se utilizan, sobre todo profesionalmente, los clásicos COBOL y Pascal. Estos lenguajes se denominan lenguajes de alto nivel y permiten a los profesionales resolver problemas convirtiendo sus algoritmos en programas escritos en alguno de estos lenguajes de programación.
Lenguajes de programación
Los lenguajes de programación se utilizan para escribir programas. Los programas de las computadoras modernas constan de secuencias de instrucciones que se codifican como secuencias de dígitos numéricos que podrán entender dichas computadoras. El sistema de codificación se conoce como lenguaje máquina que es el lenguaje nativo de una computadora. Desgraciadamente la escritura de programas en lenguaje máquina es una tarea tediosa y difícil ya que sus instrucciones son secuencias de 0 y 1 (patrones de bit, tales como 11110000, 01110011...) que son muy difíciles de recordar y manipular por las personas.
En consecuencia, se necesitan lenguajes de programación “amigables con el programador” que permitan escribir los programas para poder “hablar” con facilidad con las computadoras. Sin embargo, las computadoras sólo entienden las instrucciones en lenguaje máquina, por lo que será preciso traducir los programas resultantes a lenguajes de máquina antes de que puedan ser ejecutadas por ellas.
Cada lenguaje de programación tiene un conjunto o “juego” de instrucciones (acciones u operaciones que debe realizar la máquina) que la computadora podrá entender directamente en su código máquina o bien se traducirán a dicho código máquina. Las instrucciones básicas y comunes en casi todos los lenguajes de programación son:
- Instrucciones de entrada/salida. Instrucciones de transferencia de información entre dispositivos periféricos y la memoria central, tales como "leer de ..." o bien "escribir en ...".
- Instrucciones de cálculo. Instrucciones para que la computadora pueda realizar operaciones aritméticas.
- Instrucciones de control. Instrucciones que modifican la secuencia de la ejecución del programa.
El proceso de traducción de un programa fuente escrito en un lenguaje de alto nivel a un lenguaje máquina comprensible por la computadora, se realiza mediante programas llamados “traductores”. Los traductores de lenguaje son programas que traducen a su vez los programas fuente escritos en lenguajes de alto nivel a código máquina. Los traductores se dividen en compiladores e intérpretes.
Intérpretes
Un intérprete es un traductor que toma un programa fuente, lo traduce y, a continuación, lo ejecuta.
El sistema de traducción consiste en: traducir la primera sentencia del programa a lenguaje máquina, se detiene la traducción, se ejecuta la sentencia; a continuación, se traduce la siguiente sentencia, se detiene la traducción, se ejecuta la sentencia y así sucesivamente hasta terminar el programa. Hoy en día, el intérprete más utilizado es JavaScript (lado del cliente) y Node (lado del servidor). Otros intérpretes destacados son Perl y AJAX.
Compiladores
Un compilador es un programa que traduce los programas fuente escritos en lenguaje de alto nivel a lenguaje máquina.
La traducción del programa completo se realiza en una sola operación denominada compilación del programa; es decir, se traducen todas las instrucciones del programa en un solo bloque. El programa compilado y depurado (eliminados los errores del código fuente) se denomina programa ejecutable porque ya se puede ejecutar directamente y cuantas veces se desee; sólo deberá volver a compilarse de nuevo en el caso de que se modifique alguna instrucción del programa. De este modo el programa ejecutable no necesita del compilador para su ejecución. Los traductores de lenguajes típicos más utilizados son: C, Java, Pascal, Python, etc...
Algoritmo
Es una serie de instrucciones, organizadas de manera lógica y ordenada, que permiten solucionar un determinado problema. Los algoritmos son independientes tanto de los distintos lengujes de programación que existen, como de los diversos tipos de computadoras que hay.
Características fundamentales que debe cumplir todo algoritmo:
- Un algoritmo debe ser preciso e indicar el orden de realización de cada paso.
- Un algoritmo debe estar bien definido. Si se sigue un algoritmo dos veces, se debe obtener el mismo resultado cada vez.
- Un algoritmo debe ser finito. Si se sigue un algoritmo, se debe terminar en algún momento; o sea, debe tener un número finito de pasos.
- La definición de un algoritmo debe describir tres partes: Entrada, Proceso y Salida.
Programa
Es similar a un algoritmo, la diferencia es que los pasos que permiten resolver un problema deben escribirse en un determinado lenguaje de programación, para que el ordenador pueda ejecutarlos y llegar a la solución.
La programación es la rama de la informática que permite crear programas para resolver distintos problemas; para ello es necesario utilizar un software especial denominado, genéricamente, lenguajes de programación.
Creación de un programa
Cuando a un programador se le plantea la necesidad de crear un programa, no se lanza a escribir directamente las instrucciones que solucionan el problema, ya que lo habitual es que el programa necesite 1.000, 5.000, 10.000 o más líneas de código.
La creación de un programa se debe realizar en una serie de fases que deben llevarse de forma secuencial y ordenada:
- Análisis del problema: estudio detallado del problema, datos que se necesitan e información que se debe devolver.
- Búsqueda del algoritmo: en esta fase se diseña el algoritmo que permita resolver el problema; para ello se utilizan diagramas de flujo (flowchart) y/o pseudocódigo. Un buen algoritmo garantiza, casi siempre, un perfecto funcionamiento del programa.
- Codificación (implementación): se escribe, en el lenguaje de programación elegido, el algoritmo anterior. El resultado final será la creación de un archivo con las instrucciones necesarias para resolver el programa.
- Ejecución, pruebas y depuración.
- Mantenimiento
