Sei sulla pagina 1di 8

LENGUAJES Y TRADUCTORES

Gua 6

2015-I

Lenguajes Recursivos

El hombre naci en la barbarie, cuando matar a su semejante era una


condicin normal de la existencia. Se le otorgo una conciencia. Y ahora ha
llegado el da en que la violencia hacia otro ser humano debe volverse tan
aborrecible como comer la carne de otro

Martin Luther King

Charles Hermite (Dieuze, Francia, 24 de diciembre de 1822 Paris, 14 de enero de


1901) fue un Matemtico francs que investig en el campo de la teora de nmeros,
sobre las formas cuadrticas, polinomios ortogonales y funciones elpticas, y en el
lgebra. Varias entidades matemticas se llaman herminianas en su honor. Tambin es
conocido por la Interpolacin polinomica de Hermite. Fue el primero que demostr que
e es un y no la de una algebraica o polinmica con coeficientes racionales.Ferdinand
Von Lidemann sigui su mtodo para probar la trascendencia de (1882). Fue titular de
la ctedra de lgebra superior en la Facultad de ciencias de Pars, sucediendo a JeanMarie Duhamel de 1871 a 1898, y profesor de anlisis en la Ecole polytechnique de
1869 a 1878. Charles Hermite entr a formar parte de la
Academia de Ciencias Francesa en 1856 en sustitucin de Jacques Binet, y pas a
presidirla en 1890. Le fueron concedidos los honores de Gran Oficial de la Legin de
Honor y la Gran Cruz de la Estrella polar de Suecia.

Objetivos de aprendizaje
1. Especificar un lenguaje recursivo

Augusto Cortez Vsquez

Pag. 1/8

LENGUAJES Y TRADUCTORES

2015-I

Introduccin
Antes de planear el programa, debe realizarse una revisin de la necesidad para la
existencia del programa y definirse de alguna forma los objetivos que desean
lograrse a travs del programa (requerimientos). El proceso de plantacin de un
programa tiene como finalidad lograr el diseo de un programa que cumpla con los
requerimientos. Generalmente es conveniente disear primero la estructura general
del programa y trabajar luego la lgica detallada.
La actividad de programar comienza con la resolucin de problema en cuestin,
en donde debe de priorizarse la actividad de diseo y de razonamiento frente a la
depuracin mediante ejecucin.

Recursin
Una funcin es recursiva cuando es efectivamente computable. Es decir cuando
existe un procedimiento efectivo( u algoritmo) que la computa. El procedimiento
debe ser finito, sin embargo no se impone limitacin previa al espacio de
memoria del que se dispone para realizar el clculo.
Los orgenes de la teora clsica de la recursin pueden hallarse en Dedeking,
cuando en 1988 introduce el estudio de las funciones definibles sobre conjuntos
de los nmeros naturales usando ecuaciones y recurrentemente, la induccin
sobre los nmeros naturales que el haba formulado y precisado. Por lo que
respecta a su estadio presente, cuyo radio de accin cubre la totalidad de las
funciones efectivamente computables, los orgenes hay que buscarlos en el grupo
de Princeton; empez con Church(1903-1995), pero si hay que atribuirle un
padre, este es Kleene. El fue quien la impulso, defini y acoto. Suyos son los
teoremas de la forma normal y el de recursin.[Manzano]
En la primera mitad del siglo XX la lgica se aplico mayormente a la
fundamentacin de la matemtica. En la segunda mitad jugo un papel decisivo en
la creacin y desarrollo de la informtica y de los lenguajes de programacin,
hasta el extremo de poderse caracterizar a la informtica as:
Informtica = Lgica +ingeniera electrnica
La recursin se puede usar en muchos casos

Recursin en la Vida practica


Bsqueda de un archivo: Los ficheros en un computador se almacenan
generalmente en directorios. Los usuarios pueden crear directorios, que a su vez
almacenan ms ficheros y directorios. Suponga que deseamos examinar cada fichero
de un directorio D, incluyendo todos los ficheros de sus subdirectorios ( y sus
subdirectorios, y as sucesivamente). Esto se puede hacer examinando
recursivamente los ficheros de cada subdirectorio junto con todos los ficheros en el
directorio D.
Definicin de objetos: definicin de un tren

Augusto Cortez Vsquez

Pag. 2/8

LENGUAJES Y TRADUCTORES

2015-I

TREN : Locomotora + Vagones


Vagones : Vagon + Vagones / Vagon

Fig 2 Definicin de un objeto( tren) mediante recursin

Definicin de Fractales

Fig. 3 Definicin de un objeto (fractal) mediante recursin


Definicin de expresiones
Una expresin aritmtica se define recursivamente
E-- E+E / E-E / E*E / E div E/ E / -E / Id
Expresiones del calculo de proposiciones
P-- P E / E ^ E / E

Expresiones regulares
R
RR

E / E

E /E/( E ) /p

R/R / ( R ) / R *

La recursin como herramienta de programacin permite definir un objeto (por


ejemplo una estructura de datos - en trminos de si mismo. Un caso concreto de
recursin ya visto en apartados anteriores son las listas circulares, en donde una lista
se llama a s misma. Recursividad como tcnica de Programacin. Como Tcnica de
programacin tiene su origen en ciertos clculos matemticos que consiste en
describir los clculos (o acciones) de una manera autoalusiva (resolver problemas
describindoles en trminos de ejemplares ms sencillos de si mismos.

Augusto Cortez Vsquez

Pag. 3/8

LENGUAJES Y TRADUCTORES

Fig

Esquema

2015-I

de

llamadas

recursivas

LENGUAJE RECURSIVO LR
Consideremos la sintaxis de un lenguaje recursivo LR. La caracterstica de la
mayora de los lenguajes de programacin son las definiciones recursivas
[Pea,1998].
Definamos un lenguaje funcional LR, que prescinda de:
Concepto de procedimiento o accin
Parmetros de E/S
Instrucciones iterativas
Composicin de secuencial de instrucciones
Instrucciones de asignacin
Instrucciones de E/S
El lenguaje LR podr definir e invocar funciones, escribir instrucciones
condicionales y de utilizar recursividad.
PROG
PARFORM
PARM
LISTAID
EXP
PARACT
OP
CONDIC
CASOS

Fun Id (PARFORM) Dev (PARFORM) Inicio EXP Fin


PARM / PARM ; PARFORM
LISTAID : Id
Id / Id , LISTAID
Cn / Id / Id (PARACT) / [EXP] OP EXP / CONDIC / DEC / (EXP)
EXP / EXP, PARACT
+/-/*/// //
ENCASO
CASOS
FINCASO
UNCASO / UNCASO otrocaso CASOS

UNCASO

Caso

DECLAR

SEA Id = Exp {,Id = Exp }* en Exp

EXP

EXP

Id, cn son terminales


Identifique Vn y Vt

Ejemplo 1
Hallar an

Augusto Cortez Vsquez

Pag. 4/8

LENGUAJES Y TRADUCTORES

2015-I

FUN Potencia (a: entero; n : natural) DEV ( p : entero)


Inicio
ENCASO
Caso
n= 0
1
Otrocaso
N>0
a * POTENCIA (a,n-1)
FINCASO
Fin
P

Fun Id

PARM

( PARFORM )

Dev (

PARFORM

ListaId : Id

PARM

ListaId , Id

ListaId : Id

Id

Id

PARFORM )

PARM

Inicio

EXP

Fin

PARFORM

Ejemplo 2
Hallar la suma dicotomica de los elementos de un vector
FUN Suma(a : V ; i , j : entero) DEV (s : entero)
Inicio
ENCASO
Caso
i>j
0
Otrocaso
i=j
a[i]
OtroCaso
i<j
Sea m = (i+j) DIV 2
en Suma(a,i,m) + Suma(a,m+1,j)
FINCASO
Fin

Ejemplo 3
Hallar la suma lineal de un vector
Se explora el vector de izquierda a derecha, sumando uno a uno sus elementos

Augusto Cortez Vsquez

Pag. 5/8

LENGUAJES Y TRADUCTORES

2015-I

7
4

3
7

FUN Suma(a : V ; i , j : entero) DEV (s : entero)


Inicio
Caso
Caso
i > j
0
Otrocaso
i = j
a[i]
Otrocaso
i < j
a[i] + Suma(a,i+1,j)
Fincaso
Fin

Ejemplo 4
Hallar la suma lineal de un vector
Se explora el vector de derecha a izquierda, sumando uno a uno sus elementos
5

3
7

FUN Suma(a : V ; i , j : entero) DEV (s : entero)


Inicio
completar

Augusto Cortez Vsquez

Pag. 6/8

LENGUAJES Y TRADUCTORES

2015-I

Fin

Ejemplo 5
Hallar el mximo comn divisor de dos enteros a y b
FUN MAXCD(a,b:entero) DEV (m:entero)
Incio

completar
Fin

Ejercicios Propuestos
a)
b)
c)
d)
e)
f)
g)
h)
i)

Especifique cuales son los componentes lxicos de LR


Realice el anlisis lxico para el ejemplo 1
Construya el rbol de Anlisis sintctico para el programa del ejemplo 1
Realice el anlisis lxico para el ejemplo 2
Construya el rbol de Anlisis sintctico para el programa del ejemplo 2
Construya una funcin para hallar el producto escalar de dos vectores
Realice el anlisis lxico y el rbol de anlisis sintctico para (f)
Codifique una funcin (libre) utilizando el lenguaje LR
Realice el anlisis lxico y el rbol de anlisis sintctico para (h)

Referencias Bibliogrficas
[1] [AHO 1990] Aho A.,Sethi,Ullman Compiladores, principios, tcnicas y
herramientas; Addison-Wesley1990, Wilmington-Delaware EUA.
[2]

[BECK 1988] BBECK Leland Software de Sistemas


Addisson Wesley iberoamericana
Wilmington Delaware 1988

[3]

[BROOKSHEAR 1993] BROOKSHEAR J. Glean


Teora de la computacin
Addisson Wesley iberoamericana
Wilmington Delaware 1993

[4]

[CORTEZ 2012] Augusto .Cortez Vsquez. Lenguajes y Compiladores, Edit


UCSS Lima 2012

[5]

[CORTEZ 2011] Augusto .Cortez Vsquez. Algoritmica, Edit EsVega Lima


Per 2011

Augusto Cortez Vsquez

Pag. 7/8

LENGUAJES Y TRADUCTORES

[6]

2015-I

[CORTEZ 2012] Augusto .Cortez Vsquez. Algortmica, Tcnicas


algoritmicas, CEPREDIM Lima 2012

[7]
[CORTEZ 2011] Augusto .Cortez Vsquez. Matemticas Discretas, Edit San
Marcos Lima 2011.
[8]

[CORTEZ 2009] Augusto .Cortez Vsquez, Procesamiento del lenguaje natural. Revista RISI
Vol 6 N 2 2009 , Pg 45-54 ISSN 1815-0268 Lima Per www.openjournal.unmsm.edu

[9]

[HOPCROFT 1993] Hopcroft Jhon, Ullman Jeffrey


Introduccin a la teora de autmatas

Edit. CECSA 1993

[10] [JOHNSONBAUGH 1999] Johnsonbaugh Richard Mateamticas Discretas;


Prentice Hall 1999
[11] [KOLMAN 1997] Kolman-Busby-Ross Matematicas Discretas; Prentice Hall
1997
[12]

[MANZANO 2004] Mara Manzano Logia, lgicas y logicidad, 2004

[13] [PEA 1998] PEA MARI, Ricardo


Diseo de programas, Formalismo y abstraccin
Prentice Hall
Madrid 1998
[14] [PRATT 1988] Terrence W. Pratt. Lenguajes de programacin, Diseo
e implementacin; Prentice Hall Hispanoamericana 1988
[15] [SETHI 1992] SETHI, Ravi LENGUAJES DE PROGRAMACION, Conceptos
y Constructores; Addison-Wesley, 1992 .
[16] [TEUFEL
1990]
Teufel-Smithd-Teufel.
fundamentales; Addison-Wesley, 1990 .

Augusto Cortez Vsquez

Compiladores,

Conceptos

Pag. 8/8

Potrebbero piacerti anche