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

Introduccin a la teora de

Lenguajes Formales

1.4 Tipos de lenguajes


DEFINICIN DE LENGUAJE

Las lenguas son sistemas ms o menos complejos, que


asocian contenidos de pensamiento y significacin a
manifestaciones simblicas tanto orales como escritas.
Aunque en sentido estricto, el lenguaje sera la capacidad
humana para comunicarse mediante lenguas, se suele
usar para denotar los mecanismos de comunicacin no
humanos (el lenguaje de las abejas o el de los delfines), o
los creados por los hombres con fines especficos (los
lenguajes de programacin, los lenguajes de la lgica, los
lenguajes de la aritmtica...).

Un conjunto no vaco y finito de smbolos se conoce como alfabeto. Si es


un
alfabeto, y denota que es un smbolo de . Por tanto, si =
{0,1,2,3,4,5,6,7,8,9}, podemos decir que 0 . Obsrvese, que puesto que un
alfabeto es simplemente un conjunto finito no vaco, dados 1 y 2
alfabetos, 12 tambin lo es. Es ms, 2 1 , 2 1 y 1 2 ,
tambin son alfabetos.
Cada smbolo de un alfabeto, es una cadena sobre dicho alfabeto. La cadena
vaca, es una palabra sobre cualquier alfabeto. La palabra vaca, es una
secuencia vaca de smbolos, tomados de cualquiera que sea el alfabeto en
cuestin.

LENGUAJES NATURALES VS LENGUAJES


FORMALES

El calificativo natural, se opone al de formal, el cual determina un lenguaje


que es construido estableciendo una teora y, por ende, se le llamara artificial. Un
lenguaje formal como la lgica, consiste de un conjunto de oraciones, llamadas
frmulas o expresiones bien formadas. La calificacin de lenguaje artificial, se
refiere al hecho de que se forma por medio de reglas de formacin. El calificativo
formal, se refiere especficamente al hecho de que las oraciones de estos
lenguajes, consisten de una lista de smbolos sujetos a diversas interpretaciones.
Por otro lado, en los lenguajes naturales, las palabras en una oracin poseen un
significado y tienen su significante. Esto quiere decir, que independientemente del
significado de cada palabra, debemos tener en cuenta el sentido correcto que stas
adquieren, segn el contexto en el que se expresen en un momento dado. Una de
las metas en computacin, es poder especificar rigurosamente estos significados,
por los mtodos de interpretacin de los sistemas formales.

1.5 herramientas computacionales ligadas con


lenguajes
Muchos lenguajes de computacin estn disponibles para escribir programas de
computadoras. Cada uno de ellos tienen ventajas para ciertas clases de tareas.
Veamos algunos ejemplos de los varios tipos de lenguajes para computadoras y
analicemos para que se usan.

Lenguaje de
Mquina

Es la lengua nativa de la CPU.Cada diseo de CPU tiene su


propio lenguaje de mquina. Este es el juego de instrucciones
que usa el chip para s mismo. Est hecho de ceros y unos
(nmeros binarios) y resulta muy difcil para el trabajo de la
gente.

10 23 11 FF 12 12 13 10 14 50 15 23 16 30
17 40 18 C0 19 00

El lenguaje de mquina parece compuesto de nmeros


solamente. En el segmento de un programa que vemos a la
izquierda, la primer columna le dice a la computadora dnde
llenar su memoria y en la segunda columna sobre una
base hexadecimal (base 16) figuran los valores que debe poner
en dichas locaciones de las memorias.Para ms informacin
sobre nmeros hexadecimal, vea Aritmtica de Base.
Otro ejemplo de lenguaje de mquina es el siguiente:El segmento
de cdigo en lenguaje Java es: int counter = 0; counter = counter
+ 1; podra ser trasladado en lenguaje de mquina como

0001010001000100010001000010001
01010111110
000001110101000111110000100010000
010101010

Lenguaje Asembler
(Assembly)

Son cdigos o abreviaturas para las instrucciones del lenguaje de


mquina.
En un lenguaje Asembler se le asigna un cdigo a cada instruccin en
lenguaje de mquina. De esta manera, en lugar de tener que recordar una
cadena de ceros y unos, el programador slo tendr que recordar cdigos
cortos como: ADD, MOV, o JLE.Ciertamente esto es una mejora
comparado con recordar
000101000100010001000100001000101010111110!! pero tampoco
resulta muy sencillo.
El programa en Asembler a continuacin sirve para leer dos
caracteres y mostrarlos sobre la pantalla que se indica. Note que el texto
que figura a la derecha de los punto y comas, ( ; ) es ignorado por la
computadora. Figura esto para explicar el programa a cualquiera que
mire el cdigo. Note que cada pequeo paso debe ser codificado y que
todo esto solo sirve para mostrar dos caracteres!

FORTRAN

PROGRAM IDEXMP INTEGER BUS_NUM


BUS_NUM = 99 WRITE(*,*) ' TAKE BUS ',
BUS_NUM END

= Formula Translation El lenguaje FORTRAN


fu creado cerca de 1957 para ayudar a los
cientficos, ingenieros y matemticos a escribir
sus programas y resolver con ellos las
ecuaciones matemticas. Todava es un
lenguaje vastamente utilizado para ese tipo de
programas. Fue el primer lenguaje exitoso
de alto nivel. Han aparecido nuevas versiones
y el standard actual es el Fortran 90.
A continuacin veremos un programa de
ejemplo en el que se acepta el bus o lnea de
transmisin de datos, nmero 99 y muestra en
pantalla el comando TAKE BUS 99
(tome la Lnea 99)

COBOL

$ SET SOURCEFORMAT"FREE" IDENTIFICATION


DIVISION. PROGRAM-ID. FragmentA. AUTHOR. Michael
Coughlan. DATA DIVISION. WORKING-STORAGE SECTION.
01 Num1 PIC 9 VALUE ZEROS. 01 Num2 PIC 9 VALUE
ZEROS. 01 Result PIC 99 VALUE ZEROS. PROCEDURE
DIVISION. Calc-Result. ACCEPT Num1. MULTIPLY Num1 BY
Num2 GIVING Result. ACCEPT Num2. DISPLAY "Result is = ",
Result. STOP RUN.

El COBOL fue escrito alrededor de 1960, teniendo presente las


aplicaciones comerciales. Tiene una estructura muy inglesa,
usando sentencias y prrafos, a pesar que aqu son muy
diferentes de los utilizados para una novela. Esto ayuda a los
hombres de negocios, que no son muy hbiles como
programadores para que puedan escribir o editar un programa.
Pero tiene la desventaja de su tendencia hacia programas muy
largos y con muchas palabras. Es un buen lenguaje para
programas simples y directos.
COBOL fue usado para crear muchos programas para las
computadoras de gran porte de importantes empresas. Estos
programas fueron actualizados durante las medidas
llamadas Y2K, que se tomaron al llegar el ao 2000. De manera
que parece muy probable que todava habr programas en
COBOL cerca nuestro por largo tiempo.
El ejemplo que sigue acepta dos nmeros a los que multiplica y
los muestra junto con el resultado de la operacin. Vea el punto
de PROCEDURE DIVISION para notar donde se hizo el clculo.

BASIC

' English to Metric Conversion ' J. S. Quasney '


**************************** PRINT : PRINT "English to Metric
Conversion" PRINT INPUT "Miles: ", Miles INPUT "Yards: ", Yards
INPUT "Feet: ", Feet INPUT "Inches: ", Inches Inches = 63360 *
Miles + 36 * Yards + 12 * Feet + Inches Meters# = Inches / 39.37#
Kilometers = INT(Meters# / 1000) Meters# = Meters# - 1000 *
Kilometers Final.Meters = INT(Meters#) Centimeters = Meters# Final.Meters Centimeters = 100 * Centimeters Centimeters =
INT((Centimeters + .005) * 100) / 100 PRINT PRINT
"Kilometers:"; Kilometers PRINT "Meters:"; Final.Meters PRINT
"Centimeters:"; Centimeters END

Este lenguaje fue escrito en 1964, Originalmente el BASIC era para


ser usado solamente en las clases. Pero el lenguaje ha probado ser
muy til en el mundo real. Una gran variedad de "dialectos" del
BASIC fueron desarrollndose a travs de los aos. Ahora es muy
popular el Visual Basic para programar aplicaciones bajo
Windows.Microsoft Visual Basic for Applications es ejemplo
de un desprendimiento del BASIC modificado para ayudar a los
usuarios a escribir pequeos subprogramas llamados "scripts "
(libretos) o "macros " para ser usados con los aplicaciones. Otras
aplicaciones pueden tambin tener sus propias variaciones sobre
el BASIC, por ejemplo Word Basic y Excel Basic.
El corto programa de ms abajo est escrito en BASIC. Acepta las
medidas de distancia en millas, yardas, pies y pulgadas y las
convierte en kilmetros metros y centmetros. Note como el
programador puede escribir ecuaciones para hacer los clculos.

Originalmente creado para escribir software para


sistemas, el lenguaje C ha evolucionado al C++.
Los dos son ampliamente utilizados por
programadores profesionales para toda clase
programas.
El programa siguiente est escrito en C++,
acepta tres nmeros y verifica si el tercero es
igual a la diferencia entre los dos primeros

#include <iostream.h> void main() { int a, b, c;


cout << "Please enter three numbers\n"; cout <<
"a: "; cin >> a; cout << "\nb: "; cin >> b; cout
"\nc: "; cin >> c; if (c=(a-b)) { cout << "a: "; cout
<< a; cout << " minus b: "; cout << b; cout << "
equals c: "; cout << c << endl; } else cout << "a-b
does not equal c:" << endl; }

Java

import java.applet.*; import java.awt.*; public class


exfour extends Applet { int i; public void init()
{ resize(300,300); } public void paint(Graphics g)
{ g.drawString("You clicked the mouse "+i+"
Times",50,50); } public boolean mouseUp(Event e, int
x, int y) { i++; repaint(); return true; } }

Java es un nuevo lenguaje popular, utilizado para


escribir tanto aplicaciones completas como pequeos
applets para las pginas de Internet (web). Su
objetivo es el de crear aplicaciones que corran en
cualquier computadora a diferencia de otros lenguajes
que no son compatibles con todas las plataformas.
Por ejemplo, MS Word para Windows no funcionar
en una Apple Macintosh o una computadora UNIX.
Sus sistemas operativos no son compatibles con el
programa. Usted tendr que obtener la versin de MS
Word escrita para su sistema operativo particular.

Traductor
UN TRADUCTOR ES UN PROGRAMA QUE TIENE
COMO ENTRADA UN TEXTO ESCRITO EN UN
LENGUAJE (LENGUAJE FUENTE) Y COMO SALIDA
PRODUCE UN TEXTO ESCRITO EN UN LENGUAJE
(LENGUAJE OBJETO) QUE PRESERVA EL
SIGNIFICADO DE ORIGEN. EJEMPLOS DE
TRADUCTORES SON LOS ENSAMBLADORES Y LOS
COMPILADORES.

1.4 ESTRUCTURA DE UN

En el proceso de traduccin se
identifican dos fases principales:

Fase de anlisis:
Comprueba que el programa esta escrito
conforme a las reglas del lenguaje

Fase de Sntesis:
Genera el texto equivalente en el lenguaje objeto

1.7 FASES DE UN COMPILADOR


1. Anlisis:

El cual se trata de la escritura correcta del cdigo fuente. Esta a


su vez comprende varias fases:
Anlisis lxico: esta fase es la encargada de leer el cdigo fuente
y separarlo en lotes para poder ser ledo por el anlisis sintctico.
Anlisis sintctico: esta fase evala los lotes de cdigo con el fin
de que este cumpla con los requerimientos definidos por el
compilador.
Anlisis semntico: en esta fase se busca establecer que el cdigo
fuente cumpla con la semntica solicitada por el compilador, es
decir que el cdigo este correctamente escrito para poder ser
interpretado.

2. Sntesis:

Despus del proceso de anlisis se procede a generar grupos


de los componentes que conforman el programa, para
generar una salida.
Generacin de cdigo intermedio: este cdigo se genera con
el fin de mejorar el uso de la memoria con el fin de optimizar
cdigo fuente.
Optimizacin de cdigo: el objeto de esta fase es mejorar el
cdigo para que sea ms rpido ejecutarlo.
Generacin de cdigo: Aqu se crea el cdigo final de salida
que va a ser interpretado por la mquina.

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