Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
Tesis para optar por el Ttulo de Ingeniero Informtico, que presente el bachiller:
2
3
4
Dedicatoria
5
Agradecimientos
6
Tabla de contenido
7
3.1 ENTORNO PARA DIBUJAR DIAGRAMAS DE FLUJO ..................................................... 29
8
ndice de Grficos y Tablas
9
CAPTULO 1: PROBLEMTICA, OBJETIVOS Y ALCANCES
1.1 Introduccin
1.2 Problemtica
Para mejorar e incentivar el uso del diagrama de flujo existen herramientas que
facilitan la creacin del diagrama de flujo mediante el uso de componentes drag
and drop haciendo ms interactivo e intuitivo al usuario por ofrecer un ambiente de
trabajo visual. Tambin permiten exportarlo a un lenguaje de programacin, pero
al no contar con un compilador el usuario desconoce que el cdigo generado es el
correcto, por ende necesita de una herramienta adicional para comprobar que la
sintaxis del cdigo sea la correcta.
10
mucha utilidad debido a que ya no necesitan realizar una tarea doble de generar
el diagrama de flujo y luego traducirlo a pseudocdigo.
11
Mtodo, Se utilizar el mtodo de cascada que es una secuencia
Metodologa o de actividades donde el punto de vista principal es el
Procedimiento progreso del producto que se basa en puntos de
revisin definidos mediante entregas calendarizadas.
Este mtodo define una serie de actividades que se
deben realizar en el orden sealado: especificacin de
requisitos, anlisis, diseo, implementacin, pruebas
parciales, integracin y mantenimiento. Para el proyecto
a desarrollar no se incluir la etapa de mantenimiento
debido a que el alcance del proyecto no incluye el
seguimiento y mejora de este.
Justificacin Las fases del intrprete son los procesos que se deben
implementar para obtener la funcionalidad deseada.
1.6.2 Herramientas
12
1.6.2.1 Visual Studio
Microsoft Visio programa parte de la suite de Microsoft Office que nos facilita
la creacin de diversos diagramas mediante unos cuantos clics
(MICROSOFT VISIO s/f). Esta herramienta ser utilizada para la creacin de
los diagrama de flujo del objetivo especfico 1.
1.6.2.3 Byacc
1.7 Alcance
El intrprete ser llamado desde una consola para verificar la lgica y sintaxis del
cdigo generado e imprimir los errores detectados en un archivo de texto.
13
1.7.1 Limitaciones
1.7.2 Riesgos
14
Retraso en los entrega Medio Dedicar ms tiempo a la
de los entregables en la realizacin de los
fecha prevista entregables para poder
terminar en el tiempo
establecido.
Este proyecto tiene una duracin de 4 meses en los cuales se han dividido las
tareas a realizar, por lo cual el proyecto es viable.
15
Entregable Hito
16
Documentacin de Objetivo Especfico 13/05/2014
1
17
CAPTULO 2: MARCO TERICO Y ESTADO DEL ARTE
Lenguajes de Programacin
18
2.1.2 Conceptos relacionados a la propuesta de solucin
Definicin de la solucin
Diseo de la lgica
19
Smbolo Explicacin
Smbolo que representa una decisin. En su interior se almacena una decisin que dependiendo el
Si
resultado de la evaluacin sigue por alguna de las ramas.
Smbolo que representa una seleccin multiple. En su interior se almacena un selector dependiendo
del valor se sigue algunos de las caminos.
Smbolos que sirven para expresar la direccin del flujo del programa
(2) Pseudocdigo
20
Es una forma sencilla de representar, utilizar y manipular.
Facilita el proceso de traduccin a un lenguaje de
programacin.
Es independiente del lenguaje de programacin a codificar.
Permite concentrarse en la lgica y estructuras de la
solucin en vez de las reglas del propio lenguaje de
programacin.
Estructura Declaracin
Asignacin :=
PROCEDIMIENTO ; FIN
Procedimiento PROCEDIMIENTO
Desarrollo de la codificacin
Depuracin y pruebas
21
Entorno de Desarrollo Integrado (IDE)
Compilador
Una caracterstica que diferencia al intrprete del compilador es, que ejecuta el
programa en base a los datos de entrada que da el usuario, en lugar de
devolver un programa traducido.
El resultado del compilador es, por lo general, mucho ms rpido que del
interprete, pero la ventaja del intrprete es que puede detectar muchos ms
errores ya que ejecuta el programa sentencia por sentencia.
22
La parte de sntesis es la que se encarga de construir el programa destino a
partir de la representacin intermedia y la tabla de smbolos. Podemos decir
que el anlisis es el front-end del compilador y la sntesis el back-end (Idem 4).
Microsoft Visio
23
Grfico 2: Microsoft Visio 2010. Fuente:
http://img.brothersoft.com/screenshots/softimage/m/microsoft_visio_viewer_2010-305787-
1258685733.jpeg
Producto que posee una interfaz parecida al Netbeans, que ofrece convertir de
C, C++, VC++. Pascal y Delphi a diagrama de flujo y adems de exportarlo a
MS Visio, Ms Word, XML, SVG. La licencia de este producto es de 119 dlares
por usuario, tambin ofrece una versin de prueba.
24
C++, Cobol, Fortran, Java, Javascript, PHP, VBA a diagrama de flujo y poder
exportarlo a MS Visio, Excel, Word, PDF, JPEG, PNG, y otras extensiones de
imagen. Su costo 249 dlares para la versin estndar.
DFD
25
2.2.3 Productos no comerciales (de investigacin) para resolver el
problema
26
Grfico 7: Entorno de Pas++. Fuente: GOMEZ 2012
DFD Si Si No Si Si Espaol
Visual
Block Si Si No Si Si Espaol
Tesis
(Hirsh) Si No No Si Si Espaol
27
esta tesis, y que ser de ayuda para la etapa de diseo de la resolucin de
problemas.
28
Captulo
o 3: Entorrno para dibujar diagramas de e flujo ada
aptando la
as
libreras de Mic
crosoft office.
En e
este captuloo se presennta las herra
amientas y las funcion
nalidades que conform
man el
entorrno para dib
bujar diagra
amas de flujjo.
a el desarro
Para ollo del entoorno se llevv a cabo una
u investig
gacin de las herramie entas
que se ofrecen para la cre eacin de coomponentes visuales con c el sopo orte de drag
g and
drop. Entre las herramienta
h as encontraadas se tuvoo a java con n su librera
a Java.Swinng, c#
con su librera Windows F Forms, o utilizar las liibreras de Microsoft visio
v o creaar un
plug--in. Se opt por utilizzar c# debido al mayo or conocimmiento de lo os compone entes
grficcos y el ma
anejo de suss eventos.
Lueggo se decidii utilizar Microsoft Vissio 2010 y no n crear todo el apartad do grfico ded los
elemmentos del diagrama
d enn c# debidoo a que Vissio ya posee e los eleme entos definid dos y
la esstructura de
efinida y ord denada nec cesarios. Pe ero se opt por utilizarr las librera
as de
Visio
o y no realizzar un plug--in debido a que Visio ofrece otra as herramie entas adicionales
a la creacin ded diagramas como opciones o paara insertarr grficos, imgenes. Si el
usuaario tiene accceso a todas estas he erramientass puede gen nerar errorees en el pro oceso
de trraduccin del diagrama a a pseudoocdigo al in nsertar com
mponentes no n reconoccibles.
Por lo tanto al utilizar
u las lib
breras se le
e limita el acceso
a a lass herramien ntas ofrecindole
ecesario parra la creaci
lo ne n de diagramas.
Grfico 8:
8 Entorno pa
ara la creacin de diagram
ma de flujo
A continuacin se
s describe
e los compo
onentes de lla paleta de
e dibujo:
Opera
aciones Smbo
olo Soportta
Asigna
acin := Si
Funcio
ones LLAMA
AR() Si
Proced
dimientos PROCEDIMIENTO
O Si
Suma + Si
Resta - Si
Multiplicacin * Si
Divisi
n / Si
entero, booleano,
Datos primitivos er, reales
carcte No
s, punteros,
objetos
Datos Compuesto
os dato ab
bstracto No
30
Captulo 4: Gramtica del Intrprete
<funcion> ::= <funcion> <var> '(' <listaparam> ')' <enter> <listainstr> <finfuncion>
FUNCION HallarSuma(a,b)
FINFUNCION
A partir de este ejemplo tenemos que los smbolos <funcion> <var> '(' <listaparam> ')'
<enter> <finfuncion>, generan como nica regla los smbolos terminales FUNCION,
HallarSuma ,(, a, , ,b ,) ,\n y FINFUNCION, donde a,b forma parte del
smbolo no terminal <listaparam>. No olvidar que existe el smbolo terminal <listaInstr>
que en este caso toma el valor de su segunda opcin el cual es el valor de cambio de
lnea \n o <enter>. Si este proceso de recorrer la gramtica se realiza de manera
31
recursiva se pueden generar sentencias ms elaboradas, como las estructuras
iterativas, condicionales, selectivas, etc.
Las reglas que se generen para la gramtica del pseudocdigo sern posteriormente
utilizados en el proceso de anlisis sintctico del intrprete para la definicin de la
estructura y sintaxis del mismo, esto se explicar a detalle en un captulo posterior. La
gramtica en algunos casos puede presentar errores de ambigedad, esto sucede
cuando existen diferentes caminos que parten de un smbolo no terminal, o smbolos
inaccesibles (smbolos terminales o no terminales que no son alcanzables por ningn
smbolo). Con el correcto desempeo del analizador sintctico se puede verificar la
gramtica del pseudocdigo.
<instrif> ::= <if> <cond> <then> <enter> <listainstr> <listaelse> <fin> <if> <enter>
;
32
;
<instrswitch> ::= <segun> <var> <hacer> <enter> <listacasos> <fin> <segun> <enter>
;
<funcion> ::= <funcion> <var> '(' <listaparam> ')' <enter> <listainstr> <finfuncion>
<enter>
;
33
| <term> <mod> <factor>
| <factor>
;
34
C
CAPTULO
O 5: Mtod
do de trad
duccin pa
ara converrtir el diag
grama de flujo
f
e pseudo
en ocdigo
En e
este captulo
o se explica
ar el mto
odo empleado para convertir el diagrama de
e flujo
en psseudocdig
go.
5.1 Mtodo de
d traducc
cin
Tome
emos como
o ejemplo el siguiente diagrama
d de flujo
Gr
fico 10: Ejem
mplo de un diagrama de flujo
Paraa el diagram
ma de flujo mostrado
m el archivo ge
enerado en XML consta
a de la sigu
uiente
estru
uctura general:
35
Grfico 11: Archivo XML
L generado del
d ejemplo de
el grfico 10
La primera lnea identifica al archivo como un archivoa XML. La segu unda lnea es
e un
sello con el cua al Visio iden ntifica que es un archivo XML co
on formato de Visio. Luego
L
siguee el eleme ento Docum mentProperrties que contiene in
nformacin como: cre eador,
planttilla que se utiliz, etc.
Lueggo tenemoss el eleme ento Shape es que coontiene loss bloques utilizados en
e el
diagrrama de flujjo. Estos bloques estn contenido os en elemeentos hijo lla
amados Sh
hape
el cual posee los siguientess atributos:
ID identificador nicco.
nameU nombre
n univversal del elemento.
e
name no ombre del elemento.
e
master ID del eleme ento masteer de donde
e hereda suus datos.
Los datos
d name eU y name son
s opciona ales por lo que
q no se muestran
m cuuando un bloque
es utilizado
u va
arias vece
es. A continuacin se s muestrran dos casosc de estos
sube
elementos. En E el prime
er ejemplo non es necessario el ID del
d master puesto
p que ya se
cono
oce el tipo ded bloque, pero el se egundo ejem mplo no po osee los atrributos nam
meU y
namee, slo el ID
D del maesttro con el cu
ual se obtiene el tipo de bloque quue es.
36
Grfico 13:
1 Segundo ejemplo del subelemento
o Shape
Los elementos mencionad dos anteriorrmente son n almacenados en clases que se e han
nido como Maestro
defin M y Nodo. La clase
c Maesstro posee los atributo os: id y nom
mbre,
mienntras que Nodo los atrributos: id, nombre,
n tip uierda, hijosDerecha. En el
po, hijosIzqu
casoo que el bloque sea de el tipo Cond
dicion en el
e atributo hijosIzquierd
h da se agrup
paran
los nodos
n del la
ado que cum mplan la co
ondicin mie entras que en hijosDe erecha los nodos
n
que no cumplan n la condiccin. En el caso de lo os bloque del tipo FOR R y WHILEE solo
usann el atributo hijoDerech
ha.
37
Hay que toma ar en cuen nta que los elementoos Shape tambin incluyen a los
cone
ectores quee unen los bloques y estos pose een su pro
opio ID. Po
or esta raz
n se
obse
erva que loss ID de los Nodos
N no so
on consecu
utivos.
38
Captulo 6: Intrprrete para verificar
v la
a lgica, sintaxis, se
emntica del
pseuddocdigo aplicando o las fasess del intrrprete (an
lisis lxic
co,
sinttctico y semntico
s o)
En e
este captullo se descrriben los pasos necessarios para a el desarro ollo del Ob
bjetivo
Espe
ecfico 4: In
ntrprete pa
ara realizarr la validaccin lxica, sintctico y semnticca del
pseu
udocdigo.
Anlisis Lxxico
Lis
sta de
T k
Anlisis Sint
ctico
Tablas de cdigo y smbolos
s
An
nlisis Sem
ntico
Tra
aduccin de cdigo
Programa tra
aducido
Grfico 17: Cuadro re
esumen de la
as fases del in
ntrprete
39
En el anlisis sintctico se toma como datos de entrada el arreglo de tokens resultado
del anlisis lxico con lo cual se genera una tabla de smbolos y cdigos. Los smbolos
son la representacin de las variables, nmeros constantes, nombre de funciones,
procedimientos y cadenas. Y los cdigos son las acciones u operaciones que se
realizan sobre los smbolos tales como suma, resta, multiplicacin, divisin, etc.
5+9/5
Para este ejemplo se tienen 5 tokens, 6 en caso se tome en cuenta el cambio de lnea.
Los tokens son 5, +, 9, /, 5 como se puede observar el lexema 5 se repite pero para el
caso de los smbolos solo existe un smbolo con valor 5. Esta transformacin no es
muy trascendental en el caso d los lexemas con valores que nunca varan a lo largo
del programa, como el caso del valor 5 que seguir siendo 5 durante todo el programa.
Pero si es importante en el caso de una variable.
Un token no solo permite generar smbolos sino tambin cdigos. Los cdigos son las
acciones que se ejecutan sobre los smbolos. Estos se obtienen durante el recorrido
de los tokens donde se extraen y verifican si son cdigos. Por ejemplo analicemos el
siguiente fragmento de pseudocdigo de un programa en pseudocdigo:
(1) Si 33 < 45 entonces
(2) Escribir 33
(3) Sino
(4) Escribir 45
(5) Fin si
Con una simple inspeccin podemos encontrar algunas acciones, en la primera lnea
tenemos una operacin de comparacin (menor que) y en las lneas 2 y 4 tenemos
acciones de impresin (Escribir 33 y Escribir 45).
Pero existen otras acciones que estn relacionadas a la estructura condicional las
cuales son saltar y saltar en falso. Para las operaciones de comparacin solo
existen 2 respuestas verdadero y falso. En el ejemplo si la condicin es verdadera se
ejecuta la instruccin en la lnea 2 y no se debe ejecutar la instruccin de la lnea 4, si
la condicin es falsa se ejecuta la instruccin de la lnea 4 y se salta a la instruccin de
la lnea 5. Por lo tanto es necesario crear una accin saltar que al ejecutar la
40
uccin de la
instru a lnea 2 re
ealice un saalto a la ln
nea 5, tamb
bin para ell caso en que
q la
conddicin sea falsa
f se ne
ecesita de una
u accin saltar en falso para
a que realicce un
salto
o desde la lnea 1 hastta la lnea 4.
4 Con estas acciones explcitas o requerida as por
la na
aturaleza de
e las estructturas es commo se va lleenando la ta
abla de cd
digo.
En eel caso de la ejecuci n de funcio ones y proocedimientos debe existir una divvisin
entre
e los smboolos y cdig gos, porque e durante un
u programma se puede e realizar varias
v
invoccaciones y los valo ores que se utilicen n en cada invocacin deben n ser
indeppendientes.. Para ello se
s crea una a tabla de smbolo y c
digo por ca
ada definici
n de
proceedimiento, funcin y por
p cada inv vocacin. Entonces
E ca
ada vez quee se realicee una
llama
ada a un procedimien
p to o funci
n se toma como base e esta tabla
a y se creaa una
copia
a de ella pa
ara tener inddependencia en cada llamada.
Al fin
nalizar este
e proceso ses obtiene la lista de cdigos y smbolos del d program ma en
pseuudocdigo. Recorriend do la tabla de cdigo se puede ejecutar el e programa a, sin
emba argo, puedeen existir errrores de tip
pos de varia
able los cua
ales se iden
ntifican ante
es de
la eje
ecucin y see realizan durante
d el anlisis sem
mntico.
41
nuesstra gramtica con lo cual
c se mueestra de erroor pero sin detalles, essto debido a que
el an
nlisis sint
ctico lo realiza la herramienta Byacc
B el cuual utiliza una
u mquinna de
estaddos para re ecorrer el cdigo y verificar
v lass reglas de sintaxis. Byacc
B realiza el
mane ejo de errorres en un procedimien
p nto independ diente al de
el anlisis con
c lo cual no
n se
tiene
e acceso a la informacin necesarria, ademss de descon nocer la estrructura de ella.
e
Grfico 19
9: Archivo de texto con el resultado de
el intrprete
42
Captulo 7: Conclusiones y Trabajos futuros
En esta seccin se plantear las conclusiones del proyecto de fin de carrera as como
los trabajos futuros que pueden desarrollarse.
7.1 Conclusiones
Por los motivos anteriormente expuestos, este proyecto de fin de carrera ofrece un
entorno donde el alumno puede dibujar diagramas de flujo y como salida obtiene el
pseudocdigo que se encuentra validado lxicamente, sintcticamente y
semnticamente por el intrprete. De esta manera el alumno no necesita conocer de
un lenguaje de programacin para implementar su solucin y puede enfocarse en
buscar una solucin al problema que le plantean.
43
7.2 Trabajos Futuros
Otro de los temas que se pretende abordar en los trabajos futuros es facilitar el acceso
de esta herramienta a los alumnos mediante la conversin de esta aplicacin de
escritorio a una herramienta online accesible para todos. De esta manera la
herramienta desde cualquier ordenador con conexin a internet sin la necesidad de
instalar programas adicionales.
44
Referencias bibliogrficas
AHO, Alfred V.
2007 Compilers Principles, Techniques and Tools.
Estados Unidos: Pearson Education.
ALONSO, Fernando
2005 Introduccin a la ingeniera de software.
Espaa: Delta Publicaciones Universitarias. Primera Edicin.
BYACC s/f
Consultado el 15 de octubre de 2013. http://byaccj.sourceforge.net/
COOPER, Keith D.
2011 Engineering a Compiler.
Estados Unidos: Elsevier. Pp: 475-490
DEITEL, Harvey
2009 Cmo programar C++: introduccin a la programacin de juegos y las
bibliotecas boost. Naucalpan de Juarz: Pearson.
45
2012 Intrprete para un lenguaje de programacin orientado a objetos, con
mecanismos de optimizacin y modificacin dinmica de cdigo. Tesis de
licenciatura en Ciencias e Ingeniera con mencin en Ingeniera Informtica.
Lima: Pontificia Universidad Catlica del Per, Facultad de Ciencias e
Ingeniera.
GURIN, Brice-Arnaud
2005 Lenguaje C++.
Espaa: Ediciones ENI.
JOYANES, Luis
2008 Fundamentos de programacin: Algoritmos, estructuras de datos y objetos.
Cuarta edicin. Espaa: McGraw-Hill.
LI, Xu
2007 Journal of Computing Sciences in Colleges. RobotStudio: A Universal IDE for
Teaching. Estados Unidos 2007, Volumen 22, pp. 65-72.
MARAT, Boshernistan
2004 Visual Programming Languages: A Survey.
California: University of California.
MARRER, Gary
2009 Fundamentals of Programming: With Object Oriented Programming
Estados Unidos: Creative Commons Attribution-Noncomercial-Share Alike 3.0
46
NELL B, Dale
2007 Programacin y resolucin de problemas con C++.
Mxico D.F: McGraw-Hill.
CONCHIR, Deasn
2011 Overview of the PMBOK Guide: Shot Cuts for PMP Certification
Alemania:Springer. 2 Edicin.
WEITZENFELD, Alfredo
2005 Ingeniera de Software Orientada a Obtejos con Uml, Java e Internet.
Mexico: Cengage Learning Editores.
47