Sie sind auf Seite 1von 47

PONTIFICIA UNIVERSIDAD CATLICA DEL PER

FACULTAD DE CIENCIAS E INGENIERA

IMPLEMENTACIN DE UNA HERRAMIENTA DE TRADUCCIN


Y VERIFICACIN DE PROGRAMAS DISEADOS EN DIAGRAMA
DE FLUJO UTILIZANDO COMO PASO INTERMEDIO
PSEUDOCDIGO

Tesis para optar por el Ttulo de Ingeniero Informtico, que presente el bachiller:

Jairo Abner Palomino Masco

ASESOR: Ing. Gissella Mara Bejarano Nicho

Lima, Junio del 2014


Resumen

Este proyecto de fin de carrera parte de la ausencia de herramientas que sirvan de


ayuda para aquellos alumnos que quieran aprender a programar. Si bien existen
programas que permiten generar diagramas de flujo y luego exportarlos a un
lenguaje de programacin, estos no poseen un compilador que permita detectar
errores de sintaxis, que pueda poseer la solucin. Por ello se plantea implementar
un proceso de traduccin y verificacin de programas diseados en diagrama de
flujo utilizando como paso intermedio pseudocdigo, para que el alumno pueda
preocuparse ms en la lgica de su solucin, que en la sintaxis o estructura del
lenguaje de programacin, a codificar.
Para realizar este proyecto se defini una serie de objetivos especficos. En primer
lugar se desarroll un entorno para dibujar diagramas de flujo, para ello se
adaptaron las libreras de Microsoft office que ofrecen las herramientas necesarias
para la creacin del entorno de trabajo.

Luego, se defini la gramtica que almacena la sintaxis del pseudocdigo


utilizando la notacin Backus-Naur Form (BNF). Despus se implement el mtodo
de conversin del formato XML de Microsoft office, representacin del diagrama de
flujo, a pseudocdigo utilizando la sintaxis definida anteriormente y un editor de
texto en el cual se muestre el resultado de la conversin al usuario.

Finalmente se implement el intrprete que utiliza la gramtica para verificar que el


cdigo se encuentre lxicamente, sintcticamente y semnticamente correcto. De
esta manera los alumnos podrn obtener a partir de un diagrama, el cual al ser
grfico es de fcil entendimiento, el cdigo de su programa sin necesidad de
conocer la sintaxis del mismo y validado.

2
3
4
Dedicatoria

Dedico la presente tesis a las personas que me apoyaron a lo largo


de mi vida universitaria y en especial a mi familia
que siempre me brind el apoyo necesario.

5
Agradecimientos

A mis asesores, Layla Hirsh por apoyarme y guiarme


durante la primera parte del curso de tesis y Gissella
Bejarano por asesorarme y guiarme hasta el final
exitoso del mismo.

Tambin agradecer a mi familia y a todas las personas


de las cuales he obtenido conocimiento.

6
Tabla de contenido

CAPTULO 1: PROBLEMTICA, OBJETIVOS Y ALCANCES _________________ 10

1.1 INTRODUCCIN __________________________________________________ 10

1.2 PROBLEMTICA _________________________________________________ 10

1.3 OBJETIVO GENERAL _____________________________________________ 11

1.4 OBJETIVOS ESPECFICOS _________________________________________ 11

1.5 RESULTADOS ESPERADOS ________________________________________ 11

1.6 HERRAMIENTAS, MTODOS Y PROCEDIMIENTOS _____________________ 11

1.6.1 MTODOS Y PROCEDIMIENTOS ............................................................................ 11


1.6.2 HERRAMIENTAS .................................................................................................. 12

1.7 ALCANCE _______________________________________________________ 13

1.7.1 LIMITACIONES ..................................................................................................... 14


1.7.2 RIESGOS ............................................................................................................ 14

1.8 JUSTIFICACIN Y VIABILIDAD ______________________________________ 15

1.8.1 JUSTIFICATIVA DEL PROYECTO DE TESIS.............................................................. 15


1.8.2 ANLISIS DE VIABILIDAD DEL PROYECTO DE TESIS ............................................... 15

1.9 PLAN DE ACTIVIDADES ___________________________________________ 15

CAPTULO 2: MARCO TERICO Y ESTADO DEL ARTE ____________________ 18

2.1 MARCO TERICO ________________________________________________ 18

2.2 ESTADO DEL ARTE _______________________________________________ 23

2.2.1 FORMAS SIMILARES DE RESOLVER EL PROBLEMA .................................................... 23


2.2.2 PRODUCTOS COMERCIALES PARA RESOLVER EL PROBLEMA .................................... 23
2.2.3 PRODUCTOS NO COMERCIALES (DE INVESTIGACIN) PARA RESOLVER EL PROBLEMA 26
2.2.4 PROBLEMAS RELACIONADOS .................................................................................. 27
2.2.5 CONCLUSIONES SOBRE EL ESTADO DEL ARTE ......................................................... 27

CAPTULO 3: ENTORNO PARA DIBUJAR DIAGRAMAS DE FLUJO ADAPTANDO


LAS LIBRERAS DE MICROSOFT OFFICE. _______________________________ 29

7
3.1 ENTORNO PARA DIBUJAR DIAGRAMAS DE FLUJO ..................................................... 29

CAPTULO 4: GRAMTICA DEL INTRPRETE ____________________________ 31

4.1 DESARROLLO DE LA GRAMTICA ............................................................................ 31

CAPTULO 5: MTODO DE TRADUCCIN PARA CONVERTIR EL DIAGRAMA DE


FLUJO EN PSEUDOCDIGO __________________________________________ 35

5.1 MTODO DE TRADUCCIN ...................................................................................... 35

CAPTULO 6: INTRPRETE PARA VERIFICAR LA LGICA, SINTAXIS,


SEMNTICA DEL PSEUDOCDIGO APLICANDO LAS FASES DEL INTRPRETE
(ANLISIS LXICO, SINTCTICO Y SEMNTICO) _________________________ 39

6.1 DESARROLLO DEL INTRPRETE .............................................................................. 39

CAPTULO 7: CONCLUSIONES Y TRABAJOS FUTUROS ___________________ 43

7.1 CONCLUSIONES ..................................................................................................... 43


7.2 TRABAJOS FUTUROS ............................................................................................. 44

REFERENCIAS BIBLIOGRFICAS ______________________________________ 45

8
ndice de Grficos y Tablas

Grfico 1: Elementos del diagrama de flujo .................................................................. 20


Tabla 1: Elementos del pseudocdigo.......................................................................... 21
Grfico 2: Microsoft Visio 2010. Fuente:
http://img.brothersoft.com/screenshots/softimage/m/microsoft_visio_viewer_2010-
305787-1258685733.jpeg ..................................................................................... 24
Grfico 3: Athtek code to flowchart converter. Fuente:
http://www.athtek.com/image/acf/version.gif......................................................... 24
Grfico 4: Visustin V6. Fuente: http://www.aivosto.com/visustin-fullshot.gif................. 25
Grfico 5: DFD. Fuente:
http://marcopolojacometoss.files.wordpress.com/2011/01/dfd2.jpg?w=400&h=288
.............................................................................................................................. 25
Grfico 6: IC Helper. Fuente : HIRSH 2007.................................................................. 26
Grfico 7: Entorno de Pas++. Fuente: GOMEZ 2012 ................................................... 27
Tabla 2: Cuadro de comparacin de productos............................................................ 27
Grfico 8: Entorno para la creacin de diagrama de flujo ............................................ 29
Grfico 9: Cuadro descriptivo de los componentes que utiliza el diagrama de flujo. ... 30
Tabla 3: Cuadro descriptivo del soporte de operaciones del diagrama de flujo. .......... 30
Grfico 10: Ejemplo de un diagrama de flujo................................................................ 35
Grfico 11: Archivo XML generado del ejemplo del grfico 10..................................... 36
Grfico 12: Primer ejemplo del subelemento Shape ................................................. 36
Grfico 13: Segundo ejemplo del subelemento Shape ............................................. 37
Grfico 14: Estructura de listaNodos resultante del ejemplo del grfico 10 ................. 37
Grfico 15: Archivo en pseudocdigo generado a partir del ejemplo del grfico 10 .... 38
Grfico 16: Editor de texto donde se visualiza el cdigo generado del diagrama de
flujo. ...................................................................................................................... 38
Grfico 17: Cuadro resumen de las fases del intrprete .............................................. 39
Grfico 18: Consola donde se llama al intrprete para la verificacin del cdigo ........ 41
Grfico 19: Archivo de texto con el resultado del intrprete ......................................... 42

9
CAPTULO 1: PROBLEMTICA, OBJETIVOS Y ALCANCES

1.1 Introduccin

En el presente captulo se hablar de la problemtica de este proyecto de fin de


carrera, que en breve resumen es la falta de unificacin de herramientas como la
generacin de cdigo a partir del diagrama de flujo y un compilador que verifica su
sintaxis para ayudar a los alumnos que deseen aprender a programar.

Tambin se abordarn los objetivos planteados para desarrollar este proyecto. As


como las herramientas utilizadas, el alcance, las limitaciones, la justificacin, la
viabilidad y el plan de ejecucin del proyecto.

1.2 Problemtica

Segn estudios realizados en el perodo 2009, se ha identificado que existe una


gran cantidad de alumnos desaprobados en los cursos introductorios de
programacin (TAN 2009: 42).

El mayor problema reside en el aprendizaje del alumno de las estructuras lgicas


y reglas de sintaxis de un lenguaje de programacin en particular. Por ello, para
que el alumno se enfoque ms en desarrollar la lgica de la solucin, en vez de
buscar como traducirlo a un lenguaje de programacin, existen herramientas que
le permiten disear su solucin tales como el diagrama de flujo y pseudocdigo.

El diagrama de flujo tiene la ventaja de ser simple para el entendimiento debido a


que ofrece una solucin grfica, adems de una sintaxis definida y limitada,
reduciendo el nmero de errores que puede cometer el usuario (BIKAS 2005: 2).
Pero el dibujar los diferentes bloques y sus conectores puede generar dificultades
en especial para las personas con pocas habilidades artsticas (MARRER 2009:
51).

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.

Ante la falta de integracin que se encuentra se propone implementar un proceso


de traduccin y verificacin de programas diseados en diagrama de flujo
utilizando como paso intermedio pseudocdigo.

Para verificar la utilidad de la herramienta propuesta se realiz una encuesta para


los estudiantes del curso de introduccin a la computacin de la Universidad
Catlica en la cual se obtuvo los siguientes resultados: el 90% de los encuestados
afirm que tiene problemas en el diseo de la solucin (ya sea con el uso de
pseudocdigo o diagrama de flujo), el 60% prefiere no utilizar las herramientas de
diseo, a menos que se les exija, debido a que no se puede verificar y ejecutar,
alrededor del 80% asegura que tener una herramienta que permita que les
permita a partir del diagrama de flujo generar cdigo en pseudocdigo sera de

10
mucha utilidad debido a que ya no necesitan realizar una tarea doble de generar
el diagrama de flujo y luego traducirlo a pseudocdigo.

1.3 Objetivo general

Implementar un proceso de traduccin y verificacin de programas diseados en


diagrama de flujo utilizando como paso intermedio pseudocdigo.

1.4 Objetivos especficos

Objetivo 1: Desarrollar un entorno para dibujar diagramas de flujo adaptando


las libreras de Microsoft office.

Objetivo 2: Disear la Gramtica definida para el pseudocdigo que ser


utilizado por el intrprete.

Objetivo 3: Implementar un mtodo de conversin del formato XML de


Microsoft office, que representa al diagrama de flujo, a pseudocdigo.

Objetivo 4: Implementar un intrprete para verificar la lgica, sintaxis,


semntica del pseudocdigo.

1.5 Resultados esperados

Resultado para el objetivo 1: Entorno para dibujar diagramas de flujo


adaptando las libreras de Microsoft office empleando el entorno grfico de
Windows 7/8.

Resultado para el objetivo 2: Gramtica definida para el pseudocdigo que ser


utilizado por el intrprete aplicando la notacin Backus-Naur (BNF).

Resultado 1 para el objetivo 3: Mtodo de traduccin para convertir el diagrama


de flujo en pseudocdigo utilizando la sintaxis del mismo.

Resultado 2 para el objetivo 3: Implementar un editor de texto que muestre al


usuario el pseudocdigo generado.

Resultado para el objetivo 4: Intrprete para verificar la lgica, sintaxis,


semntica del pseudocdigo aplicando las fases del intrprete (anlisis lxico,
sintctico y semntico).

1.6 Herramientas, mtodos y procedimientos

En esta seccin se presentar la planificacin para la elaboracin de la solucin


del proyecto. Adems se muestran las metodologas aplicadas para lograr los
objetivos especficos necesarios para la solucin.

1.6.1 Mtodos y procedimientos

Resultado Esperado Resultado para el objetivo 1 y 3

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 Es un modelo bien recibido debido a que las actividades


son razonables y lgicas para el tiempo del proyecto
(WEITZENFELD 2005: 51).

Resultado Esperado Resultado para el objetivo 2


Mtodo, Se utilizar la notacin Backus-Naur para la
Metodologa o construccin de la sintaxis del pseudocdigo (BNF), las
Procedimiento cuales son las reglas para tener programas formados de
manera correcta, mediante la especificacin de
gramticas de contexto libre.
Justificacin Se utiliza debido a que ofrece una especificacin de
sintaxis de un lenguaje de programacin precisa y fcil
de entender (AHO 2007: 214).

Resultado Esperado Resultado para el objetivo 4


Mtodo, Se usar las fases del intrprete que se encargan de
Metodologa o tomar la representacin intermedia del diagrama de flujo
Procedimiento y ejecutar el programa en el mismo lenguaje, pero
internamente son una serie de pasos internos sucesivos
que se deben realizar para poder interpretarlo: anlisis
lxico, anlisis sintctico, anlisis semntico,
generacin de cdigo intermedio, optimizacin de
cdigo, generacin de cdigo.

Justificacin Las fases del intrprete son los procesos que se deben
implementar para obtener la funcionalidad deseada.

1.6.2 Herramientas

En esta seccin se describir las herramientas utilizadas durante el desarrollo de


los objetivos especficos del proyecto de fin de carrera

12
1.6.2.1 Visual Studio

Visual Studio provee diferentes herramientas para la creacin de


aplicaciones que ofrecen mejorar la experiencia de usuario (VISUAL
STUDIO s/f). Esta herramienta se utilizar para la creacin del entorno para
dibujar el diagrama de flujo del objetivo especfico 1 y para visualizar el
resultado de la traduccin a pseudocdigo del objetivo especfico 3.

1.6.2.2 Microsoft Visio

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

Un generador de parseo que se utiliza para la fase de anlisis sintctico del


intrprete, esta fase es esencial dado que en esto se genera la lista de
tokens a partir de la gramtica definida que es utilizado en las siguientes
fases del intrprete (anlisis sintctico y semntico) (BYACC s/f). Esta
herramienta se utilizar para el objetivo especfico 4.

1.7 Alcance

El paradigma de programacin que se soportar es el imperativo, debido a que


ofrece instrucciones sencillas de aprender como la asignacin y secuencias en
donde la idea de guardar o asignar informacin es muy utilizada en estos das
(VUJOEVI 2008: 69- 70).

El entorno para dibujar diagramas de flujo consta de las siguientes partes:

Una barra de herramientas que contiene las siguientes funciones: Nuevo


documento, Abrir, Guardar, Guardar Como, Salir, Ejecutar.
Una paleta de herramientas con las siguientes estructuras: lectura y
escritura de datos, operaciones aritmticas simples, estructuras selectivas
y estructuras iterativas.
Una hoja de trabajo donde se arrastren los objetos para crear el diagrama
de flujo.

El cdigo obtenido de la traduccin del diagrama a pseudocdigo tendr un editor


de texto que visualice al usuario el cdigo obtenido.

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.

Una explicacin ms a detalle de los componentes del entorno para crear


diagrama de flujo se desarrolla en el captulo 1 y para el editor de texto en el
captulo 3. Y una lista detallada de los requerimientos del producto en el Anexo B.

13
1.7.1 Limitaciones

No se soportar el paradigma orientado a objetos porque la herramienta a


desarrollar est dirigida a estudiantes que inician su aprendizaje y no es
recomendable para desarrollar las habilidades bsicas y necesarias de
programacin. Adems de la dificultad de aprender conceptos como
constructores, destructores, herencia, etc (Idem 75) y debido a que el diagrama de
flujo no tiene soporte para la declaracin de objetos.

El intrprete se encargar de realizar el anlisis lxico, sintctico y semntico del


pseudocdigo mas no se implementar la parte de ejecucin de cdigo. Para los
errores lxicos y semnticos se indicar la lnea y elemento detectado. En cambio
para los errores sintcticos solo se mostrar un error de sintaxis, debido a que
este proceso se realiza utilizando la herramienta Byaac y no existe acceso a
mayor informacin.

No se abarcar los tipos de datos compuestos tales como estructura, arreglos,


punteros, matrices y dems.

El pseudocdigo solo permitir el uso de tipo de variable real debido a las


dificultades de inferir el tipo de datos en las operaciones.

1.7.2 Riesgos

Riesgo identificado Impacto en el proyecto Medidas correctivas


para mitigar

Viaje de asesor por Medio Buscar otros profesores


motivos de beca de de la carrera con
maestra algunos conocimientos
relacionados al proyecto.

Falta de un asesor Alto Conversar con el


suplente disponible profesor del curso sobre
debido a su carga el caso para obtener una
acadmica y cantidad de solucin.
asesorados

Curva de aprendizaje Alto Utilizar IDEs existentes


para desarrollar un IDE para poder crear un
muy elevado plug-in haciendo uso de
las funciones que
ofrecen.

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.

1.8 Justificacin y viabilidad

En la siguiente seccin se analiza la viabilidad del proyecto de fin de carrera as


como la justificacin del mismo.

1.8.1 Justificativa del proyecto de tesis

La herramienta ayudar al estudiante en la etapa de diseo para la resolucin


de problemas en programacin mediante el uso de una interfaz grfica en la
que podr arrastrar y soltar bloques de comando y sus conexiones
respectivas para disear su solucin. De esta manera el usuario est limitado
a escoger las estructuras ofrecidas por el entorno con lo cual se reduce los
errores de sintaxis as se puede concentrar ms en la lgica de su solucin
(DRAZEN 2011: 1). Al ofrecer una visualizacin de la solucin con una
estructura ordenada descendentemente facilita la comprensin del usuario del
programa diagramado.

Para reforzar la viabilidad del proyecto de fin de carrera se realiz una


encuesta (Ver Anexo A) a los alumnos del curso de introduccin a la
computacin de la Pontificia Universidad Catlica del Per, en la cual se
obtuvo una aceptacin del 90% por parte de los alumnos de la existencia de
esta herramienta.

1.8.2 Anlisis de viabilidad del proyecto de tesis

En cuanto a lo financiero para la realizacin del proyecto se utilizar software


libre o software que cuenta con licenciamiento para estudiantes. Adems en
la parte de recursos humanos el proyecto propone un alcance a ser realizado
por una sola persona y con el uso de una computadora personal. Por lo que
no se realizar algn gasto econmico para el desarrollo del proyecto.

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.

1.9 Plan de actividades

En el siguiente diagrama se presenta las actividades programadas para los 4


meses del desarrollo del producto las cuales estn programadas desde 17 de Abril
de 2014 hasta el 30 de Junio del mismo ao.

15
Entregable Hito

Entrega de documento de Tesis 1 17/03/2014

Presentacin de primer avance 31/03/2014

Correccin de observaciones 02/04/2014

Entorno para dibujar diagramas de 05/04/2014


flujo

Presentacin de segunda avance 07/04/2014

Analizar estructura del XML de Visio 10/04/2014

Presentacin del tercer avance 14/04/2014

Mtodo para la traduccin de XML a 17/04/2014


pseudocdigo

Presentacin de cuarto avance 21/04/2014

Gramtica del intrprete 24/04/2014

Presentacin del quinto avance 28/04/2014

Desarrollo del intrprete (anlisis 01/05/2014


lxico)

Presentacin del sexto avance 05/05/2014

Desarrollo del intrprete (anlisis 08/05/2014


sintctico)

Mtodo de conversin a 12/05/2014


pseudocdigo, editor de texto para
visualizar texto traducido de diagrama
de flujo

16
Documentacin de Objetivo Especfico 13/05/2014
1

Entrega de documento parcial de 15/05/2014


Tesis

Mtodo de conversin a 17/05/2014


pseudocdigo, estructuras FOR y
WHILE
Sustentacin Parcial de Tesis 19/05/2014

Correcciones de observaciones de la 22/05/2014


sustentacin

Documentacin de Objetivo Especfico 26/05/2014


2

Documentacin de Objetivo Especfico 30/05/2014


3

Documentacin de Objetivo Especfico 06/06/2014


4

Documentacin de Conclusiones y 07/06/2014


Trabajos futuros

Entrega de Documento Final de Tesis 09/06/2014

Mtodo de conversin a 10/06/2014


pseudocdigo, estructura CASE

Mtodo de conversin a 12/06/2014


pseudocdigo, desarrollo de la
ventana del output
Plan de Pruebas 14/06/2014

Ejecucin del Plan de Pruebas 17/06/2014

Correcciones finales del producto 20/06/2014

Sustentacin final de Tesis 23/06/2014

17
CAPTULO 2: MARCO TERICO Y ESTADO DEL ARTE

2.1 Marco terico

En este captulo se definir a ms detalle los conceptos relacionados al problema,


tambin se definir los conceptos necesarios para la solucin del mismo.

2.1.1 Conceptos relacionados al problema

En esta seccin se detalla los conceptos que se encuentran directamente


relacionados con el problema.

Lenguajes de Programacin

Un lenguaje de programacin es Conjunto de reglas, smbolos y palabras


especiales usados para implementar un programa de computadora (DALE
2007: 5). Entonces el lenguaje de programacin es un lenguaje que utiliza el
programador para que el ordenador ejecute las acciones que le ordene.

Durante el proceso de aprendizaje de un lenguaje de programacin la persona


desarrolla ciertas habilidades necesarias que conlleva la solucin de problemas
(Idem 6):

Habilidad para descubrir nuevas formas de originar pensamientos sobre


los objetos y procesos.
Alto inters por la tecnologa, en especial referente a las computadoras.
Una adecuada sistematizacin de la produccin de ideas orientadas a la
bsqueda de una respuesta a un problema planteado.
Buena capacidad de reflexin sobre las propias ideas as como los
procesos que deben analizarse para resolver.
La disposicin para aprender reglas y uso de un lenguaje de programacin.
La capacidad de abstraccin para poder llevar las ideas que se tiene a un
lenguaje de programacin.

En cuanto a la programacin orientada a objetos, que utiliza los objetos para


abstraer o representar un hecho o ente de la vida real con atributos que
representan sus caractersticas o propiedades, proporciona herramientas para:

Modelar la realidad desde un modo ms cercano a la perspectiva del


usuario.
Interactuar fcilmente con un entorno computacional.
Construir componentes reutilizables y que sean extensibles.
Modificar los componentes sin que afecten a los dems.

En cuanto a la programacin visual esta proporciona ms facilidades a los


usuarios al ofrecer un entorno grfico en donde desarrollar sus programas. Al
ofrecer un entorno grfico se hace ms atractivo e intuitivo para la persona al
ser algo que se asemeje a la realidad en especial los jvenes, sienten
curiosidad por interactuar con los objetos y encontrar que hacen y cmo
funcionan.

18
2.1.2 Conceptos relacionados a la propuesta de solucin

En esta seccin se detalla los conceptos que se encuentran directamente


relacionados con la solucin del problema.

Mtodo para la solucin de problemas

Una mejor manera para hallar la solucin de un problema es mediante el


uso de etapas definidas las cuales son 5 que se detallan a continuacin
(FLORES 2011: 25-26):

Descripcin del problema

Se debe comprender el problema principal para conocer qu resolver.


Por este motivo se debe tener un enunciado claro, concreto y preciso
del problema a resolver.

Definicin de la solucin

Se debe realizar un estudio profundo sobre el problema para saber


exactamente cmo resolverlo y de esta manera poder descomponerlo
en partes pequeas que sean ms fciles de resolver. Luego de esto
buscar diferentes maneras de solucionarlo de las cuales se escoger la
ptima.

Diseo de la lgica

En esta fase se procede al diseo de la solucin utilizando alguna


herramienta como el diagrama de flujo, o pseudocdigo. A continuacin
se explicar a ms detalle cada una de estas herramientas.

(1) Diagrama de flujo

Un diagrama de flujo es una representacin grfica de los pasos que


se necesitan para poder alcanzar la solucin de un problema (CAIRO
2003: 4).

En el siguiente grfico se detallan los smbolos que se utilizan en el


diagrama de flujo los cuales siguen las recomendaciones de la
International Standard Organization (ISO) y la American National
Standards Institute (ANSI).

19
Smbolo Explicacin

Simbolo que representa el inicio o fin de un diagrama de flujo

Smbolo para poder leer datos de entrada.


Smbolo que representa un proceso, en su interior se expresan asignaciones, operaciones
matemticas, etc
No

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.

Smbolo que representa la impresin del resultado

Smbolos que sirven para expresar la direccin del flujo del programa

Smbolo para expresar la conexin dentro de una misma pgina.

Smbolo para expresar la conexin entre diferentes pginas.


Smbolo que representa un mdulo de un problema. En realidad expresa que si quieres seguir con el
flujo del diagrama primero debemos de ejecutar el subprograma que contiene en su interior.
Grfico 1: Elementos del diagrama de flujo

A continuacin mostramos las reglas que se deben seguir a la hora de


la construccin de diagramas de flujo (CAIRO 2003: 5-7):

1. Todo diagrama debe tener un inicio y fin.

2. Las rectas utilizadas para indicar la direccin del diagrama


deben ser rectas, verticales y horizontales mas no deben
cruzarse.

3. Todas las lneas que se utilizan para indicar la direccin del


diagrama de flujo deben estar conectadas a algn smbolo de los
definidos en el cuadro superior.

4. El diagrama debe ser dibujado de arriba hacia abajo o de


izquierda a derecha.

5. La notacin que se utilice en el diagrama de flujo debe ser


independiente de cualquier lenguaje de programacin.

6. Cuando se realiza una tarea compleja se debe poner


comentarios para que ayuden a entender lo que se realiza.

7. Si el diagrama de flujo es demasiado grande y requiere ms de


una hoja para su construccin se debe usar los conectores
adecuados y enumerar las pginas debidamente.

8. El texto dentro de cada bloque no debe ser ms de una lnea.

(2) Pseudocdigo

Es un lenguaje de especificacin (descripcin) de algoritmos


(JOYANES 2008: 70). Podemos decir que el pseudocdigo es como un
primer borrador antes de hacer su traduccin a un lenguaje de
programacin el cual tiene las siguientes caractersticas:

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.

En el siguiente grfico se muestra las estructuras que soporta el


pseudocdigo as como la declaracin de cada uno:

Estructura Declaracin

Selectiva Simple SI ... ENTONCES; FIN SI


SI ... ENTONCES; SINO
Selectiva doble ENTONCES; FIN SI

Selectiva mltiple SEGN HACER; FIN SEGN


MIENTRAS HACER; FIN
Bucle mientras MIENTRAS
PARA HASTA HACER; FIN
Bucle para PARA

Asignacin :=
PROCEDIMIENTO ; FIN
Procedimiento PROCEDIMIENTO

Funcin FUNCIN ; FIN FUNCIN

Declaracin de programa PROGRAMA .; INICIO ... FIN


Tabla 1: Elementos del pseudocdigo

Desarrollo de la codificacin

Una vez obtenido el diseo de la lgica de la solucin escogida se


procede al desarrollo de la codificacin del problema en algn lenguaje
de programacin.

El proceso de codificacin consiste en traducir las variables y los pasos


de algoritmo definidos en cada mtodo en sentencias del lenguaje
escogido. Estas se almacenan en un archivo y son las instrucciones que
la computadora podr ejecutar.

Depuracin y pruebas

Al obtener el cdigo de la solucin escogida se debe ejecutar varias


veces para encontrar errores de diferentes tipos (generalmente lgicos y
de sintaxis). Para la correccin se debe modificar, anular y crear nuevas
instrucciones hasta obtener el resultado deseado.

21
Entorno de Desarrollo Integrado (IDE)

La IDE es un entorno de programacin que consiste de un editor de texto, un


compilador, un depurador y un constructor de interfaz grfica (GUI), los cuales
han sido empaquetadas en un programa de aplicacin (ESLAVA 2012: 10). Las
IDEs pueden ser un programa independiente o ser una extensin de otro.
Adems estas deben facilitar el aprendizaje de programar efectivamente y
eficientemente y ayudar a los estudiantes a entender las estrategias de
resolucin de problemas visualmente (ZHIXIONG 2005: 104).

Generalmente las IDEs ofrecen un marco de trabajo amigable para los


diferentes lenguaje de programacin como: Java, C++, C#, etc. As tenemos el
caso de Netbeans que es una IDE para los lenguajes de Java, C++, PHP, el
cual posee extensiones para tener soporte de otros lenguajes.

Compilador

El compilador se encarga de leer cdigo en un lenguaje (lenguaje fuente) y lo


traduce en un lenguaje equivalente (lenguaje objetivo), durante el proceso se
encarga de reportar los errores que detecte durante el proceso de traduccin
(AHO 2007: 1-2).

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.

Si se desea obtener como resultado un programa ejecutable se deber de


recurrir a otros procesos adems del compilador. El preprocesador une el
programa en una fuente de sentencias de lenguaje, ya que puede estar
separado en archivos diferentes. El ensamblador traduce el cdigo en lenguaje
ensamblador, generado del compilador, a lenguaje mquina. El linkeador junta
los diferentes archivos compilados del programa y las libreras utilizadas para
ejecutar el programa. Y el cargador pone todos los archivos ejecutables en
memoria para ejecutarse.

La estructura del compilador se divide en 2 procesos generales: anlisis y


sntesis (AHO 2007: 4).

La parte de anlisis se encarga de dividir el programa en pequeas partes


consistentes e impone una estructura gramatical que se utiliza para generar
una representacin intermedia del programa. Tambin se encarga de detectar
errores sintcticos y semnticos en el programa y de reportrselos al usuario. Y
durante este proceso recolecta informacin del programa y lo guarda en una
estructura llamada tabla de smbolos, el resultado que arroja es la tabla de
smbolos y la representacin intermedia se enva a la parte de sntesis (Idem
4).

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

2.2 Estado del arte

El propsito del estado del arte es la bsqueda de productos similares que se


encuentren disponibles para el pblico y que cubran la solucin del problema de
manera parcial o total.

Para ello se busc productos o trabajos de investigacin similares al producto que


se desea desarrollar. En el caso de los productos se busc las caractersticas que
ofrecan a travs de su portal web. Para los trabajos de investigacin se indag en
la biblioteca en la universidad sobre proyectos pasados en ciencias de la
computacin y teora de compiladores.

2.2.1 Formas similares de resolver el problema

Se utiliza el mtodo de verificacin por seguimiento con tablas variables, en el


cual se tiene una tabla de seguimiento bsica donde se aprecia las variables y
los cambios que se produzcan durante la ejecucin del programa (COOPER
2011: 475-476). Pero en muchas ocasiones este mtodo es obviado y se
ejecute la solucin planteada sin una verificacin, la cual provoca que la
deteccin de errores se realice en la etapa de codificacin y pruebas.

2.2.2 Productos comerciales para resolver el problema

Microsoft Visio

Un programa de la lnea de Microsoft Office, con una interfaz sencilla para el


usuario, el cual ofrece la posibilidad de crear una gran variedad de diagramas,
los cuales se construyen arrastrando los objetos que se desea de la barra de
formas, entre ellos tenemos al diagrama de flujo, organigrama, base de datos,
etc. Ofrece la posibilidad de poder exportar los diagrama a XML, PDF, JPEG,
PNG.

23
Grfico 2: Microsoft Visio 2010. Fuente:
http://img.brothersoft.com/screenshots/softimage/m/microsoft_visio_viewer_2010-305787-
1258685733.jpeg

AthTek Code to Flowchart Converter

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.

Grfico 3: Athtek code to flowchart converter. Fuente: http://www.athtek.com/image/acf/version.gif

Visustin V6 Flow Chart Generator

Este producto ofrece un interfaz donde en la mitad del programa se muestra la


parte del cdigo de programa y en la otra mitad se observa el diagrama
generado a partir del cdigo ingresado. Ofrece la capacidad de convertir de C,

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.

Grfico 4: Visustin V6. Fuente: http://www.aivosto.com/visustin-fullshot.gif

DFD

Programa que ofrece la posibilidad de crear diagramas de flujo mediante el


arrastre de objetos. Ofrece una interfaz grfica con una barra de herramientas
donde se encuentran los elementos del diagrama de flujo. Adems permite
ejecutar el programa el cual se realiza de manera grfica.

Grfico 5: DFD. Fuente:


http://marcopolojacometoss.files.wordpress.com/2011/01/dfd2.jpg?w=400&h=288

25
2.2.3 Productos no comerciales (de investigacin) para resolver el
problema

Visual Block: Lenguaje de Programacin Visual

Proyecto de fin de carrera realizado por Diaz en la que se desarrolla un


lenguaje de programacin visual en el cual se desarrolla programas
arrastrando los objetos y se muestran grficamente, tanto la depuracin y
ejecucin se realiza en el mismo entorno de manera grfica. Pero esta
herramienta es muy bsica y no posee todos los elementos de un diagrama de
flujo tales como la llamada a procedimientos y funciones.

Intrprete y entorno de desarrollo para el aprendizaje de lenguajes de


programacin estructurada

Proyecto de fin de carrera realizado por Hirsh (HIRSH 2007) donde se


desarrolla un entorno de desarrollo integrado en el cual se crean los programas
en un lenguaje de pseudocdigo en espaol, creado por el autor.

Grfico 6: IC Helper. Fuente : HIRSH 2007

Intrprete para un lenguaje de programacin orientado a objetos con


mecanismos de optimizacin y modificacin dinmica de cdigo

En este proyecto de fin de carrera implementado por Renzo Gomez se


desarrolla un lenguaje con su entorno de desarrollo integrado (IDE) donde se
puede crear programas en el lenguaje pas++ (creado por el autor) posee una
tabla de smbolos donde se puede modificar el valor de las variables definidas
en el programa durante la ejecucin del programa.

26
Grfico 7: Entorno de Pas++. Fuente: GOMEZ 2012

2.2.4 Problemas relacionados

Caractersti Dibujar Diagrama a Ejecucin


Libre Uso de IDE Idioma
ca/Producto diagrama cdigo de cdigo
Microsoft Trial de 30 Espaol y
Visio das Si Si(XML) No Si otros
Trial de 30
AthTek das Si Si No Si Ingles
Trial de 30
Visustin V6 das Si Si(Java) No Si Ingles

DFD Si Si No Si Si Espaol
Visual
Block Si Si No Si Si Espaol
Tesis
(Hirsh) Si No No Si Si Espaol

Tesis (Diaz) Si Si No Si Si Espaol


Tabla 2: Cuadro de comparacin de productos.

2.2.5 Conclusiones sobre el estado del arte

Como resultado de la bsqueda de productos, si bien existen programas que


permiten la creacin de diagrama de flujo y ejecucin de manera visual como el
caso de Visual Block pero no permite exportar a un lenguaje de programacin.
Por otro lado tenemos Visustin V6 o Microsoft Visio que permiten exportar el
diagrama a un lenguaje de programacin pero al no poseer un compilador no
se puede validar el cdigo generado. Como en el caso de los proyectos de
Hirsh o Daz que poseen un compilador, y en el caso de Daz de optimizar el
cdigo, pero no ofrecen una creacin visual de su programa. Entonces se
necesita de algn programa que ofrezca una interfaz sencilla para el usuario
donde l pueda crear fcilmente un diagrama de flujo. Este seguir los
estndares de los cursos de programacin introductorios, que es el enfoque de

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.

3.1 Entorno para dibu


ujar diagra
amas de flujo

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.

A pa oll el entorno conform


artir de ello se desarro mado de lo os siguiente es compone entes,
resulltado obtenido de este e captulo, y se observvan en la grrfico 8: la paleta de dibujo
d
que contiene
c loss componentes del diaagrama de flujo (1), la barra de herramientass que
contiiene las siguientes
s opciones: nuevo doccumento, abrir a documento, guardar
docu umento, gua ardar como y generar el cual gen nera el pseuudocdigo del diagram ma de
flujo (2), hoja de dibujo donde se arrastran los elemen ntos para la creacin n del
diagrrama de flujo (3). Estos
E requeerimientos son de ellaboracin propia y e estn
espe ecificados en el anexo B.

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:

Grfico 9: Cuadro des


scriptivo de lo
os componen
ntes que utiliz
za el diagram
ma de flujo.

Tambin se detalla las ope


eraciones y datos que soporta
s o no el diagram
ma de flujo:

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

Datos algebraicoss sen, co


os, tan, log Si
Tabla 3:
3 Cuadro des
scriptivo del soporte
s de op
peraciones del
d diagrama de flujo.

30
Captulo 4: Gramtica del Intrprete

En el siguiente captulo se presentan los procesos necesarios para obtener el


resultado esperado 2: Gramtica definida para el pseudocdigo que ser utilizado por
el intrprete utilizando la notacin Backus-Naur (BNF).

4.1 Desarrollo de la gramtica

Para la creacin de la gramtica del pseudocdigo se utiliz la notacin BNF (Backus-


Naur Form) la cual permite representar gramticas de contexto libre que se componen
de reglas (COOPER 2004: 87). Una manera de representar estas reglas se ve en el
siguiente ejemplo: V -> w. Donde "V" es un smbolo no terminal, es decir, permite
ms derivaciones, y w es una cadena de valores terminales, no permite ms
derivaciones. La notacin BNF nos presenta una forma de representar estas
gramticas de libre contexto de una forma muy similar a la antes descrita, pero con
algunos cambios como el uso de < > en smbolos no terminales, para smbolos
terminales y ::= para la asignacin: <V> ::= w.

Existen otros smbolos como |, el cual representa los caminos alternativos en la


regla, y valores que estn incluidos en las comillas simples que representan valores no
terminales.

<term> ::= <term> '*' <factor>


| <term> '/' <factor>
| <term> <mod> <factor>

En el ejemplo de arriba se puede observar que <term> se puede convertir en 3


conjuntos. El primer conjunto que representa es una multiplicacin (<term> *
<factor>), el segundo conjunto que representa una divisin ( <term> / <factor>) y el
ltimo conjunto que representa la operacin de residuo (<term> <mod> <factor>).

Para el pseudocdigo se utiliza una gramtica tomando como base la estructura de un


lenguaje del paradigma imperativo que posee una estructura sencilla de comprender.
A continuacin se explica cmo representar las reglas de la gramtica utilizando el
siguiente ejemplo:

<funcion> ::= <funcion> <var> '(' <listaparam> ')' <enter> <listainstr> <finfuncion>

Como se puede apreciar en el ejemplo anterior, la notacin BNF nos ayuda a


representar, en este caso, la estructura del pseudocdigo. Usando esta regla se puede
representar el siguiente programa bajo la estructura y sintaxis del pseudocdigo:

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.

A continuacin se presenta la gramtica definida para el pseudocdigo aplicando el


mtodo definido en la parte superior:

<program> ::= <programa> <enter> <inicio> <enter> <listainstr> <fin> <enter>;

<listainstr> ::= <listainstr> <instr>


|
;

<instr> ::= <imprimir>


| <instrif>
| <asignacion>
| <enter>
| <cond>
| <procedimiento>
| <funcion>
| <retornarvalor>
| <instrwhile>
| <instrfor>
| <instrswitch>
;

<asignacion> ::= <var> <asign> <cond> <enter> ;

<imprimir> ::= <outln> <listavars> <enter> ;

<listavars> ::= <listavars> ',' <cond>


| <cond>
;

<instrif> ::= <if> <cond> <then> <enter> <listainstr> <listaelse> <fin> <if> <enter>
;

<listaelse> ::= <else> <enter> <listainstr>


|
;

<instrwhile> ::= <mientras> <cond> <hacer> <enter> <listainstr> <fin> <mientras>


<enter>
;

<instrfor> ::= <para> <asignacion> <hasta> <tokenfinales> <hacer> <enter>


<listainstr> <fin> <para> <enter>

32
;

<instrswitch> ::= <segun> <var> <hacer> <enter> <listacasos> <fin> <segun> <enter>
;

<listacasos> ::= <caso> <num> <enter> <listainstr> <break> <enter> <listacasos>


|
;

<funcion> ::= <funcion> <var> '(' <listaparam> ')' <enter> <listainstr> <finfuncion>
<enter>
;

<retornarvalor> ::= <retornar> <cond> <enter>


;

<procedimiento> ::= <procedimiento> <var> '(' <listaparam> ')' <enter> <listainstr>


<finprocedimiento> <enter>
;

<listaparam> ::= <listaparam> ',' <var>


| <var>
|
;

<cond> ::= <cond> '<' <expr>


| <cond> '>'<expr>
| <cond> '<' '=' <expr>
| <cond> '>' '=' <expr>
| <cond> '=' '=' <expr>
| <cond> '<' '>' <expr>
| <expr>
| <cond> <and> <expr>
| <cond> <or> <expr>
| <coseno> <param>
| <seno> <param>
| <tangente> <param>
| <arcotangente> <param>
| <absoluto> <param>
| <raz> <param>
| <exponencial> <param>
| <ln> <param>
;

<param> ::= '(' <expr> ')'


;

<expr> ::= <expr> '+' <term>


| <expr> '-' <term>
| <term>

<term> ::= <term> '*' <factor>


| <term> '/' <factor>

33
| <term> <mod> <factor>
| <factor>
;

<factor> ::= '(' <expr> ')'


| '-' <factor>
| <factor> '^' <factor>
| <tokenfinales>
;

<tokenfinales> ::= <num>


| <var>
| <cad>
;

<programa> ::= "PROGRAMA" ;


<enter> ::= '\n' ;
<inicio> ::= "INICIO" ;
<fin> ::= "FIN" ;
<asign> ::= ":=" ;
<outln> ::= "ESCRIBIR" ;
<if> ::= "SI" ;
<then> ::= "ENTONCES" ;
<else> ::= "SINO" ;
<mientras> ::= "MIENTRAS" ;
<hacer> ::= "HACER" ;
<para> ::= "PARA" ;
<hasta> ::= "HASTA" ;
<segun> ::= "SEGUN";
<caso> ::= "CASO";
<break> ::= "BREAK";
<funcion> ::= "FUNCION" ;
<finfuncion> ::= "FINFUNCION" ;
<retornar> ::= "RETORNAR" ;
<procedimiento> ::= "PROCEDIMIENTO" ;
<finprocedimiento> ::= "FINPROCEDIMIENTO" ;
<and> ::= "Y" ;
<or> ::= "O" ;
<coseno> ::= "COSENO" ;
<seno> ::= "SENO" ;
<tangente> ::= "TANGENTE" ;
<arcotangente> ::= "ARCOTANGENTE" ;
<absoluto> ::= "ABSOLUTO" ;
<raiz> ::= "RAIZ" ;
<exponencial> ::= "EXPONENCIAL"
<ln> ::= "LN" ;
<mod> ::= "MOD" ;
<num> ::= ( [0-9]+ ) | ( [0-9]+ [.] [0-9]+ );
<var> ::= [a-zA-Z]+ ;
<cad> ::= ["][a-zA-Z]*["] ;

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

El prropsito de esta conve yudar al esstudiante a interpretar un diagram


ersin es ay ma de
flujo. Por otro la
ado el comp a sentencias estructura
putador solo interpreta adas, por lo
o que
se reequiere de un
u mtodo que
q convierrta diagramas de flujo a pseudoc digo.

Commo se menccion en el captulo 3, se utiliza las librera as de Visio ya que pe ermite


expoortar a XML ma de flujo. Este forma
L el diagram ato esta ind c la extensin
dentificado con
.vdx que posee e la estructu
ura de un archivo
a XML pero con las notacio ones propiaas de
Microosoft, esta estructura se explicarr posteriorrmente en este
e captulo. Al obten
ner el
diagrrama de fluujo guardaddo en una estructura
e d
definida por el lenguajee XML pode emos
leer ssu contenid
do mediante e un editor de
d texto.

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.

Posteeriormente est el elem


mento Mas sters que contiene
c la informacin n de los tipo
os de
bloquue usados en el diagrrama de flujo. Los tipoos de bloquue son: Con nector, Deccisin,
Docuumento, Inicio o Fina alizacin, Datos,
D Pro
oceso. Esto os tipos de e bloque e estn
conteenidos en elementos
e h
hijos llamados Master que poseee los atributo
os:
ID el identificador nico.
nameU el e nombre u universal de
el elemento.
name el nombre de el elemento.

a nuestro ejjemplo el ID 6 corres


Para sponde a un bloque del
d tipo Doccumento qu
ue es
usad
do para la im
mpresin de
e datos.

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.

Grfico 12: Primer ejjemplo del subelemento


s Shape

36
Grfico 13:
1 Segundo ejemplo del subelemento
o Shape

El ellemento Shape tamb bin posee un elemen nto hijo llam


mado Texxt en el cu
ual se
guardda el texto interno del bloque el cual ha sido ingresado por el usuario.

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.

Lueggo se tiene al elementoo Connectt en el cual se guarda


an los conectores utilizzados
para unir los blo
oques. De ellos
e se obttiene el ID del
d bloque donde
d inicia
a y del bloq
que al
que conecta. A partir de ello
e podemo os obtener el orden enn que los bloques
b hann sido
dos por lo que no se
cread e requiere que el usuario cree el diagram ma en un orden
o
estab
blecido siemmpre y cuan ques estn debidamente conectad
ndo los bloq dos.

Paraa almacenarr la estructu


ura completta del diagrrama de flujo se utiliza
an las siguie
entes
estru
ucturas: listtaMaestro y listaNodo os y conecctores. Don nde listaMaaestro almaacena
todoss los elementos de clase
c Maesstro, listaNoodos los elementos de clase No odo y
coneectores dond de se guard
da el id del bloque iniciio y fin.

En eel ejemplo mostrado,


m s procede a recorrer el archivo XML
se X empezzando primero a
extra
aer los tipo
os de bloq que recorriiendo los Master de d la secciin Maste ers y
almaacenndoloss en listaMa
aestro. Lueggo se sigue
e con la secccin Shape
es para ob
btener
los b
bloques y su
us datos neecesarios y almacenarrlo en la listaNodos. Y se continaa con
la se
eccin Connects paraa obtener el orden de lo
os bloques.

Desp pues se pro


ocede a verrificar si se encuentran
e los tipos de bloque de
e las estruccturas
IF, F
FOR y WHILE para proceder
p a llenar los nodos hijoo que pose ean. Para poder
p
difere
enciar donnde empie eza y termina una de estass estructuras los n nodos
perte
enecientes a su interioor deben terminar en unu bloque comn.
c De esta mane era se
van agregando
a los hijos de
e cada estruuctura.

A coontinuacin se muestra la estrructura fina


al del ejem
mplo siguie
endo el m
todo
explicado anteriiormente

Grfico 14: Estruc


ctura de listaNodos resulttante del ejem
mplo del grfiico 10

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.

Duraante el prroceso de formacin n de la estructuras


e se debe tener alg gunas
conssideracioness de posible
es errores grficos quue se pueden obtenerr entre elloss que
algunnos bloquess no estn unidos me ediante un conector.
c Ta
ambin que e los conecctores
que uunen a los bloques deben tener unau direcci
n si no es posible
p conocer la dire
eccin
del diagrama.
d Estos
E erroress son notific
cados mediiante un cua
adro de dilogo.

A paartir de estaa estructuraa generamo os el archivvo en pseu


udocdigo agregndolle las
senteencias prop pias de esste lenguaje basndo onos en la gramtica a definida en
e el
capttulo anterior. En el casso del nodoo 3 al ser un
u tipo de bloque
b Conndicin se debe
agreggar al principio de la cadena S SI y al final ENTON NCES, para a el caso de la
indenntaciones sis se encu uentran anttes o al fin nal de la cadena
c se eliminan si se
encuuentra dentrro son ignorrados por el compilado or durante su
s verificacin. Para el nodo
4 se tiene que agregar
a al principio
p de la cadena IMPRIMIR
y as respectivamentee con
los dems nodo os. Obtenienndo de esta a manera el siguiente cdigo:
c

Grfico 15: Archivo en


n pseudocd
digo generado
o a partir del ejemplo del grfico
g 10

Finallmente para que ell usuario pueda vissualizar el cdigo obtenido o se


e ha
imple
ementado un u editor de e texto el cu
ual posee la as herramientas bsicaas como: tam mao
de le
etras, tipo de
d fuente, copiar,
c pega ar, cortar, g
guardar, buscar, reemp plazar, etc. Este
ser invocado mediante
m la opcin gennerar del en ntorno para crear diagrrama de flujjo del
capttulo 1, el cual tiene la apariencia
a como
c se mu uestra en la
a Grfico 15
5.

Grfico 16: Editor


E de textto donde se visualiza
v el cdigo genera
ado del diagrama de flujo..

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.

6.1 Desarrolllo del int


rprete
Program
ma en
d di

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

Commo se pued de observar en el grrfico para poder verrificar la co orrectitud d


de un
programa gene erado en psseudocdig go se realizzan una se
erie de an lisis del c
digo
estass son: anlisis lxico, sintctico y semntico
o. Estos anlisis son realizados
r p el
por
intrp
prete siguie
endo el ordeen mencionado.

En e el anlisis lxico tennemos com mo datos de d entrada a al progra ama escritto en


pseuudocdigo a partir del cual se ge enera un arrreglo de To okens. Para a la creaci
n de
este arreglo se desarroll una funci n en JAVA A que toma a como datto de entra ada el
programa en ps seudocdigo y comien nza a recorrrer el progrrama caraccter por cara acter.
Duraante el recorrido se ana
aliza cada conjunto
c ledo para ideentificar el tipo de token
n que
es y si es un gru
upo con significado, co
onocido commo lexema.

Estoss tokens so on palabrass reservadaas para nue estro lengu


uaje utilizado, pero ade ems
existten otros smbolos resservados quue simbolizan operacio ones aritm ticas (+, *,, -, /),
asignnaciones (:==), comparaaciones (>, <, ==, <>, >=,
> <=), etcc. Estos smmbolos son fijos
f y
no see pueden uttilizar para implementaar otro tipo de
d operacin.

El arrreglo de tokens se alm


macena en un ArrayLisst el cual co
ontiene una a lista de ob
bjetos
de laa clase Tokken. Esta clase
c contie
ene los sig
guientes atrributos: el identificado
or del
tokenn, informacin del lexe
ema, lnea en
e el que fu
ue encontraado, el tipo de dato so olo en
casoo de una varriable (nmero o cadenna).

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.

Para la obtencin de la tabla de smbolos y cdigos se hace uso de la gramtica


definida para el pseudocdigo (ver Captulo 5) que contiene las reglas de sintaxis que
posee. Estas reglas pueden tener llamadas a otras reglas y tokens. Para identificar
qu regla se debe seguir de todas las existentes se hace uso de los tokens generados
en la etapa anterior. Para ello se recorre la lista de tokens extrayendo uno a uno para
verificar si corresponde a una parte de la regla y as sucesivamente hasta corroborar
que se sigue completamente la regla. Es en este momento donde se identifica la regla
utilizada y se procede a transformar los tokens en smbolos. Estos smbolos ofrecen
una mejor representacin de los tokens obtenidos.

Tomemos como ejemplo la siguiente sentencia, para una mayor explicacin de la


obtencin de la tabla de smbolos y cdigos:

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.

Por ejemplo tenemos la variable llamada altura en un programa y durante el


transcurso del programa se puede realizar una accin sobre la variable como la
asignacin de un valor altura := 6, despus se realiza otra accin rea := base *
altura donde se hace uso de la misma variable. En el ejemplo solo se necesita de un
elemento altura para asignarle un valor y obtener el valor de la misma variable, por
eso se realiza la transformacin a un smbolo.

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.

Finallmente en el e anlisis semntico


s se
s realiza una
u pseudoejecucin del d program ma, es
decirr, el program ma se ejeccuta pero no o se actualizan los valores de loss smbolos, slo
se acctualizan y verifican loss tipos. Porr ello al evaluar las accciones de la
a tabla de c
digo
como o en el casso de la sum ma se realizza la verificcacin de lo
os smboloss asociadoss que
para este caso o deben se er de tipo numrico. En esta fa ase tambin se asign nan y
verifiican los tipo
os de los pa armetros ded los proce edimientos y funcioness. Mediantee este
anliisis se pued den identificcar errores de
d tipo, ante es de ser necesaria la ejecucin.

Para a invocar al intrprete se realiza ar mediantee una lnea a de coman ndos, la cu


ual se
activva al selecciionar la opccin de com
mpilar en el editor de te
exto como se
s observa en el
grficco 18.

Grfico 18: Consola donde se llam


ma al intrpre
ete para la ve
erificacin de
el cdigo

Commo resultado o de la ejeccucin, el intrprete arroja


a los reesultados en un archivvo de
textoo con los errores
e detectados. En E caso sea correcto el program ma mostrarr un
menssaje Comp pilacin corrrecta tal como
c se obbserva en la a grfico 188 el cual tie
ene 2
tiposs de erroress uno de tokken, el cuall indica el carcter
c y lnea de la in
ncidencia, y otro
de sintaxis.
s El error de sintaxis con nsiste en no o cumplir con
c la sinta
axis definidda de

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

El desarrollo de este proyecto ha implicado en conocer los errores y dificultades que


poseen los alumnos de cursos introductorios de programacin, tales como el
aprendizaje de la sintaxis y estructura de un lenguaje de programacin. Debido a este
hecho se le ofrece al alumno el uso de herramientas de diseo que le permiten
expresar su solucin utilizando el lenguaje natural. Existen herramientas que permiten
generar este diseo y exportarlo en un lenguaje de programacin, pero
lamentablemente el cdigo generado no indica si es sintcticamente correcto por lo
cual se requiere de un compilador que lo verifique.

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.

Primero se implement la interfaz de creacin de diagramas de flujo en el cual se


utiliz las libreras que ofrece Microsoft Visio. Se opt por utilizar las libreras en vez de
crear un plug-in debido a que Visio ofrece otras herramientas adicionales a la creacin
de diagramas como opciones para insertar grficos, imgenes. Si el usuario tiene
acceso a todas estas herramientas puede generar errores en el proceso de traduccin
del diagrama a pseudocdigo al insertar componentes no reconocibles.

Luego, se defini la gramtica del pseudocdigo que contiene su sintaxis utilizando la


notacin Backus-Naur Form (BNF). Posteriormente, se cre un mtodo de traduccin
para convertir el diagrama de flujo en pseudocdigo. Durante este proceso se tuvo
consideracin de las instrucciones if, while y for que poseen 2 caminos, teniendo un
mayor control del bloque de decisin que puede representar a la instruccin if o while,
as como en el texto interno puede contener llamadas a funciones. Por lo tanto se
definieron estructuras de datos que soporten los casos especiales mencionados.
Tambin se tuvo que verificar algunos errores visuales que se pueden detectar como
la falta de conexin de los bloques o el uso de conectores sin direccin, los cuales son
notificados al usuario para su correccin.

Despus, se implement el intrprete que, utilizando la gramtica, procede a realizar la


validacin lxica, sintctica y semntica del pseudocdigo generado, el cual al detectar
alguna omisin o error, muestra un mensaje notificando de las fallas encontradas
mostrando el detalle de la lnea y carcter u operacin infractor para el anlisis lxico y
semntico respectivamente. Mientras que para el anlisis sintctico solo se indica que
existe un error de sintaxis debido a que este proceso lo realiza la herramienta Byacc
que maneja la impresin de errores en un procedimiento independiente del proceso de
anlisis, adems de no conocer la estructura y funcionamiento de la mquina de
estados.

43
7.2 Trabajos Futuros

Como extensin directa de este trabajo se pretende adicionar el soporte de tipos de


datos al diagrama de flujo debido a las limitaciones de la sintaxis del mismo. El manejo
de tipos de datos implicar redefinir la sintaxis del diagrama de flujo para el soporte de
tipos de datos simples y compuestos como: caracter, entero, cadena, arreglo, puntero,
etc.

Tambin se pretende implementar un intrprete que realice la verificacin


directamente en el diagrama de flujo de esta manera si se detecta un error este se
visualizar en el bloque afectado, aumentando la experiencia de usuario al ofrecer un
ambiente ms interactivo.

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.

BIKAS Chaudhuri, Anil


2005 The art of programming through flowcharts and algorithms
Estados Unidos: Firewall Media

BUTTLER ,Mathew y Morgan Michael


2007 Learning challenges faced by novice programming students studying high level
and low feedback concepts. Singapoure: Information and Communication
Technologies (ICT). pp: 99-97

BYACC s/f
Consultado el 15 de octubre de 2013. http://byaccj.sourceforge.net/

CAIRO Battitutti, Osvaldo


2003 Metodologa de Programacin
Mexico D.F: Alfaomega.

CAO, Jill; Felming, Scott D.; Burnett, Margaret


2011 An Exploration of Design Opportunities for Gardening End-User Programmers
Ideas. Estados Unidos: IEEE Symposium on Visual Languages and Human-
Centric Computing. pp: 35-42

COOPER, Keith D.
2011 Engineering a Compiler.
Estados Unidos: Elsevier. Pp: 475-490

DAZ Daz, Jos Amadeo Martn


2004 Visual Block: lenguaje de programacin visual / Karin Johana Moya Saavedra
Tesis de Licenciatura en Ciencias e Ingeniera con mencin en Ingeniera
Informtica. Lima: Pontificia Universidad Catlica del Per, Facultad de
Ciencias e Ingeniera.

DEITEL, Harvey
2009 Cmo programar C++: introduccin a la programacin de juegos y las
bibliotecas boost. Naucalpan de Juarz: Pearson.

DRAZEN Lucanin, Ivan Fabek


2011 A visual programming language for drawing and executing flowcharts
Istra: Proceedings of the 34th International Convention MIPRO.

FLORES Cueto, Juan Jos


2011 Mtodo para la resolucin de problemas utilizando la programacin orientada a
objetos. Per: Universidad San Martin de Porres (USMP).

GOMEZ Daz, Renzo y Juan Jess SALAMANCA

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.

HRNANDEZ Valdelamar, Eugenio Jacobo


2002 El Paradigma de la programacin visual.
Jalisco: Presentado en el CNCIIC del ANEII.

HIRSH Martnez, Layla


2007 Intrprete y entorno de desarrollo para el aprendizaje de lenguajes de
programacin estructurada. Tesis de licenciatura en Ciencias e Ingeniera con
mencin en Ingeniera Informtica. Lima: Pontificia Universidad Catlica del
Per, Facultad de Ciencias e Ingeniera.

JOYANES, Luis
2008 Fundamentos de programacin: Algoritmos, estructuras de datos y objetos.
Cuarta edicin. Espaa: McGraw-Hill.

LAHTINEN Essi; Ala-Mutka, Kirsti; Jarvinen, Hannu-Matti


2005 A study of the difficulties of novice programmers. Estados Unidos: ACM
SIGCSE Bulletin. Volumen 37. Nmero 3. pp: 14-18.

LI, Xu
2007 Journal of Computing Sciences in Colleges. RobotStudio: A Universal IDE for
Teaching. Estados Unidos 2007, Volumen 22, pp. 65-72.

LPEZ Gaona, Amparo


2007 Introduccin al desarrollo de programas con java.
Mxico: Mxico.

MAC Gul, Marcia


2012 Resolucin de problemas computaciones: anlisis del proceso de aprendizaje
Argentina: Universidad Nacional de la Plata

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

MICROSOFT VISIO s/f


Consultado el 15 de octubre de 2013. http://office.microsoft.com/es-es/visio/

MONTERO, Elosa; RUIZ Dvila, Mara; DAZ, Beatriz


2010 Aprendiendo con videojuegos: Jugar es pensar 2 veces.
Espaa: Narcea S.A de Ediciones.

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.

PROYECT Managment Institute (PMI)


2008 Gua de los fundamentos para la direccin de proyectos (Gua del PMBOK)
Proyect Managment Institute. 4 Edicin.

ROGERSON, Christine y Scott, Elsje


2010 The Fear Factor: How It Affects Students Learning to Program in a Tertiary
Environment. Estados Unidos: Journal of Information Technology Education.
Volumen 9. pp: 147-171.

SALAS Campos, Heana


2007 Una Propuesta Dinmica para la Programacin con Micromundos.
Costa Rica: Editorial Universidad Estatal a Distancia.

TAN, Phit-Huan; TING, Choo-Yee; LING, Siew-Woei


2009 Learning Difficulties in Programming Courses: Undergraduates Perspective
and Perception. Malasya: International Conference on Computer Technology and
Development, 13-15 Noviembre, pp: 42-46.

VISUAL STUDIO s/f


Consultado 15 de octubre de 2013. http://www.microsoft.com/visualstudio/eng/visual-
studio-2013

VUJOEVI-JANII Milena y Toi DUAN


2008 The role of programming paradigms in the first programming courses. La
enseanza de matemticas. Belgrade, 2008, volume XI , pp. 63-83.

WEITZENFELD, Alfredo
2005 Ingeniera de Software Orientada a Obtejos con Uml, Java e Internet.
Mexico: Cengage Learning Editores.

ZHIXION, Chen y Marx, Delia


2005 Journal of Computing Sciences in Colleges. Experience with eclipse IDE in
programming. Estados Unidos 2005, Volumen 21, pp. 104-112.

47

Das könnte Ihnen auch gefallen