Antes de comenzar con la programación en Java, les explico a mis alumnos un tema de introducción a la programación. Les cuento en que consiste programar, lo que es un algoritmo, un diagrama de flujo y un seudocódigo. Pero por encima de todo, les insisto en que programar es acerca de resolver problemas.
Tabla de contenidos
Conceptos preliminares
Existen una serie de conceptos que conviene interiorizar antes de ponerse a programar. Al menos deberíamos tener bien claros los siguientes:
Ciencias de la computación
Conjunto de disciplinas que emplean la computación para el estudio y resolución de problemas.
Las ciencias de la computación tienen como propósito resolver problemas utilizando ordenadores para desarrollar la solución.
Las ciencias de la computación NO son el estudio de los computadores.
¿Qué es programar?
Programar es el proceso de crear un conjunto de instrucciones para indicar al ordenador como debe realizar una tarea concreta.
¿Qué es un algoritmo?
Un algoritmo es una secuencia inequívoca de instrucciones que permiten al ordenador resolver un problema.
Diagramas de Flujo
Como su nombre indica es un diagrama que explica el flujo de instrucciones para solucionar el problema. Para ello se emplean una serie de símbolos, con un significado concreto, y conectados mediante flechas que indican el flujo.
Permite que personas sin conocimientos técnicos participen en la creación del algoritmo que soluciona el problema. No se necesita saber programar.
Hay programas para el desarrollo de diagramas de flujo, aunque no es extraño hacer un primer boceto a papel y lápiz.
Ejemplo: Empleo de diagramas de flujo:
Para explicar el empleo de los diagramas de flujo para plantear las soluciones a problemas concretos, voy a emplear un ejemplo: “Solucionar el problema de que no arranca el coche”.
El proceso para solucionar este problema sería:
- Comprobar que se ha introducido la llave en el contacto.
- Asegurarnos de que se ha hecho contacto: se ha arrancado.
- Comprobar que el coche tiene Gasolina.
- Tras las anteriores comprobaciones, si el coche ha arrancado todo va bien. Si por el contrario, no ha arrancado, llamamos a la grúa y lo llevaríamos al taller.
Este proceso dibujado en un diagrama de flujo, podría tener el siguiente aspecto:

En su implementación he utilizado los siguientes símbolos:
![]() | Inicio/ final: Representa el punto de inicio y el punto final del proceso que se esté describiendo. |
![]() | Proceso: Indicamos la operación a realizar. |
![]() | Decisión: Se evalúa si una condición es verdadera o falsa, tomando el proceso uno u otro camino en función del resultado de dicha evaluación. |
![]() | Línea de flujo: Marca el orden en que vamos ejecutando las distintas operaciones y comprobaciones de nuestro diagrama. La flecha apunta hacia la siguiente acción. |
Existe todo un conjunto de símbolos para definir en detalle los procesos. Las notaciones más conocidas son: flujograma y BPMN. Para el propósito de este cuaderno nos vale con entender y manejar los cuatro símbolos mostrados arriba.
Pseudocódigo
También podemos expresar un algoritmo mediante un pseudocódigo, que no es otra cosa que expresar las instrucciones del mismo en un lenguaje natural, fácil de entender para un ser humano. Secuenciando las instrucciones como se llevarían a cabo en la ejecución del proceso.
Ejemplo: Solucionar el problema de que no arranca el coche.

Lenguajes de programación
Cada sistema de computación entiende un lenguaje de muy bajo nivel que es específico al tipo de hardware del mismo. Este lenguaje es denominado código máquina.
Por el contrario, los programadores, cuando escriben software, utilizan un lenguaje de alto nivel mucho más cercano al lenguaje humano y por tanto mucho más sencillo de entender para una persona.
Podemos distinguir tres niveles de lenguajes de programación:
Código máquina
Lenguaje de muy bajo nivel que es el que entiende el ordenador.

- Instrucciones que pueden ser directamente ejecutadas por la CPU.
- Lenguaje numérico compuesto estrictamente por ceros y unos.
- Lenguaje más rápido posible de ejecución.
- Tedioso para detectar y corregir errores. Lenguaje muy poco amigable.
Bajo nivel: Lenguaje de bajo nivel próximo al código máquina, pero adaptado para que resulte más sencillo de programar a una persona.

- Muy próximo al código máquina.
- El más conocido es el lenguaje ensamblador.
- Necesita ser “Traducido” por un compilador (el ensamblador) a código máquina para que sea entendido por el ordenador.
Alto nivel: Lenguaje con juego de instrucciones próximo al leguaje humano por lo que resulta mucho más intuitivo programar en él.
- Proveen un alto nivel de abstracción del código máquina.
- Son sencillos de aprender.
- Necesitan un traductor para comunicarse con el ordenador, que sólo entiende código máquina.
- Hay cientos de lenguajes de este tipo.
Los lenguajes de programación más populares en 2018 fueron: Java, Python, Javascript, C++, C#, PHP, PERL, SWIFT, R y RUST
Compilación Vs Ejecución
Normalmente programaremos en un lenguaje de alto nivel, muy rara vez en un lenguaje de bajo nivel y nunca en código máquina.
Como el ordenador sólo entiende código máquina, vamos a necesitar un traductor para el código programado en un lenguaje de alto nivel. Tenemos dos posibilidades para traducirlo a código máquina:
- Compilador: Traducimos directamente todo el programa a código máquina y ejecutamos.
- Interprete: Vamos traduciendo las instrucciones a código máquina una a una, según tengamos que ejecutarlas.
Un programa compilado va a ser más rápido en la ejecución. Un programa interpretado permitirá hacer cambios durante la ejecución.
NOTA:
Este post es parte de la colección “Java”. Puedes ver el índice de esta colección aquí.