Está en la página 1de 13

Unidad 1 / Escenario 1

Lectura fundamental

Introducción a la programación
de computadores

Contenido

1 Introducción a la programación de computadores

2 ¿Qué es la programación de computadores?

3 El lenguaje de programación Java

4 Resumen

Palabras clave: problema, algoritmo, programa, lenguaje de programación, Java.


1. Introducción a la programación de computadores
En este documento se discuten los conceptos e ideas fundamentales de la programación
de computadores, los cuales son tomados de las matemáticas, la electrónica y las
ciencias computacionales.

Primero, se introducen conceptos que serán utilizados a lo largo de todo el Módulo de


manera constante y cuyo conocimiento es primordial para la comprensión de los temas
presentados. Algunos de estos conceptos serán totalmente nuevos, específicos de esta área
de conocimiento, mientras que otros, de uso más común, serán formalizados para tener una
definición compartida e idónea para el propósito del Módulo.

En la segunda sección, se exponen los mecanismos empleados por el computador para


traducir las instrucciones dadas por un humano (programador) a operaciones de su
arquitectura física.

Finalmente, en la tercera sección se presenta el lenguaje de programación Java, que será


usado a lo largo de todo el Módulo. Se describen las principales propiedades del lenguaje, las
herramientas necesarias para su uso y algunos aspectos técnicos relacionados.

2. ¿Qué es la programación de computadores?


Para poder entender qué es la programación de computadores debe saber que esta es usada para
resolver problemas de procesamiento de información, lo que permite la comunicación con el
computador para aprovechar su vasta memoria y capacidad de cómputo, con el fin de ejecutar
algoritmos que calculen una solución para cada instancia del problema que se presente. Para que sea
inteligible para el computador, un algoritmo debe ser escrito en un lenguaje de programación, que
luego será transformado en un programa. A continuación, se introducen en detalle cada uno de los
conceptos mencionados y resaltados anteriormente.

POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 2
2.1. Problema, instancia y solución

El Diccionario de la Real Academia Española (2014) define un problema como un “conjunto de hechos o
circunstancias que dificultan la consecución de algún fin.”

A partir de esta definición analice el problema de “tener una rueda de la bicicleta pinchada”. Por supuesto,
esto puede ser un problema sino contamos con otro medio de transporte, ya que no permite a su usuario
conseguir el fin de llegar a su destino. Un segundo ejemplo de problema, un poco más complejo, se
describe a continuación:

En un momento cero en el tiempo, Tomania tiene una población de X millones de habitantes, mientras
que Bacteria1 tiene una población de Y millones, donde X es mayor que Y. Las tasas de crecimiento de la
población son de m % y n % respectivamente, donde n es mayor que m. ¿Cuántos años pasarán para que
la población de Bacteria sea más numerosa que la población de Tomania?

En este caso, el problema radica en la necesidad de información, específicamente sobre los años en que
la población de un país superará en número a la población de otro. Esta información podría ser requerida,
por ejemplo, en estudios y proyectos de análisis y prevención de pobreza, dispersión de enfermedades,
distribución de la tierra, entre otros.

A pesar de ajustarse a una misma definición, estos dos problemas son de naturaleza muy diferente.
El primero es un problema más cotidiano y práctico, cuya solución involucra la ejecución de unas
acciones simples y de naturaleza motriz; el segundo es un problema de naturaleza matemática y con
una definición más formal.

A lo largo de este Módulo, y algunos de los Módulos siguientes, se hablará con frecuencia de resolver
problemas; sin embargo, es importante señalar que, al menos en la gran mayoría de los casos, al usar este
término no se está refiriendo a problemas como el del segundo ejemplo, que involucran la realización de
cálculos numéricos y/o lógicos. En particular, se discutirán problemas computacionales.

Un problema computacional no está limitado a una situación completamente especificada, sino que en
su definición contiene elementos variables que determinan una familia de situaciones posibles llamadas
instancias del problema. Por ejemplo, en el caso de las poblaciones, los valores de X, Y, m y n no son
especificados, lo que sugiere que resolver el problema implica proponer un método que conduzca a la
solución correcta para cada asignación posible de valores a estas variables. En ese sentido, la asignación X
= 50’000.000 (habitantes), Y = 40’000.000 (habitantes), m = 10(%) y n = 15(%) es una instancia del
problema (cuya solución es 6 ‘años’).

1. Nombres de países ficticios tomados de la película El gran dictador de Charles Chaplin, Estados Unidos, 1940.

POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 3
Un problema computacional puede entenderse entonces como una función matemática, esto es,
como una relación entre un conjunto de instancias del problema y un conjunto de soluciones, de
forma que a cada instancia le corresponde un único elemento del conjunto de soluciones. La figura 1
presenta una descripción gráfica del concepto de problema computacional.

Instancias Soluciones

Figura 1. Las líneas entre conjuntos definen la correspondencia entre instancias y soluciones
Fuente: elaboración propia

2.2. Algoritmo

Como se mencionó anteriormente, resolver un problema computacional implica la proposición de


un método que, para cada instancia del problema, calcule la solución correcta correspondiente. En
el ámbito de la programación, estos métodos son llamados algoritmos. Puede definirse entonces un
algoritmo como un conjunto de pasos cuya ejecución transforma una instancia de un problema en su
respectiva solución.

Un algoritmo debe satisfacer las siguientes propiedades:

• Ser finito: la ejecución de un algoritmo debe tomar una cantidad de tiempo finita, esto es, debe
terminar después de un número limitado de pasos.

POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 4
• Ser ordenado: los pasos que forman el algoritmo deben formar una secuencia ordenada, de forma
que en cada etapa de su ejecución el siguiente paso a seguir está unívocamente determinado.

• Estar bien definido: cada paso del algoritmo debe tener una única interpretación para quien lo
ejecuta; esto es, el lenguaje debe ser preciso y carente de ambigüedad.

• Ser correcto: para cada instancia posible del problema, el algoritmo debe calcular su
solución correcta.

A continuación, se presentan ejemplos de algoritmos para los dos problemas anteriormente enunciados:

Tabla 1. Algoritmo que resuelve el problema de tener una rueda de la bicicleta pinchada

Algoritmo ARREGLAR NEUMÁTICO

1. Inicio

2. Desmontar la rueda de la bicicleta

3. Desinflar el neumático completamente

4. Desmontar el neumático de la rueda

5. Sumergir el neumático en agua y ponerle aire

6. Mientras se desinfla en el agua, ubicar el agujero


en el neumático

7. Fijar un parche sobre el agujero

8. Montar el neumático en la rueda

9. Montar la rueda en la bicicleta

10. Inflar el neumático

11. Fin.

Fuente: elaboración propia

POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 5
Tabla 2. Algoritmo que resuelve el problema de las poblaciones

Algoritmo CRECIMIENTO POBLACIONAL

1.
Inicio

2.
Inicializar años transcurridos en 0

3.
Mientras que X ≥ Y

a.
Incrementar X en m %

b.
Incrementar Y en n %

c.
Incrementar años_transcurridos en 1

1.
Reportar años_transcurridos como solución

2.
Fin.

Fuente: elaboración propia

Cómo mejorar...
Verifique que los algoritmos presentados en las tablas 1 y 2 satisfacen las propiedades
enunciadas anteriormente.

Note que estos algoritmos son fácilmente ejecutados por una persona que entienda el idioma. Sin embargo,
¿qué pasa si quien debe ejecutar el algoritmo es una máquina?

Existen múltiples razones por las que una máquina no es capaz de comprender el lenguaje natural de
los humanos. Un ejemplo es la ambigüedad del idioma, que contradice una de las propiedades de los
algoritmos. Considere la frase:

“Madrid comienza con la letra m y termina con la letra t”

POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 6
Seguramente, la mayoría de los lectores considerarán que esta frase es falsa y que se debe a una falta
de ortografía. No obstante, note que esto no es necesariamente cierto ya que de hecho la palabra
termina sí comienza con la letra t. Este es un claro ejemplo de la ambigüedad del lenguaje natural, en
el que una misma frase puede ser interpretada de maneras distintas por interlocutores diferentes.
Dada nuestra capacidad de englobar la información en un contexto, nos es posible descubrir el
significado que asignó a la frase su autor original, capacidad con la que no cuentan actualmente las
máquinas. El área de las ciencias de la computación conocida como Procesamiento de Lenguaje
Natural estudia este y otros problemas del lenguaje y métodos computacionales para mejorar la
capacidad de comprensión de las máquinas.

Los computadores digitales, dada su estructura física, hacen uso de un lenguaje muy sencillo llamado
el lenguaje binario (sobre esto hablaremos en mayor detalle más adelante), el cual está compuesto por
solamente dos símbolos: 1 y 0, pero es suficiente para expresar todas las acciones que el computador
puede hacer. Infortunadamente, dar instrucciones al computador en este lenguaje no es una tarea
sencilla e implica un conocimiento detallado de la arquitectura física de la máquina.

2.3. Lenguajes de programación y código fuente

Como se mencionó anteriormente, existe una amplia brecha entre el lenguaje natural usado por los
humanos y el lenguaje binario manejado por los computadores. La solución a este problema es un conjunto
de lenguajes intermedios, denominados lenguajes de programación, los cuales son una combinación de
un subconjunto de un lenguaje natural (generalmente inglés) y el lenguaje algebraico, suficientemente
expresivo para que un programador pueda representar en él, de manera fácil, sus algoritmos, pero también
suficientemente formal para que su traducción a lenguaje binario sea posible. Los primeros lenguajes de
programación fueron creados en la década de los 50, siendo los más importantes Fortran, Cobol y Lisp,
aún usados por algunas compañías. Varias décadas de desarrollo en este campo han permitido tener cada
vez mejores lenguajes, siendo los más populares hoy en día Java, C, C++ y Python (Tiobe, 2017).

El proceso de transformación de un algoritmo en un programa consiste de dos o más pasos de traducción.


Primero, el programador debe escribir su algoritmo (originalmente en pseudocódigo, diagrama de flujo
o una simple idea) en un lenguaje de programación. A esta representación del algoritmo se le conoce
como código fuente. Posteriormente, se realiza el proceso de traducción del código fuente a lenguaje de
máquina para ser ejecutado por el computador.

POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 7
2.4. Compiladores, intérpretes y programas

El proceso de traducción de instrucciones en código fuente a instrucciones ejecutables para el


computador puede ser realizado de dos maneras distintas: por un compilador o por un intérprete.

Un compilador es un programa que toma el conjunto de instrucciones en su totalidad y genera, a


partir de ellas, un programa. Este programa es almacenado en un archivo en lenguaje binario y puede
ser ejecutado tantas veces como se desee, sin ser requerido nuevamente el código fuente. La figura 2
presenta el esquema general de un proceso de compilación.

source compiler object executor


code code

The compiler ... and generates You execute the ... and the result
reads the object code. program (one way appears on
source code... or another)... the screen.

Figura 2. Esquema general del proceso de compilación de código fuente a lenguaje de máquina
Fuente: elaboración propia

Por otra parte, un intérprete es un programa que traduce y ejecuta las instrucciones del código fuente
una a una. Los lenguajes interpretados son especialmente útiles cuando se desea observar algunos de los
resultados intermedios rápidamente. Dada la forma como el código es procesado, la traducción a lenguaje
binario ocurre cada vez que un programa es ejecutado en los lenguajes interpretados, en contraposición a
los lenguajes compilados que crean el programa una sola vez. La figura 3 presenta el esquema general del
proceso de traducción realizado por un intérprete.

POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 8
source interpreter
code

The interpreter ... and the result


reads the appears on
source code... the screen.
Figura 3. Esquema general del proceso de interpretación de código fuente a instrucciones en lenguaje de máquina
Fuente: elaboración propia

3. El lenguaje de programación Java


A lo largo del Módulo se va a trabajar en el lenguaje de programación Java, el cual es de programación de
propósito general. Fue diseñado por James Gosling en la compañía Sun Microsystems, adquirida en 2010
por Oracle Corp., y lanzado en 1995 como parte de la plataforma de desarrollo de idéntico nombre, la
cual está compuesta, además del lenguaje, de un conjunto de herramientas para posibilitar la creación y
ejecución de programas Java.

A la fecha, Java es el lenguaje de programación más popular en la comunidad mundial de programadores


(TIOBE, 2017). Esto obedece a las propiedades del lenguaje, siendo las más importantes las que se
resumen a continuación (Gosling y McGilton, 1995):

• Es simple: es posible aprender el lenguaje rápidamente y no se requiere de un entrenamiento extenso


para empezar a crear programas.

• Es robusto: los programas creados en Java son altamente confiables debido a las herramientas de
detección de errores con que cuenta su plataforma.

• Es seguro: la tecnología Java no permite que otros programas maliciosos se adhieran a sus programas
y afecten su comportamiento.

• Es portable: un programa Java puede ser ejecutado en distintas configuraciones de hardware y


software, sin que ello requiera modificación alguna del programa.

• Es rápido: el código Java es traducido a una versión muy eficiente de sí en el lenguaje de máquina, lo
que hace que los programas Java sean rápidos comparados con programas escritos en otros lenguajes.

POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 9
3.1. Proceso de compilación e interpretación de un programa Java

Anteriormente, se dijo que el proceso de conversión de código fuente a código de máquina puede ser
realizado por un compilador o por un intérprete. En el caso particular de Java, este proceso requiere
de los dos tipos de programas.

Inicialmente, el programador debe escribir su programa en uno o más archivos de código fuente
usando cualquier herramienta de edición de texto. Estos archivos deben tener extensión .java.
Posteriormente, el código fuente es procesado por el compilador Java, el cual lo traduce no
directamente a código de máquina, sino a un código intermedio llamado bytecode. Este código
bytecode es almacenado en archivos del mismo nombre pero de extensión .class. El bytecode es
un lenguaje intermedio que permite a Java mantener una versión, mucho más fácil de procesar,
del programa independiente de la arquitectura física de la máquina para ser convertida a código
fuente. Finalmente, el bytecode es procesado por un intérprete, la máquina virtual de Java, el cual
lo transforma en instrucciones en lenguaje de máquina, que son inteligibles y realizables para el
computador. La figura 4 presenta el esquema general del proceso de compilación e interpretación de
un programa Java.

Compiler
Java 0100101...
VM

MyProgram.java MyProgram.class
MyProgram

Figura 4. Proceso de compilación e interpretación de un programa Java


Fuente: elaboración propia

POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 10
4. Resumen
Un problema computacional puede definirse como una relación entre un conjunto de instancias del
problema y el conjunto de sus correspondientes soluciones.

Cada instancia consiste de una asignación de valores a las variables que definen el problema. El
cálculo de la solución de cualquier instancia del problema es detallado por un algoritmo.

Con el fin de aprovechar la memoria y la capacidad de procesamiento de los computadores, un


algoritmo debe ser escrito en un lenguaje de programación, para luego ser procesado por un
compilador o un intérprete que lo convertirán en instrucciones en lenguaje de máquina que
constituirán un programa.

El lenguaje de programación Java es el más usado hoy en día por los desarrolladores de todo el
mundo; esto se debe a que es un lenguaje simple, robusto, seguro, portable y rápido; hace parte
de la plataforma de desarrollo Java, la cual también incluye herramientas para facilitar y permitir el
desarrollo y ejecución de sus programas. El lenguaje Java es tanto compilado como interpretado.
El código fuente Java es traducido por un compilador al lenguaje bytecode y, posteriormente, el
intérprete convierte las instrucciones bytecode en instrucciones de máquina que son ejecutadas por
el computador.

POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 11
Referencias
Gosling, J. y McGilton, H. (1995). The Java Language Environment: A White Paper. California: Sun
Microsystems, Inc.

Real Academia Española. (2014). Diccionario de la lengua española (23a. ed.). Recuperado de http://
www.rae.es/

TIOBE Software. (2017). TIOBE Index for May 2017. Recuperado de https://www.tiobe.com/tiobe-index/

POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 12
INFORMACIÓN TÉCNICA

Módulo: Programación de Computadores


Unidad 1: Conceptos básicos y representación de información
Escenario 1: Introducción a la programación de computadores

Autor: Edwin Andrés Niño Velásquez

Asesor Pedagógico: Jeiner Velandia


Diseñador Gráfico: Kelly Yohana Valencia Forero
Asistente: Ginna Quiroga

Este material pertenece al Politécnico Grancolombiano.


Prohibida su reproducción total o parcial.

POLITÉCNICO
POLITÉCNICO GRANCOLOMBIANO
GRANCOLOMBIANO 13

También podría gustarte