Professional Documents
Culture Documents
Estudio de los lenguajes de programacin desde el punto de vista de las reas de aplicacin
Cientficos
1.1.2
Muy alto
Alto
Medio
Bajo
Lenguaje Mquina
Muy bajo
1.1.3
Estudio de los lenguajes de programacin desde el punto de vista de los paradigmas de programacin
Paradigma: "Logros cientficos universalmente reconocidos que durante un tiempo proporcionan problemas y soluciones modelo para una comunidad de profesionales."
Declarativos
Programacin Lgica
Basados en objetos
Programacin distribuida
1.1.3 Estudio de los lenguajes de programacin desde el punto de vista de los paradigmas de programacin
Imperativos Cambios de estado hechos a la memoria Algoritmos Estructurado en bloques Subrutinas Datos comunes mbitos anidados
Basados en objetos - Objeto: grupo de procedimientos que comparten un estado
Programacin distribuida - Trabajo de muchos programadores en un solo programa de forma simultnea comunicndose a travs del paso de mensajes
1.1.3 Estudio de los lenguajes de programacin desde el punto de vista de los paradigmas de programacin
Declarativos Se enfocan ms en lo que se quiere hacer que en cmo hacerlo El intrprete o compilador administra recursos en lugar del programador Programacin Lgica Obtencin de nuevos hechos a partir de hechos conocidos Un programa se compone de: Serie de axiomas o hechos Reglas de inferencia Teorema o cuestin por demostrar Programacin funcional Todo opera a travs de funciones Uniformidad funcional No hay asignaciones globales El programa mismo es una funcin Lenguajes para bases de datos Persistencia Control de cambios
1.2
Lenguaje de programacin
Sintaxis Semntica
Lenguaje
Gramtica: ciencia que estudia o regula lexicogrfica: la estructura de los tokens. Token: palabra vlida en un lenguaje.
al
lenguaje
Estructura
Lenguaje
1.2
Lenguaje de programacin
Lenguaje formal: la forma o sintaxis de las palabras vlidas en un lenguaje sin importar su significado
Definicin de lenguajes formales: 1. Alfabeto de smbolos individuales 2. Un conjunto de reglas P para determinar cuales cadenas o palabras de son vlidas en L las reglas de produccin tiene la forma: ->
Gramtica estructurada en frases G=( , N, P, Inicio) = Conjunto de smbolos terminales N = Conjunto de smbolos no terminales P = Conjunto de reglas de produccin Inicio = Smbolo de inicio
1.3
Descripciones bien definidas BNF y EBNF Semntica Comprobabilidad Confiabilidad Traduccin rpida Cdigo objeto eficiente Ortogonalidad Generalidad Consistencia y notaciones comunes Uniformidad Subconjuntos Extensibilidad Transportabilidad
1.4.1.1
Jerarqua de Chomsky
1.4.1.2
Extended Backus Naur Form (EBNF) [algo] opcional (una vez) {algo} opcional (una o ms veces) (algo) agrupacin 'algo smbolo terminal
10
1.4.1.3
TAREA DE INVESTIGACIN
11
1.4.1.4
Diagramas de Sintaxis
No Terminal
Terminal
Flujo
12
1.4.1.5.1
Autmatas Finitos
Gramticas Regular es G=( , N, P, Inicio) Las gramticas regulares son gramticas estructuradas por frases, se componen de un conjunto de smbolos terminales (),un conjunto de smbolos no terminales (N) , un conjunto de reglas de produccin (P), y un smbolo de inicio (Inicio)
Las reglas de produccin tienen la forma: Donde: A, B N y a
A a
A aB
Ejemplo: = { a, .., z, 0 , .., 9} N = {I, L, D} P = { 1 . I a I.. I z I aL I.. I zL \ aD \.. \zD 2. L aL I.. I zL I aD I.. I zD I a I.. Iz 3. D 0 L I.. 1 9 L I 0 D I .. 1 9 D I 01.. 19 } Inicio = I
13
1.4.1.5.1
Autmatas Finitos
Esta mquina terica aceptar palabras vlidas y rechazar cadenas invlidas de forma automtica en un nmero finito de pasos. Dada la cadena a procesar, se procede de forma mecnica en cada uno de los smbolos de izquierda a derecha. De manea formal, un autmata finito es una 5-tupla (S, , T, Inicio, FS)
Donde: S = Un conjunto de estados = Un alfabeto T = Un conjunto de transiciones Inicio = El estado inicial de la mquina FS = Un conjunto de estados finales
Ejemplo: S = { 1, 2, 3, 4 } = { a, .., z, 0, .., 9, # } T = { 1. (1, a .. z)->2 2. (1, 0 .. 9 | # oc) -> 4 3. (2, a .. z | 0 .. 9) -> 2 4. (2, #) ->3) 5. (2, oc -> 4) } Inicio = 1 FS = { 3, 4 }
14
1.4.1.5.2
Autmatas Descendentes
Gramticas libres de contexto
G=( , N, P, Inicio)
A ->s
s es cualquier cadena de U N
15
1.4.1.5.2
Autmatas Descendentes
Un Autmata descendente puede se definido como un conjunto de reglas para dos cintas: una que contiene una cadena de entrada y la otra para ser empleada como una pila. Formalmente un autmata descendente es una 6 -tupla: ( , N U , Inicio, #, {>, -}, R) Donde: = es el conjunto de smbolos de entrada N U = es conjunto de los smbolos de la pila Inicio = es el smbolo de inicio # = es el smbolo de terminacin {>, -} = indica el movimiento de apuntador de lectura R = es el conjunto de reglas del autmata Ejemplo: = { a, b, # } R = { 1. 2. 3. 4. 5.
N U = { S, a, b, # } Inicio = S [ a,S] -> [ -, aSb ] [, S] -> [ -, ab ] [, a] -> [ >, ] [ b, b] -> [ >, ] [ #, #] -> xito!
16
1.4.1.5.3
17
1.4.1.5.3
LBA = ( , , S, Sl , SF, P)
Donde: = conjunto de smbolos de entrada = conjunto caracteres para escribir sobre le cinta S = conjunto de estados Sl = estado inicial de la mquina SF = estado final de la mquina P = conjunto de reglas
18
1.4.1.5.3
Ejemplo: = { a, b, c, # } = { A, B, C, T } S = { 0, 1, 2, 3, 4, 5 } Sl = 0 SF = 5
P = { 1.(S0, 2.(S0, 3.(S0, 4.(S0, 5.(Sy, 6.(Sy, 7.(Sy , 8.(S 2, 9.(S 2, 10.(S2, 11.(S3, 12.(S3, 13.(S3, 14.(S4, 15.(S4, 16.(S4,
a, A, R, Sy) T, B, R, S3) C, C, R, S0) #, #, R, S5) a, a, R, Sy) T, T, R, Sy) b, T, L, S2) T, T, L, S2) a, a, L, S2) A, A, R, S0) T, T, R, S3) C, C, R, S3) c, C, L, S4) C, C, L, S4) T, T, L, S4) B, B, R, S0)
a *
S= 0
19
1.4.1.5.4 Gramticas no restringidas G=( , N, P, Inicio) Las gramticas recursivamente enumerables son gramticas estructuradas por frases, se componen de un conjunto de smbolos terminales (),un conjunto de smbolos no terminales (N) , un conjunto de reglas de produccin (P), y un smbolo de inicio (Inicio) Las reglas de produccin tienen la forma: -> Donde: puede contener ms de un smbolo, al menos uno es no terminal y sin restr icciones sobre P = { 1 . S -> aS | aB 2. B -> bC Ejemplo: 3. C -> aC | aD 4. D -> bE = { a, b } N = { S, B, C } 5 . E -> aF | bF Inicio = S 6. F -> aG | bG 7. G -> aH | bH 8 . H -> al | bl 9. I -> a | b }
Mquinas de Turing
20
1.4.1.5.4
Mquinas de Turing
Una Mquina de Turing requiere de seis cosas 1. Un alfabeto de smbolos de entrada 2. Una cinta dividida en celdas que puede ser infinita 3. Una cabeza de lectura / escritura 4. Un alfabeto de smbolos para escribir sobre la cinta 5. Un conjunto de estados 6. Un conjunto de reglas (Estado,, Lee, Escribe, Direccin, Estado2) MT = ( , , S, Sl , SF, P) Donde: = conjunto de smbolos de entrada r = conjunto caracteres para escribir sobre le cinta S = conjunto de estados SI = estado inicial de la mquina SF = estado final de la mquina P P= conjunto de reglas
21
1.4.2
TAREA DE INVESTIGACIN
22
1.4.3
Proceso de compilacin
Un compilador es un programa que lee un programa escrito en un lenguaje, el lenguaje fuente, y lo traduce a un programa equivalente en otro lenguaje, el lenguaje objeto. En la compilacin se distinguen dos partes: Anlisis, Sntesis. Anlisis: divide al programa fuente en sus elementos y crea una representacin interna del programa fuente. En el anlisis se determinan las operaciones que implica el programa fuente y se registran en un rbol, llamado rbol sintctico, donde cada nodo representa una operacin y los hijos son los argumentos.
En el proceso de compilacin existen otras herramientas involucradas: preprocesador: expande macros, ensamblador: traduce ensamblador a cdigo mquina, cargador/enlazador: localiza bibliotecas y edita los enlaces.
23
1.4.3
Proceso de compilacin
Anlisis lineal ( o lxico) : se lee la cadena de caracteres de izquierda a derecha agrupando componentes lxicos, que son secuencias de caracteres que tienen un significado como agrupacin. Anlisis jer rquico (o sint ct ico) : en el que los caracteres o componentes lxicos se agrupan jerrquicamente en colecciones anidadas. Anlisis sem nt ico: se realizan comprobaciones para asegurar que los componentes se ajustan de un modo significativo.
24
1.4.3
Proceso de compilacin
25
1.4.3
Proceso de compilacin
26
1.4.3
Proceso de compilacin
En un anlisis de tipo jerquico, los componentes lxicos del programa fuente se agrupan en frases gramaticales que el compilador utiliza para sintetizar la salida. Las frases se representan mediante un rbol de anlisis sintctico. La divisin entre anlisis lxico y anlisis sintctico puede ser arbitraria. Un factor a considerar es si una construccin es inherentemente recursiva o no. Las construcciones lxicas no requieren recursin, mientras que la construcciones sintcticas suelen requerirla. No se requiere recursion para reconocer los identificadores, que se agrupan en una tabla, llamada tabla de smbolos. La fase de anlisis semntico revisa el cdigo fuente para tratar de encontrar errores semnticos y rene informacin sobre los tipos para la fase posterior de generacin de cdigo. Tambin se lleva a cabo la verificacin de tipos. En el anlisis semntico se realizan comprobaciones de los tipos permitidos por un operador; en caso de que no coincidan con los permitidos se generar un error o se realizarn las operaciones de conversin necesarias (coercin).
27
1.4.4
Cargador:
Es un programa especial, parte del sistema operativo que tiene como propsito colocar en la memoria las instrucciones y datos de un programa o informacin codificada en lenguaje maquina, para que entonces la computadora pueda procesarla. Las funciones de un cargador son relativamente sencillas y consisten en extraer informacin de algn medio exterior de la memoria (Disco duro, diskette, CD) y colocarlo en celdas sucesivas de la memoria a partir de una celda preespecificada. El cargador realiza la ltima etapa del proceso de traduccin: cargar el programa en memoria donde puede ser ejecutado. Despus de transferir el control al programa cargado por medios manuales o automticos comienza la ejecucin del mismo.
28
1.4.4
Ligador: Es un programa que enlaza todos los programas o mdulos obteniendo lo que denominamos programa ejecutable. Adems incorpora las rutinas de libreras en caso de solicitarlas el propio programa. Para ejecutar el programa, el enlazador obtiene los mdulos objeto de la memoria principal a fin de formar la imagen de programa binario ejecutable. De lo que se trata es de crear una imagen exacta del espacio de direcciones virtual del programa ejecutable dentro del enlazador y colocar todos los mdulos objeto en sus posiciones correctas. El ligado dinmico ofrece algunas ventajas sobre los otros tipos de ligado. Proporciona la posibilidad de cargar las rutinas slo cuando y si se necesitan. SI las subrutinas son grandes o tienen muchas referencias externas, se pueden conseguir ahorros considerables de tiempo y espacio de memoria. De forma similar, supngase que en cualquier ejecucin un programa usa slo pocas de una gran cantidad de subrutinas posibles, pero el nmero exacto de rutinas necesarias no puede predecirse hasta que el programa examina su entrada.
29
2.1
Abstraccin
Abstraccin: condensar un objeto grande a sus partes esenciales, ignorando los detalles. Abstraccin de datos Almacenamiento Tipos de dato "abstractos- Independencia de datos y ocultamiento de informacin Abstraccin de control Ramificacin Iteracin Recursin Excepciones
Abstraccin de procedimiento Funciones y operadores Parmetros Mdulos y TDA (objetos) Ejecucin concurrente
30
2.2.1.1
Nombre
Tamao
Combinaciones binarias
256 65,536
4,294'967,296
18'446)744'073,709'551,616
31
2.2.1.1
Entero BCD Cadena de bits con o sin signo Corto con o sin signo Largo
2.2.1.1
De 0 A 255
De -128 A 127
De 0 A 65,535
De -32,768 A 32,767
De 0 A 4,294'967,295
De 2,147'483,648 A 2,147'483,647
Reales
Rango de la fraccin
De N x 10 -32 A N x 10 31
De -33'554,432 A 33'554,431
De N x 10 -256 A N x 10 255
De -18,014'398,509'481,984 A
18,014'398,509'481,983
33
2.2.1.2
Tarea de investigacin
34
2.2.1.3
Parmetros
Por valor Por referencia Por resultado Por resultado-valor Por nombre
2.2.2
Ligaduras
Ligadura: la asignacin de los atributos de una variable
esttica dinmica
35
2.2.2
Tarea de investigacin
36
2.3
Evaluacin expresiones
Operandos Operadores -
Unarios Binarios
2.4
Notacin de expresiones
Prefija Infija
- Precedencias
Postfija
37
2.5
Funciones y su evaluacin
38
2.6
Recursividad
Recursividad: capacidad de una funcin para llamarse (activarse) a s misma de forma directa o indirecta
Recursividad lineal Mximo una llamada recursiva por rama del condicional Por la cola No por la cola Recursividad no lineal Ms de una llamada recursiva En cascada Anidada
39
2.6
Recursividad
No por la cola: queda pendiente una operacin en cada en cada llamado recursivo. El primer llamado retorna l resultado.
re turn 120
factorial (5) n=5 factorial (4) n=4 factorial (3) n=3 factorial (2) n=2 factorial (1) n=1
40
re turn 1
re turn 2 re turn 24
re turn 6
2.6
Recursividad
Por la cola: no hay operaciones pendientes. El ltimo llamado retorna el resultado
int factorial (int n) { return fact (n, 1); } int fact (int n, int m) { if (n <= 1) return m; else return fact(n-1, n * m);
factorial (4, 5) n = 4 m=5 factorial (3, 20) n = 3 m=20 factorial (2, 60)
n = 2 m=60 factorial (1, 120)
re turn 120
n = 1 m=120
41
2.6
Recursividad
En cascada: Dos o ms llamados recursivos dentro del cuerpo de la funcin
42
2.6
Recursividad
Anidada: El llamado recursivo se tiene como parmetro a la misma funcin invocada
43