You are on page 1of 16

Universidad Nacional Mayor de San Marcos

Decana de América, fundada en 1551

Facultad de Ingeniería de Sistemas e


Informática
ALGORITMICA III
Informe:
Nº 1

Profesor:
LIC. JORGE LUÍS CHÁVEZ SOTO

Integrantes :
Caso Casimiro, Carlos Júnior. 08200087
Izquierdo Flores, Hugo Alonso. 08200104
Medrano Abrahamzon, Ronaldo 08200208
Nolasco Barrientos, Jonathan. 08200212
Pizarro Aguado, Jonathan Smith. 08200124
Rojas Romero, Verónica Lourdes. 08200185

Fecha de presentación:
31/05/10

2009
DEFINICIÓN DE SU PROYECTO (EN QUÉ
CONSISTE) Y OBJETIVOS DEL PROYECTO.

1 Definición del Proyecto

El proyecto es un programa informático que traduce un pseudocódigo


estandarizado a un código (lenguaje) de alto nivel, en este caso a lenguaje
Java, reconociendo cada termino en una unidad básica llamada Token´s
(componentes léxicos), y a través de ellos formar las estructuras requeridas
(sentencias simples y compuestas) por el usuario

2 Objetivo del Proyecto

Enseñar al usuario a utilizar de manera correcta el estándar de


pseudocódigo orientado a objetos y eventos.

Facilitar la interpretación de un pseudocódigo (Oloop) a un código de alto


nivel (Java).

Hacer de este proyecto una herramienta portable (puede usarse en cualquier


plataforma informática).

3. Marco Teórico del tema.


 Análisis Léxico: El léxico de un lenguaje natural o de
programación esta constituido por todas las palabras y
símbolos que lo componen.

En un lenguaje de programación el léxico lo constituyen todos


los elementos individuales del lenguaje.
Unidad léxica Ccategorías en que se clasifican las cadenas de
caracteres válidos en un lenguaje.

Las unidades léxicas pueden ser:

 identificadores

 Literales numéricas

 operadores aritméticos

 Cadenas de caracteres

 operadores relacionales

 operadores lógicos

 comentarios

Patrón.- Representa la regla para que una secuencia de caracteres


sea considerada cierta unidad léxica.

Token.-El token tiene asociado un patrón,El valor asociado a una


categoría o unidad léxica. Se representa por una constante.

Análisis Sintáctico: Obtiene una cadena de tokens del analizador


lexicográfico (scanner) y verifica que esta secuencia pueda ser generada
por la gramática del lenguaje fuente. Se genera lógicamente un árbol de
análisis (parse tree). Físicamente en la práctica nunca se construyen porque
ocuparían mucho espacio, en su lugar se usan como alternativa, PILAS. La
principal tarea del analizador sintáctico no es comprobar que la sintaxis del
programa fuente sea correcta, sino construir una representación interna de
ese programa y en el caso en que sea un programa incorrecto, dar un
mensaje de error.

Análisis Semántica: Un componente importante del análisis semántico es


la verificación de tipos. Aquí, el compilador verifica si cada operador tiene
operandos permitidos por la especificación del lenguaje fuente. Por
ejemplo, las definiciones de muchos lenguajes de programación requieren
que el compilador indique un error cada vez que se use un número real
como índice de una matriz. Sin embargo, la especificación del lenguaje
puede permitir ciertas coerciones a los operando, por ejemplo, cuando un
operador aritmético binario se aplica a un número entero y a un número
real. En este caso, el compilador puede necesitar convertir el número entero
a real.

4 Alcances y Limitaciones del proyecto.


Alcances:

Editar un lenguaje estandarizado.

Poder corregir después de haber pasado por el proceso de análisis


correspondiente.

Ahorrarnos la necesidad y el tiempo de tener que programar en un lenguaje


de programación (Java).

Limitaciones:

Nuestro proyecto solo traducirá un pseudocódigo a un código ya conocido,


mas no ejecutara el código generado por el programa.

No reconocerá los modificadores de acceso (public, prívate, protected).


5.-La relación de recursos humanos, técnicos. (Software y
hardware) y logísticos.

Relación de Recursos Humanos:

 Caso Casimiro, Carlos Júnior.

 Izquierdo Flores, Hugo Alonso.

 Medrano Abrahamzon, Ronaldo André.

 Nolasco Barrientos, Jonathan.

 Pizarro Aguado, Jonathan Smith.

 Rojas Romero, Verónica Lourdes.

Recursos Técnicos:

 Software:

 IDE NetBeans 6.8.

 ArgoUML.

 Microsoft Word Office 2007.

Hardware:

 Laptops.

 Computadora de escritorio.
6.- El cronograma de actividades a desarrollar.

• 31/05/10: Entrega del 1er informe.

• 19/06/10: Implementación del código expuesto en el prototipo del


diagrama de clases.

• 26/06/10: Se seguirá con la implementación.

• 03/07/10: Se implementara la primera fase de la interfaz grafica de


nuestro proyecto.

• 10/07/10: Optimización del código de acuerdo a lo aprendido en


clase, usando diversas técnicas de la algoritmia.

• 17/07/10: 2da y ultima fase de implementación de la interfaz grafica


del proyecto.

• 24/07/10: en esta ultima reunión del grupo se implementara archivos


y se dará la finalización del proyecto de algorítmica.

• 02/08/10: Entrega y exposición del trabajo ante el profesor a cargo


del curso el Lic. Jorge Luís Chávez Soto.
7.- El diagrama de clases propuesto.
8.- Diccionario de las clases (nombre de la clase, objetivo,
descripción de los atributos y métodos de cada clase)
Clase Ventana:

Es la clase principal, en la cual se implementa la interfaz, esta tiene


como atributo un objeto de la clase Traductor.

• Clase Traductor: Es el padre de las clases Léxico, Sintáctico y


Semántica.

Atributos:

- operador: Es un arreglo de caracteres que guarda todos los


operadores admitidos en el Oloop.

- palabraReservada: Es un arreglo de cadenas que guarda todas las


palabras reservadas en el Oloop.

- líneas: Es una lista de listas de objetos Token. La lista de token va


a guardar toda una línea de comando; por lo que se esta guardando
una lista de las líneas de comando (todo el código).

Métodos:

-fragmentar: Este método crea la lista de lista de Token a partir de


la cadena que guarda todo el código, también elimina los
comentarios hechos en el pseudocódigo.

-traducir: Este método crea nuestro código Java, una vez se haya
terminado el análisis al pseudocódigo.

• Clase Léxico: Se encarga de analizar léxicamente el pseudocódigo.


Atributos:

-errores: Es una lista de cadenas, y estas cadenas son los errores


léxicos del pseudocódigo.
Métodos:

-analizar: se encarga de analizar léxicamente el pseudocódigo que


es pasado a través de una cadena, nos retorna falso si el
pseudocódigo tiene errores y verdadero en caso contrario.

-verificarToken: Se le pasa como parámetro un objeto de la clase


Token y se analiza, retornando falso si el Token tiene errores y
verdadero en caso contrario.

-añadirError: Se le pasa como parámetro un objeto de la clase


Token y se le añade al atributo errores en modo cadena.

-mostrare rores: Muestra en pantalla los elementos del atributo


errores.

• Clase Sintáctico: Se encarga de analizar sintácticamente el


pseudocódigo.

Atributos:

-maquinas: es una lista de lista de cadenas la cual nos ayudara a


verificar el análisis sintáctico.

-errores: Es una lista de cadenas, y estas cadenas son los errores


léxicos del pseudocódigo.

Métodos:

-analizar: se encarga de analizar sintácticamente el pseudocódigo,


nos retorna falso si el pseudocódigo tiene errores y verdadero en caso
contrario.

-inicializarMaquina: Es utilizada por el constructor de este método


para inicializar la variable maquinas.

-verificarLinea: Recibe una lista de objetos Token y verifica si es


sintácticamente correcto ayudado con el atributo maquinas.

-añadirError: Se le añade al atributo errores en modo cadena.


-mostrarError: Muestra en pantalla los elementos del atributo
errores.

-verificarControl: Recibe como parámetro la lista de lista de Token


y hacemos el uso de pilas para verificar y constatar los errores de
sentencia y de cierre respectivamente.

• Clase Semántica: Se encarga de analizar semánticamente el


pseudocódigo.

Atributos:

-maquinas: es una lista de lista de cadenas la cual nos ayudara a


verificar el análisis sintáctico.

-errores: Es una lista de cadenas, y estas cadenas son los errores


léxicos del pseudocódigo.

Métodos:

-analizar: se encarga de analizar sintácticamente el pseudocódigo,


nos retorna falso si el pseudocódigo tiene errores y verdadero en caso
contrario.

-verificarLinea: Recibe una lista de objetos Token y verifica si es


sintácticamente correcto ayudado con el atributo maquinas.

-inicializarMaquina: Es utilizada por el constructor de este método


para inicializar la variable maquinas.

-añadirError: Se le añade al atributo errores en modo cadena.

-mostrarErrores: Muestra en pantalla los elementos del atributo


errores.
• Clase Token: Se encarga de guardar los componentes léxicos.
Atributos:

-informacion: Es una cadena que guarda al token en si.

-cad: Es una cadena que guarda si el token es un identificador,


palabra reservada o símbolo.

• Clase Lista: Es una clase genérica que implementa una lista


enlazada simple.

Atributos:

-nodo:

-L:

-val:

Métodos:

-agregarNodo:

-obtenetValor:

9.- Presentación del oLoop de la clase.


Clase Traductor

Atributos

Operador

PalabraReservada

Lineas

Metodos

Fragmentar

Traducir

Fclase
Clase Lexico viene-de Traductor

Atributos

Errores

Metodos

Analizar -->

VerificarToken -->

AñadirError

MostrarErrores

Fclase

Clase Sintactico viene-de Traductor

Atributos

Maquinas

Errores

Metodos

Analizar -- >

InicializarMaquina

VerificarLinea

AñadirError

MostrarErrores

VerificarControl

Fclase
Clase Semantico viene-de Traductor

Atributos

Maquinas

Errores

Metodos

Analizar -- >

VerificarLinea

InicializarMaquina

AñadirError

MostrarErrores

Fclase

Clase Token

Atributos

Inf

Carácter

Metodos

Obtenerinf -- >

obtenerCaracter -- >

Fclase
Clase lista

Atributos

Nodo

Lista

Val

Metodos

agregarNodo

obtenerValor

Fclase

10.- Diseño de la arquitectura Gráfica del Proyecto. (Conjunto de


ventanas del Proyecto)
INFORME
Estimado profesor Jorge Luís Chávez, se dirige a usted Hugo Alonso
Izquierdo Flores coordinador del grupo, para informarle sobre el
desempeño de los integrantes de este equipo de trabajo.

En este 1º Entregable, me da gusto informarle que todos los integrantes


ayudaron en las distintas partes a desarrollar, que a continuación expongo:

Izquierdo Flores Hugo.-Alonso como cabeza de grupo estuvo


básicamente en el desarrollo del diagrama de clases, definición del
proyecto, diccionario de las clases y el diseño de la interfase.

Caso Casimiro Carlos Júnior.- se encargo del diseño de la interfaces,


alcances y limitaciones del proyecto, presentación del oLoop de la clase y
la relación de recursos humanos, técnicos y logísticos.

Medrano Abrahamzon Ronaldo André.-se encargo del diseño de la


interfaces, alcances y limitaciones del proyecto y la relación de recursos
humanos, técnicos y logísticos.

Nolasco Barrientos Jonathan.- estuvo en el desarrollo del diagrama de


clases, definición del proyecto y diccionario de las clases.

Pizarro Aguado Jonathan Smith.-se encargo del diseño de la interfaces,


alcances y limitaciones del proyecto y la relación de recursos humanos,
técnicos y logísticos.

Rojas Romero Verónica Lourdes.-estuvo en el desarrollo del diagrama de


clases, marco teórico, definición del proyecto y diccionario de las clases.