josemao.files.wordpress.com€¦ · Web viewManipular la abstracción de objetos del mundo real,...
Transcript of josemao.files.wordpress.com€¦ · Web viewManipular la abstracción de objetos del mundo real,...
1
UNIVERSIDAD NACIONAL DE INGENIERIAUNI – Norte
Lic. José Manuel Alvarado
INTRODUCCIÓN A LA PROGRAMACIÓN
Objetivo General.
Emplear las diferentes técnicas de programación para dar solución a diversos problemas a través del análisis de los mismos, diseño y verificación manual de algoritmos.
Resolver problemas de conversión a los diferentes sistemas de numeración.
Manipular la abstracción de objetos del mundo real, mediante la implementación de clases utilizando un lenguaje de programación orientado a objetos.
Específicos:
Examinar diferentes problemas para aprender a identificar qué tipo de información se necesita producir.
Diseñar algoritmos y verificar manualmente los mismos.
Conocer los diferentes tipos de datos dentro de la algoritmización.
Definir los diferentes sistemas de numeración.
Operar con los diferentes sistemas de numeración.
Comprender las técnicas de programación estructurada.
Emplear las técnicas de programación estructurada en la solución de problemas.
Programación I
2
UNIVERSIDAD NACIONAL DE INGENIERIAUNI – Norte
Lic. José Manuel Alvarado
Comprender las estructuras de datos Arrays.
Aplicar las estructura de datos Arrays en la solución de problemas.
Comprender que es la programación modular y su funcionamiento.
Emplear la programación modular para dar solución a problemas.
Comprender el comportamiento de las diferentes técnicas de Búsqueda y Ordenación.
Emplear las técnicas de Búsqueda y Ordenación en la solución de problemas.
Conocer la implementación de objetos, atributos y responsabilidades, evaluados en: clases, variables y métodos de un leguaje de programación orientado a objetos.
Programación I
3
UNIVERSIDAD NACIONAL DE INGENIERIAUNI – Norte
Lic. José Manuel Alvarado
UNIDAD I: Sistemas Numéricos (6 Hrs Clase)
1. Binarios (suma, resta, conversión)
2. Octal (suma, resta, conversión)
3. Hexadecimal (suma, resta, conversión)
4. Código ASCII.
UNIDAD II: Reseña Histórica (2 Hrs Clase)
1. Concepto de programa
2. Lenguaje de maquina
Características
Ventajas
Inconvenientes
3. Lenguajes a bajo nivel
Ventajas
Inconvenientes
4. Traductores
Interpretes
Compiladores
UNIDAD III: Elementos de Programación (22 Hrs Clase)
1. Sintaxis y Semántica
2. Tipos de datos
Tipos de datos primitivos
Programación I
4
UNIVERSIDAD NACIONAL DE INGENIERIAUNI – Norte
Lic. José Manuel Alvarado
Variables
Constantes
Representación interna de los datos
Conversión de tipo
3. Instrucciones
Instrucción de asignación
Instrucción de E/S
4. Operadores
Operadores aritméticos
Operadores de incrementos y decremento
Operadores relacionales
Operadores lógicos
Operadores de asignación
5. Funciones internas
6. Operaciones con cadenas
7. Estructura de control
Secuencia
Selección
Interacción
UNIDAD IV: Introducción a la POO (50 Hrs Clase)
1. Introducción
2. Clases y objetos
Conceptos
Programación I
5
UNIVERSIDAD NACIONAL DE INGENIERIAUNI – Norte
Lic. José Manuel Alvarado
Diferencias
Representación grafica (UML)
3. Estructura interna de una clase
Atributos
Métodos
4. Estructura interna de un objeto
5. Instancia de una clase
6. Diseño practico de clases
7. Métodos de las clases
8. Programación estructurada incluida en Métodos
Estructuras secuenciales
Estructuras selectivas
Estructuras repetitivas
Estructuras de decisión anidadas
Estructuras de repetición anidadas
Búsqueda, ordenación y mezcla
9. Declaración de clases usando un lenguaje de POO
Miembros privados
Miembros públicos
Miembros protegidos
Miembros de datos
Miembros funciones y/o procedimientos
UNIDAD I: SISTEMAS NUMÉRICOS
Programación I
6
UNIVERSIDAD NACIONAL DE INGENIERIAUNI – Norte
Lic. José Manuel Alvarado
Los números se pueden representar en distintos sistemas de numeración que se
diferencian entre sí por su base.
Así el sistema de numeración decimal es de base 10, el binario de base 2, el octal de base
8 y el hexadecimal de base 16. El diseño de todo sistema digital responde a operaciones
con números discretos y por ello necesita utilizar los sistemas de numeración y sus
códigos. En los sistemas digitales se emplea el sistema binario debido a su sencillez.
Cualquier número de cualquier base se puede representar mediante la siguiente ecuación
polinómica:
...... 11
00
23
121
bababababaN nnn
Siendo b la base del sistema de numeración. Se cumplirá que b>1; a i es un número
perteneciente al sistema que cumple la siguiente condición: 0 ≤ ai <b.
DECIMAL
Su origen lo encontramos en la India y fue introducido en España por los árabes. Su base
es 10. Emplea 10 caracteres o dígitos diferentes para indicar una determinada cantidad: 0,
1, 2, 3, 4, 5, 6, 7, 8, 9. El valor de cada símbolo depende de su posición dentro de la
cantidad a la que pertenece. Veámoslo con un ejemplo:
01210 106103101136
2101210 10210410610310142,136
BINARIOS (SUMA RESTA, RESTA CONVERSIÓN)
Programación I
7
UNIVERSIDAD NACIONAL DE INGENIERIAUNI – Norte
Lic. José Manuel Alvarado
Es el sistema digital por excelencia, aunque no el único, debido a su sencillez. Su base es 2
Emplea 2 caracteres: 0 y 1. Estos valores reciben el nombre de bits (dígitos binarios). Así,
podemos decir que la cantidad 10011 está formada por 5 bits. Veamos con un ejemplo
como se representa este número teniendo en cuenta que el resultado de la expresión
polinómica dará su equivalente en el sistema decimal:
1001234
2 1910110110010010110011
Suma
La tabla de adición siguiente nos muestra las 4 reglas básicas para sumar dígitos binarios:
0 + 0 = 0 Suma = 0 Acarreo = 0
0 + 1 = 1 Suma = 1 Acarreo = 0
1 + 0 = 1 Suma = 1 Acarreo = 0
1 + 1 = 10 Suma = 0 Acarreo = 1
Puede verse que las primeras 3 reglas dan lugar a un resultado de un solo bit, y la cuarta
regla, la suma de dos unos, da lugar a 10 (2 en binario). Cuando se suman números en
binarios, teniendo en cuenta la última regla se obtiene en la columna dada la suma de 0 y
un acarreo de 1 que pasa a la siguiente columna de la izquierda, como se muestra:
Programación I
8
UNIVERSIDAD NACIONAL DE INGENIERIAUNI – Norte
Lic. José Manuel Alvarado
Resta
La tabla de siguiente nos muestra las 4 reglas básicas para restar dígitos binarios:
0 - 0 = 0
1 - 1 = 0
1 - 0 = 1
10 - 1 = 1 0 – 1 con acarreo negativo (préstamo) de 1
Cuando se restan números, algunas veces se genera un acarreo negativo que pasa a la
siguiente columna de la izquierda. En binario esto sucede cuando se intenta restar 1 de 0.
En este caso se pide prestado un 1 de la siguiente columna de la izquierda, y en la
columna que se está restando se genera un 10. Veamos esto con un ejemplo:
Supongamos que queremos realizar la resta 5 – 3 = 2 en binario. Esto es 101 – 011
Conversión
Si la conversión es de binario a decimal, aplicaremos la siguiente regla: se toma la cantidad
binaria y se suman las potencias de 2 correspondientes a las posiciones de todos sus
dígitos cuyo valor sea 1. Veamos dos ejemplos:
1011012 = 1.25+0.24+1.23+1.22+0.21+1.20 = 4510
101012= 1.24+0.23+1.22+0.21+1.20 = 2110
Si la conversión es de decimal a binario, aplicaremos la siguiente regla: se toma la cantidad
decimal dada y se divide sucesivamente entre 2. Los restos obtenidos en cada división (0,
1), forman la cantidad binaria pedida, leída desde el último cociente al primer resto.
Decimal Base Cociente Resto 4510 = 1011012
45 2 22 122 2 11 011 2 5 1
Programación I
9
UNIVERSIDAD NACIONAL DE INGENIERIAUNI – Norte
Lic. José Manuel Alvarado
5 2 2 12 2 1 0
Cuando tengamos un número con decimales seguiremos el siguiente procedimiento:
multiplicaremos por 2 la parte decimal y se toma como dígito binario su parte entera. El
proceso se repite con la fracción decimal resultante del paso anterior, hasta obtener una
fracción decimal nula, o bien hasta obtener el número de cifras binarias que se desee.
Ejemplo: 45,645
101101, 101001012
Fracción decimal Multiplicado por: Resultado Dígito binario
0,645 2 1,290 1
0,290 2 0,580 0
0,580 2 1,160 1
0.160 2 0,320 0
0,320 2 0.64 0
0.64 2 1.28 1
0.28 2 0.56 0
0.56 2 1.12 1
OCTAL (SUMA RESTA, RESTA CONVERSIÓN)
Posee ocho símbolos: 0, 1, 2, 3, 4, 5, 6, 7. Su base es 8.
Este sistema tiene una peculiaridad que lo hace muy interesante y es que la conversión al
sistema binario resulta muy sencilla ya que, 8 = 23. Así, para convertir un número de base
8 a binario se sustituye cada cifra por su equivalente binario.
Programación I
10
UNIVERSIDAD NACIONAL DE INGENIERIAUNI – Norte
Lic. José Manuel Alvarado
Suma
Las operaciones aritméticas de este sistema se resuelven en idéntica forma a los sistemas
vistos, sin rebasar la base, es decir, cada vez que se conformen grupos de ocho se salta al
siguiente nivel significativo. A continuación se presentan ejemplos de cada caso.
257318
+ 321478
60100
Resta
321478
-257318
42168
Conversión
Este sistema tiene una base de ocho símbolos. La facilidad que existe en convertir entre el
sistema binario y el octal, permite expresar los números binarios en un formato más
compacto, ya que cada dígito octal equivale a 3 dígitos binarios.
Base: 8 Símbolos: 0, 1, 2, 3, 4, 5, 6, 7
Los 8 primeros números octales se escriben:
Octal Decimal Binario
0 0 000
1 1 001
2 2 010
3 3 011
4 4 100
5 5 101
Programación I
11
UNIVERSIDAD NACIONAL DE INGENIERIAUNI – Norte
Lic. José Manuel Alvarado
6 6 110
7 7 111
Binario a Octal
Para convertir un número expresado en base 8 a base 2, simplemente sustituimos cada
una de las cifras que lo forman por sus tres cifras binarias equivalentes.
Ejemplo: Convertir a Binario el número 375,428
Con lo que tenemos que 375,428 = 011111101,1000102
Octal a Binaria
Si la conversión es de binario a octal se realiza a la inversa, comenzando desde la coma
decimal hacia la izquierda para la parte entera, rellenando con 0’s a la izquierda si fuera
necesario; y desde la coma decimal hacia la derecha para la parte fraccionaria, rellenando
con 0’s a la derecha si fuera necesario. Ejemplo: Convertir 11111101,1000102 a octal
Con lo que tenemos que 11111101,1000102 = 375,428
Octal a Decimal
Se realiza del mismo modo que de binario a decimal, teniendo en cuenta que la base
ahora es B=8.
Ejemplo: 345,58 = 3·82 + 4·81 + 5·80 + 5·8-1 = 192 + 32 + 5 + 0,625 = 229,62510
Decimal a Octal
Programación I
12
UNIVERSIDAD NACIONAL DE INGENIERIAUNI – Norte
Lic. José Manuel Alvarado
Convertir el numero 1036,3510
HEXADECIMAL (SUMA RESTA, RESTA CONVERSIÓN)
Programación I
El resultado final es la unión de ambos
valores: 1036,3510 = 2014,26314…8.
13
UNIVERSIDAD NACIONAL DE INGENIERIAUNI – Norte
Lic. José Manuel Alvarado
Está compuesto por 16 símbolos: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A, B, C, D, E, F. Su base es 16. Es
uno de los sistemas más utilizados en electrónica, ya que además de simplificar la
escritura de los números binarios, todos los números del sistema se pueden expresar en
cuatro bits binarios al ser 16 = 24. La conversión de un número hexadecimal a uno binario
es muy sencilla al igual que en el sistema octal.
Las operaciones aritméticas son las mismas de cualquier otro sistema. A continuación se
relacionan ejemplos de sumas, restas:
Suma
(7AB,CD)16+(AA,33)16 7AB,CD16
AA,3316 8 5 6,0016
Resta
(ABCDE)16-(1234 A)16 ABCDE
1234A
99994
Conversión
La conversión entre binario y hexadecimal es igual al de la conversión octal y binario, pero
teniendo en cuenta los caracteres hexadecimales, ya que se tienen que agrupar de 4 en 4.
La conversión de binario a hexadecimal se realiza según el ejemplo siguiente:
Hexadecimal a Binario
Programación I
14
UNIVERSIDAD NACIONAL DE INGENIERIAUNI – Norte
Lic. José Manuel Alvarado
La conversión de hexadecimal a binario simplemente sustituiremos cada carácter por su
equivalente en binario, por ejemplo: 69DE16= 0110 1001 1101 11102
Sistema binario Sistema Hexadecimal
0000 0
0001 1
0010 2
0011 3
0100 4
0101 5
0110 6
0111 7
1000 8
1001 9
1010 A
1011 B
1100 C
1101 D
1110 E
1111 F
Ejemplo: 1011111,1100012
Agrupando obtenemos el siguiente
resultado:
0101 1111, 1100 01002
Sustituyendo según la tabla logramos la
conversión esperada:
5F, C416
Decimal a Hexadecimal
Programación I
15
UNIVERSIDAD NACIONAL DE INGENIERIAUNI – Norte
Lic. José Manuel Alvarado
(284161)10 base Cociente Residuo
284161 ÷ 16 = 17760 1
17760 ÷ 16 = 1110 0
1110 ÷ 16 = 69 6
69 ÷ 16 = 4 5
4
(284161)10 = (45601)16
Hexadecimal a Decimal
La conversión se realiza siguiendo el mismo procedimiento que en las conversiones
binario-decimal, pero considerando la base B=16. En este caso, además, deberemos
sustituir los valores A, B, C, D, E, F por su equivalencia en el sistema decimal.
Ejemplo: Hállese el equivalente decimal del valor hexadecimal 39,B816.
39,B816 = 3·161 + 9·160 + B·16-1 + 8·16-2 =
= 3·161 + 9·160 + 11·16-1 + 8·16-2 =
= 48 + 9 + 0.6875 + 0.03125 =
= 57,71875
Hexadecimal a Octal (y viceversa)
Para convertir de entre estos sistemas numéricos lo que se debe hacer es convertir
cualquiera de estos a su equivalente en sistema decimal o binario y luego convertir al otro.
CÓDIGO ASCII
Programación I
16
UNIVERSIDAD NACIONAL DE INGENIERIAUNI – Norte
Lic. José Manuel Alvarado
ASCII (American Standard Code for Information Interchange).
El código ASCII básico utiliza 7 bits y permite representar 128 caracteres (letras
mayúsculas y minúsculas del alfabeto inglés, símbolos de puntuación, dígitos 0 a 9 y
ciertos controles de información tales como retorno de carro, salto de línea, tabulaciones,
etc.). Este código es el más utilizado en computadoras, aunque el ASCII ampliado con 8
bits permite llegar a 28 (256) caracteres distintos, entre ellos ya símbolos y caracteres
especiales de otros idiomas como el español.
Programación I
17
UNIVERSIDAD NACIONAL DE INGENIERIAUNI – Norte
Lic. José Manuel Alvarado
UNIDAD II: RESEÑA HISTÓRICA
CONCEPTO DE PROGRAMA
Un programa informático es un conjunto de instrucciones que una vez ejecutadas
realizarán una o varias tareas en una computadora. Sin programas, estas máquinas no
pueden funcionar. Al conjunto general de programas, se le denomina software, que más
genéricamente se refiere al equipamiento lógico o soporte lógico de una computadora
digital.
DEFINICIÓN DE LENGUAJE
Un lenguaje de programación es un conjunto de símbolos y reglas sintácticas y semánticas
que definen su estructura y el significado de sus elementos y expresiones, y es utilizado
para controlar el comportamiento físico y lógico de una máquina.
LENGUAJE DE MAQUINA
Características
Los ordenadores sólo entienden un lenguaje específico para cada máquina, que se
denomina CÓDIGO MÁQUINA o Lenguaje Máquina. Este lenguaje utiliza un código binario
(símbolos “0" y “1").
Las órdenes que se dan a un ordenador han de ir codificadas en instrucciones, y estas
forman los programas. Las instrucciones tienen dos partes diferenciadas: código de
operación y código(s) de operando(s):
CODOP CODOPERANDO(S)
En la primera, se codifica la operación que realiza la instrucción. Este código de operación
siempre es único para cada instrucción. En la segunda se indica(n) la(s) dirección(es) de
Programación I
18
UNIVERSIDAD NACIONAL DE INGENIERIAUNI – Norte
Lic. José Manuel Alvarado
memoria en la que se encuentra el operando, hasta un máximo de tres, sobre el/(los) que
se aplicará la operación.
Puesto que cada tipo de ordenador tiene su código máquina específico, para programar
en este lenguaje el programador debe conocer la arquitectura física de la computadora
con cierto detalle (registros de la CPU, palabras de memora,...). La estructura del lenguaje
máquina está totalmente adaptada a los circuitos de la computadora y muy alejada del
lenguaje que empleamos normalmente para expresar y analizar los problemas que hoy día
son resolubles con la computadora. Por ejemplo, para hacer cálculos aritméticos
disponemos de un “lenguaje” matemático fácil de comprender y claro, que no se parece
en nada al código máquina necesario para hacer dichos cálculos.
Ventajas
Un programa escrito en lenguaje máquina es directamente interpretable por el
procesador central. Una vez introducido el programa en la memoria principal de la
computadora, no se necesitan transformaciones previas para ser ejecutado (como
más adelante veremos que sí ocurre con los programas escritos en lenguajes de
alto nivel).
Los programas escritos en lenguaje máquina se ejecutan muy eficientemente (con
rapidez), debido a que el usuario lo redacta específicamente para los circuitos que
lo han de interpretar y ejecutar, y a que desde el código máquina se puede utilizar
la totalidad de los recursos de la máquina.
Inconvenientes
Las instrucciones son cadenas de ceros y unos, aunque estas cadenas se pueden
introducir en la computadora mediante un código intermedio (octal o
hexadecimal).
Programación I
19
UNIVERSIDAD NACIONAL DE INGENIERIAUNI – Norte
Lic. José Manuel Alvarado
Los datos se utilizan por medio de las direcciones de memoria donde se
encuentran. En las instrucciones no aparecen nombres de variables (i, j aux...), sino
que el programador debe asignar las direcciones de memoria para las variables y
constantes del programa. Para realizar esta asignación se debe tener en cuenta la
zona de memoria que ocupa el programa, para que no se solape con la zona en la
que se almacenan las variables.
El repertorio de instrucciones suele ser muy reducido y las instrucciones realizan
operaciones muy simples.
En lenguaje máquina, hay varios tipos de instrucciones:
De transferencia de información.
De tratamiento o aritmético-lógicas y de desplazamiento
De transferencias de control: bifurcaciones, saltos, llamadas a procedimientos y
retornos de procedimientos.
Muchas computadoras, por ejemplo, no disponen de instrucciones específicas de
multiplicar y dividir; en su lugar, el programador debe ingeniárselas para
descomponer cada una de las operaciones que desee realizar en términos de las
instrucciones elementales del repertorio máquina.
Por ejemplo, para multiplicar, se deberá codificar un algoritmo que realice la
multiplicación por medio de sumas, comparaciones, desplazamientos, etcétera.
El lenguaje máquina depende y está ligado íntimamente a la CPU del computador.
Si dos computadoras tienen CPU’s diferentes, tendrán distintos lenguajes máquina.
En particular, dos microcomputadoras con el mismo microprocesador e iguales
circuitos de control, tienen igual lenguaje máquina. La dependencia del lenguaje
máquina de la configuración de la CPU hace que los programas redactados en este
lenguaje de programación sean poco transferibles o transportables de una
computadora a otra.
Programación I
20
UNIVERSIDAD NACIONAL DE INGENIERIAUNI – Norte
Lic. José Manuel Alvarado
En un programa en código máquina, no pueden incluirse comentarios que faciliten
la legibilidad del mismo. Además, debido a su representación totalmente
numérica, es muy difícil de reconocer o interpretar por el usuario.
LENGUAJES A BAJO NIVEL
Los lenguajes de máquina están escritos en códigos (código máquina) directamente
inteligibles por la máquina (computadora), siendo sus instrucciones cadenas binarias (0 y
1).
“Lenguaje de máquina” hace referencia al lenguaje específico de una computadora,
mientras que “código máquina” hace referencia al modo en que se escriben los diferentes
lenguajes de máquina.
Los lenguajes de bajo nivel son lenguajes de programación que se acercan al
funcionamiento de una computadora. Los lenguajes de más bajo nivel son los lenguajes de
máquinas. A éste nivel le sigue el lenguaje ensamblador, ya que al programar en
ensamblador se trabajan con los registros de memoria de la computadora de forma
directa.
Ventajas
La programación en un lenguaje de bajo nivel tiene como ventajas una mayor adaptación
al equipo, además de la posibilidad de obtener la máxima velocidad con el mínimo uso de
memoria.
Inconvenientes
Sin embargo tiene importantes inconvenientes, como la imposibilidad de escribir código
independiente de la máquina y la mayor dificultad en la programación y en la
comprensión de los programas.
Programación I
21
UNIVERSIDAD NACIONAL DE INGENIERIAUNI – Norte
Lic. José Manuel Alvarado
TRADUCTORES
Para facilitar el trabajo de programación y hacer los programas más legibles, resolviendo
las limitaciones que presentan los lenguajes máquina, se han desarrollado lenguajes de
programación que permiten utilizar una simbología y terminología próximas a las
tradicionalmente utilizadas en la descripción de problemas. Estos lenguajes se denominan
genéricamente lenguajes simbólicos.
Como la computadora únicamente puede interpretar y ejecutar código máquina, existen
programas traductores, que traducen o trasladan programas desde el lenguaje simbólico
al lenguaje máquina.
INTERPRETES
Un intérprete hace que un programa fuente escrito en un lenguaje vaya, sentencia a
sentencia, traduciéndose a código objeto y sea ejecutado directamente por la
computadora. El intérprete capta una sentencia fuente y la traduce, expandiéndola en una
o varias instrucciones máquina, que ejecuta inmediatamente, no creándose, por tanto, un
fichero o programa objeto almacenable en memoria masiva para posteriores ejecuciones.
En la práctica el usuario crea un fichero con el programa fuente. Esto suele realizarse con
un editor específico del propio intérprete del lenguaje. Según se van almacenando las
instrucciones simbólicas, se analizan y se producen los mensajes de error
correspondientes: así el usuario puede proceder inmediatamente a su corrección. Una vez
creado el fichero fuente el usuario puede dar la orden de ejecución (“RUN”) y el intérprete
lo ejecuta línea a línea. Siempre la traducción antecede inmediatamente a la ejecución, de
forma que:
Las optimizaciones sólo se realizan dentro del contexto de cada sentencia, no
contemplándose el programa o sus estructuras en conjunto.
Programación I
22
UNIVERSIDAD NACIONAL DE INGENIERIAUNI – Norte
Lic. José Manuel Alvarado
Si una sentencia forma parte de un bucle, se traduce tantas veces como tenga que
ejecutarse el bucle, y no una sola vez como ocurriría en un compilador.
Cada vez que utilicemos un programa tenemos que volver a traducirlo, ya que en la
traducción no se genera un fichero objeto que poder guardar en memoria masiva
(y utilizarlo en cada ejecución). Con un compilador, aunque la traducción es más
lenta, esta sólo debe realizarse una vez (ya depurado el programa): cuando
deseemos ejecutar un programa ejecutamos el fichero objeto, que se tradujo
previamente.
COMPILADORES
Un compilador traduce un programa fuente, escrito en un lenguaje de alto nivel, a un
programa objeto, escrito en lenguaje ensamblador o máquina. El programa fuente suele
estar contenido en un fichero, y el programa objeto pasa a ocupar otro fichero. El fichero
objeto puede almacenarse en memoria masiva para ser procesado posteriormente.
La traducción por un compilador (la compilación) consta de dos etapas fundamentales,
que a veces no están claramente diferenciadas a lo largo del proceso: la etapa de análisis
del programa fuente y la etapa de síntesis del programa objeto; es decir, qué pretende
realizar el programa fuente, y cómo realizarlo en el programa objeto. A su vez, cada una
de estas etapas conlleva la realización de varias fases, y en cada una de las cuales se
recorre o analiza completamente el programa fuente.
Programación I
23
UNIVERSIDAD NACIONAL DE INGENIERIAUNI – Norte
Lic. José Manuel Alvarado
Análisis lexicográfico.
Consiste en descomponer el programa
fuente en sus elementos constituyentes,
es decir, sus símbolos, que son caracteres
o secuencias de caracteres con
significado especial. En cierto sentido,
identifica las palabras del lenguaje. De
esta forma, el analizador léxico (también
denominado escáner) aísla los símbolos,
identifica su tipo y almacena en las tablas
de símbolos la información del símbolo
que pueda ser necesaria durante el
proceso de traducción.
Análisis sintáctico.
La sintaxis de los lenguajes de programación se especifica mediante un conjunto de reglas
(la gramática del lenguaje). Esta fase deberá comprobar si un programa es sintácticamente
correcto, es decir, si sus estructuras (expresiones, sentencias o asignaciones) están
construidas de acuerdo con las reglas del lenguaje.
Análisis semántico.
La semántica de un lenguaje de programación define el significado dado a las distintas
construcciones sintácticas. En los lenguajes de programación, el significado está ligado a la
estructura sintáctica de las sentencias.
En el proceso de traducción, el significado de las sentencias se obtiene de la identificación
sintáctica de las construcciones sintácticas y de la información almacenada en la tabla de
símbolos.
Programación I
24
UNIVERSIDAD NACIONAL DE INGENIERIAUNI – Norte
Lic. José Manuel Alvarado
Generación de Código Intermedio.
Si no se han producido errores en algunas de las etapas anteriores, este módulo realiza la
traducción a un código interno propio del compilador, denominado Código Intermedio, a
fin de permitir la transportabilidad del lenguaje a otros ordenadores.
Optimizaciones.
En la fase de optimización se mejora el código intermedio generado anteriormente,
analizando el programa de forma global. Un ejemplo de optimización sería encontrar en el
código la inicialización de una constante dentro de un bucle, con lo que esta inicialización
se produciría tantas veces como se repitiese el bucle. El optimizador sacaría esta
inicialización de la constante fuera del bucle para que sólo se realizase una vez.
Generación de Código Objeto.
En esta etapa se genera el código objeto final. En algunos casos, este código es
directamente ejecutable, y en otros necesita algunos pasos previos a la ejecución
(ensamblado, encuadernación y carga).
UNIDAD III: ELEMENTOS DE PROGRAMACIÓN
SINTAXIS Y SEMÁNTICA
Cada lenguaje de programación define reglas que permiten componer el texto de un
programa como una secuencia de símbolos. El conjunto de estas reglas se denomina
gramática, o más usualmente, la sintaxis del lenguaje. Sintaxis significa con orden. Cada
regla establece una clase definida de objetos o categorías sintácticas; como ejemplos
pueden darse algunas partes típicas de un programa: acciones, declaraciones,
condiciones, expresiones, etc.
Programación I
25
UNIVERSIDAD NACIONAL DE INGENIERIAUNI – Norte
Lic. José Manuel Alvarado
Asociado a cada palabra (símbolo) y a cada frase (categoría sintáctica) debe existir un
significado. Que se traduce en valores de los objetos (constantes y variables) de acuerdo a
sus tipos; o en nombres de objetos o grupos de acciones; o en la especificación de las
operaciones que deben efectuarse sobre esos objetos. Todas las reglas que aportan esta
información se denominan: Semántica del lenguaje.
TIPOS DE DATOS
Datos primitivos
Llamamos tipos primitivos de un lenguaje cuando hablamos de tipos de datos ya definidos
en el lenguaje y de los que se puede partir para la construcción de expresiones o tipos de
compuestos.
Variables
Las variables son objetos que poseen un valor que puede ir cambiando o ser modificado a
lo largo de la ejecución del programa.
Constantes
Las constantes son valores declarados en un programa para su utilización posterior y
poseen un valor que no varía durante el proceso de ejecución.
Programación I