Вы находитесь на странице: 1из 43

1.1.

Estudio de los lenguajes de programacin desde el punto de vista de las reas de aplicacin

Cientficos

Ingeniera De Gestin (negocios) De Inteligencia Artificial Programacin de sistemas Multipropsito

1.1.2

Estudio de los lenguajes de programacin desde el punto de vista de su nivel


Lenguaje Humano

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."

Imperativos Estructurado en bloques

Declarativos
Programacin Lgica

Basados en objetos

Programacin funcional Lenguajes para bases de datos

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

Alfabeto (conjunto de smbolos)

Lenguaje

Reglas para formar palabras Reglas para formar declaraciones

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

Caractersticas de los lenguajes de programacin

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

Tipo 0: Lenguajes recursivamente enumerables, son reconocidos por mquinas de Turing


Tipo 1 : Lenguajes sensibles al contexto, son reconocidos autmatas lineales limitados

Tipo 2: Lenguajes libres de contexto, son reconocidos por autmatas descendentes

Tipo 3: Lenguajes regulares, son reconocidos por autmatas finitos

Cada tipo de lenguaje esta asociado a un tipo de mquina particular


9

1.4.1.2

Backus Naur Form


Backus Naur Form (BNF) ::= | <algo> algo se define como alternativamente, o <algo> se reemplaza por su definicin smbolo terminal, elemento indivisible, no hay reemplazo

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

rboles Sintcticos de Derivacin

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)

Las gramticas libres de contexto 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 N y

A ->s

s es cualquier cadena de U N

Ejemplo: = { a, b } N = {S} P = { 1 . S -> aSb 2. S -> ab } Inicio = S

Esta gramtica produce: a n b 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

Autmatas Lineales Limitados


Gramticas sensibles al contexto G=( , N, P, Inicio) Las gramticas sensibles al contexto son gramticas estructuradas por frases, se componen de un conjunto de smbolos terminales (I),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: 1. puede contener ms de un smbolo, al menos uno es no terminal 2. La longitud de es menor o igual que la de Ejemplo: = {a, b} N = {S, B, C} Inicio = S P = { 1 . S a -> SBC 2. S -> aBC 3. CB -> BC 4. aB -> ab 5. bB -> bb 6. bC -> bc 7. cC ->cc }

Esta gramtica produce: anbncn

17

1.4.1.5.3

Autmatas Lineales Limitados


Un autmata Lineal Limitado requiere de seis cosas 1. Un alfabeto de smbolos de entrada 2. Una cinta finita dividida en celdas 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, Estado^)

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

Autmatas Lineales Limitados

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

Semntica y sus documentos

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

El anlisis consta de tres fases:

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

Al anlisis lxico. Dada la expresin :


posicin := inicial + velocidad * 60 se obtendran los siguientes componentes lxicos: 1. El identificador posicin 2. El smbolo de asignacin := 3. El identificador inicial 4. El smbolo de suma + 5. El identificador velocidad 6. El smbolo de multiplicacin * 7. El nmero 6 0

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

Proceso de carga y enlace

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

Proceso de carga y enlace

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

Tipos de dato genricos

Nombre

Tamao

Combinaciones binarias

Byte Word Double word (dword) Quad word (qword)

8 bits 2 bytes (16 bits)

256 65,536

4 bytes (32 bits)


8 bytes (64 bits)

4,294'967,296
18'446)744'073,709'551,616

31

2.2.1.1

Tipos de dato primitivos

Entero BCD Cadena de bits con o sin signo Corto con o sin signo Largo

Real Punto fijo Punto flotante

Carcter Booleano Apuntador

referencias colgantes creacin de basura

2.2.1.1

Tipos de dato primitivos


Enteros Rango sin signo Rango con signo

Caracter (Byte) Carcter, Entero corto (Word) Entero largo (Dword)

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 del exponente

Rango de la fraccin

Real de precisin simple (Dword)

De N x 10 -32 A N x 10 31

De -33'554,432 A 33'554,431

Real de doble pecisin (Qword)

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

Tipos de dato estructurados

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

Nombre Direccin Tipo Valor

en tiempo de compilacin en tiempo de carga en tiempo de ejecucin

esttica dinmica

35

2.2.2

Tiempo de vida y alcance

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

Correspondencias Dominio y contradominio

Algoritmo Identificador Parmetros Cuerpo


Interna

Funciones como parmetros Selectiva Condicin

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.

int factorial (int n) { if (n <= 1) return 1; else return n * factorial (n -1); }

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 (5, 1) n=5 factorial (5, 1)


n = 5 m=1

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

int morris(int n, int m) { if (n == m) return (m + 1); else


return morris(n, morris(n-1, m + 1)); }

43

Вам также может понравиться