Notas de Clase: Programación Orientada a Objetos
Módulo 1: Construcción y reparación de programas.
1.1 Lenguajes de Programación
1.1.1 Definición
Un lenguaje de programación es una notación constituida por símbolos y reglas que permite escribir programas. Todo lenguaje de programación está compuesto por su sintaxis (reglas) y su semántica (significado de los símbolos y las palabras que utiliza). A través de los lenguajes de programación es posible establecer una comunicación sistematizada y precisa con una computadora.
1.1.2 Tipos de lenguaje
Lenguaje absoluto o de máquina
Es el lenguaje nativo de una unidad de procesamiento central (CPU o procesador). Está compuesto por instrucciones que la máquina entiende directamente y que se expresan en términos de la unidad de memoria más pequeña: el bit (código binario 1 o 0). En esencia, una instrucción es una secuencia de bits que especifican una operación y las celdas de memoria implicadas.
Por ejemplo:
Un lenguaje orientado a la máquina presenta las siguientes ventajas:
No necesita traducción.
Se aprovecha toda la capacidad de la computadora (uso de la memoria).
El tiempo de acceso es menor.
Desventajas:
Es difícil de escribir y entender.
Su escritura toma mucho tiempo.
Dado que es un lenguaje expresado en unos y ceros, se corre un riesgo grande de cometer errores.
Lenguaje simbólico
Es aquél en el cual las instrucciones o sentencias son escritas con palabras similares a las de los lenguajes humanos. Están compuestos por símbolos, letras y números.
Por ejemplo:
If (numero > 0) then print “El número es positivo”
Los lenguajes simbólicos están orientados al programador y presenta las siguientes ventajas:
Se entienden y escriben fácilmente.
Disminuye la probabilidad de cometer errores.
Escribir en lenguajes simbólicos toma menos tiempo.
Son independientes de la plataforma y, por tanto, pueden usarse en distintas plataformas.
Desventajas:
Para que la máquina los entienda deben ser traducidos.
Su tiempo de ejecución es mayor.
1.2. Programa
1.2.1 Definición de programa
Un programa es una secuencia lógica de instrucciones escritas en un determinado lenguaje de programación que dicta a la computadora las acciones que debe llevar a cabo. Una instrucción es una orden que se le da a la máquina para que ejecute una acción. Está compuesta por dos partes: operando y operador. El operador indica el tipo de operación a realizar sobre los datos; el operando es el conjunto de valores con los que el operador va a trabajar.
Éstos son algunos ejemplos:
El término secuencia lógica se refiere al orden de ejecución de cada instrucción del programa (figura 1.1).
FIGURA 1.1 Secuencia lógica de un programa. [Luis Joyanes Aguilar (1998), Fundamentos de Programación.]
Las secuencias pueden ser de dos tipos:
Secuencia lógica lineal. Las instrucciones se ejecutan en el orden en que aparecen, sin bifurcaciones, decisiones ni instrucciones repetitivas (figura 1.1a).
Secuencia lógica no lineal. Contiene instrucciones de bifurcación que permiten dar saltos hacia delante o hacia atrás dentro del programa (figura 1.1b).
1.2.2 Tipos de Programa
De acuerdo con su función, pueden considerarse dos grandes tipos de programas:
Programa fuente. Es un programa escrito en un lenguaje de programación generalmente simbólico que el programador desarrolla. Para que la computadora pueda ejecutarlo, primero debe ser traducido (compilado). Algunos ejemplos de programas fuentes son los escritos en C, C++, JAVA, Pascal o Visual Basic.
Programa objeto: Son los programas compuestos por unos y ceros, producto de la compilación de programas fuente. Es el programa que la máquina puede entender directamente.
1.3 Procesadores de lenguajes
Un procesador de lenguajes es el software que traduce los programas fuentes escritos en lenguajes de programación de alto nivel a código de máquina. Los procesadores de lenguaje pueden ser compiladores o intérpretes.
1.3.1 Compilador
Es un programa, suministrado por el fabricante del lenguaje, cuyo objetivo es convertir el programa fuente en un programa objeto. El compilador realiza las siguientes funciones:
Traduce las instrucciones del programa fuente.
Asigna áreas y direcciones de memoria.
Suministra constantes y otros datos.
Produce un diagnóstico de errores.
Genera el programa objeto.
La compilación es, entonces, el proceso mediante el cual la computadora traduce las instrucciones escritas por el programador (programa fuente) a instrucciones escritas en el lenguaje propio de la máquina (programa objeto) (figura 1.2). Existen tantos compiladores como lenguajes hay; por ejemplo: compiladores para C++, C, Visual Basic, Pascal, etcétera.
FIGURA 1.2 Proceso de compilación
Todo programa fuente debe ser traducido a programa objeto para que pueda ser ejecutado por la computadora.
1.3.2 Intérprete
Es un programa que va leyendo poco a poco el código que el programador escribe y va traduciéndolo y ejecutándolo según se traduce. En estos casos no hay una traducción completa, ya que no se genera un programa directamente ejecutable.
Éste permite al programador ejecutar interactivamente las diferentes secciones del programa, en vez de esperar a que todo el programa sea traducido y probado, como lo haría con un lenguaje compilado. Los lenguajes interpretados son menos eficientes que los compilados.
FIGURA 1.3 Intérprete (Luis Joyanes Aguilar, Fundamentos de Programación).
Los siguientes son ejemplos de intérpretes: Lisp, Smalltalk y Prolog.
1.3.3 Lenguajes interpretados
Existen lenguajes que utilizan mecanismos tanto de compilación como de interpretación; por ejemplo, Visual Basic y JAVA. En el caso de JAVA, existe una "compilación" inicial donde el compilador traduce el código fuente a bytecode.
El bytecode no es el programa objeto de ninguna CPU; más bien es un código intermedio que será posteriormente interpretado (leído y ejecutado) por la máquina.
FIGURA 1.4 Proceso de compilación e interpretación en Java